:root{--bg: #eceff4;--paper: #ffffff;--chip: #f1f3f8;--ink: #1d2333;--soft: #5b6377;--line: #d5dae5;--accent: #2c47a6;--focus: #2c47a6;--warn: #b4462e;--gold: #c47f12;--lh: #f2b04b;--rh: #5fd3c0;color-scheme:light;box-sizing:border-box;padding-top:env(safe-area-inset-top,0px);padding-bottom:env(safe-area-inset-bottom,0px)}@media (prefers-color-scheme: dark){:root:not([data-theme=light]){--bg: #10131b;--paper: #1a1f2b;--chip: #232a39;--ink: #e9ecf3;--soft: #a3abbd;--line: #2f3748;--accent: #8fa6f5;--focus: #8fa6f5;--warn: #f09a84;--gold: #e8b65a;color-scheme:dark}}:root[data-theme=dark]{--bg: #10131b;--paper: #1a1f2b;--chip: #232a39;--ink: #e9ecf3;--soft: #a3abbd;--line: #2f3748;--accent: #8fa6f5;--focus: #8fa6f5;--warn: #f09a84;--gold: #e8b65a;color-scheme:dark}html{scroll-padding-top:env(safe-area-inset-top,0px)}*,*:before,*:after{box-sizing:border-box}html,body{margin:0}body{background:var(--bg);color:var(--ink);font-size:15px;line-height:1.5;font-family:Be Vietnam Pro,system-ui,-apple-system,Segoe UI,Roboto,sans-serif}button,input,textarea{font:inherit;color:inherit}button{cursor:pointer}:focus-visible{outline:3px solid var(--focus);outline-offset:2px}[hidden]{display:none!important}.wrap{max-width:1100px;margin:0 auto;padding:16px;display:grid;gap:14px}header h1{margin:0;font-size:30px;font-weight:800;letter-spacing:-.4px}header p{margin:2px 0 0;color:var(--soft)}.stage{background:linear-gradient(180deg,#151b36,#1e2750);border-radius:20px;padding:12px;color:#eef1fa;display:grid;gap:10px}.stage canvas{display:block;width:100%;height:clamp(260px,46vh,440px);border-radius:12px;touch-action:none}.now{min-height:74px;padding:4px 6px}.line{display:flex;flex-wrap:wrap;align-items:flex-end;row-gap:4px}.now .line.cur{font-size:20px;font-weight:600}.now .line.next{font-size:14px;opacity:.5;margin-top:4px}.seg{display:inline-flex;flex-direction:column;white-space:pre}.seg .ch{font-size:.72em;font-weight:700;min-height:1.3em;padding-right:.5em}.now .seg .ch{color:#9fb4ff}.now .seg.on .ch{color:#ffd27a}.now .seg.on .ly{color:#fff;text-decoration:underline;text-decoration-color:#ffd27a;text-decoration-thickness:3px;text-underline-offset:5px}.transport{display:flex;flex-wrap:wrap;gap:8px;align-items:center}.play{background:#ffd27a;color:#1d2333;border:0;border-radius:999px;padding:10px 22px;font-weight:800;font-size:16px;min-width:116px}.tbtn{background:#ffffff1a;color:#eef1fa;border:1px solid rgba(255,255,255,.18);border-radius:999px;padding:8px 14px}.legend{display:flex;flex-wrap:wrap;gap:12px;font-size:12px;color:#c3cbe4}.legend i{display:inline-block;width:10px;height:10px;border-radius:3px;margin-right:5px;vertical-align:-1px}.tinfo{color:#c3cbe4;font-size:13px;margin-left:auto;display:flex;gap:14px;flex-wrap:wrap}.tinfo b{color:#fff}.score{font-weight:700;color:#ffd27a}.grid{display:grid;grid-template-columns:1.1fr 1fr;gap:14px}@media (max-width: 820px){.grid{grid-template-columns:1fr}}.panel{background:var(--paper);border:1px solid var(--line);border-radius:16px;padding:16px;display:grid;gap:12px;align-content:start}.panel h2{margin:0;font-size:18px}.panel-head{display:flex;justify-content:space-between;align-items:center;flex-wrap:wrap;gap:8px}.panel-head small{color:var(--soft)}.chip-btn{background:var(--chip);border:1px solid var(--line);border-radius:999px;padding:4px 12px;font-size:13px}textarea{width:100%;min-height:190px;resize:vertical;border:1px solid var(--line);background:var(--chip);border-radius:12px;padding:12px;font-size:15px;line-height:1.7}.help{font-size:13px;color:var(--soft);margin:0}.help code{background:var(--chip);border-radius:5px;padding:0 5px}details.help summary{cursor:pointer;color:var(--ink)}.warns{margin:0;padding-left:18px;color:var(--warn);font-size:13px}.row{display:grid;gap:6px}.row>span{font-size:13px;font-weight:600;color:var(--soft)}.seg-ctl{display:flex;flex-wrap:wrap;gap:6px}.seg-ctl button{background:var(--chip);border:1.5px solid transparent;border-radius:999px;padding:6px 13px;font-size:14px}.seg-ctl button[aria-pressed=true]{border-color:var(--accent);background:var(--paper);font-weight:700}.inline{display:flex;align-items:center;gap:10px;flex-wrap:wrap}input[type=range]{flex:1;min-width:140px;accent-color:var(--accent)}.stepper{justify-self:start;display:inline-flex;align-items:center;border:1px solid var(--line);border-radius:999px;overflow:hidden}.stepper button{background:var(--chip);border:0;width:36px;height:34px;font-size:18px}.stepper output{min-width:110px;text-align:center;font-weight:700;font-size:14px}label.check{display:flex;gap:8px;align-items:flex-start;font-size:14px}label.check input{margin-top:4px;accent-color:var(--accent)}.lyrics{position:relative;max-height:250px;overflow:auto;padding-right:4px}.lyrics .line{padding:4px 10px;border-radius:10px;font-size:16px}.lyrics .line.cur{background:var(--chip)}.lyrics .seg.pickable{cursor:pointer}.lyrics .seg.pickable:hover .ly{text-decoration:underline}.lyrics .seg .ch{color:var(--accent);font-size:.8em}.lyrics .seg.on .ch{color:var(--gold)}.lyrics .seg.on .ly{font-weight:700;text-decoration:underline;text-decoration-color:var(--gold);text-decoration-thickness:3px;text-underline-offset:5px}.timeline{display:flex;gap:4px;overflow-x:auto;padding-bottom:6px}.blk{flex:none;display:grid;gap:2px;background:var(--chip);border:1.5px solid transparent;border-radius:10px;padding:6px 6px 4px}.blk.on{border-color:var(--gold);background:var(--paper)}.blk.bad{border-color:var(--warn);border-style:dashed}.blk .go{background:none;border:0;padding:0;text-align:left;display:grid}.blk .nm{font-weight:800;font-size:15px;white-space:nowrap;overflow:hidden;text-overflow:ellipsis}.blk .rn{font-size:12px;color:var(--accent);font-weight:700;white-space:nowrap}.blk .ln{display:flex;align-items:center;justify-content:space-between;gap:2px;font-size:12px;color:var(--soft)}.blk .ln button{background:var(--paper);border:1px solid var(--line);border-radius:6px;width:22px;height:22px;line-height:1;padding:0}.rotate-hint{display:none;margin:0;font-size:13px;color:#ffd27a}@media (max-width: 600px) and (orientation: portrait){.rotate-hint{display:block}}@media (orientation: landscape) and (max-height: 480px){.wrap{padding:8px;gap:8px}header{display:none}.stage{padding:8px;gap:6px}.stage canvas{height:clamp(170px,calc(100dvh - 130px),440px)}.now{min-height:0;padding:0 6px}.now .line.cur{font-size:15px}.now .line.next,.legend{display:none}.play{padding:6px 18px;font-size:14px}.tbtn{padding:5px 12px}}.foot{display:flex;flex-wrap:wrap;gap:6px 18px;align-items:center;font-size:12px;color:var(--soft);padding:4px 2px 12px}.foot a{color:var(--accent)}.foot .feedback{font-weight:700;font-size:13px}
