:root,:root[data-theme="light"]{--bg:#fbf8f3;--card:#fff;--ink:#2b2118;--head:#6b3f18;--muted:#5f5144;--accent:#a8581a;--accent-ink:#fff;--accent-bg:#fdf0e2;--line:#e4d8c8;--ok:#2e7d32;--ok-bg:#e8f5e9;--warn:#9a5b00;--warn-bg:#fff4e0;--bad:#b3261e;--focus:#1f6fb0;--shadow:rgba(60,40,20,.08);color-scheme:light}
:root[data-theme="dark"]{--bg:#161310;--card:#221d18;--ink:#f3eadf;--head:#f2c996;--muted:#c9b8a5;--accent:#f0a35a;--accent-ink:#1d1409;--accent-bg:#33271c;--line:#3b3129;--ok:#8fd694;--ok-bg:#1f3322;--warn:#f5c26b;--warn-bg:#3a2d17;--bad:#ff9b8a;--focus:#6cb6f0;--shadow:rgba(0,0,0,.35);color-scheme:dark}
*{box-sizing:border-box}html{-webkit-text-size-adjust:100%}
body{margin:0;background:var(--bg);color:var(--ink);font:1.125rem/1.55 -apple-system,BlinkMacSystemFont,"Segoe UI",system-ui,sans-serif}
.wrap{max-width:44rem;margin:0 auto;padding:.5rem 1.1rem 4rem}
h1{font:600 1.9rem/1.2 Georgia,"Times New Roman",serif;color:var(--head);margin:.3rem 0 .6rem}
h2{font:600 1.35rem/1.3 Georgia,serif;color:var(--head);margin:0 0 .6rem}
h3{font-size:1.05rem;margin:1rem 0 .4rem}
a{color:var(--focus)}
.eyebrow{text-transform:uppercase;letter-spacing:.14em;font-size:.8rem;font-weight:600;color:var(--accent);margin:1rem 0 0}
.lead{font-size:1.2rem}.muted{color:var(--muted)}.center{text-align:center}.small{font-size:.9rem}
.card{background:var(--card);border:1px solid var(--line);border-radius:1rem;padding:1.25rem;margin:1.1rem 0;box-shadow:0 .15rem .6rem var(--shadow)}
.step{display:flex;gap:.6rem;align-items:baseline}.num{flex:none;width:1.8rem;height:1.8rem;border-radius:50%;background:var(--accent-bg);color:var(--accent);font-weight:700;display:inline-flex;align-items:center;justify-content:center}
.done .num{background:var(--ok-bg);color:var(--ok)}
.btn{display:inline-block;background:var(--accent);color:var(--accent-ink);border:2px solid var(--accent);border-radius:.8rem;padding:.75rem 1.2rem;font:600 1.05rem system-ui,sans-serif;text-decoration:none;cursor:pointer;min-height:3rem;text-align:center}
.btn.secondary{background:transparent;color:var(--accent)}.btn.big{display:block;width:100%;font-size:1.15rem;padding:1rem}
.btn[disabled],.btn.off{opacity:.45;pointer-events:none}
.btn+.btn{margin-left:.4rem}
label{display:block;font-weight:600;font-size:.95rem;margin:.9rem 0 .3rem}
input,textarea,select{width:100%;font:1.05rem system-ui,sans-serif;padding:.7rem .8rem;border:1px solid var(--line);border-radius:.6rem;background:var(--bg);color:var(--ink)}
textarea{min-height:7rem}
.hint{font-size:.9rem;color:var(--muted);margin:.25rem 0 0}
.pill{display:inline-block;font-size:.8rem;font-weight:700;border-radius:999px;padding:.1rem .6rem;white-space:nowrap}
.pill.ok{background:var(--ok-bg);color:var(--ok)}.pill.wait{background:var(--warn-bg);color:var(--warn)}.pill.no{background:var(--accent-bg);color:var(--muted)}
.list{list-style:none;padding:0;margin:.5rem 0}.list li{padding:.65rem 0;border-bottom:1px solid var(--line);display:flex;justify-content:space-between;gap:.6rem;align-items:center;flex-wrap:wrap}.list li:last-child{border-bottom:0}
.sub{font-size:.9rem;color:var(--muted)}
.tiles{display:grid;grid-template-columns:repeat(auto-fit,minmax(7.5rem,1fr));gap:.6rem;margin:.6rem 0}
.tile{border:1px solid var(--line);border-radius:.8rem;padding:.8rem .5rem;text-align:center;font-size:.9rem;color:var(--muted)}.tile b{display:block;font-size:1.8rem;color:var(--ink)}
.msg{white-space:pre-wrap;background:var(--bg);border:1px solid var(--line);border-radius:.8rem;padding:.8rem;font-size:1rem}
.toast{position:fixed;left:50%;bottom:1.2rem;transform:translateX(-50%);background:var(--ink);color:var(--bg);padding:.7rem 1.1rem;border-radius:.8rem;font-weight:600;display:none;z-index:50;max-width:90vw}
.err{color:var(--bad);font-weight:600}
.checks{padding-left:1.2rem}.checks li{margin:.45rem 0}
.invite{display:block;max-width:100%;border-radius:.8rem;margin:1rem auto;box-shadow:0 .3rem 1.2rem var(--shadow)}
.row{display:grid;grid-template-columns:6rem 1fr;gap:.6rem;padding:.4rem 0}
.choice{display:flex;gap:.5rem;flex-wrap:wrap}.choice label{flex:1;min-width:6rem;margin:0;border:2px solid var(--line);border-radius:.8rem;padding:.9rem;text-align:center;cursor:pointer;font-weight:600}
.choice input{position:absolute;opacity:0}.choice label:has(input:checked){border-color:var(--accent);background:var(--accent-bg)}
details summary{cursor:pointer;font-weight:600;color:var(--focus)}
.topbar{display:flex;justify-content:space-between;align-items:center;gap:1rem;max-width:44rem;margin:0 auto;padding:.7rem 1.1rem 0}
.disp{position:relative}.disp-btn{font:700 1rem system-ui;color:var(--ink);background:var(--card);border:1px solid var(--line);border-radius:999px;padding:.45rem .95rem;cursor:pointer;min-height:2.6rem;min-width:3.4rem}
.disp-btn .a1{font-size:.8rem}.disp-btn .a2{font-size:1.15rem}
.disp-panel{position:absolute;right:0;top:calc(100% + .5rem);z-index:10;width:min(17rem,calc(100vw - 2rem));background:var(--card);border:1px solid var(--line);border-radius:.8rem;padding:.9rem 1rem;box-shadow:0 .8rem 2.5rem var(--shadow);display:none}.disp-panel.open{display:block}
.dph{font:600 .72rem system-ui;text-transform:uppercase;letter-spacing:.12em;color:var(--muted);margin:0 0 .5rem}.dph.mt{margin-top:.9rem}
.seg{display:flex;gap:.4rem}.seg button{flex:1;background:var(--bg);border:1px solid var(--line);border-radius:.5rem;color:var(--ink);font:600 .9rem system-ui;padding:.6rem 0;min-height:2.6rem;cursor:pointer}
.seg.sizes button{font-family:Georgia,serif}.seg.sizes button:nth-child(1){font-size:.85rem}.seg.sizes button:nth-child(2){font-size:1.05rem}.seg.sizes button:nth-child(3){font-size:1.3rem}.seg.sizes button:nth-child(4){font-size:1.55rem}
.seg button[aria-pressed="true"]{border:2px solid var(--accent);background:var(--accent-bg);color:var(--accent)}
.note-s{font-size:.75rem;color:var(--muted);margin:.7rem 0 0}
button:focus-visible,a:focus-visible,input:focus-visible,textarea:focus-visible,select:focus-visible{outline:.15rem solid var(--focus);outline-offset:.15rem}
/* ---- step flow ---- */
.steps{display:flex;gap:.4rem;overflow-x:auto;padding:.2rem 0 .6rem;margin:.4rem 0 .2rem;scrollbar-width:thin}
.stepbtn{flex:1 0 auto;display:flex;flex-direction:column;align-items:center;gap:.25rem;min-width:4.4rem;background:var(--card);border:1px solid var(--line);border-radius:.8rem;padding:.55rem .4rem;color:var(--muted);font:600 .82rem system-ui,sans-serif;cursor:pointer}
.stepbtn .sn{width:1.8rem;height:1.8rem;border-radius:50%;display:inline-flex;align-items:center;justify-content:center;background:var(--bg);border:1px solid var(--line);color:var(--ink);font-size:.95rem}
.stepbtn.done .sn{background:var(--ok-bg);border-color:var(--ok);color:var(--ok)}
.stepbtn.cur{border:2px solid var(--accent);color:var(--ink);background:var(--accent-bg)}
.stepbtn.cur .sn{background:var(--accent);border-color:var(--accent);color:var(--accent-ink)}
.pager{display:flex;justify-content:space-between;gap:.6rem;margin:1rem 0}
.pager .btn{flex:1}.pager .btn[hidden]{display:none}.pager .btn+.btn{margin-left:0}
.linkbox{margin:1.5rem 0;padding:.9rem 1.1rem;border:1px solid var(--line);border-radius:.8rem;background:var(--card)}
.linkbox summary{cursor:pointer;font-weight:600;color:var(--focus)}
@media (max-width:30rem){.steps{gap:.25rem}.stepbtn{min-width:0;flex:1 1 0;padding:.45rem .1rem;font-size:.68rem}.stepbtn .sn{width:1.5rem;height:1.5rem;font-size:.8rem}}
.email-preview img{max-width:100%;height:auto}.email-preview p{margin:.25rem 0}

/* ---- brand + front page ---- */
.brand{font:700 1.2rem/1 Georgia,"Times New Roman",serif;color:var(--head);text-decoration:none;letter-spacing:-.01em}.brand span{color:var(--accent);font-style:italic;font-weight:600}
.wrap.wide{max-width:60rem}
body:has(.wrap.wide) .topbar{max-width:60rem}
.hero{padding:2.2rem 0 1rem;max-width:40rem}
.hero h1{font-size:clamp(2.2rem,6vw,3.3rem);line-height:1.08;margin:.5rem 0 1rem;letter-spacing:-.01em}
.hero .lead{font-size:1.25rem;color:var(--muted)}
.cta{display:flex;gap:.6rem;flex-wrap:wrap;margin:1.4rem 0 .6rem}.cta form{margin:0}.cta .btn+.btn{margin-left:0}
.compare{display:grid;grid-template-columns:1fr 1fr;gap:1rem;margin:1.8rem 0}
.inbox-h{font:600 .75rem system-ui;text-transform:uppercase;letter-spacing:.12em;color:var(--muted);margin:0 0 .5rem}
.mail{display:flex;gap:.8rem;align-items:flex-start;background:var(--card);border:1px solid var(--line);border-radius:.9rem;padding:1rem;font-size:.95rem;box-shadow:0 .15rem .6rem var(--shadow);overflow-wrap:anywhere}
.mail.dim{opacity:.62}.av{flex:none;width:2.4rem;height:2.4rem;border-radius:50%;display:inline-flex;align-items:center;justify-content:center;font-weight:700;background:var(--line);color:var(--muted)}.av.me{background:var(--accent);color:var(--accent-ink)}
.why{display:grid;grid-template-columns:repeat(3,1fr);gap:1rem}.why .card{margin:0}.why h2{font-size:1.2rem}.why p{margin:0;color:var(--muted);font-size:1rem}
.how{margin-top:1.6rem}.how-steps{padding-left:1.3rem;margin:.4rem 0 1rem}.how-steps li{margin:.7rem 0;padding-left:.3rem}
.foot{text-align:center;color:var(--muted);font-size:.85rem;margin:2.5rem 0 0}
@media (max-width:44rem){.compare,.why{grid-template-columns:1fr}.hero{padding-top:1.2rem}}
/* ---- your invitations ---- */
.myhead{display:flex;justify-content:space-between;align-items:center;gap:1rem;flex-wrap:wrap;margin:.6rem 0 .2rem}.myhead h1{margin:0}.myhead form{margin:0}
.party{display:flex;gap:1rem;align-items:center;text-decoration:none;color:inherit;transition:border-color .15s}.party:hover{border-color:var(--accent)}
.party .thumb{flex:none;width:4.2rem;height:5.2rem;border-radius:.5rem;object-fit:cover;background:var(--accent-bg);display:flex;align-items:center;justify-content:center;color:var(--accent);font:700 1.6rem Georgia,serif}
.party .pbody{flex:1;min-width:0}.party h2{margin:0 0 .15rem;font-size:1.25rem}.party .sub{display:block}
.counts{display:flex;gap:.4rem;flex-wrap:wrap;margin-top:.45rem}
.party .go{flex:none;color:var(--accent);font-size:1.4rem}
.devcard{display:flex;justify-content:space-between;align-items:center;gap:1rem;flex-wrap:wrap}
.sechead{font:600 .8rem system-ui;text-transform:uppercase;letter-spacing:.12em;color:var(--muted);margin:1.6rem 0 .2rem}
.hostnav{display:flex;justify-content:space-between;align-items:center;gap:.6rem;flex-wrap:wrap;margin:.4rem 0 0}.hostnav a{font-size:.95rem}
.devchip{font-size:.85rem;font-weight:600;border-radius:999px;padding:.25rem .75rem;border:1px solid var(--line);background:var(--card);color:var(--muted);cursor:pointer}.devchip.ok{color:var(--ok);border-color:var(--ok)}
.booting>*:not(#booting){display:none!important}
.steps[hidden],.pager[hidden]{display:none}
/* ---- one guest ---- */
.gname{all:unset;cursor:pointer;flex:1;min-width:10rem;border-radius:.4rem}.gname b{color:var(--focus);text-decoration:underline;text-decoration-thickness:1px;text-underline-offset:.15em}.gname:focus-visible{outline:.15rem solid var(--focus);outline-offset:.2rem}
.gpanel{flex-basis:100%;background:var(--bg);border:1px solid var(--line);border-radius:.8rem;padding:.3rem 1rem 1rem;margin-top:.3rem}
.gp-h{font:600 .75rem system-ui;text-transform:uppercase;letter-spacing:.1em;color:var(--muted);margin:.9rem 0 .4rem}
.gp-row{display:flex;gap:.5rem;flex-wrap:wrap;align-items:flex-end}.gp-row .btn{min-height:2.6rem;padding:.4rem .9rem;margin:0}.gp-row .btn.on{background:var(--accent);color:var(--accent-ink)}
.gp-n{display:flex;align-items:center;gap:.4rem;margin:0;font-size:.9rem}.gp-n input{width:4.5rem;padding:.45rem}
.gp-col{display:flex;gap:.4rem;flex:1 1 15rem}.gp-col input{flex:1;min-width:0;padding:.5rem .6rem}
.linkish{all:unset;cursor:pointer;color:var(--focus);font-size:.9rem;text-decoration:underline}
.linkbox .btn+.btn{margin-left:.4rem}
.lasttime{font-size:.82rem;font-style:italic;color:var(--accent)}
.notice{border-color:var(--warn);background:var(--warn-bg)}.notice p{margin:0}
