@font-face{font-family:Bungee;font-style:normal;font-display:swap;font-weight:400;src:url(../media/bungee-vietnamese-400-normal.201x5f4y9x4zq.woff2)format("woff2"),url(../media/bungee-vietnamese-400-normal.0t6z7g46cdy4j.woff)format("woff");unicode-range:U+102-103,U+110-111,U+128-129,U+168-169,U+1A0-1A1,U+1AF-1B0,U+300-301,U+303-304,U+308-309,U+323,U+329,U+1EA0-1EF9,U+20AB}@font-face{font-family:Bungee;font-style:normal;font-display:swap;font-weight:400;src:url(../media/bungee-latin-ext-400-normal.0y09b_rl81i_x.woff2)format("woff2"),url(../media/bungee-latin-ext-400-normal.1frfo0wmom93u.woff)format("woff");unicode-range:U+100-2BA,U+2BD-2C5,U+2C7-2CC,U+2CE-2D7,U+2DD-2FF,U+304,U+308,U+329,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:Bungee;font-style:normal;font-display:swap;font-weight:400;src:url(../media/bungee-latin-400-normal.0lsn-fh5fepme.woff2)format("woff2"),url(../media/bungee-latin-400-normal.0kzq1fa_bnx0o.woff)format("woff");unicode-range:U+??,U+131,U+152-153,U+2BB-2BC,U+2C6,U+2DA,U+2DC,U+304,U+308,U+329,U+2000-206F,U+20AC,U+2122,U+2191,U+2193,U+2212,U+2215,U+FEFF,U+FFFD}
@font-face{font-family:Nunito Sans;font-style:normal;font-display:swap;font-weight:400;src:url(../media/nunito-sans-cyrillic-ext-400-normal.1tbw62__j9m_u.woff2)format("woff2"),url(../media/nunito-sans-cyrillic-ext-400-normal.1ql_23hh-1ghk.woff)format("woff");unicode-range:U+460-52F,U+1C80-1C8A,U+20B4,U+2DE0-2DFF,U+A640-A69F,U+FE2E-FE2F}@font-face{font-family:Nunito Sans;font-style:normal;font-display:swap;font-weight:400;src:url(../media/nunito-sans-cyrillic-400-normal.1r2hhi09j_b9-.woff2)format("woff2"),url(../media/nunito-sans-cyrillic-400-normal.0-48dq787qur6.woff)format("woff");unicode-range:U+301,U+400-45F,U+490-491,U+4B0-4B1,U+2116}@font-face{font-family:Nunito Sans;font-style:normal;font-display:swap;font-weight:400;src:url(../media/nunito-sans-vietnamese-400-normal.3x2-bekjzhfpd.woff2)format("woff2"),url(../media/nunito-sans-vietnamese-400-normal.19fhpe5wuyc2q.woff)format("woff");unicode-range:U+102-103,U+110-111,U+128-129,U+168-169,U+1A0-1A1,U+1AF-1B0,U+300-301,U+303-304,U+308-309,U+323,U+329,U+1EA0-1EF9,U+20AB}@font-face{font-family:Nunito Sans;font-style:normal;font-display:swap;font-weight:400;src:url(../media/nunito-sans-latin-ext-400-normal.1hev3_c8bz6fg.woff2)format("woff2"),url(../media/nunito-sans-latin-ext-400-normal.2gb4u0b7skkfm.woff)format("woff");unicode-range:U+100-2BA,U+2BD-2C5,U+2C7-2CC,U+2CE-2D7,U+2DD-2FF,U+304,U+308,U+329,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:Nunito Sans;font-style:normal;font-display:swap;font-weight:400;src:url(../media/nunito-sans-latin-400-normal.1978f_6vqaw1x.woff2)format("woff2"),url(../media/nunito-sans-latin-400-normal.18dkjpkz019zp.woff)format("woff");unicode-range:U+??,U+131,U+152-153,U+2BB-2BC,U+2C6,U+2DA,U+2DC,U+304,U+308,U+329,U+2000-206F,U+20AC,U+2122,U+2191,U+2193,U+2212,U+2215,U+FEFF,U+FFFD}
@font-face{font-family:Nunito Sans;font-style:normal;font-display:swap;font-weight:700;src:url(../media/nunito-sans-cyrillic-ext-700-normal.0fsgbsahsp25r.woff2)format("woff2"),url(../media/nunito-sans-cyrillic-ext-700-normal.3aw0ftmhvz02i.woff)format("woff");unicode-range:U+460-52F,U+1C80-1C8A,U+20B4,U+2DE0-2DFF,U+A640-A69F,U+FE2E-FE2F}@font-face{font-family:Nunito Sans;font-style:normal;font-display:swap;font-weight:700;src:url(../media/nunito-sans-cyrillic-700-normal.1equ0y7oxnkwz.woff2)format("woff2"),url(../media/nunito-sans-cyrillic-700-normal.18fuxl0m8wjho.woff)format("woff");unicode-range:U+301,U+400-45F,U+490-491,U+4B0-4B1,U+2116}@font-face{font-family:Nunito Sans;font-style:normal;font-display:swap;font-weight:700;src:url(../media/nunito-sans-vietnamese-700-normal.38rbojm3_-5hm.woff2)format("woff2"),url(../media/nunito-sans-vietnamese-700-normal.3iaszjqgugnr3.woff)format("woff");unicode-range:U+102-103,U+110-111,U+128-129,U+168-169,U+1A0-1A1,U+1AF-1B0,U+300-301,U+303-304,U+308-309,U+323,U+329,U+1EA0-1EF9,U+20AB}@font-face{font-family:Nunito Sans;font-style:normal;font-display:swap;font-weight:700;src:url(../media/nunito-sans-latin-ext-700-normal.1pz12g5drdep8.woff2)format("woff2"),url(../media/nunito-sans-latin-ext-700-normal.25ex4_o-7daq3.woff)format("woff");unicode-range:U+100-2BA,U+2BD-2C5,U+2C7-2CC,U+2CE-2D7,U+2DD-2FF,U+304,U+308,U+329,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:Nunito Sans;font-style:normal;font-display:swap;font-weight:700;src:url(../media/nunito-sans-latin-700-normal.33_pqf-qa37a0.woff2)format("woff2"),url(../media/nunito-sans-latin-700-normal.179grmam8g9xn.woff)format("woff");unicode-range:U+??,U+131,U+152-153,U+2BB-2BC,U+2C6,U+2DA,U+2DC,U+304,U+308,U+329,U+2000-206F,U+20AC,U+2122,U+2191,U+2193,U+2212,U+2215,U+FEFF,U+FFFD}
@font-face{font-family:Nunito Sans;font-style:normal;font-display:swap;font-weight:800;src:url(../media/nunito-sans-cyrillic-ext-800-normal.1chwjtmukojl6.woff2)format("woff2"),url(../media/nunito-sans-cyrillic-ext-800-normal.3q28wm-pxjlup.woff)format("woff");unicode-range:U+460-52F,U+1C80-1C8A,U+20B4,U+2DE0-2DFF,U+A640-A69F,U+FE2E-FE2F}@font-face{font-family:Nunito Sans;font-style:normal;font-display:swap;font-weight:800;src:url(../media/nunito-sans-cyrillic-800-normal.09k26cs-1qxee.woff2)format("woff2"),url(../media/nunito-sans-cyrillic-800-normal.30qidscsmi0x3.woff)format("woff");unicode-range:U+301,U+400-45F,U+490-491,U+4B0-4B1,U+2116}@font-face{font-family:Nunito Sans;font-style:normal;font-display:swap;font-weight:800;src:url(../media/nunito-sans-vietnamese-800-normal.2g-jkqh5uyogn.woff2)format("woff2"),url(../media/nunito-sans-vietnamese-800-normal.18nikoqmsp6w0.woff)format("woff");unicode-range:U+102-103,U+110-111,U+128-129,U+168-169,U+1A0-1A1,U+1AF-1B0,U+300-301,U+303-304,U+308-309,U+323,U+329,U+1EA0-1EF9,U+20AB}@font-face{font-family:Nunito Sans;font-style:normal;font-display:swap;font-weight:800;src:url(../media/nunito-sans-latin-ext-800-normal.2qn3vk3p0omdi.woff2)format("woff2"),url(../media/nunito-sans-latin-ext-800-normal.293xmb7ilbgip.woff)format("woff");unicode-range:U+100-2BA,U+2BD-2C5,U+2C7-2CC,U+2CE-2D7,U+2DD-2FF,U+304,U+308,U+329,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:Nunito Sans;font-style:normal;font-display:swap;font-weight:800;src:url(../media/nunito-sans-latin-800-normal.2xaw965nvnpom.woff2)format("woff2"),url(../media/nunito-sans-latin-800-normal.228pq6zzqebie.woff)format("woff");unicode-range:U+??,U+131,U+152-153,U+2BB-2BC,U+2C6,U+2DA,U+2DC,U+304,U+308,U+329,U+2000-206F,U+20AC,U+2122,U+2191,U+2193,U+2212,U+2215,U+FEFF,U+FFFD}
:root{--ink:#0f3b40;--ink-deep:#0b2f33;--panel:#164a50;--panel-hi:#1c565d;--line:#2c6066;--paper:#efe3c8;--muted:#a9c9c4;--accent:#f28a3c;--p1:#f28a3c;--p2:#8ec6ff;--p3:#efe3c8;--p4:#d9a3e0;--good:#7fd9a8;--warn:#f2c14e;--danger:#ff8a7a;--font-display:"Bungee", "Arial Black", sans-serif;--font-body:"Nunito Sans", system-ui, sans-serif;--r-sm:999px;--r-md:16px;--r-box:12px;--step:8px;--lightningcss-light: ;--lightningcss-dark:initial;color-scheme:dark}*,:before,:after{box-sizing:border-box}html,body{min-height:100%;margin:0}body{background:var(--ink);color:var(--paper);font-family:var(--font-body);-webkit-font-smoothing:antialiased;font-size:17px;line-height:1.5}body[data-scanlines=on]:after{content:"";pointer-events:none;z-index:100;background:repeating-linear-gradient(#0000 0 2px,#00000029 3px);position:fixed;inset:0}body:has(.stage):after{display:none}a{color:inherit}button,input,select{font:inherit;color:inherit}:focus-visible{outline:3px solid var(--accent);outline-offset:3px}h1,h2,h3{font-family:var(--font-display);margin:0;font-weight:400;line-height:1.05}.shell{grid-template-rows:auto 1fr auto;gap:40px;max-width:1120px;min-height:100dvh;margin:0 auto;padding:40px 48px 32px;display:grid}.topbar{flex-wrap:wrap;justify-content:space-between;align-items:center;gap:12px 24px;display:flex}.brand{justify-items:start;gap:.18em;font-size:22px;text-decoration:none;display:inline-grid}.brand-tag{font:800 max(10px, .46em) / 1 var(--font-body);letter-spacing:.14em;text-transform:uppercase;background:var(--paper);color:var(--ink);border-radius:3px;margin-left:-.08em;padding:.25em .6em;rotate:-3deg}.brand-word{font-family:var(--font-display);color:var(--accent);align-items:center;gap:.4em;font-weight:400;line-height:1;display:inline-flex}.brand-word .ports i{width:.3em;height:.72em}.brand:hover .brand-word{color:var(--paper)}.ports{gap:4px;display:inline-flex}.ports i{border-radius:2px;width:8px;height:14px;display:block}.ports i:first-child{background:var(--p1)}.ports i:nth-child(2){background:var(--p2)}.ports i:nth-child(3){background:var(--p3)}.ports i:nth-child(4){background:var(--p4)}.pad-chip{color:var(--muted);white-space:nowrap;text-overflow:ellipsis;align-items:center;gap:8px;max-width:min(340px,100%);font-size:14px;display:inline-flex;overflow:hidden}.pad-chip .dot{background:var(--line);border-radius:50%;flex:none;width:8px;height:8px}.pad-chip[data-on=true] .dot{background:var(--p4);box-shadow:0 0 0 4px #7fd9a838}.footer{color:var(--muted);flex-wrap:wrap;justify-content:space-between;gap:16px;font-size:14px;display:flex}kbd{font-family:var(--font-display);border:1px solid var(--line);color:var(--paper);border-bottom-width:3px;border-radius:5px;padding:1px 6px;font-size:12px}.home{grid-template-columns:minmax(0,1.1fr) minmax(0,1fr);align-self:center;align-items:center;gap:64px;display:grid}.title{letter-spacing:-.01em;font-size:clamp(48px,7vw,92px)}.title span{display:block}.title .owner{color:var(--muted);letter-spacing:0;margin-bottom:.25em;font-size:.42em;font-weight:600}.tagline{max-width:34ch;color:var(--muted);margin:24px 0 0;font-size:19px}.menu{gap:12px;margin:0;padding:0;list-style:none;display:grid}.menu-item{--c:var(--p1);text-align:left;border-radius:var(--r-md);cursor:pointer;background:0 0;border:2px solid #0000;grid-template-columns:14px 1fr auto;align-items:center;gap:20px;width:100%;padding:22px 24px;transition:background .12s,border-color .12s,transform .12s;display:grid}.menu-item .marker{background:var(--line);border-radius:3px;width:14px;height:14px;transition:background .12s,transform .16s}.menu-item .label{font-family:var(--font-display);font-size:34px;font-weight:400;line-height:1}.menu-item .hint{color:var(--muted);font-size:15px}.menu-item[data-active=true]{background:var(--panel);border-color:var(--c)}.menu-item[data-active=true] .marker{background:var(--c);transform:rotate(45deg)}.menu-item:focus-visible{outline:none}.screen{align-self:start;gap:28px;width:100%;max-width:560px;display:grid}.screen-head{gap:10px;display:grid}.screen-head h1{font-size:48px}.screen-head p{color:var(--muted);margin:0}.back{color:var(--muted);justify-self:start;font-size:15px;text-decoration:none}.back:hover{color:var(--paper)}.field{gap:8px;display:grid}.field label,.field-label{font-size:15px;font-weight:700}.field .help{color:var(--muted);font-size:14px}.input{background:var(--ink-deep);border:2px solid var(--line);border-radius:var(--r-box);width:100%;padding:14px 16px;font-size:18px}.input:focus{border-color:var(--accent);outline:none}.code-input{font-family:var(--font-display);letter-spacing:.32em;text-transform:uppercase;padding:14px 20px;font-size:40px;font-weight:400}.btn{--c:var(--accent);border-radius:var(--r-sm);background:var(--c);color:var(--ink-deep);font-family:var(--font-body);cursor:pointer;border:0;justify-content:center;align-items:center;gap:10px;min-height:48px;padding:14px 22px;font-size:17px;font-weight:800;text-decoration:none;transition:transform 80ms,filter .12s;display:inline-flex}.btn:hover{filter:brightness(1.06)}.btn:active{transform:translateY(1px)}.btn:disabled{cursor:not-allowed;filter:grayscale(.7)brightness(.7)}.btn.ghost{color:var(--paper);box-shadow:inset 0 0 0 2px var(--line);background:0 0}.btn.small{min-height:36px;padding:8px 16px;font-size:15px}.error{border-left:4px solid var(--danger);border-radius:0 var(--r-sm) var(--r-sm) 0;background:#ff8a7a1f;padding:12px 16px}.settings{max-width:760px}.settings section{border-top:1px solid var(--line);gap:16px;padding:24px 0;display:grid}.settings section h2{font-size:24px}.map-grid{grid-template-columns:repeat(2,minmax(0,1fr));gap:8px 24px;display:grid}.map-row{border-bottom:1px dashed var(--line);justify-content:space-between;align-items:center;gap:12px;padding:8px 0;display:flex}.map-row .bind{border-radius:var(--r-sm);border:1px solid var(--line);background:var(--ink-deep);cursor:pointer;text-align:center;min-width:150px;padding:6px 10px;font-size:14px}.map-row .bind[data-listening=true]{border-color:var(--p3);color:var(--p3)}.toggle{justify-content:space-between;align-items:center;gap:16px;display:flex}.segmented{border:2px solid var(--line);border-radius:var(--r-sm);display:inline-flex;overflow:hidden}.segmented button{cursor:pointer;background:0 0;border:0;padding:8px 14px}.segmented button[aria-pressed=true]{background:var(--paper);color:var(--ink-deep);font-weight:700}.live-test{flex-wrap:wrap;gap:6px;display:flex}.live-test span{border:1px solid var(--line);color:var(--muted);border-radius:4px;padding:4px 8px;font-size:13px}.live-test span[data-on=true]{background:var(--p4);border-color:var(--p4);color:var(--ink-deep);font-weight:700}.key-legend{color:var(--muted);grid-template-columns:repeat(3,minmax(0,1fr));gap:8px 16px;font-size:15px;display:grid}.room{grid-template-columns:minmax(0,1fr) 340px;align-items:start;gap:40px;display:grid}.code-tiles{gap:10px;display:flex}.code-tiles span{width:64px;height:78px;font-family:var(--font-display);background:var(--paper);color:var(--ink);border-radius:var(--r-box);place-items:center;font-size:38px;display:grid}.code-actions{flex-wrap:wrap;gap:10px;display:flex}.slots{gap:10px;margin:0;padding:0;list-style:none;display:grid}.slot{border-radius:var(--r-md);border:2px dashed var(--line);color:var(--muted);grid-template-columns:44px 1fr auto;align-items:center;gap:14px;padding:12px 14px;display:grid}.slot .num{font-family:var(--font-display);background:var(--ink-deep);border-radius:50%;place-items:center;width:44px;height:44px;font-size:15px;display:grid}.slot[data-filled=true]{border-style:solid;border-color:var(--panel);color:var(--paper);background:var(--panel)}.slot[data-filled=true] .num{background:var(--c);color:var(--ink-deep)}.slot .tag{color:var(--muted);font-size:13px}.slot .name{text-overflow:ellipsis;white-space:nowrap;font-weight:700;overflow:hidden}.dropzone{text-align:center;border:2px dashed var(--line);border-radius:var(--r-md);cursor:pointer;place-items:center;gap:8px;padding:32px 24px;transition:border-color .12s,background .12s;display:grid}.dropzone:hover,.dropzone[data-over=true]{border-color:var(--p2);background:#8ec6ff14}.dropzone strong{font-family:var(--font-display);font-size:22px}.dropzone .help{color:var(--muted);font-size:14px}.waiting{border-radius:var(--r-md);background:var(--panel);gap:8px;padding:32px 24px;display:grid}.waiting h2{font-size:26px}.waiting p{color:var(--muted);margin:0}.blink{animation:1.1s steps(2,start) infinite blink}@keyframes blink{to{visibility:hidden}}.stage{z-index:50;background:#000;grid-template-rows:auto minmax(0,1fr);display:grid;position:fixed;inset:0}.stage-bar{background:var(--ink-deep);border-bottom:1px solid var(--line);align-items:center;gap:16px;padding:10px 16px;font-size:14px;display:flex}.stage-bar .code{font-family:var(--font-display);letter-spacing:.18em;font-weight:400}.stage-bar .spacer{flex:1}.stage-players{gap:8px;display:flex}.stage-players span{color:var(--muted);align-items:center;gap:6px;display:inline-flex}.stage-players i{border-radius:2px;width:10px;height:10px;display:block}.screen-area{min-height:0;position:relative;overflow:hidden}.fit-box{position:absolute;top:50%;left:50%;transform:translate(-50%,-50%)}.fit-box>#game,.fit-box>video{object-fit:contain;background:#000;width:100%;height:100%;display:block;position:absolute;inset:0}.fit-box>#game canvas{max-width:100%;max-height:100%}.stage{height:100dvh}body:has(.stage) .controls-fab{display:none}.overlay-msg{text-align:center;color:var(--muted);pointer-events:none;place-items:center;display:grid;position:absolute;inset:0}@media (max-width:900px){.shell{padding:24px 20px}.home,.room{grid-template-columns:1fr;gap:32px}.map-grid,.key-legend{grid-template-columns:1fr}.code-tiles span{width:46px;height:60px;font-size:32px}}@media (prefers-reduced-motion:reduce){*,:before,:after{transition:none!important;animation:none!important}}.controls{gap:16px;display:grid}.segmented.wide{grid-template-columns:1fr 1fr;display:grid}.segmented.wide button{justify-content:center;align-items:center;gap:8px;padding:10px 14px;display:inline-flex}.dot-on{background:var(--p4);border-radius:50%;width:8px;height:8px;display:inline-block}.segmented button[aria-pressed=true] .dot-on{background:var(--ink-deep)}.controls-help{color:var(--muted);margin:0;font-size:15px}.controls-empty{border:2px dashed var(--line);border-radius:var(--r-md);gap:6px;padding:24px;display:grid}.controls-empty strong{font-family:var(--font-display);font-size:20px}.controls-empty p{color:var(--muted);margin:0}.map-row .bind.fixed{cursor:default;color:var(--muted)}.controls[data-compact=true] .map-grid{grid-template-columns:1fr;gap:0}.controls[data-compact=true] .map-row{padding:6px 0}.controls-fab{z-index:60;border:2px solid var(--line);background:var(--panel);width:44px;height:44px;color:var(--paper);cursor:pointer;box-shadow:0 4px 0 var(--ink-deep);border-radius:10px;place-items:center;transition:border-color .12s,transform 80ms;display:grid;position:fixed;bottom:20px;right:20px}.controls-fab:hover,.controls-fab[aria-expanded=true]{border-color:var(--p3)}.controls-fab:active{transform:translateY(2px)}.sheet-backdrop{z-index:70;background:#08091c8c;justify-content:flex-end;display:flex;position:fixed;inset:0}.sheet{background:var(--ink);border-left:2px solid var(--line);flex-direction:column;gap:20px;width:min(440px,100%);height:100%;padding:24px;animation:.16s ease-out sheet-in;display:flex;overflow-y:auto}@keyframes sheet-in{0%{opacity:0;transform:translate(24px)}}.sheet-head{justify-content:space-between;align-items:center;gap:12px;display:flex}.sheet-head h2{font-size:28px}.sheet-more{color:var(--muted);font-size:15px}.segmented.layouts{flex-wrap:wrap;justify-self:start;display:flex}.segmented.layouts button{padding:8px 16px}.layout-list{flex-wrap:wrap;gap:8px;display:flex}.layout-chip{border:2px solid var(--line);border-radius:var(--r-sm);cursor:pointer;background:0 0;align-items:center;padding:7px 14px;font-size:15px;display:inline-flex}.layout-chip.mine{padding:0}.layout-chip.mine button{cursor:pointer;background:0 0;border:0;padding:7px 4px 7px 14px}.layout-chip.mine .remove{color:var(--muted);padding:7px 10px;font-size:18px;line-height:1}.layout-chip.mine .remove:hover{color:var(--danger)}.layout-chip[aria-pressed=true]{border-color:var(--p2);background:#f28a3c29;font-weight:700}span.layout-chip[aria-pressed=true]:not(.mine){cursor:default;border-style:dashed}.save-layout{gap:8px;display:flex}.save-layout .input{padding:8px 12px;font-size:16px}.ping{font-variant-numeric:tabular-nums;white-space:nowrap;border-radius:4px;margin-left:4px;padding:1px 6px;font-size:12px}.ping[data-level=good]{color:var(--good);background:#7fd9a824}.ping[data-level=ok]{color:var(--warn);background:#f2c14e24}.ping[data-level=bad]{color:var(--danger);background:#ff8a7a24}.topnav{flex-wrap:wrap;align-items:center;gap:24px;font-size:15px;display:flex}.topnav a{color:var(--muted);text-decoration:none}.topnav a:hover{color:var(--paper)}.footer-links{flex-wrap:wrap;gap:20px;display:flex}.footer-links a{color:var(--muted)}.topnav .nav-support{border:1.5px solid var(--accent);color:var(--accent);border-radius:999px;align-items:center;gap:6px;padding:6px 14px;font-weight:700;text-decoration:none;display:inline-flex}.topnav .nav-support:hover{background:var(--accent);color:var(--ink)}.footer .support-link{color:var(--accent);font-weight:700}.footer .support-link:hover{color:var(--paper)}.home2{flex-direction:column;gap:72px;padding-bottom:24px;display:flex}.hero{grid-template-columns:minmax(0,1.05fr) minmax(0,1fr);align-items:center;gap:56px;min-height:520px;display:grid}.hero-title{font-size:clamp(40px,4.4vw,64px);line-height:1.02}.hero-title .nowrap{white-space:nowrap;color:inherit}.hero-title>span:last-child{color:var(--accent)}.play-card{background:var(--panel);border-radius:20px;flex-direction:column;gap:18px;padding:24px;display:flex}.rejoin{background:var(--ink);border-radius:14px;justify-content:space-between;align-items:center;gap:16px;padding:14px 16px;text-decoration:none;display:flex}.rejoin>span:first-child{flex-direction:column;display:flex}.rejoin small{color:var(--muted);font-size:14px}.pill{font-family:var(--font-display);background:var(--paper);color:var(--ink);white-space:nowrap;border-radius:999px;padding:8px 14px;font-size:13px}.pill.ghost{color:var(--paper);box-shadow:inset 0 0 0 2px var(--line);background:0 0}.code-boxes{cursor:text;place-self:flex-start start;gap:8px;display:inline-flex;position:relative}.code-boxes span{border-radius:var(--r-box);border:2px solid var(--line);width:56px;height:66px;font-family:var(--font-display);place-items:center;font-size:28px;display:grid}.code-boxes span[data-filled=true]{background:var(--paper);color:var(--ink);border-color:var(--paper)}.code-boxes:focus-within span[data-next=true]{border-color:var(--accent)}.code-hidden{opacity:0;cursor:text;border:0;width:100%;position:absolute;inset:0}.code-boxes:focus-within{outline:3px solid var(--accent);outline-offset:6px;border-radius:var(--r-box)}.playing-as{color:var(--muted);margin:0;font-size:15px}.playing-as strong{color:var(--paper)}.link-btn{color:var(--muted);cursor:pointer;background:0 0;border:0;padding:0;font-size:15px;text-decoration:underline}.link-btn:hover{color:var(--paper)}.name-row{grid-template-columns:1fr auto;align-items:center;gap:8px;display:grid}.name-row label{grid-column:1/-1;font-size:15px;font-weight:700}.name-row .input{padding:10px 14px;font-size:16px}.card-actions{grid-template-columns:repeat(2,minmax(0,1fr));gap:10px;display:grid}.recent{color:var(--muted);flex-wrap:wrap;align-items:center;gap:8px;font-size:14px;display:flex}.recent a{font-family:var(--font-display);border:1px solid var(--line);color:var(--paper);border-radius:999px;padding:4px 10px;font-size:13px;text-decoration:none}.how{flex-direction:column;gap:20px;display:flex}.how h2,.guide h2{font-size:32px}.how ol{counter-reset:step;grid-template-columns:repeat(3,minmax(0,1fr));gap:16px;margin:0;padding:0;list-style:none;display:grid}.how li{border-radius:var(--r-md);background:var(--panel);counter-increment:step;flex-direction:column;gap:6px;padding:20px;display:flex}.how li strong{font-family:var(--font-display);color:var(--accent);font-size:20px;font-weight:400}.how li strong:before{content:counter(step) " · "}.how li span{color:var(--muted)}.guide-teaser{border-radius:var(--r-md);border:2px solid var(--line);flex-wrap:wrap;justify-content:space-between;align-items:center;gap:16px;padding:24px;text-decoration:none;display:flex}.guide-teaser>span:first-child{flex-direction:column;gap:4px;display:flex}.guide-teaser strong{font-size:20px}.guide-teaser small{color:var(--muted);font-size:15px}@media (max-width:900px){.hero,.how ol{grid-template-columns:1fr}.code-boxes span{width:44px;height:56px;font-size:22px}}.guide{flex-direction:column;gap:16px;max-width:720px;line-height:1.6;display:flex}.guide h1{font-size:clamp(36px,5vw,52px)}.guide h2{margin-top:20px;font-size:26px}.guide p,.guide ol{margin:0}.guide .lead{color:var(--muted);font-size:19px}.guide ol{gap:6px;padding-left:22px;display:grid}.table-wrap{overflow-x:auto}.guide table{border-collapse:collapse;width:100%;font-size:15px}.guide th{text-align:left;color:var(--muted);font-weight:700}.guide th,.guide td{border-bottom:1px solid var(--line);vertical-align:top;padding:10px 8px}.guide td:first-child{white-space:nowrap;font-weight:700}.banner{z-index:60;border-radius:var(--r-box);background:var(--ink-deep);border:2px solid var(--warn);max-width:min(640px,100vw - 32px);color:var(--paper);align-items:center;gap:14px;padding:12px 16px;font-size:15px;display:flex;position:fixed;bottom:24px;left:50%;transform:translate(-50%)}.stats{z-index:60;border-radius:var(--r-box);border:1px solid var(--line);font-variant-numeric:tabular-nums;background:#0b2f33eb;width:300px;max-height:calc(100vh - 96px);padding:12px 14px;font-size:13px;position:fixed;top:64px;right:16px;overflow-y:auto}.stats-head{color:var(--muted);justify-content:space-between;gap:8px;margin-bottom:8px;display:flex}.stats-head strong{color:var(--paper)}.stats dl{gap:3px;margin:0;display:grid}.stats dl>div{justify-content:space-between;gap:12px;display:flex}.stats dt{color:var(--muted);white-space:pre}.stats dd{text-align:right;margin:0}.stats [data-level=good] dd{color:var(--good)}.stats [data-level=ok] dd{color:var(--warn)}.stats [data-level=bad] dd{color:var(--danger)}.hint{color:var(--muted);max-width:60ch;margin:0;font-size:14px}.emu-picker{gap:10px;display:grid}.emu-row{flex-wrap:wrap;justify-content:space-between;align-items:center;gap:12px 16px;display:flex}.pad-info{gap:6px;font-size:14px;display:grid}.pad-info p{color:var(--muted);margin:0}.pad-info strong{color:var(--paper)}.pad-warning{border-radius:var(--r-box);border:1px solid var(--warn);padding:10px 12px;color:var(--paper)!important}.pad-raw{font-variant-numeric:tabular-nums}.guide ul{gap:6px;margin:0;padding-left:22px;display:grid}.jump-option{border:1px solid var(--line);border-radius:var(--r-box);background:var(--ink-deep);gap:8px;padding:14px 16px;display:grid}.jump-option .help{color:var(--muted);max-width:46ch;margin-top:4px;font-size:14px;display:block}.jump-option .map-row{border-bottom:0;padding-bottom:0}.toggle>.segmented{flex:none}.toggle>span{min-width:0}.room-side{gap:24px;display:grid}.chat{background:var(--ink-deep);border:1px solid var(--line);border-radius:var(--r-md);flex-direction:column;gap:10px;min-height:0;padding:14px;display:flex}.room-side .chat{height:360px}.voice-bar{justify-content:space-between;align-items:center;gap:10px;display:flex}.voice-people{flex-wrap:wrap;gap:6px;min-width:0;display:flex}.voice-empty{color:var(--muted);font-size:13px}.voice-person{border-radius:var(--r-sm);height:28px;font-family:var(--font-display);color:var(--ink-deep);background:var(--c);align-items:center;gap:3px;padding:0 8px;font-size:12px;transition:box-shadow .12s;display:inline-flex;box-shadow:0 0 #0000}.voice-person[data-speaking=true]{box-shadow:0 0 0 2px var(--ink-deep), 0 0 0 4px var(--good)}.voice-actions{gap:6px;display:flex}.icon-btn{border-radius:var(--r-sm);border:1px solid var(--line);height:32px;color:var(--paper);cursor:pointer;white-space:nowrap;background:0 0;align-items:center;gap:6px;padding:0 12px;font-size:13px;font-weight:700;display:inline-flex}.icon-btn:hover{background:var(--panel)}.icon-btn.join{border-color:var(--good);color:var(--good)}.icon-btn[data-active=true]{border-color:var(--danger);color:var(--danger)}.icon-btn.leave{color:var(--muted)}.icon-btn:disabled{opacity:.6;cursor:wait}.mic-icon{vertical-align:-2px;flex:none}.chat-hint,.chat-error{color:var(--muted);margin:0;font-size:13px}.chat-error{color:var(--danger)}.chat-list{border-top:1px dashed var(--line);overscroll-behavior:contain;flex:1;align-content:start;gap:8px;min-height:0;margin:0;padding:4px 2px;list-style:none;display:grid;overflow-y:auto}.chat-list li{overflow-wrap:anywhere;font-size:15px;line-height:1.35}.chat-name{letter-spacing:.04em;color:var(--c);font-size:12px;font-weight:800;display:block}.chat-text{color:var(--paper)}.chat-system,.chat-empty{color:var(--muted);font-style:italic;font-size:13px!important}.chat-form{align-items:center;gap:8px;display:flex}.chat-form .input{border-width:1px;padding:9px 12px;font-size:15px}.stage-body{min-height:0;display:flex}.stage-body>.screen-area{flex:1}.chat-dock{background:var(--ink);border-left:1px solid var(--line);flex:none;width:320px;min-height:0;padding:10px;display:grid}.chat-dock .chat{height:100%}.chat-toggle{position:relative}.badge{border-radius:var(--r-sm);background:var(--accent);min-width:18px;height:18px;color:var(--ink-deep);place-items:center;margin-left:6px;padding:0 5px;font-size:11px;font-weight:800;display:inline-grid}.slot .in-voice{color:var(--muted);margin-left:8px}.slot[data-speaking=true]{border-color:var(--good)}.stage-players span[data-speaking=true]{color:var(--paper)}.stage-players span[data-speaking=true] i{box-shadow:0 0 0 2px var(--ink-deep), 0 0 0 4px var(--good)}
