@font-face{font-family:'Archivo';font-style:normal;font-display:swap;font-weight:100 900;font-stretch:62% 125%;src:url(/fonts/archivo-latin-ext-wdth-normal.woff2) format('woff2-variations');unicode-range:U+0100-02BA,U+02BD-02C5,U+02C7-02CC,U+02CE-02D7,U+02DD-02FF,U+0304,U+0308,U+0329,U+1D00-1DBF,U+1E00-1E9F,U+1EF2-1EFF,U+2020,U+20A0-20AB,U+20AD-20C0,U+2113,U+2C60-2C7F,U+A720-A7FF}
@font-face{font-family:'Archivo';font-style:normal;font-display:swap;font-weight:100 900;font-stretch:62% 125%;src:url(/fonts/archivo-latin-wdth-normal.woff2) format('woff2-variations');unicode-range:U+0000-00FF,U+0131,U+0152-0153,U+02BB-02BC,U+02C6,U+02DA,U+02DC,U+0304,U+0308,U+0329,U+2000-206F,U+20AC,U+2122,U+2191,U+2193,U+2212,U+2215,U+FEFF,U+FFFD}
@font-face{font-family:'JetBrains Mono';font-style:normal;font-display:swap;font-weight:100 800;src:url(/fonts/jetbrains-mono-latin-wght-normal.woff2) format('woff2-variations')}

*,*::before,*::after{box-sizing:border-box;border-radius:0}
html{--holo:linear-gradient(135deg,#9db4ff 0%,#c39df4 30%,#f2a5d6 60%,#f8cf9f 82%,#f3ee9c 100%);--warn:#ff5aa8;--focus:#c39df4}
html[data-theme=light]{--page:#3a3a3c;--page-ink:#ececea;--surface:#f3f2f2;--surface-2:#e0dfde;--ink:#0b0b0c;--muted:#5f5d5b;--inv:#0b0b0c;--inv-ink:#ececea;--inv-muted:#a09d9b;--field:#ffffff;--grid:rgba(17,17,18,.09);color-scheme:light}
html[data-theme=dark]{--page:#0b0b0c;--page-ink:#ececea;--surface:#1c1c1e;--surface-2:#141416;--ink:#ececea;--muted:#a09d9b;--inv:#f3f2f2;--inv-ink:#0b0b0c;--inv-muted:#5f5d5b;--field:#111113;--grid:rgba(236,236,234,.08);color-scheme:dark}
body{margin:0;background:var(--page);color:var(--ink);font-family:'Archivo',system-ui,sans-serif;font-size:15px;line-height:1.45;-webkit-font-smoothing:antialiased;min-height:100vh}
button,input,select,textarea{font-family:inherit}
.wrap{margin:0 auto;padding:0 clamp(12px,1.6vw,32px) 40px}
.wide{font-family:'Archivo',sans-serif;font-stretch:125%;font-weight:900;text-transform:uppercase;letter-spacing:-.01em;line-height:.9}
.mono{font-family:'JetBrains Mono',monospace;font-weight:700}
.label{font-stretch:112%;font-weight:800;text-transform:uppercase;letter-spacing:.09em;font-size:11px}
.muted{color:var(--muted)}
.small{font-size:13px}
*:focus-visible{outline:3px solid var(--focus);outline-offset:2px}
.ic{flex:none;display:block}
.star{display:block;flex:none}

/* top bar */
.top{display:flex;align-items:center;justify-content:space-between;gap:12px;padding:16px 0;color:var(--page-ink);flex-wrap:wrap}
.brand{display:flex;align-items:center;background:none;border:0;padding:0;cursor:pointer;min-height:44px}
.top{position:sticky;top:0;z-index:20;background:var(--page)}
.top-r{display:flex;gap:8px;align-items:center}
.seg{display:flex;border:2px solid var(--page-ink)}
.seg button{background:none;border:0;color:var(--page-ink);padding:0 14px;height:38px;display:flex;align-items:center;gap:8px;font:800 12px 'Archivo';font-stretch:118%;text-transform:uppercase;letter-spacing:.07em;cursor:pointer}
.seg button+button{border-left:2px solid var(--page-ink)}
.seg button[aria-pressed=true]{background:var(--page-ink);color:var(--page)}
.iconbtn{width:42px;height:42px;display:grid;place-items:center;border:2px solid var(--page-ink);background:none;color:var(--page-ink);cursor:pointer}
.iconbtn:hover{background:var(--page-ink);color:var(--page)}

/* grid and cards */
.grid{display:grid;grid-template-columns:repeat(12,minmax(0,1fr));gap:14px}
.s4{grid-column:span 4}.s5{grid-column:span 5}.s6{grid-column:span 6}.s7{grid-column:span 7}.s8{grid-column:span 8}.s12{grid-column:span 12}
.card{position:relative;background:var(--surface);color:var(--ink);padding:24px;overflow:hidden;min-width:0}
.card.inv{background:var(--inv);color:var(--inv-ink);--ink:var(--inv-ink);--muted:var(--inv-muted);--surface:var(--inv);--field:transparent;--surface-2:rgba(127,127,127,.22)}
.tag{position:absolute;right:20px;bottom:14px;font-size:30px;pointer-events:none}
.card-h{display:flex;align-items:flex-end;justify-content:space-between;gap:12px;margin-bottom:18px;flex-wrap:wrap}
.card-h h2{margin:0;font-size:clamp(24px,2.8vw,36px)}
.card-h p{margin:6px 0 0}
.rule{height:2px;background:currentColor;border:0;margin:16px 0}
.pad-b{padding-bottom:56px}

/* buttons */
.btn{display:inline-flex;align-items:center;justify-content:center;gap:8px;border:2px solid currentColor;background:transparent;color:inherit;padding:0 14px;min-height:40px;font:800 12px/1 'Archivo';font-stretch:115%;text-transform:uppercase;letter-spacing:.06em;cursor:pointer;transition:transform .12s,box-shadow .12s;white-space:nowrap;text-decoration:none}
.btn:hover{transform:translate(-2px,-2px);box-shadow:3px 3px 0 currentColor}
.btn:active{transform:none;box-shadow:none}
.btn.solid{background:var(--ink);color:var(--surface);border-color:var(--ink)}
.btn.solid:hover{box-shadow:3px 3px 0 var(--focus)}
.btn.holo{background:var(--holo);color:#111;border-color:#111}
.btn.holo:hover{box-shadow:3px 3px 0 #111}
.btn.sm{min-height:32px;padding:0 9px;font-size:11px}
.btn.ico{padding:0;width:40px}
.btn.sm.ico{width:32px}
.btn.big{min-height:52px;padding:0 22px;font-size:14px}
.btn.danger:hover{box-shadow:3px 3px 0 var(--warn);border-color:var(--warn)}
.btn[disabled]{opacity:.35;pointer-events:none}
.btns{display:flex;gap:8px;flex-wrap:wrap;align-items:center}

/* fields */
.field{width:100%;background:var(--field);color:var(--ink);border:2px solid var(--ink);padding:0 10px;min-height:40px;font:500 14px 'Archivo';min-width:0}
textarea.field{padding:10px;min-height:96px;resize:vertical;line-height:1.45}
.field:focus{outline:none;box-shadow:4px 4px 0 var(--focus)}
select.field{appearance:none;-webkit-appearance:none;padding-right:30px;background-image:linear-gradient(45deg,transparent 50%,var(--ink) 50%),linear-gradient(135deg,var(--ink) 50%,transparent 50%);background-position:calc(100% - 16px) 52%,calc(100% - 11px) 52%;background-size:5px 5px;background-repeat:no-repeat;cursor:pointer}
.fl{display:flex;flex-direction:column;gap:6px;min-width:0}
.form{display:grid;grid-template-columns:repeat(2,minmax(0,1fr));gap:14px}
.form .full{grid-column:1/-1}
.form h3{grid-column:1/-1;margin:10px 0 0;font-size:16px}
input.ck{appearance:none;-webkit-appearance:none;width:22px;height:22px;border:2px solid var(--ink);background:var(--field);display:inline-grid;place-items:center;cursor:pointer;flex:none;margin:0}
input.ck:checked{background:var(--holo);border-color:#111}
input.ck:checked::after{content:'';width:10px;height:5px;border-left:2.5px solid #111;border-bottom:2.5px solid #111;transform:translateY(-1px) rotate(-45deg)}
.choice{display:grid;grid-template-columns:1fr 1fr;gap:8px}
.opt{position:relative;cursor:pointer}
.opt input{position:absolute;opacity:0;pointer-events:none}
.opt>span{display:flex;flex-direction:column;gap:6px;border:2px solid var(--ink);padding:14px;height:100%}
.opt>span b{font-stretch:118%;text-transform:uppercase;font-weight:900;letter-spacing:.02em}
.opt>span small{color:var(--muted)}
.opt input:checked+span{background:var(--holo);color:#111;border-color:#111}
.opt input:checked+span small{color:#333}
.opt input:focus-visible+span{outline:3px solid var(--focus);outline-offset:2px}
.req{color:var(--warn)}

/* chips */
.chip{display:inline-flex;align-items:center;gap:5px;border:2px solid currentColor;padding:2px 7px;font:800 10px/1.4 'Archivo';font-stretch:115%;text-transform:uppercase;letter-spacing:.06em;white-space:nowrap}
.chip.on{background:var(--ink);color:var(--surface);border-color:var(--ink)}
.chip.holo{background:var(--holo);color:#111;border-color:#111}
.chip.warn{background:var(--warn);color:#111;border-color:#111}
.chip.dim{opacity:.55}
.chips{display:flex;gap:6px;flex-wrap:wrap;align-items:center}
button.chip{cursor:pointer;background:none;color:inherit;min-height:32px;padding:0 10px}
button.chip[aria-pressed=true]{background:var(--ink);color:var(--surface);border-color:var(--ink)}

/* hero */
.hero{min-height:460px;display:flex;flex-direction:column;justify-content:space-between;gap:26px}
.hero-top{display:flex;align-items:center;gap:10px;flex-wrap:wrap;position:relative;z-index:2}
.hero-top .stars{display:flex;gap:6px;margin-left:auto;color:var(--ink)}
.hero h1{font-size:clamp(30px,7vw,92px);margin:0;max-width:100%;position:relative;z-index:2}
.hero .tagline{font-weight:600;font-size:clamp(15px,1.4vw,18px);max-width:34ch;margin:0;position:relative;z-index:2}
.meta{display:flex;flex-direction:column;gap:12px;position:relative;z-index:2;max-width:60%}
.meta>div{display:flex;gap:12px;align-items:flex-start;font-weight:700}
.meta small{display:block;font-weight:500;color:var(--muted)}
.hero-art{position:absolute;right:-6%;top:50%;width:min(56%,500px);aspect-ratio:1;transform:translateY(-50%);pointer-events:none;color:var(--ink)}
.glow{position:absolute;inset:10%;border-radius:50%;background:conic-gradient(from 90deg,#9ad7ff,#b9a2ff,#ff9fd6,#ffef9a,#9ad7ff);filter:blur(46px);opacity:.55}
.orb{position:absolute;inset:19%;border-radius:50%;overflow:hidden;box-shadow:inset -20px -26px 60px rgba(90,60,160,.35)}
.swirl{position:absolute;inset:-30%;background:conic-gradient(from 0deg,#9ad7ff,#d3c2ff,#ff9fd6,#ffef9a,#b8f0ff,#b9a2ff,#ffc6e6,#9ad7ff);filter:blur(18px);animation:spin 18s linear infinite}
.shade{position:absolute;inset:0;border-radius:50%;background:radial-gradient(circle at 34% 28%,rgba(255,255,255,.9) 0 5%,rgba(255,255,255,0) 30%),radial-gradient(circle at 72% 80%,rgba(70,40,130,.3),transparent 55%)}
.ring{position:absolute;inset:0;width:100%;height:100%}
.s-big{position:absolute;width:21%;right:6%;top:4%;animation:twinkle 4s ease-in-out infinite}
.s-small{position:absolute;width:11%;left:8%;bottom:10%;animation:twinkle 5s ease-in-out infinite reverse}
@keyframes spin{to{transform:rotate(360deg)}}
@keyframes twinkle{0%,100%{transform:scale(1) rotate(0)}50%{transform:scale(.82) rotate(12deg)}}

/* countdown */
.cdcard{display:flex;flex-direction:column;gap:18px}
.cd{display:grid;grid-template-columns:repeat(4,minmax(0,1fr));gap:10px}
.cd b{display:block;font-size:clamp(30px,3.6vw,54px);font-variant-numeric:tabular-nums;margin-bottom:6px}
.cd-big{font-size:clamp(34px,4.4vw,60px);display:block;margin-bottom:8px}
.holo-bar{height:12px;background:var(--holo)}
.dl{display:grid;grid-template-columns:auto 1fr;gap:6px 14px;margin:0}
.dl dt{color:var(--muted)}.dl dd{margin:0;font-weight:700}
.live{display:inline-block;width:12px;height:12px;background:var(--warn);margin-right:8px;animation:blink 1s steps(2) infinite}
@keyframes blink{50%{opacity:0}}

/* games */
.game{display:grid;grid-template-columns:48px minmax(0,1fr) auto;gap:14px;align-items:center;padding:14px 0;border-top:2px solid var(--ink)}
.game:last-of-type{border-bottom:2px solid var(--ink)}
.rank{font-size:26px}
.gt{font-weight:800;font-size:16px}
.bar{height:8px;background:var(--surface-2);margin-top:8px;position:relative}
.bar i{position:absolute;inset:0 auto 0 0;background:var(--holo)}
.vote{min-width:72px}
.sugg{display:flex;gap:10px;align-items:center;padding:8px 0;border-top:2px dashed var(--ink)}
.ideas{display:grid;grid-template-columns:repeat(auto-fill,minmax(230px,1fr));gap:10px}
.idea{border:2px solid var(--ink);padding:12px;display:flex;flex-direction:column;gap:8px;background:var(--surface)}
.idea b{font-size:15px}
.idea .btn{margin-top:auto;align-self:flex-start}

/* guests */
.glist{display:grid;grid-template-columns:repeat(auto-fill,minmax(200px,1fr));gap:8px}
.gitem{display:flex;gap:10px;align-items:center;border:2px solid var(--ink);padding:8px;min-width:0}
.gitem>div{min-width:0;flex:1}
.gitem b{display:block;white-space:nowrap;overflow:hidden;text-overflow:ellipsis}
.gitem .h{font-size:12px;color:var(--muted);white-space:nowrap;overflow:hidden;text-overflow:ellipsis;display:flex;gap:6px;align-items:center}
.gitem.declined{opacity:.45}
.av{width:38px;height:38px;display:grid;place-items:center;font:900 13px 'Archivo';font-stretch:125%;background:var(--holo);color:#111;flex:none}
.av.maybe{background:transparent;color:var(--ink);border:2px dashed var(--ink)}
.av.declined{background:var(--surface-2);color:var(--muted)}

/* rooms and floor plan */
.tabs{display:flex;border:2px solid var(--ink);max-width:100%;overflow-x:auto;scrollbar-width:none}
.tabs button{background:none;border:0;color:var(--ink);padding:0 14px;min-height:38px;font:800 12px 'Archivo';font-stretch:115%;text-transform:uppercase;letter-spacing:.06em;cursor:pointer;white-space:nowrap}
.tabs button+button{border-left:2px solid var(--ink)}
.tabs button[aria-selected=true]{background:var(--ink);color:var(--surface)}
.room-scroll{display:flex;overflow-x:auto;padding:30px 8px 12px;margin:0 -8px;-webkit-overflow-scrolling:touch}
.room{position:relative;flex:none;aspect-ratio:var(--w)/var(--h);background-color:var(--surface-2);background-image:linear-gradient(var(--grid) 1px,transparent 1px),linear-gradient(90deg,var(--grid) 1px,transparent 1px);background-size:calc(100% / var(--w)) calc(100% / var(--h));border:2px solid var(--ink)}
.room-label{position:absolute;left:0;top:-24px;color:var(--muted)}
.room-out{position:absolute;right:0;top:-24px;display:flex;gap:6px;align-items:center;color:var(--muted)}
.tg{position:absolute}
.tb{position:absolute;inset:0;background:var(--ink);color:var(--surface);font:900 10px 'Archivo';font-stretch:125%;text-transform:uppercase;user-select:none;-webkit-user-select:none;z-index:1;overflow:hidden;padding:2px 4px}
.edit .tb{cursor:grab;touch-action:none}
.edit .tb.dragging{cursor:grabbing}
.tg.sel::before{content:'';position:absolute;inset:-5px;background:var(--holo);z-index:0}
.mon{position:absolute;background:var(--surface);opacity:.85;pointer-events:none}
.mon.uw{background:var(--holo);opacity:1}
.seat{position:absolute;z-index:2;border:2px solid var(--ink);background:var(--surface);color:var(--ink);display:flex;flex-direction:column;align-items:center;justify-content:center;gap:1px;font:800 11px/1.1 'Archivo';cursor:pointer;padding:2px 4px;overflow:hidden;text-align:center}
.seat:hover{box-shadow:2px 2px 0 var(--ink)}
.seat .sn{max-width:100%;max-height:100%;overflow:hidden;display:-webkit-box;-webkit-box-orient:vertical;-webkit-line-clamp:2;overflow-wrap:anywhere}
.seat .uw{position:absolute;right:2px;top:1px;font:700 7px 'JetBrains Mono',monospace;letter-spacing:.04em;opacity:.7}
.seat.vert .uw{right:auto;left:1px;bottom:2px;top:auto}
.seat.taken{background:var(--holo);color:#111;border-color:#111}
.seat.free{border-style:dashed;background:transparent;color:var(--muted);font-weight:600}
.seat.vert{writing-mode:vertical-rl}
.seat.hl{outline:3px solid var(--ink);outline-offset:2px;z-index:3}
.plan-foot{display:flex;justify-content:space-between;gap:12px;align-items:center;flex-wrap:wrap}
.legend{display:flex;gap:14px;flex-wrap:wrap;align-items:center}
.legend span{display:inline-flex;gap:6px;align-items:center}
.sw{width:14px;height:14px;border:2px solid var(--ink);display:inline-block;background:var(--surface)}
.sw.t{background:var(--holo);border-color:#111}
.sw.f{border-style:dashed;background:transparent}
.sw.uw{width:22px;height:6px;border:0;background:var(--holo)}
.seatinfo{border:2px solid var(--ink);padding:10px 12px;display:flex;gap:10px;align-items:center;min-height:46px;flex-wrap:wrap}
.floor{display:grid;grid-template-columns:minmax(0,1fr) 320px;gap:14px;align-items:start}
@media(max-width:1100px){.floor{grid-template-columns:1fr}}
.onpage button.chip{color:var(--page-ink)}
.onpage button.chip[aria-pressed=true]{background:var(--page-ink);color:var(--page);border-color:var(--page-ink)}
.ttypes{display:grid;grid-template-columns:1fr 1fr;gap:8px}
.ttype{border:2px solid var(--ink);background:none;color:var(--ink);padding:10px;text-align:left;cursor:pointer;display:flex;flex-direction:column;gap:4px}
.ttype:hover{background:var(--ink);color:var(--surface)}
.ttype b{font:900 12px 'Archivo';font-stretch:120%;text-transform:uppercase}
.ttype small{font-size:11px;opacity:.75}
.tt-ico{height:26px;display:flex;align-items:center}

/* zoom, events, invites, templates */
.zoom{display:flex;align-items:stretch;border:2px solid var(--ink)}
.zoom button{background:none;border:0;color:var(--ink);min-width:36px;min-height:36px;display:grid;place-items:center;cursor:pointer;font:800 11px 'Archivo';font-stretch:115%;text-transform:uppercase;letter-spacing:.06em;padding:0 10px}
.zoom button+button,.zoom span+button{border-left:2px solid var(--ink)}
.zoom button[aria-pressed=true]{background:var(--ink);color:var(--surface)}
.zoom span{display:grid;place-items:center;padding:0 10px;border-left:2px solid var(--ink);min-width:58px}
.evbar{display:flex;align-items:center;gap:14px;color:var(--page-ink);margin-bottom:14px;flex-wrap:wrap}
.onpage-tabs{border-color:var(--page-ink)}
.onpage-tabs button{color:var(--page-ink)}
.onpage-tabs button+button{border-left-color:var(--page-ink)}
.onpage-tabs button[aria-selected=true]{background:var(--page-ink);color:var(--page)}
.evsel{padding:8px 12px 14px;border-bottom:2px solid currentColor;margin-bottom:8px;display:flex;flex-direction:column;gap:6px}
.evsel-r{display:flex;gap:6px}
.evsel .field{border-color:currentColor;color:inherit;min-height:40px}
.evsel .field option{color:#111}
.navsep{padding:16px 12px 6px;border-top:2px solid currentColor;margin-top:8px}
.invites{display:grid;grid-template-columns:repeat(auto-fill,minmax(380px,1fr));gap:14px}
.linkrow{display:flex;gap:6px}
.linkrow .field{flex:1;font-size:12px}
.evgrid{display:grid;grid-template-columns:repeat(auto-fill,minmax(320px,1fr));gap:14px}
.evcard{display:flex;flex-direction:column;gap:12px}
.evcard h2{margin:0;font-size:clamp(24px,2.4vw,32px)}
.evnums{display:grid;grid-template-columns:repeat(3,1fr);gap:10px;border-top:2px solid currentColor;border-bottom:2px solid currentColor;padding:12px 0}
.evnums b{display:block;font-size:30px;margin-bottom:4px}
.tpl-h{display:flex;gap:12px;align-items:flex-end;flex-wrap:wrap}
.r-tpl{grid-template-columns:minmax(0,2fr) 160px 180px 40px}
.insp .rows .row{background:transparent}

/* packing */
.pgroup{margin-bottom:18px}
.pgroup h3{margin:0 0 8px;font-size:15px}
.pitem{display:flex;gap:12px;align-items:center;padding:9px 0;border-top:2px solid var(--ink);cursor:pointer}
.pitem span{flex:1}
.pitem.done span{text-decoration:line-through;color:var(--muted)}

/* alerts and meters */
.alert{display:flex;gap:14px;align-items:flex-start;padding:16px 18px;background:var(--inv);color:var(--inv-ink);border-left:10px solid;border-image:var(--holo) 1}
.alert.bad{border-image:none;border-left-color:var(--warn)}
.alert p{margin:6px 0 0}
.alert ul{margin:8px 0 0;padding-left:18px}
.pmeters{display:grid;grid-template-columns:repeat(auto-fill,minmax(220px,1fr));gap:12px;margin-top:12px}
.pm{background:var(--surface);padding:12px 14px}
.pm-h{display:flex;justify-content:space-between;gap:8px;align-items:center}
.meter{height:8px;background:var(--surface-2);margin-top:10px}
.meter i{display:block;height:100%;background:var(--holo);max-width:100%}
.meter.over i{background:var(--warn)}

/* planner */
.pl{display:grid;grid-template-columns:236px minmax(0,1fr);gap:14px;align-items:start}
.side{position:sticky;top:86px;display:flex;flex-direction:column;padding:10px;gap:2px}
.side .navb{display:flex;gap:10px;align-items:center;background:none;border:0;color:inherit;padding:0 12px;min-height:42px;text-align:left;font:800 12px 'Archivo';font-stretch:118%;text-transform:uppercase;letter-spacing:.05em;cursor:pointer;width:100%}
.side .navb:hover{background:rgba(127,127,127,.18)}
.side .navb[aria-current=page]{background:var(--holo);color:#111}
.side .badge{margin-left:auto}
.who{border-top:2px solid currentColor;margin-top:10px;padding:14px 12px 4px;display:flex;justify-content:space-between;gap:10px;align-items:center}
.who b{display:block}
.pane{display:flex;flex-direction:column;gap:14px;min-width:0}
.pane-h{display:flex;justify-content:space-between;align-items:flex-end;gap:12px;flex-wrap:wrap;color:var(--page-ink);padding:4px 0}
.pane-h h1{margin:0;font-size:clamp(30px,4.4vw,56px)}
.pane-h .btn:not(.holo):not(.solid){color:var(--page-ink)}
.stats{display:grid;grid-template-columns:repeat(4,minmax(0,1fr));gap:14px}
.stat{display:flex;flex-direction:column;gap:8px;min-height:190px}
.stat .big{font-size:clamp(40px,4.6vw,68px);margin-top:auto}
.stat .ich{display:flex;justify-content:space-between;align-items:center}
.sec-h{color:var(--page-ink);margin:10px 0 0;font-size:22px}

/* list rows */
.rows{display:flex;flex-direction:column;gap:8px}
.row{display:grid;gap:8px;align-items:center;padding:10px;border:2px solid var(--ink);background:var(--surface)}
.row.head{border:0;background:none;padding:0 12px;color:var(--page-ink);opacity:.75}
.row .ml{display:none}
.r-guests{grid-template-columns:minmax(0,1.3fr) minmax(0,1fr) 130px 140px 80px 110px 40px}
.r-games{grid-template-columns:minmax(0,1.6fr) minmax(0,1fr) minmax(0,.8fr) 130px 90px 40px}
.gmeta{display:flex;flex-wrap:wrap;gap:4px 8px;align-items:center}
.r-pack{grid-template-columns:minmax(0,2fr) minmax(0,1fr) 110px 40px}
.r-todo{grid-template-columns:30px minmax(0,2fr) 150px 160px 90px 40px}
.r-team{grid-template-columns:minmax(0,1fr) 160px 40px}
.row.done-row{opacity:.55}
.cellc{display:flex;align-items:center;gap:6px;min-width:0}
.empty{padding:28px;border:2px dashed var(--ink);text-align:center;color:var(--muted)}
.pane>.empty{border-color:var(--page-ink);color:var(--page-ink);opacity:.7}
.tasks{display:flex;flex-direction:column}
.task{display:grid;grid-template-columns:minmax(0,1fr) auto auto;gap:12px;align-items:center;padding:11px 0;border-top:2px solid var(--ink)}
.task b{overflow:hidden;text-overflow:ellipsis;white-space:nowrap}
.addbar{display:grid;grid-template-columns:minmax(0,2fr) 150px 160px auto;gap:8px}
.insp{display:flex;flex-direction:column;gap:16px}
.insp h3{margin:0;font-size:16px}
.insp .two{display:grid;grid-template-columns:1fr 1fr;gap:8px}
.lock{max-width:480px;margin:40px auto 0;display:flex;flex-direction:column;gap:16px}
.lock h1{margin:0;font-size:clamp(30px,5vw,46px)}
.foot{color:var(--page-ink);opacity:.7;display:flex;gap:10px;align-items:center;justify-content:center;padding:28px 0 0;font-size:12px;text-align:center}
.reg{display:grid;grid-template-columns:auto minmax(0,1fr) auto;gap:14px;align-items:start}
.reg dl{grid-column:2/-1}
.reg .btns{justify-content:flex-end}
.signup-side{display:flex;flex-direction:column;gap:18px;min-height:520px}
.signup-side h1{margin:0;font-size:clamp(34px,5vw,64px)}
.mine{border:2px solid var(--ink);padding:14px;display:flex;gap:12px;align-items:center;flex-wrap:wrap;margin-bottom:10px}
.mine>div{flex:1;min-width:160px}

/* modal + toast */
.modal{position:fixed;inset:0;background:rgba(8,8,10,.62);display:grid;place-items:center;z-index:50;padding:16px}
.modal[hidden]{display:none}
.modal-box{background:var(--surface);color:var(--ink);width:min(480px,100%);max-height:86vh;overflow:auto;padding:22px;border:2px solid var(--ink);box-shadow:8px 8px 0 var(--focus)}
.modal-box h2{margin:0;font-size:24px}
.mlist{display:flex;flex-direction:column;gap:6px;margin:14px 0}
.mlist button{display:flex;align-items:center;gap:10px;border:2px solid var(--ink);background:none;color:var(--ink);padding:6px 10px 6px 6px;cursor:pointer;text-align:left;font:inherit}
.mlist button:hover:not([disabled]),.mlist button.cur{background:var(--ink);color:var(--surface)}
.mlist button[disabled]{opacity:.4;cursor:not-allowed}
.mlist button .av{width:32px;height:32px;font-size:11px}
.mlist small{margin-left:auto;opacity:.75;text-align:right}
.toast{position:fixed;left:50%;bottom:20px;transform:translateX(-50%);background:var(--inv);color:var(--inv-ink);padding:12px 16px;font-weight:700;z-index:60;display:flex;gap:10px;align-items:center;border-left:8px solid;border-image:var(--holo) 1;max-width:calc(100% - 32px)}
.toast[hidden]{display:none}

@media (max-width:1100px){
  .stats{grid-template-columns:repeat(2,minmax(0,1fr))}
  .r-todo{grid-template-columns:30px minmax(0,1fr) 130px 140px 40px}
  .r-todo .st{display:none}
}
@media (max-width:900px){
  .grid>*{grid-column:span 12 !important}
  .pl{grid-template-columns:1fr}
  .side{position:static;flex-direction:row;overflow-x:auto;padding:6px;scrollbar-width:none}
  .side .navb{width:auto;white-space:nowrap;flex:none}
  .side .badge{margin-left:4px}
  .who{border-top:0;border-left:2px solid currentColor;margin:0 0 0 6px;padding:0 0 0 12px;flex:none}
  .who .wtxt{display:none}
  .navsep{display:none}
  .evsel{border-bottom:0;border-right:2px solid currentColor;margin:0 6px 0 0;padding:0 10px 0 4px;flex:none;min-width:220px}
  .evsel .label{display:none}
  .invites{grid-template-columns:1fr}
  .row.head{display:none}
  .row{grid-template-columns:1fr 1fr !important}
  .row .ml{display:block;font-size:10px;color:var(--muted);margin-bottom:2px}
  .row .wide-cell{grid-column:1/-1}
  .r-todo .st{display:flex}
  .addbar{grid-template-columns:1fr 1fr}
  .addbar .field:first-child{grid-column:1/-1}
  .hero{min-height:0}
  .hero-art{width:340px;right:-120px;top:120px;transform:none;opacity:.9}
  .meta{max-width:100%}
  .signup-side{min-height:0}
}
@media (max-width:560px){
  .wrap{padding:0 10px 30px}
  .card{padding:18px}
  .form{grid-template-columns:1fr}
  .seg button span{display:none}
  .seg button{padding:0 11px}
  .tag{font-size:22px}
  .stat{min-height:150px}
  .hero-art{width:260px;right:-110px;top:70px}
  .reg{grid-template-columns:auto minmax(0,1fr)}
  .reg .btns{grid-column:1/-1;justify-content:flex-start}
}
@media (prefers-reduced-motion:reduce){*{animation:none !important;transition:none !important}}

/* ---------- server edition ---------- */
.foot-sep{width:6px;height:6px;background:var(--holo)}
.or{display:flex;align-items:center;gap:10px}.or::before,.or::after{content:'';flex:1;height:2px;background:var(--ink);opacity:.2}
.sync{display:flex;gap:5px;align-items:center;margin-top:4px;opacity:.75}
.r-user{grid-template-columns:auto minmax(0,1fr) minmax(0,1.4fr) auto}
.pkrow{display:grid;grid-template-columns:auto minmax(0,1fr) auto auto;gap:10px;align-items:center}
.codes{display:grid;grid-template-columns:1fr 1fr;gap:6px;border:2px solid var(--ink);padding:12px;font-size:15px}
.qr{background:#fff;padding:10px;width:220px;max-width:100%}.qr svg{display:block;width:100%;height:auto}
.srow{display:grid;grid-template-columns:200px minmax(0,1fr) 32px;gap:8px;align-items:center}
.tour-h{display:flex;gap:10px;align-items:flex-end;flex-wrap:wrap}
.tour-split{display:grid;grid-template-columns:minmax(220px,300px) minmax(0,1fr);gap:16px;align-items:start}
.tour-split textarea{min-height:200px}
.tour-preview{border-top:2px solid var(--ink);padding-top:12px}
.ptour{border-top:2px solid var(--ink);padding:14px 0}.ptour-h{display:flex;justify-content:space-between;align-items:flex-start;gap:10px;margin-bottom:10px}
.sitem{display:grid;grid-template-columns:110px minmax(0,1fr);gap:4px 12px;padding:10px 0;border-top:2px solid currentColor;align-items:baseline}
.sitem .small{grid-column:2}.sitem.past{opacity:.45}.sitem.now b{background:var(--holo);color:#111;padding:0 6px}
/* bracket */
.bracket{display:flex;gap:14px;overflow-x:auto;padding-bottom:6px;align-items:stretch}
.bround{display:flex;flex-direction:column;gap:8px;min-width:170px;flex:1}
.bmatches{display:flex;flex-direction:column;justify-content:space-around;gap:10px;flex:1}
.bm{border:2px solid var(--ink);background:var(--surface)}
.bm.bye{opacity:.5;border-style:dashed}
.bm.bye .bp.win{background:transparent;color:inherit}
.bp{display:flex;justify-content:space-between;align-items:center;gap:8px;padding:6px 8px;min-height:34px}
.bp+.bp{border-top:2px solid var(--ink)}
.bp span,.bname{overflow:hidden;text-overflow:ellipsis;white-space:nowrap;min-width:0}
.bp i{opacity:.5}
.bp.win{background:var(--holo);color:#111;font-weight:800}
.bp.lose{opacity:.5}
.bname{background:none;border:0;color:inherit;font:inherit;text-align:left;cursor:pointer;padding:0;flex:1}
.bname:disabled{cursor:default}
.bscore{width:56px;border:2px solid currentColor;background:transparent;color:inherit;padding:2px 6px;min-height:28px}
.bchamp{border:2px solid var(--ink);padding:14px 12px;display:flex;flex-direction:column;gap:8px;align-items:flex-start}
.bchamp.on{background:var(--holo);color:#111;border-color:#111}
.bchamp b{font-size:18px}
.board{display:flex;flex-direction:column}
.brow{display:grid;grid-template-columns:44px minmax(0,1fr) auto;gap:12px;align-items:center;padding:8px 0;border-top:2px solid var(--ink)}
.brow .rank{font-size:20px}.brow.top:first-child b{background:var(--holo);color:#111;padding:0 6px;justify-self:start}
/* big screen */
body.dash-mode{overflow:hidden;background:#0b0b0c}
body.dash-mode .top,body.dash-mode .foot{display:none}
body.dash-mode .wrap{padding:0}
.dash{--ink:#ececea;--muted:#a09d9b;--surface:#1c1c1e;--surface-2:#2a2a2d;height:100vh;display:flex;flex-direction:column;gap:1.1vw;padding:1.4vw 1.6vw;background:#0b0b0c;color:#ececea;font-size:clamp(14px,1.05vw,26px)}
.dash-top{display:flex;align-items:center;gap:2vw}
.dash-ev{flex:1;display:flex;flex-direction:column;gap:.3vw;border-left:2px solid #ececea;padding-left:2vw}
.dash-ev b{font-size:2.2vw}.dash-ev .label{font-size:.75vw;color:#a09d9b}
.dash-clock{font-size:4.2vw;font-variant-numeric:tabular-nums}
.dash-msg{display:flex;align-items:center;justify-content:center;gap:1.4vw;background:var(--holo);color:#111;padding:.9vw}
.dash-msg[hidden]{display:none}.dash-msg b{font-size:2vw}
.dash-grid{display:grid;grid-template-columns:minmax(0,1.75fr) minmax(0,1fr);gap:1.1vw;min-height:0;overflow:hidden;flex:1}
.dash[data-layout="s"] .dash-grid,.dash[data-layout=""] .dash-grid{grid-template-columns:1fr}
.dash[data-layout="s"] .dash-side{display:grid;grid-template-columns:1.6fr 1fr;grid-template-rows:auto 1fr}
.dash[data-layout="s"] .d-stream{grid-row:span 2}
.dash-side{display:grid;grid-template-columns:1fr 1fr;grid-template-rows:auto minmax(0,1fr);gap:1.1vw;min-height:0}
.dash-side .d-stream{grid-column:1/-1}
.dcard{background:#1c1c1e;padding:1.3vw;min-height:0;overflow:hidden;display:flex;flex-direction:column;gap:.9vw}
.dcard[hidden]{display:none}
.dcard-h{display:flex;justify-content:space-between;align-items:flex-start;gap:1vw}
.dcard-h h2{margin:.4vw 0 .2vw;font-size:2.4vw}
.dcard .label{font-size:.8vw;display:flex;gap:.4vw;align-items:center}
.dcard .chip{font-size:.75vw}
.d-tour .d-body{flex:1;min-height:0;display:flex;flex-direction:column;justify-content:center}
.d-tour .bracket{flex:1;gap:1vw;overflow:hidden}
.d-tour .bround{min-width:0}
.d-tour .bp{min-height:2.6vw;padding:.4vw .7vw;font-size:1vw}
.d-tour .bm{background:#141416;border-color:#ececea}
.d-tour .bchamp b{font-size:1.6vw}
.d-tour .brow{padding:.7vw 0;font-size:1.5vw;border-color:#ececea}.d-tour .brow .rank{font-size:2vw}
.d-stream{flex:none}
.d-video{position:relative;aspect-ratio:16/9;background:#000}
.d-video iframe{position:absolute;inset:0;width:100%;height:100%;border:0}
.d-sched{flex:1}
.d-sched .sitem{grid-template-columns:7vw minmax(0,1fr);border-color:#3a3a3c;padding:.6vw 0}
.dnums{display:grid;grid-template-columns:repeat(3,1fr);gap:.6vw}
.dnums b{display:block;font-size:2.4vw}
.dnums .label{font-size:.65vw!important}
.dgames{display:grid;gap:.5vw}.dgames>div{display:grid;grid-template-columns:1fr auto;gap:.3vw}.dgames .bar{grid-column:1/-1;margin:0;height:.4vw;background:#2a2a2d}
.ticker{flex:none;overflow:hidden;background:#ececea;color:#0b0b0c;white-space:nowrap;height:3.4vw;display:flex;align-items:center}
.ticker[hidden]{display:none}
.ticker-in{display:flex;flex:none;line-height:1;gap:2vw;align-items:center;animation:tick linear infinite;padding-left:2vw;font-weight:800;font-stretch:118%;text-transform:uppercase;font-size:1.3vw}
.ticker-in .star{width:1.2vw;height:1.2vw}
@keyframes tick{to{transform:translateX(-50%)}}
@media (max-width:900px){.srow{grid-template-columns:1fr 1fr 32px}.tour-split{grid-template-columns:1fr}.r-user{grid-template-columns:auto 1fr!important}.r-user .chips,.r-user .btns{grid-column:1/-1}.pkrow{grid-template-columns:auto 1fr auto}.pkrow .small{display:none}}
@media (max-width:900px) and (orientation:portrait){.dash{height:auto;min-height:100vh;font-size:15px}.dash-grid{grid-template-columns:1fr}body.dash-mode{overflow:auto}}

/* passkey fingerprint */
.fp{overflow:visible}
.fp .fp-holo{stroke:var(--fp-sweep,url(#g-holo));opacity:0;transition:opacity .2s}
.btn.holo .fp,.chip.holo .fp{--fp-sweep:#ffffff}
.fp-anim .fp-base path{stroke-dasharray:1 1;animation:fpDraw .9s cubic-bezier(.7,0,.2,1) both}
.fp-anim .fp-base path:nth-child(2){animation-delay:.12s}
.fp-anim .fp-base path:nth-child(3){animation-delay:.24s}
.fp-anim .fp-base path:nth-child(4){animation-delay:.36s}
.fp-anim .fp-base path:nth-child(5){animation-delay:.46s}
@keyframes fpDraw{from{stroke-dashoffset:1}to{stroke-dashoffset:0}}
.btn:hover .fp-anim .fp-holo,.btn:focus-visible .fp-anim .fp-holo,.scanning .fp .fp-holo{opacity:1}
.btn:hover .fp-anim .fp-band,.btn:focus-visible .fp-anim .fp-band{animation:fpScan 1.1s cubic-bezier(.7,0,.2,1) both}
.scanning .fp .fp-band{animation:fpScan 1.15s cubic-bezier(.7,0,.2,1) infinite}
.scanning .fp{animation:fpPulse 1.15s ease-in-out infinite}
@keyframes fpScan{from{transform:translateY(0)}to{transform:translateY(1100px)}}
@keyframes fpPulse{50%{transform:scale(.88)}}
.btn.scanning{cursor:progress}

/* list search */
.search{display:flex;align-items:center;gap:10px;border:2px solid var(--page-ink);color:var(--page-ink);padding:0 12px;background:transparent}
.search .field{border:0;background:transparent;color:inherit;padding:0;min-height:44px}
.search .field:focus{box-shadow:none}
.search:focus-within{box-shadow:4px 4px 0 var(--focus)}
.search .field::-webkit-search-cancel-button{filter:grayscale(1)}
.search-n{opacity:.7;white-space:nowrap}
.search.in-modal{border-color:var(--ink);color:var(--ink);margin-top:14px}
.row[hidden],.mlist button[hidden]{display:none}

/* doors, windows, furniture */
.room-feat{position:absolute;inset:0;width:100%;height:100%;overflow:visible;pointer-events:none;color:var(--ink);z-index:0}
/* wall marks: the room border is 2px outside the padding box */
.wf{position:absolute;z-index:2;pointer-events:none}
.wf-top{top:-5px;height:8px}.wf-bottom{bottom:-5px;height:8px}.wf-left{left:-5px;width:8px}.wf-right{right:-5px;width:8px}
.wf-win{background:var(--holo);border:2px solid var(--ink)}
.wf-door{background:var(--surface-2)}
.wf-door.wf-top{top:-3px;height:5px}.wf-door.wf-bottom{bottom:-3px;height:5px}.wf-door.wf-left{left:-3px;width:5px}.wf-door.wf-right{right:-3px;width:5px}
.feat-row{display:grid;grid-template-columns:1fr 1fr 32px;gap:6px;align-items:end;padding:8px 0;border-top:2px dashed var(--ink)}
.feat-row .cellc{min-height:40px}
.it{position:absolute;z-index:1}
.it-in{position:absolute;inset:0;display:grid;place-items:center;overflow:hidden;user-select:none;-webkit-user-select:none}
.edit .it-in{cursor:grab;touch-action:none}.edit .it-in.dragging{cursor:grabbing}
.it.sel::before{content:'';position:absolute;inset:-5px;background:var(--holo)}
.it-l{position:relative;z-index:2;font:800 9px/1.1 'Archivo';font-stretch:115%;text-transform:uppercase;letter-spacing:.04em;text-align:center;padding:2px;max-width:100%;overflow:hidden;text-overflow:ellipsis;white-space:nowrap}
.it-couch .it-in{background:var(--surface);border:2px solid var(--ink);background-image:repeating-linear-gradient(90deg,transparent 0 calc(33.33% - 1px),var(--ink) calc(33.33% - 1px) 33.33%)}
.it-couch[data-rot="90"] .it-in,.it-couch[data-rot="270"] .it-in{background-image:repeating-linear-gradient(180deg,transparent 0 calc(33.33% - 1px),var(--ink) calc(33.33% - 1px) 33.33%)}
.it-couch .it-in::before{content:'';position:absolute;background:var(--ink);z-index:1}
.it-couch[data-rot="0"] .it-in::before{left:0;right:0;top:0;height:26%}
.it-couch[data-rot="180"] .it-in::before{left:0;right:0;bottom:0;height:26%}
.it-couch[data-rot="90"] .it-in::before{top:0;bottom:0;right:0;width:26%}
.it-couch[data-rot="270"] .it-in::before{top:0;bottom:0;left:0;width:26%}
.it-couch .it-l{background:var(--surface)}
.it-screen .it-in{background:#fff;border:2px solid var(--ink);box-shadow:0 3px 0 -1px var(--focus)}
.it-screen .it-l{color:#0b0b0c;font-size:8px}
.it-tv .it-in{background:var(--ink);border:3px solid var(--ink);box-shadow:inset 0 0 0 2px var(--surface-2)}
.it-tv .it-l{color:var(--surface)}
.it-beamer .it-in{background:var(--ink);color:var(--surface)}
.it-beamer .it-in::after{content:'';position:absolute;inset:32%;border-radius:50%;background:var(--holo)}
.it-beamer .it-l{display:none}
.it-beamer::after{content:'';position:absolute;pointer-events:none;background:linear-gradient(var(--cone-dir,180deg),rgba(195,157,244,.45),rgba(242,165,214,.08));z-index:-1}
.it-beamer[data-rot="0"]::after{left:-150%;right:-150%;top:100%;height:500%;clip-path:polygon(42% 0,58% 0,100% 100%,0 100%)}
.it-beamer[data-rot="180"]::after{--cone-dir:0deg;left:-150%;right:-150%;bottom:100%;height:500%;clip-path:polygon(0 0,100% 0,58% 100%,42% 100%)}
.it-beamer[data-rot="90"]::after{--cone-dir:270deg;top:-150%;bottom:-150%;right:100%;width:500%;clip-path:polygon(0 0,100% 42%,100% 58%,0 100%)}
.it-beamer[data-rot="270"]::after{--cone-dir:90deg;top:-150%;bottom:-150%;left:100%;width:500%;clip-path:polygon(0 42%,100% 0,100% 100%,0 58%)}
.it-tabletop .it-in{background:var(--surface);border:2px solid var(--ink);background-image:radial-gradient(var(--grid) 1.5px,transparent 1.6px);background-size:12px 12px}
.it-tabletop .it-l{background:var(--surface)}
.chair{position:absolute;border:2px solid var(--ink);background:var(--surface-2);pointer-events:none}
.legend .sw.door{border:0;border-left:2px solid var(--ink);border-top:2px dashed var(--ink);background:transparent}
.legend .sw.win{height:6px;width:20px;border:1.5px solid var(--ink);background:var(--holo)}
