.home{background:radial-gradient(130% 70% at 50% -12%,#1e2740 0%,#0000 62%);flex-direction:column;flex:1;align-items:center;gap:20px;min-height:0;padding:30px 20px 34px;display:flex;overflow-y:auto}.home>*{flex:none;width:min(100%,640px)}.hello{text-align:center;margin-top:auto}.hello h1{letter-spacing:-.02em;margin:0;font:600 30px/1.15 system-ui}.hello p{color:var(--muted);margin:9px 0 0;font-size:14px}.staff{background:repeating-linear-gradient(to bottom, var(--line) 0 1px, transparent 1px 5px);height:21px;margin-top:20px;-webkit-mask-image:linear-gradient(90deg,#0000,#000 28% 72%,#0000);mask-image:linear-gradient(90deg,#0000,#000 28% 72%,#0000)}.resume{text-align:left;min-height:70px;color:var(--ink);cursor:pointer;background:linear-gradient(#24304d,#1d2639);border:1px solid #3a4f86;border-radius:16px;align-items:center;gap:14px;padding:12px 18px;display:flex}.resume:active{filter:brightness(1.25)}.resume .text{flex-direction:column;flex:1;gap:3px;min-width:0;display:flex}.resume .eyebrow{color:#9fb4e8;letter-spacing:.08em;text-transform:uppercase;font:600 11px system-ui}.resume .name{text-overflow:ellipsis;white-space:nowrap;font:600 16px system-ui;overflow:hidden}.resume .arrow{color:var(--accent);flex:none;font-size:20px}.modes{grid-template-columns:repeat(auto-fit,minmax(200px,1fr));gap:10px;display:grid}.mode{text-align:left;background:var(--panel);border:1px solid var(--line);min-height:158px;color:var(--ink);cursor:pointer;border-radius:16px;flex-direction:column;align-items:flex-start;gap:10px;padding:18px;display:flex}.mode:active{border-color:var(--accent);background:var(--raised)}.mode .glyph{width:42px;height:42px;color:var(--accent);background:#222a3c;border-radius:12px;place-items:center;display:grid}.mode .glyph svg{fill:none;stroke:currentColor;stroke-width:1.7px;stroke-linecap:round;stroke-linejoin:round;width:23px;height:23px}.mode .glyph svg .filled{fill:currentColor;stroke:none}.mode .title{font:600 16px system-ui}.mode .hint{color:var(--muted);font-size:13px;line-height:1.45}.mode.aside{background:0 0;border-style:dashed;text-decoration:none}.mode.aside .glyph,.mode.aside .title{color:var(--muted)}.mode.aside:active{border-style:solid}.mode .badge{border:1px solid var(--line);color:var(--muted);border-radius:999px;margin-top:auto;padding:2px 9px;font:600 11px system-ui}.colophon{color:var(--muted);text-align:center;margin:0 0 auto;font-size:12px}@media (height<=460px){.home{gap:12px;padding:12px 16px 16px}.hello h1{font-size:22px}.hello p{margin-top:6px;font-size:13px}.staff{display:none}.resume{min-height:58px}.modes{grid-template-columns:repeat(auto-fit,minmax(178px,1fr))}.mode{gap:8px;min-height:0;padding:13px 14px}.mode .glyph{border-radius:10px;width:34px;height:34px}.mode .glyph svg{width:19px;height:19px}}:root{--bg:#12141a;--panel:#1b1f28;--raised:#262b36;--line:#333a49;--ink:#e8eaf0;--muted:#8b93a7;--accent:#5b8cff;--ok:#3ecf8e;--bad:#ff6b6b;--touch:48px}*{box-sizing:border-box;touch-action:manipulation;-webkit-tap-highlight-color:transparent}html,body,#root{height:100%}body{background:var(--bg);color:var(--ink);overscroll-behavior:none;margin:0;font:15px/1.4 system-ui,-apple-system,Segoe UI,sans-serif}button,.topbar,.sheet{-webkit-user-select:none;user-select:none}.app{height:100%;padding:env(safe-area-inset-top) env(safe-area-inset-right) env(safe-area-inset-bottom) env(safe-area-inset-left);flex-direction:column;display:flex}.topbar{flex:none;align-items:center;gap:14px;min-height:44px;padding:0 6px 0 12px;display:flex}.topbar .piece,.topbar .measure,.topbar .hands{height:32px;color:var(--muted);cursor:pointer;background:0 0;border:1px solid #0000;border-radius:8px;align-items:center;gap:5px;padding:0 9px;font:13px system-ui;display:flex}.topbar .piece:active,.topbar .measure:active,.topbar .hands:active{background:var(--raised);color:var(--ink)}.topbar .piece:disabled,.topbar .measure:disabled,.topbar .hands:disabled{opacity:.5;cursor:default}.topbar .piece{flex-shrink:1;min-width:0}.topbar .piece .label{text-overflow:ellipsis;white-space:nowrap;min-width:0;overflow:hidden}.topbar .measure{font-variant-numeric:tabular-nums;white-space:nowrap;flex:none}.topbar .hands{white-space:nowrap;flex:none}.caret{opacity:.6;flex:none;font-size:9px}.measures{grid-template-columns:repeat(auto-fill,minmax(52px,1fr));gap:6px;display:grid}.measures button{background:var(--raised);height:44px;color:var(--ink);font-variant-numeric:tabular-nums;cursor:pointer;border:1px solid #0000;border-radius:9px;font:600 15px ui-monospace,SF Mono,Menlo,monospace}.measures button:active{filter:brightness(1.4)}.measures button.current{border-color:var(--accent);background:#24304d}.expect{text-align:right;white-space:nowrap;text-overflow:ellipsis;color:var(--muted);flex:1;font-size:13px;overflow:hidden}.expect b{color:var(--ink);font:600 15px ui-monospace,SF Mono,Menlo,monospace}.expect.error,.expect.error b{color:var(--bad)}.expect.done b{color:var(--ok)}.icon-button{width:40px;height:40px;color:var(--muted);cursor:pointer;background:0 0;border:0;border-radius:10px;flex:none;place-items:center;font-size:19px;display:grid}.icon-button:active{background:var(--raised);color:var(--ink)}.scroller{overscroll-behavior-x:contain;background:#fff;border-radius:12px;flex:1;align-items:safe center;min-height:0;margin:0 8px;display:flex;overflow:auto hidden}.scroller>div{flex:none}.scroller img[id^=cursorImg]{transform-origin:50%;transition:left .12s ease-out,filter .12s linear}.scroller.wrong img[id^=cursorImg]{filter:hue-rotate(245deg)saturate(1.6)}.actions{flex:none;gap:8px;padding:8px;display:flex}.actions button{height:var(--touch);color:var(--ink);background:var(--raised);cursor:pointer;border:0;border-radius:12px;font:600 15px system-ui}.actions button:active{filter:brightness(1.4)}.actions button:disabled{opacity:.4}.primary{flex:1;background:var(--accent)!important;color:#fff!important}.secondary{width:var(--touch);flex:none;font-size:18px!important}.actions .secondary.on{background:var(--accent);color:#fff}.actions .glyph{fill:none;stroke:currentColor;stroke-width:1.7px;stroke-linecap:round;stroke-linejoin:round;width:21px;height:21px}.backdrop{background:#000a;border:0;padding:0;position:fixed;inset:0}.sheet{background:var(--panel);padding:16px 16px calc(16px + env(safe-area-inset-bottom));border-radius:18px 18px 0 0;flex-direction:column;gap:14px;max-height:85%;display:flex;position:fixed;bottom:0;left:0;right:0;overflow-y:auto}.sheet h2{margin:0;font-size:16px}.field{flex-direction:column;gap:6px;display:flex}.field>span{color:var(--muted);font-size:13px}.field select{height:var(--touch);color:var(--ink);background:var(--raised);border:1px solid var(--line);border-radius:10px;padding:0 12px;font:15px system-ui}.pieces{flex-direction:column;gap:4px;margin:0;padding:0;list-style:none;display:flex}.pieces li{align-items:stretch;gap:4px;display:flex}.pieces .pick{min-width:0;min-height:var(--touch);text-align:left;color:var(--ink);background:var(--raised);cursor:pointer;border:1px solid #0000;border-radius:10px;flex:1;justify-content:space-between;align-items:center;gap:10px;padding:0 14px;font:15px system-ui;display:flex}.pieces .pick:active{filter:brightness(1.4)}.pieces .pick{padding-top:8px;padding-bottom:8px}.pieces .text{flex-direction:column;gap:1px;min-width:0;display:flex}.pieces .name{text-overflow:ellipsis;white-space:nowrap;overflow:hidden}.pieces .sub{color:var(--muted);text-overflow:ellipsis;white-space:nowrap;font-size:12px;overflow:hidden}.pieces .current .sub{color:#9fb4e8}.pieces .meta{color:var(--muted);font-variant-numeric:tabular-nums;flex:none;font-size:12px}.pieces .current .pick{border-color:var(--accent);background:#24304d}.pieces .remove{width:var(--touch);border:1px solid var(--line);color:var(--muted);cursor:pointer;background:0 0;border-radius:10px;flex:none;font-size:15px}.pieces .remove:active{color:var(--bad);background:#3a2226}.add-file{width:100%;min-height:var(--touch);border:1px dashed var(--line);color:var(--ink);cursor:pointer;background:0 0;border-radius:10px;place-items:center;font:600 15px system-ui;display:grid}.choices{gap:6px;display:flex}.choices button{min-height:var(--touch);background:var(--raised);color:var(--ink);cursor:pointer;border:1px solid #0000;border-radius:10px;flex:1;padding:0 8px;font:15px system-ui}.choices button:active{filter:brightness(1.4)}.choices button.current{border-color:var(--accent);background:#24304d}.keys{grid-template-columns:repeat(auto-fill,minmax(62px,1fr));gap:6px;display:grid}.keys button{background:var(--raised);height:42px;color:var(--ink);cursor:pointer;border:1px solid #0000;border-radius:9px;font:600 14px system-ui}.keys button:active{filter:brightness(1.4)}.keys button.current{border-color:var(--accent);background:#24304d}.add-file:active{border-color:var(--accent)}.add-file input{display:none}.warn{color:var(--bad);margin:0;font-size:13px}.stepper{align-items:center;gap:8px;display:flex}.stepper button{width:var(--touch);height:var(--touch);color:var(--ink);background:var(--raised);border:1px solid var(--line);cursor:pointer;border-radius:10px;flex:none;font-size:22px}.stepper button:active{filter:brightness(1.4)}.stepper button:disabled{opacity:.35}.stepper output{text-align:center;font-variant-numeric:tabular-nums;flex:1;font:600 16px ui-monospace,SF Mono,Menlo,monospace}.row-toggle{min-height:var(--touch);color:var(--muted);justify-content:space-between;align-items:center;gap:12px;font-size:14px;display:flex}.sheet .close{height:var(--touch);background:var(--accent);color:#fff;cursor:pointer;border:0;border-radius:12px;font:600 15px system-ui}.hint{color:var(--muted);margin:0;font-size:12px}.protocol{background:var(--panel);border-radius:10px;flex:none;margin:0 8px 6px;padding:6px 10px;font:12px/1.6 ui-monospace,SFMono-Regular,Menlo,monospace;list-style:none}.protocol li{white-space:nowrap;grid-template-columns:5em 11em 13em 13em 1fr;gap:8px;display:grid;overflow:hidden}.protocol li.right{color:var(--ok)}.protocol li.wrong{color:var(--bad)}.protocol li.refused,.protocol li.muted{color:var(--muted)}@media (width<=700px){.protocol li{grid-template-columns:4.5em 9em 1fr}.protocol li span:nth-child(n+4){display:none}}.error-box{border:1px solid var(--bad);color:var(--bad);white-space:pre-wrap;background:#2a1a1d;border-radius:10px;margin:0 8px 8px;padding:10px;font-size:12px}@media (height<=460px){.topbar{min-height:36px}.actions{padding:6px 8px}.actions button{height:40px}.scroller{margin:0 6px}}@media (width>=900px){.actions{width:100%;max-width:720px;margin:0 auto}}
