@font-face{font-family:Archivo Variable;font-style:normal;font-display:swap;font-weight:100 900;font-stretch:62% 125%;src:url(/assets/archivo-vietnamese-wdth-normal-rJmnGBSt.woff2)format("woff2-variations");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:Archivo Variable;font-style:normal;font-display:swap;font-weight:100 900;font-stretch:62% 125%;src:url(/assets/archivo-latin-ext-wdth-normal-7khWdh9v.woff2)format("woff2-variations");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:Archivo Variable;font-style:normal;font-display:swap;font-weight:100 900;font-stretch:62% 125%;src:url(/assets/archivo-latin-wdth-normal-DY7AcnAa.woff2)format("woff2-variations");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:IBM Plex Mono;font-style:normal;font-display:swap;font-weight:400;src:url(/assets/ibm-plex-mono-cyrillic-ext-400-normal-xuaO2J-f.woff2)format("woff2"),url(/assets/ibm-plex-mono-cyrillic-ext-400-normal-DMdlQ8Kv.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:IBM Plex Mono;font-style:normal;font-display:swap;font-weight:400;src:url(/assets/ibm-plex-mono-cyrillic-400-normal-BSMlKf0J.woff2)format("woff2"),url(/assets/ibm-plex-mono-cyrillic-400-normal-CEL4l2ZJ.woff)format("woff");unicode-range:U+301,U+400-45F,U+490-491,U+4B0-4B1,U+2116}@font-face{font-family:IBM Plex Mono;font-style:normal;font-display:swap;font-weight:400;src:url(/assets/ibm-plex-mono-vietnamese-400-normal-BulugwFq.woff2)format("woff2"),url(/assets/ibm-plex-mono-vietnamese-400-normal-DDuiU_S-.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:IBM Plex Mono;font-style:normal;font-display:swap;font-weight:400;src:url(/assets/ibm-plex-mono-latin-ext-400-normal-BmRBH3aV.woff2)format("woff2"),url(/assets/ibm-plex-mono-latin-ext-400-normal-D3D2R8hC.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:IBM Plex Mono;font-style:normal;font-display:swap;font-weight:400;src:url(/assets/ibm-plex-mono-latin-400-normal-DMJ8VG8y.woff2)format("woff2"),url(/assets/ibm-plex-mono-latin-400-normal-CvHOgSBP.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:IBM Plex Mono;font-style:normal;font-display:swap;font-weight:600;src:url(/assets/ibm-plex-mono-cyrillic-ext-600-normal-V-xxqcpd.woff2)format("woff2"),url(/assets/ibm-plex-mono-cyrillic-ext-600-normal-9HEixskS.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:IBM Plex Mono;font-style:normal;font-display:swap;font-weight:600;src:url(/assets/ibm-plex-mono-cyrillic-600-normal-CTOM6hUh.woff2)format("woff2"),url(/assets/ibm-plex-mono-cyrillic-600-normal-fLZuRloM.woff)format("woff");unicode-range:U+301,U+400-45F,U+490-491,U+4B0-4B1,U+2116}@font-face{font-family:IBM Plex Mono;font-style:normal;font-display:swap;font-weight:600;src:url(/assets/ibm-plex-mono-vietnamese-600-normal-D2EvbN8M.woff2)format("woff2"),url(/assets/ibm-plex-mono-vietnamese-600-normal-iLQfcSjf.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:IBM Plex Mono;font-style:normal;font-display:swap;font-weight:600;src:url(/assets/ibm-plex-mono-latin-ext-600-normal-D38SheWl.woff2)format("woff2"),url(/assets/ibm-plex-mono-latin-ext-600-normal-DmB0ttJJ.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:IBM Plex Mono;font-style:normal;font-display:swap;font-weight:600;src:url(/assets/ibm-plex-mono-latin-600-normal-BgSNZQsw.woff2)format("woff2"),url(/assets/ibm-plex-mono-latin-600-normal-DWFSQ4vo.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{--bg:#1a0e2c;--bg-2:#1f1235;--panel:#26163e;--panel-2:#2e1c4a;--block:#3a2068;--line:#3d2a60;--line-2:#573e86;--text:#f6f1ff;--muted:#b5a5d4;--dim:#8574a6;--purple:#9b74ff;--yellow:#ffd23f;--yellow-2:#c99f12;--ink:#1a0e2c;--danger:#ff7a5c;--ok:#4be3c1;--r:6px;--r-sm:3px;--font:"Archivo Variable", "Archivo", system-ui, -apple-system, "Segoe UI", sans-serif;--mono:"IBM Plex Mono", ui-monospace, "Cascadia Mono", monospace;--wrap:1140px;--player:var(--yellow);--lightningcss-light: ;--lightningcss-dark:initial;color-scheme:dark}*{box-sizing:border-box}html{-webkit-text-size-adjust:100%}body{background:var(--bg);min-height:100vh;color:var(--text);font-family:var(--font);-webkit-font-smoothing:antialiased;margin:0;font-size:16px;font-stretch:100%;line-height:1.55}::selection{background:var(--yellow);color:var(--ink)}a{color:inherit}img,svg{display:block}button,input,select{font:inherit;color:inherit}:focus-visible{outline:2px solid var(--yellow);outline-offset:2px}.skip{background:var(--yellow);color:var(--ink);z-index:100;padding:8px 12px;position:absolute;top:8px;left:-999px}.skip:focus{left:8px}.sr{clip:rect(0 0 0 0);white-space:nowrap;width:1px;height:1px;position:absolute;overflow:hidden}main{outline:none;min-height:calc(100vh - 72px)}.wrap{width:min(var(--wrap), 100% - 40px);margin-inline:auto}.page{padding:48px 0 96px}.display{letter-spacing:-.025em;margin:0;font-size:clamp(44px,7.4vw,96px);font-weight:800;font-stretch:125%;line-height:.95}.h1{letter-spacing:-.02em;margin:0;font-size:clamp(34px,4.6vw,56px);font-weight:800;font-stretch:118%;line-height:1}.h2{letter-spacing:-.01em;margin:0;font-size:clamp(22px,2.4vw,28px);font-weight:750;font-stretch:112%;line-height:1.1}.h3{margin:0;font-size:18px;font-weight:700}.lead{color:var(--muted);max-width:56ch;margin:0;font-size:clamp(17px,1.6vw,20px)}.muted{color:var(--muted)}.dim{color:var(--dim)}.small{font-size:14px}.tiny{font-size:12px}.mono{font-family:var(--mono)}.eyebrow{font-family:var(--mono);letter-spacing:.14em;text-transform:uppercase;color:var(--dim);margin:0 0 12px;font-size:12px}.eyebrow.y,.hl{color:var(--yellow)}.underline-y{box-shadow:inset 0 -.18em 0 var(--yellow)}.site-header{border-bottom:1px solid var(--line);background:var(--bg);z-index:30;position:sticky;top:0}.site-header .wrap{align-items:center;gap:28px;height:72px;display:flex}.logo{letter-spacing:-.02em;align-items:center;gap:10px;font-size:19px;font-weight:850;font-stretch:125%;text-decoration:none;display:flex}.logo-mark{align-items:flex-end;gap:3px;height:22px;display:flex}.logo-mark i{background:var(--yellow);border-radius:1px;width:5px}.logo-mark i:first-child{height:45%}.logo-mark i:nth-child(2){height:75%}.logo-mark i:nth-child(3){height:100%}.logo-mark i:nth-child(4){background:var(--purple);height:60%}.logo small{font-family:var(--mono);color:var(--dim);letter-spacing:.06em;margin-left:2px;font-size:11px;font-weight:500;font-stretch:100%}.nav{flex:1;gap:4px;display:flex}.nav a{color:var(--muted);border-radius:var(--r-sm);padding:8px 12px;font-size:15px;font-weight:550;text-decoration:none}.nav a:hover{color:var(--text);background:var(--panel)}.nav a.active{color:var(--text);box-shadow:inset 0 -2px 0 var(--yellow);border-radius:0}.header-actions{align-items:center;gap:10px;display:flex}.me-chip{border:1px solid var(--line);border-radius:var(--r);align-items:center;gap:8px;padding:6px 10px;font-size:15px;font-weight:600;text-decoration:none;display:flex}.me-chip:hover{border-color:var(--line-2)}.btn{--b:var(--line-2);border:2px solid var(--b);border-radius:var(--r);min-height:44px;color:var(--text);letter-spacing:.01em;cursor:pointer;-webkit-user-select:none;user-select:none;white-space:nowrap;background:0 0;justify-content:center;align-items:center;gap:10px;padding:0 18px;font-size:15px;font-weight:700;text-decoration:none;transition:background-color .15s,border-color .15s,transform 80ms,box-shadow 80ms;display:inline-flex}.btn:hover{border-color:var(--text)}.btn:active{transform:translateY(1px)}.btn[disabled],.btn.is-disabled{opacity:.45;cursor:not-allowed;transform:none}.btn svg{flex:none;width:18px;height:18px}.btn-primary{background:var(--yellow);border-color:var(--yellow);color:var(--ink);box-shadow:0 3px 0 var(--yellow-2)}.btn-primary:hover{border-color:var(--yellow);background:#ffdb63}.btn-primary:active{box-shadow:0 0 0 var(--yellow-2);transform:translateY(3px)}.btn-primary[disabled]{background:var(--panel-2);border-color:var(--line-2);color:var(--dim);box-shadow:none;opacity:1}.btn-block-purple{background:var(--block);border-color:var(--block)}.btn-block-purple:hover{border-color:var(--purple)}.btn-danger{--b:#7a3646;color:#ffb5a5}.btn-danger:hover{border-color:var(--danger)}.btn-sm{border-width:1.5px;min-height:34px;padding:0 12px;font-size:14px}.btn-lg{min-height:56px;padding:0 26px;font-size:17px}.btn-wide{width:100%}.btn-icon{width:44px;padding:0}.btn-sm.btn-icon{width:34px}.link-btn{color:var(--muted);text-underline-offset:3px;cursor:pointer;background:0 0;border:0;padding:0;font-size:14px;text-decoration:underline}.link-btn:hover{color:var(--text)}.field{gap:7px;display:grid}.field>span{color:var(--muted);font-size:14px;font-weight:600}.input{background:var(--bg-2);border:2px solid var(--line);border-radius:var(--r);width:100%;height:50px;padding:0 14px;font-size:16px;transition:border-color .15s}.input:hover{border-color:var(--line-2)}.input:focus{border-color:var(--yellow);outline:none}.input.code{font-family:var(--mono);text-transform:uppercase;letter-spacing:.3em;font-size:20px;font-weight:600}.input[aria-invalid=true]{border-color:var(--danger)}.check{cursor:pointer;color:var(--muted);align-items:flex-start;gap:12px;font-size:15px;display:flex}.check input{appearance:none;border:2px solid var(--line-2);border-radius:var(--r-sm);background:var(--bg-2);cursor:pointer;flex:none;place-content:center;width:22px;height:22px;margin:1px 0 0;display:grid}.check input:checked{background:var(--yellow);border-color:var(--yellow)}.check input:checked:after{content:"";border:solid var(--ink);border-width:0 0 2.5px 2.5px;width:10px;height:6px;transform:translateY(-1px)rotate(-45deg)}.form-error{color:#ffb5a5;min-height:1.4em;margin:0;font-size:14px}.seg{border:2px solid var(--line);border-radius:var(--r);background:var(--bg-2);gap:2px;padding:2px;display:inline-flex}.seg button{border-radius:var(--r-sm);color:var(--muted);cursor:pointer;background:0 0;border:0;padding:8px 14px;font-size:14px;font-weight:650}.seg button:hover:not([disabled]){color:var(--text);background:var(--panel)}.seg button[aria-pressed=true]{background:var(--yellow);color:var(--ink)}.seg button[disabled]{cursor:default}.panel{background:var(--panel);border:1px solid var(--line);border-radius:var(--r);padding:24px}.panel.tight{padding:16px}.panel.block{background:var(--block);border-color:var(--block)}.divider{background:var(--line);border:0;height:1px;margin:24px 0}.tag{font-family:var(--mono);letter-spacing:.08em;text-transform:uppercase;border-radius:var(--r-sm);border:1px solid var(--line-2);color:var(--muted);align-items:center;gap:6px;padding:3px 7px;font-size:11px;font-weight:600;display:inline-flex}.tag.y{background:var(--yellow);color:var(--ink);border-color:var(--yellow)}.tag.ok{color:var(--ok);border-color:color-mix(in srgb, var(--ok) 45%, transparent)}.tag.rec,.tag.no{color:#ffb5a5;border-color:#7a3646}.tag.rec:before{content:"";background:var(--danger);border-radius:1px;width:7px;height:7px;animation:1.2s steps(2,end) infinite blink}@keyframes blink{50%{opacity:.2}}.swatch{background:var(--c,var(--yellow));border-radius:2px;flex:none;width:14px;height:14px}.swatch.lg{border-radius:3px;width:22px;height:22px}.grid-2{grid-template-columns:repeat(2,minmax(0,1fr));gap:20px;display:grid}.grid-3{grid-template-columns:repeat(3,minmax(0,1fr));gap:20px;display:grid}.stack{gap:16px;display:grid}.stack-sm{gap:10px;display:grid}.row{align-items:center;gap:12px;display:flex}.row.wrap-ok{flex-wrap:wrap}.between{justify-content:space-between}.spacer{flex:1}@media (max-width:860px){.grid-2,.grid-3{grid-template-columns:1fr}}#toasts{z-index:90;gap:10px;width:min(380px,100vw - 40px);display:grid;position:fixed;bottom:20px;right:20px}.toast{background:var(--panel-2);border:1px solid var(--line-2);border-left:4px solid var(--yellow);border-radius:var(--r);padding:12px 14px;font-size:15px;box-shadow:0 10px 30px #08031273}.toast.err{border-left-color:var(--danger)}.modal-back{z-index:80;background:#0a0414b8;place-items:center;padding:20px;display:grid;position:fixed;inset:0}.modal{background:var(--panel);border:1px solid var(--line-2);border-radius:var(--r);gap:16px;width:min(460px,100%);padding:28px;display:grid}.hero{border-bottom:1px solid var(--line);padding:72px 0 56px;position:relative;overflow:hidden}.hero:before{content:"";pointer-events:none;opacity:.5;background-image:repeating-linear-gradient(to bottom, transparent 0 47px, var(--line) 47px 48px);position:absolute;inset:0}.hero:after{content:"";top:0;bottom:0;left:calc((100% - var(--wrap)) / 2 - 28px);background:color-mix(in srgb, var(--yellow) 55%, transparent);pointer-events:none;width:2px;display:none;position:absolute}@media (min-width:1240px){.hero:after{display:block}}.hero .wrap{grid-template-columns:1.25fr .9fr;align-items:end;gap:56px;display:grid;position:relative}.hero-actions{flex-wrap:wrap;gap:12px;margin-top:32px;display:flex}.demo-card{background:var(--block);border-radius:var(--r);grid-template-rows:auto 1fr auto;gap:12px;min-height:280px;padding:22px;display:grid}.demo-word{letter-spacing:-.02em;color:var(--yellow);align-self:center;font-size:clamp(40px,5vw,64px);font-weight:850;font-stretch:125%;line-height:1}.demo-line{color:var(--muted);min-height:2.6em;font-size:18px}.demo-line b{color:var(--text);font-weight:700}.demo-line mark{background:var(--yellow);color:var(--ink);border-radius:2px;padding:0 4px}.beat-ticks{grid-template-columns:repeat(4,1fr);gap:6px;display:grid}.beat-ticks i{background:#ffffff1f;border-radius:1px;height:8px}.beat-ticks i.on{background:var(--player)}.beat-ticks i.down{height:8px}@media (max-width:860px){.hero .wrap{grid-template-columns:1fr;gap:36px}.hero:after{display:none}}.steps{border-top:1px solid var(--line);grid-template-columns:repeat(3,1fr);display:grid}.step{border-right:1px solid var(--line);padding:28px 28px 28px 0}.step+.step{padding-left:28px}.step:last-child{border-right:0}.step .num{font-family:var(--mono);color:var(--yellow);margin-bottom:14px;font-size:13px}.step p{color:var(--muted);margin:8px 0 0}@media (max-width:860px){.steps{grid-template-columns:1fr}.step,.step+.step{border-right:0;border-bottom:1px solid var(--line);padding:22px 0}}.action-tiles{grid-template-columns:1.2fr 1fr 1fr;gap:16px;display:grid}.tile{border-radius:var(--r);border:1px solid var(--line);background:var(--panel);align-content:space-between;gap:28px;min-height:220px;padding:24px;text-decoration:none;transition:border-color .15s,transform .15s;display:grid}.tile:hover{border-color:var(--line-2)}.tile.primary{background:var(--yellow);color:var(--ink);border-color:var(--yellow)}.tile.primary .muted{color:#4a3a12}.tile.purple{background:var(--block);border-color:var(--block)}.tile .tile-title{letter-spacing:-.02em;font-size:30px;font-weight:850;font-stretch:120%;line-height:1}.tile .arrow{font-size:26px;line-height:1}.join-row{gap:8px;display:flex}.join-row .input{height:46px;font-size:18px}@media (max-width:960px){.action-tiles{grid-template-columns:1fr}}.section{padding-top:64px}.section-head{justify-content:space-between;align-items:end;gap:20px;margin-bottom:22px;display:flex}.table{border-collapse:collapse;width:100%;font-size:15px}.table th{text-align:left;font-family:var(--mono);letter-spacing:.12em;text-transform:uppercase;color:var(--dim);border-bottom:1px solid var(--line);padding:0 12px 10px 0;font-size:11px;font-weight:500}.table td{border-bottom:1px solid var(--line);padding:12px 12px 12px 0}.table td.num,.table th.num{text-align:right;font-family:var(--mono)}.table tr:last-child td{border-bottom:0}.auth{grid-template-columns:1fr 1fr;min-height:calc(100vh - 72px);display:grid}.auth-side{background:var(--block);padding:64px max(40px, calc((100vw - var(--wrap)) / 2));align-content:space-between;gap:40px;padding-right:56px;display:grid;position:relative;overflow:hidden}.auth-side .bars{align-items:flex-end;gap:8px;height:140px;display:flex}.auth-side .bars i{background:var(--yellow);transform-origin:bottom;border-radius:2px;flex:1}.auth-side .bars i:nth-child(3n){background:var(--purple)}.auth-main{place-items:center;padding:48px 24px;display:grid}.auth-card{gap:22px;width:min(420px,100%);display:grid}.auth-switch{border-bottom:2px solid var(--line);grid-template-columns:1fr 1fr;display:grid}.auth-switch a{text-align:center;color:var(--dim);border-bottom:2px solid #0000;margin-bottom:-2px;padding:12px;font-weight:700;text-decoration:none}.auth-switch a.on{color:var(--text);border-bottom-color:var(--yellow)}.pw-wrap{position:relative}.pw-wrap .input{padding-right:70px}.pw-wrap button{color:var(--muted);cursor:pointer;background:0 0;border:0;padding:6px;font-size:13px;font-weight:600;position:absolute;top:50%;right:8px;transform:translateY(-50%)}.color-pick{flex-wrap:wrap;gap:8px;display:flex}.color-pick button{border-radius:var(--r-sm);background:var(--c);cursor:pointer;outline-offset:2px;border:2px solid #0000;width:36px;height:36px}.color-pick button[aria-pressed=true]{border-color:var(--text);box-shadow:0 0 0 2px var(--bg) inset}@media (max-width:900px){.auth{grid-template-columns:1fr}.auth-side{display:none}}.beat-list{gap:10px;display:grid}.beat-row{background:var(--panel);border:1px solid var(--line);border-radius:var(--r);grid-template-columns:56px 1.4fr 1fr 90px auto;align-items:center;gap:18px;padding:14px 18px 14px 14px;display:grid}.beat-row.playing{border-color:var(--yellow)}.beat-play{border-radius:var(--r);background:var(--block);cursor:pointer;width:56px;height:56px;color:var(--yellow);border:0;place-items:center;display:grid}.beat-play:hover{background:#46287d}.beat-play svg{width:22px;height:22px}.beat-title{font-size:18px;font-weight:750;font-stretch:110%}.beat-meta{color:var(--dim);font-size:14px}.beat-progress{background:var(--line);border-radius:1px;height:4px;margin-top:8px;overflow:hidden}.beat-progress i{background:var(--yellow);width:0;height:100%;display:block}.bpm{font-family:var(--mono);color:var(--muted);font-size:14px}@media (max-width:760px){.beat-row{grid-template-columns:56px 1fr}.beat-row>:nth-child(n+3){grid-column:2}}.pads{grid-template-columns:repeat(auto-fill,minmax(150px,1fr));gap:10px;display:grid}.pad{text-align:left;border-radius:var(--r);border:2px solid var(--line);background:var(--bg-2);cursor:pointer;align-content:start;gap:6px;min-height:104px;padding:14px;transition:border-color .15s,background-color .15s;display:grid}.pad:hover:not([disabled]){border-color:var(--line-2)}.pad[aria-pressed=true]{border-color:var(--yellow);background:var(--panel-2)}.pad[disabled]{cursor:default}.pad .t{overflow-wrap:anywhere;font-weight:750;line-height:1.15}.pad .m{color:var(--dim);font-size:13px}.setup{grid-template-columns:minmax(0,1fr) 340px;align-items:start;gap:24px;display:grid}.setup .opts{gap:28px;display:grid}.opt-row{flex-wrap:wrap;gap:28px;display:flex}@media (max-width:960px){.setup{grid-template-columns:1fr}}.code-box{background:var(--block);border-radius:var(--r);justify-content:space-between;align-items:center;gap:16px;padding:18px 20px;display:flex}.code-box .code{font-family:var(--mono);letter-spacing:.22em;color:var(--yellow);font-size:clamp(30px,4vw,42px);font-weight:600;line-height:1}.players{gap:8px;display:grid}.player{background:var(--bg-2);border:1px solid var(--line);border-radius:var(--r);grid-template-columns:6px 1fr auto;align-items:center;gap:14px;padding:12px 12px 12px 0;display:grid;overflow:hidden}.player .bar{background:var(--c);align-self:stretch}.player .name{flex-wrap:wrap;align-items:center;gap:8px;font-weight:700;display:flex}.player.off{opacity:.5}.player.talking{border-color:var(--c)}.player .talk-ind{background:var(--c);visibility:hidden;border-radius:1px;width:10px;height:10px}.player.talking .talk-ind{visibility:visible;animation:.8s steps(2,end) infinite blink}.slot{border:1px dashed var(--line-2);border-radius:var(--r);color:var(--dim);padding:14px;font-size:14px}.ptt{border-radius:var(--r);border:2px solid var(--line-2);background:var(--bg-2);cursor:pointer;touch-action:none;-webkit-user-select:none;user-select:none;justify-content:center;align-items:center;gap:10px;width:100%;min-height:64px;font-size:16px;font-weight:750;display:flex}.ptt svg{width:20px;height:20px}.ptt.live{background:var(--player);border-color:var(--player);color:var(--ink)}.ptt.blocked{opacity:.55;cursor:not-allowed}.meter{background:var(--line);border-radius:1px;height:6px;overflow:hidden}.meter i{background:var(--ok);width:0;height:100%;transition:width 60ms linear;display:block}.notice{border-left:3px solid var(--yellow);color:var(--muted);padding:4px 0 4px 14px;font-size:14px}.notice.warn{border-left-color:var(--danger)}.stage{grid-template-rows:auto 1fr auto;min-height:calc(100vh - 72px);display:grid}.stage-top{border-bottom:1px solid var(--line)}.stage-top .wrap{flex-wrap:wrap;align-items:center;gap:14px;min-height:60px;display:flex}.timeline{flex:1;gap:3px;min-width:160px;height:10px;display:flex;position:relative}.timeline i{background:var(--c);opacity:.35;border-radius:1px}.timeline i.done{opacity:.9}.timeline i.gap{background:0 0}.timeline .head{background:var(--text);width:2px;position:absolute;top:-4px;bottom:-4px;left:0}.stage-main{grid-template-columns:260px minmax(0,1fr);display:grid}.stage-side{border-right:1px solid var(--line);align-content:start;gap:10px;padding:24px 20px;display:grid}.sp{border-radius:var(--r-sm);background:var(--bg-2);grid-template-columns:4px 1fr auto;align-items:center;gap:12px;padding:10px 12px 10px 0;display:grid}.sp .bar{background:var(--c);align-self:stretch}.sp .score{font-family:var(--mono);font-weight:600}.sp.on{background:var(--panel-2);box-shadow:inset 0 0 0 2px var(--c)}.sp .live{font-family:var(--mono);letter-spacing:.1em;color:var(--c);font-size:10px}.stage-center{align-content:start;gap:28px;padding:32px clamp(20px,4vw,56px);display:grid;position:relative}.turn-banner{flex-wrap:wrap;align-items:center;gap:14px;display:flex}.turn-banner .who{letter-spacing:-.015em;color:var(--player);font-size:clamp(24px,3vw,34px);font-weight:850;font-stretch:118%;line-height:1}.cue-zone{grid-template-columns:minmax(0,1fr) 220px;align-items:stretch;gap:20px;display:grid}.cue-card{background:var(--block);border-radius:var(--r);grid-template-rows:auto 1fr auto;gap:8px;min-height:230px;padding:26px 30px;display:grid;position:relative;overflow:hidden}.cue-card:after{content:"";background:var(--player);width:6px;position:absolute;top:0;bottom:0;left:0}.cue-kind{font-family:var(--mono);letter-spacing:.16em;text-transform:uppercase;color:var(--muted);font-size:13px}.cue-kind b{color:var(--player);font-weight:600}.cue-word{letter-spacing:-.03em;color:var(--text);word-break:break-word;align-self:center;font-size:clamp(48px,8vw,112px);font-weight:900;font-stretch:125%;line-height:1}.cue-word.idle{color:var(--dim);font-size:clamp(32px,4.5vw,56px)}.cue-next{background:var(--panel);border:1px solid var(--line);border-radius:var(--r);align-content:space-between;gap:12px;padding:18px;display:grid}.cue-next .w{word-break:break-word;font-size:26px;font-weight:800;font-stretch:115%;line-height:1.1}.beatbar{align-items:center;gap:18px;display:flex}.beatbar .beat-ticks{flex:1;max-width:360px}.beatbar .beat-ticks i{height:14px}.barcount{font-family:var(--mono);color:var(--muted);min-width:110px;font-size:14px}.popup-layer{pointer-events:none;position:absolute;inset:0;overflow:hidden}.popup{font-family:var(--mono);background:var(--yellow);color:var(--ink);border-radius:var(--r-sm);padding:6px 12px;font-size:22px;font-weight:600;position:absolute;top:30px;right:clamp(20px,4vw,56px)}.popup.miss{background:var(--panel-2);color:var(--muted)}.transcript{gap:8px;display:grid}.tline{grid-template-columns:44px 1fr;align-items:baseline;gap:12px;font-size:20px;line-height:1.4;display:grid}.tline .n{font-family:var(--mono);color:var(--dim);font-size:12px}.tline .words{color:var(--c);min-height:1.4em;font-weight:600}.tline .words .hit{background:var(--yellow);color:var(--ink);border-radius:2px;padding:0 4px}.tline.old{opacity:.5}.tline.live .words:after{content:"▍";color:var(--c);margin-left:2px;animation:1s steps(2,end) infinite blink}.stage-bottom{border-top:1px solid var(--line)}.stage-bottom .wrap{flex-wrap:wrap;align-items:center;gap:20px;min-height:64px;display:flex}.vol{color:var(--muted);align-items:center;gap:10px;font-size:14px;display:flex}.vol input[type=range]{accent-color:var(--yellow);width:120px}.countdown{pointer-events:none;place-items:center;display:grid;position:absolute;inset:0}.countdown span{color:var(--player);font-size:clamp(120px,20vw,240px);font-weight:900;font-stretch:125%;line-height:1}.overlay-tap{z-index:70;background:#0a0414d9;place-items:center;display:grid;position:fixed;inset:0}@media (max-width:900px){.stage-main{grid-template-columns:1fr}.stage-side{border-right:0;border-bottom:1px solid var(--line);grid-auto-flow:column;padding:14px 20px;overflow-x:auto}.sp{min-width:170px}.cue-zone{grid-template-columns:1fr}}.podium{gap:10px;display:grid}.podium-row{background:var(--panel);border:1px solid var(--line);border-radius:var(--r);grid-template-columns:56px 8px 1fr auto;align-items:center;gap:18px;padding:16px 20px 16px 0;display:grid;overflow:hidden}.podium-row .place{font-family:var(--mono);text-align:center;color:var(--dim);font-size:18px}.podium-row .bar{background:var(--c);align-self:stretch;margin:-16px 0}.podium-row.first{background:var(--block);border-color:var(--block)}.podium-row.first .place{color:var(--yellow)}.podium-row .pname{font-size:22px;font-weight:800;font-stretch:115%}.podium-row .pscore{font-family:var(--mono);font-size:28px;font-weight:600}.stat-grid{border:1px solid var(--line);border-radius:var(--r);grid-template-columns:repeat(4,minmax(0,1fr));display:grid;overflow:hidden}.stat{border-right:1px solid var(--line);border-bottom:1px solid var(--line);padding:18px 20px}.stat:nth-child(4n){border-right:0}.stat .v{font-family:var(--mono);font-size:28px;font-weight:600;line-height:1.1}.stat .k{color:var(--dim);margin-top:4px;font-size:13px}@media (max-width:760px){.stat-grid{grid-template-columns:repeat(2,1fr)}.stat:nth-child(2n){border-right:0}}.tabs{border-bottom:2px solid var(--line);flex-wrap:wrap;gap:0;margin-bottom:18px;display:flex}.tabs:empty{display:none}.hit{background:var(--yellow);color:var(--ink);border-radius:2px;padding:0 4px}.tabs button{color:var(--dim);cursor:pointer;background:0 0;border:0;border-bottom:2px solid #0000;align-items:center;gap:8px;margin-bottom:-2px;padding:10px 16px;font-weight:700;display:flex}.tabs button[aria-selected=true]{color:var(--text);border-bottom-color:var(--c,var(--yellow))}.bars-list{gap:4px;max-height:460px;padding-right:6px;display:grid;overflow:auto}.bar-item{border-radius:var(--r-sm);background:var(--bg-2);grid-template-columns:40px 120px 1fr 64px;align-items:baseline;gap:14px;padding:8px 10px;font-size:15px;display:grid}.bar-item .n{font-family:var(--mono);color:var(--dim);font-size:12px}.bar-item .cue{font-weight:700}.bar-item .cue small{font-family:var(--mono);letter-spacing:.1em;color:var(--dim);text-transform:uppercase;font-size:10px;font-weight:500;display:block}.bar-item .ws{color:var(--c)}.bar-item .ws .hit{background:var(--yellow);color:var(--ink);border-radius:2px;padding:0 3px}.bar-item .pts{font-family:var(--mono);text-align:right}.rec-panel{gap:14px;display:grid}.consent-list{gap:6px;display:grid}.consent-item{align-items:center;gap:10px;font-size:14px;display:flex}.empty{border:1px dashed var(--line-2);border-radius:var(--r);color:var(--dim);text-align:center;padding:28px}.footer{border-top:1px solid var(--line);color:var(--dim);padding:28px 0 40px;font-size:13px}.footer .wrap{flex-wrap:wrap;justify-content:space-between;gap:20px;display:flex}.footer a{color:var(--muted)}@media (prefers-reduced-motion:reduce){*,:before,:after{transition-duration:.01ms!important;animation-duration:.01ms!important}}
