:root{
  --bg:#f6f1e8;--card:#fffdf9;--ink:#2a2622;--muted:#7a7068;--line:#e3dacb;
  --brand:#2f4a3a;--brand-d:#233a2d;--gold:#b08a4a;--danger:#a63d2f;--ok:#2f7a4f;
}
@media (prefers-color-scheme:dark){
  :root{--bg:#171512;--card:#211e1a;--ink:#f1ece4;--muted:#a79d90;--line:#37322b;--brand:#7fae92;--brand-d:#9bc4ad;--gold:#d2ad6d;--danger:#e0705f;--ok:#6cc390}
}
*{box-sizing:border-box}
html{-webkit-text-size-adjust:100%}
body{margin:0;background:var(--bg);color:var(--ink);font:16px/1.55 -apple-system,"Segoe UI",Helvetica,Arial,sans-serif}
h1,h2,.serif{font-family:Georgia,"Times New Roman",serif;font-weight:500;letter-spacing:.01em}
.wrap{max-width:640px;margin:0 auto;padding:0 16px 56px}
.wrap.wide{max-width:980px}
header.hero{text-align:center;padding:48px 0 28px}
.eyebrow{text-transform:uppercase;letter-spacing:.22em;font-size:12px;color:var(--gold);margin:0 0 12px}
header.hero h1{font-size:clamp(30px,6vw,44px);margin:0 0 10px;line-height:1.15}
.meta{color:var(--muted);margin:2px 0}
.orn{width:56px;height:1px;background:var(--gold);margin:22px auto 0}
.card{background:var(--card);border:1px solid var(--line);border-radius:14px;padding:24px;box-shadow:0 1px 2px rgba(0,0,0,.03),0 8px 24px rgba(0,0,0,.04)}
.card h2{font-size:22px;margin:0 0 16px}
.grid{display:grid;grid-template-columns:1fr 1fr;gap:14px}
@media(max-width:520px){.grid{grid-template-columns:1fr}}
label{display:block;font-size:13px;color:var(--muted);margin-bottom:5px}
input[type=text],input[type=tel],input[type=email],input[type=password],input[type=search]{
  width:100%;font:inherit;color:var(--ink);background:var(--bg);border:1px solid var(--line);border-radius:10px;padding:12px 13px;min-height:46px}
input:focus{outline:2px solid var(--brand);outline-offset:1px;border-color:transparent}
.hp{position:absolute;left:-9999px;height:0;overflow:hidden}
.sep{height:1px;background:var(--line);margin:22px 0}
.sub{color:var(--muted);font-size:14px;margin:-8px 0 14px}
.guest{display:grid;grid-template-columns:1fr 1fr auto;gap:10px;align-items:end;margin-bottom:10px}
@media(max-width:520px){.guest{grid-template-columns:1fr auto}.guest .g-prenom,.guest .g-nom{grid-column:1}.guest button{grid-column:2;grid-row:1 / span 2;align-self:center}}
button,.btn{font:inherit;cursor:pointer;border-radius:10px;border:1px solid var(--line);background:var(--card);color:var(--ink);padding:10px 16px;min-height:44px;text-decoration:none;display:inline-flex;align-items:center;justify-content:center;gap:6px}
button:hover,.btn:hover{border-color:var(--brand)}
button.primary{background:var(--brand);border-color:var(--brand);color:#fff;font-weight:600}
@media(prefers-color-scheme:dark){button.primary{color:#10170f}}
button.primary:hover{background:var(--brand-d)}
button.primary:disabled{opacity:.6;cursor:wait}
button.ghost{border-style:dashed;color:var(--brand)}
button.icon{padding:0;width:44px}
button.danger{color:var(--danger)}
.full{width:100%}
.msg{margin-top:14px;padding:12px 14px;border-radius:10px;font-size:15px}
.msg.err{background:rgba(166,61,47,.1);color:var(--danger);border:1px solid rgba(166,61,47,.3)}
.msg.ok{background:rgba(47,122,79,.1);color:var(--ok);border:1px solid rgba(47,122,79,.3)}
.badge{display:inline-block;font-size:13px;padding:4px 12px;border-radius:99px;background:rgba(176,138,74,.15);color:var(--gold);margin-top:14px}
.thanks{text-align:center;padding:12px 0}
.thanks h2{font-size:26px}
footer{text-align:center;color:var(--muted);font-size:13px;margin-top:28px}
/* Admin */
.bar{display:flex;flex-wrap:wrap;gap:10px;align-items:center;margin:18px 0}
.bar .grow{flex:1;min-width:180px}
.stats{display:grid;grid-template-columns:repeat(4,1fr);gap:12px;margin:8px 0 6px}
@media(max-width:620px){.stats{grid-template-columns:1fr 1fr}}
.stat{background:var(--card);border:1px solid var(--line);border-radius:12px;padding:14px;text-align:center}
.stat b{display:block;font-family:Georgia,serif;font-size:30px;font-weight:500}
.stat span{font-size:12px;color:var(--muted);text-transform:uppercase;letter-spacing:.08em}
.progress{height:8px;background:var(--line);border-radius:99px;overflow:hidden;margin:10px 0 4px}
.progress i{display:block;height:100%;background:var(--ok);width:0;transition:width .3s}
.res{background:var(--card);border:1px solid var(--line);border-radius:14px;padding:6px 16px;margin-bottom:12px}
.res-head{display:flex;justify-content:space-between;gap:10px;align-items:flex-start;padding:10px 0 4px}
.res-head small{color:var(--muted);display:block}
.person{display:flex;align-items:center;gap:14px;padding:11px 0;border-top:1px solid var(--line);cursor:pointer;min-height:52px}
.person:first-of-type{border-top:0}
.person input{width:26px;height:26px;accent-color:var(--ok);flex:none;cursor:pointer}
.person .name{flex:1;font-size:17px}
.person.here .name{color:var(--ok);font-weight:600}
.tag{font-size:11px;text-transform:uppercase;letter-spacing:.08em;color:var(--muted);border:1px solid var(--line);border-radius:6px;padding:1px 6px;margin-left:8px;vertical-align:middle}
.empty{text-align:center;color:var(--muted);padding:40px 0}
.login{max-width:380px;margin:12vh auto 0}
dialog{border:1px solid var(--line);border-radius:14px;background:var(--card);color:var(--ink);max-width:560px;width:calc(100% - 32px);padding:22px}
dialog::backdrop{background:rgba(0,0,0,.45)}
dialog textarea{width:100%;min-height:150px;font:14px/1.4 ui-monospace,Menlo,monospace;background:var(--bg);color:var(--ink);border:1px solid var(--line);border-radius:10px;padding:10px}
.hidden{display:none!important}
@media print{.bar,.stats .noprint,button,header.hero .orn{display:none!important}body{background:#fff;color:#000}.res{break-inside:avoid}}
