@font-face{font-family:Inter;font-style:normal;font-weight:100 900;font-display:swap;src:url(/fonts/inter.woff2) format("woff2")}
@font-face{font-family:Fraunces;font-style:normal;font-weight:100 900;font-display:swap;src:url(/fonts/fraunces.woff2) format("woff2")}
:root{--paper:#f7f6f2;--ink:#0e0e0c;--blue:#00AEEF;--blue-d:#0089bd;--muted:#77736a;--line:#ebe7de;--field:#ddd8cd;--red:#d94a22;--orange:#f2a541;--green:#3bb273;--card:#fff;
  --serif:Fraunces,Georgia,'Times New Roman',serif;--mono:'JetBrains Mono',ui-monospace,SFMono-Regular,Menlo,monospace;color-scheme:light}
*{box-sizing:border-box;margin:0;padding:0}
html,body{background:var(--paper);color:var(--ink);font:16px/1.4 Inter,system-ui,-apple-system,'Segoe UI',Roboto,sans-serif;-webkit-text-size-adjust:100%}
body{min-height:100vh;min-height:100dvh}
button,input,select{font:inherit;color:inherit}
a{color:var(--blue-d)}
.mono{font-family:var(--mono)}
[hidden]{display:none!important}

main{max-width:520px;margin:0 auto;padding:calc(env(safe-area-inset-top) + 18px) 18px calc(env(safe-area-inset-bottom) + 96px)}
.apphead{display:flex;justify-content:space-between;align-items:center;margin-bottom:18px;gap:12px}
.hello{font-size:15px;color:var(--muted)}
.biz{font-family:var(--serif);font-weight:700;font-size:26px;line-height:1.15}
h1.biz{font-size:28px}
.avatar{flex:none;width:46px;height:46px;border-radius:50%;background:var(--ink);color:#fff;font-weight:700;display:flex;align-items:center;justify-content:center;font-size:16px}

.ratingcard{background:var(--ink);color:#fff;border-radius:22px;padding:20px 22px;display:flex;justify-content:space-between;align-items:center;margin-bottom:14px;gap:12px}
.ratingcard .big{font-size:38px;font-weight:700}
.ratingcard .big span{color:var(--orange)}
.ratingcard .sub{font-size:14px;opacity:.75;margin-top:2px}
.badge-up{background:rgba(59,178,115,.18);color:#7fe0aa;font-weight:700;font-size:14px;padding:7px 12px;border-radius:999px;white-space:nowrap}
.tiles{display:grid;grid-template-columns:1fr 1fr;gap:12px;margin-bottom:16px}
.tile{background:var(--card);border-radius:18px;padding:15px 16px;border:1px solid var(--line)}
.tv{font-size:30px;font-weight:700}
.tl{font-size:13px;color:var(--muted);margin-top:2px}
.period{font-size:13px;color:var(--muted);margin:-4px 0 10px}

.cta{display:block;width:100%;border:0;border-radius:16px;background:var(--blue);color:#fff;font-weight:700;font-size:17px;padding:16px;text-align:center;cursor:pointer}
.cta:active{transform:scale(.99)}
.cta[disabled]{opacity:.6}
.ghost{background:none;border:0;color:var(--blue-d);font-weight:600;cursor:pointer;padding:8px 0}
.danger{color:var(--red)}

.navbar{display:grid;grid-template-columns:1fr auto 1fr;align-items:center;margin-bottom:18px;font-size:17px}
.navbar b{font-weight:700}
.navbar .ghost{justify-self:start}

.field{margin-bottom:14px;display:block}
.fl{font-size:14px;color:var(--muted);margin-bottom:6px;display:block}
.fi{width:100%;height:52px;background:#fff;border:1px solid var(--field);border-radius:14px;padding:0 16px;font-size:17px}
.fi:focus{outline:2px solid var(--blue);border-color:transparent}
select.fi{appearance:none;background:#fff url("data:image/svg+xml,%3Csvg xmlns='http://www.w3.org/2000/svg' width='12' height='8'%3E%3Cpath d='M1 1l5 5 5-5' fill='none' stroke='%2377736a' stroke-width='2'/%3E%3C/svg%3E") no-repeat right 16px center}
.check{display:flex;gap:12px;align-items:flex-start;font-size:15px;margin:6px 0 18px;cursor:pointer}
.check input{flex:none;width:24px;height:24px;margin-top:1px;accent-color:var(--blue)}
.hint{font-size:13px;color:var(--muted);margin-top:12px}
.err{background:#fdece6;color:#9b2f12;border-radius:12px;padding:12px 14px;font-size:15px;margin-bottom:14px}
.ok{background:#e2f4e6;color:#1d6e41;border-radius:12px;padding:12px 14px;font-size:15px;margin-bottom:14px}

.row{display:flex;justify-content:space-between;align-items:center;gap:10px;background:var(--card);border:1px solid var(--line);border-radius:16px;padding:13px 15px;margin-bottom:10px;font-size:17px;width:100%;text-align:left;cursor:pointer}
.rs{font-size:13px;color:var(--muted);margin-top:2px}
.st{font-size:12.5px;font-weight:700;border-radius:999px;padding:6px 10px;white-space:nowrap}
.st-programmee{background:#e3f5fd;color:var(--blue-d)}
.st-clique{background:#e2f4e6;color:#23864e}
.st-ouverte,.st-envoyee,.st-terminee,.st-annulee{background:#f1eee7;color:#5f5b52}
.st-desinscrite,.st-invalide{background:#fdece6;color:#9b2f12}
.detail{background:var(--card);border:1px solid var(--line);border-top:0;border-radius:0 0 16px 16px;margin:-16px 0 10px;padding:16px 15px 10px;font-size:14px;color:var(--muted)}
.detail .acts{display:flex;gap:18px;margin-top:6px}
.empty{text-align:center;color:var(--muted);padding:40px 10px}

.grid{position:relative;width:min(100%,340px);aspect-ratio:1;margin:18px auto 20px;border-radius:20px;overflow:hidden}
.grid svg.map{position:absolute;inset:0;width:100%;height:100%}
.grid .dots{position:absolute;inset:0;display:grid;grid-template-columns:repeat(7,1fr);grid-template-rows:repeat(7,1fr);padding:2%}
.grid .dot{place-self:center;width:62%;aspect-ratio:1;border-radius:50%;display:flex;align-items:center;justify-content:center;color:#fff;font:700 clamp(10px,3vw,14px) var(--mono);border:2px solid #fff;box-shadow:0 2px 6px rgba(0,0,0,.25)}
.grid .pin{position:absolute;left:50%;top:50%;width:9%;transform:translate(-50%,-92%);z-index:2}
.r-top{background:var(--green)}.r-mid{background:var(--orange)}.r-low{background:var(--red)}.r-none{background:#9a968c}
.legend{display:flex;justify-content:center;gap:14px;font-size:13px;color:var(--muted);margin-bottom:16px}
.legend i{display:inline-block;width:10px;height:10px;border-radius:50%;margin-right:5px;vertical-align:-1px}
.months{display:flex;gap:8px;overflow-x:auto;padding-bottom:4px;margin-bottom:6px}
.months button{flex:none;border:1px solid var(--line);background:#fff;border-radius:999px;padding:7px 13px;font-size:14px;cursor:pointer}
.months button[aria-pressed=true]{background:var(--ink);color:#fff;border-color:var(--ink)}

.card{background:var(--card);border:1px solid var(--line);border-radius:18px;padding:16px;margin-bottom:14px}
.card h2{font-size:16px;margin-bottom:8px}
.card p{font-size:14px;color:var(--muted)}
.quote{background:var(--paper);border-radius:12px;padding:12px;font-size:14px;margin:10px 0}

.tabbar{position:fixed;left:0;right:0;bottom:0;background:rgba(255,255,255,.96);backdrop-filter:blur(8px);border-top:1px solid var(--line);display:flex;justify-content:space-around;padding:8px 0 calc(env(safe-area-inset-bottom) + 8px);z-index:10}
.tab{flex:1;max-width:120px;border:0;background:none;display:flex;flex-direction:column;align-items:center;gap:3px;font-size:12px;font-weight:600;color:#9a968c;cursor:pointer;padding:4px 0}
.tab span{font-size:21px;line-height:1}
.tab[aria-current=page]{color:var(--blue-d)}

.toast{position:fixed;left:50%;bottom:calc(env(safe-area-inset-bottom) + 90px);transform:translateX(-50%);background:var(--ink);color:#fff;font-weight:600;padding:12px 18px;border-radius:999px;font-size:15px;z-index:20;white-space:nowrap}

.login{min-height:80vh;display:flex;flex-direction:column;justify-content:center}
.login .logo{width:180px;margin-bottom:28px}
.login h1{font-family:var(--serif);font-size:32px;line-height:1.1;margin-bottom:10px}
.login p.lead{color:var(--muted);margin-bottom:24px}
.demo-banner{background:#fdf0dc;color:#8a5208;font-size:13px;text-align:center;padding:8px;border-radius:12px;margin-bottom:14px}
footer.legal{text-align:center;font-size:13px;color:var(--muted);margin-top:26px}
