@import "https://fonts.googleapis.com/css2?family=Space+Grotesk:wght@400;500;600;700&family=Instrument+Serif:ital@0;1&family=JetBrains+Mono:wght@400;500&display=swap";*,:before,:after{box-sizing:border-box}html,body,#root{min-height:100%;margin:0}body{-webkit-font-smoothing:antialiased;-moz-osx-font-smoothing:grayscale;text-rendering:optimizelegibility;font-optical-sizing:auto;background:#0b0d10}button,input,select{font:inherit}::selection{color:#f4f1ea;background:#ff5a2e59}*{scrollbar-width:thin;scrollbar-color:#ece7dd24 transparent}::-webkit-scrollbar{width:8px;height:8px}::-webkit-scrollbar-track{background:0 0}::-webkit-scrollbar-thumb{background:#ece7dd1f;border-radius:4px}::-webkit-scrollbar-thumb:hover{background:#ece7dd38}:focus-visible{outline-offset:2px;outline:2px solid #ff7b52b3}@media (prefers-reduced-motion:reduce){*,:before,:after{transition-duration:.01ms!important;animation-duration:.01ms!important;animation-iteration-count:1!important}}:root{--bg-deep:#0b0d10;--bg-panel:#171b22b8;--bg-panel-2:#1a1f27a8;--bg-inset:#00000061;--border:#f4f1ea12;--border-strong:#f4f1ea24;--text:#f4f1ea;--text-muted:#b9b3a8;--text-faint:#837d73;--accent:#ff5a2e;--accent-bright:#ff7b52;--accent-soft:#ff5a2e1f;--accent-line:#ff5a2e6b;--blow:#3fd8c7;--blow-glow:#3fd8c773;--draw:#f5c95c;--draw-glow:#f5c95c73;--danger:#ff5468;--plate:#a9c9e2;--plate-hi:#c4dcee;--plate-deep:#8fb4d2;--plate-shadow:#6c8ba4;--shell:#34383d;--shell-deep:#26292d;--shell-edge:#4a5057;--steel:#9aa1a8;--steel-deep:#6b7178;--radius-lg:20px;--radius-md:12px;--radius-sm:9px;--font:"Space Grotesk", "Segoe UI", system-ui, sans-serif;--font-display:"Instrument Serif", "Georgia", serif;--mono:"JetBrains Mono", "SF Mono", ui-monospace, monospace;--ease-out:cubic-bezier(.22, 1, .36, 1)}.app{background:radial-gradient(ellipse 90% 55% at 50% -8%, #ff5a2e1a, transparent 62%), radial-gradient(ellipse 55% 45% at 88% 100%, #3fd8c714, transparent 65%), radial-gradient(ellipse 45% 40% at 6% 92%, #ffcf3f0f, transparent 60%), var(--bg-deep);min-height:100vh;color:var(--text);font-family:var(--font);flex-direction:column;display:flex;overflow-x:clip}.app-header{border-bottom:1px solid var(--border);background:linear-gradient(#0a0b0e8c,#0000);flex-wrap:wrap;justify-content:space-between;align-items:center;gap:1rem 1.5rem;padding:1.35rem 2rem 1.05rem;display:flex}.brand{align-items:center;gap:.95rem;display:flex}.brand-mark{background:radial-gradient(circle at 32% 24%, #ffffff80, transparent 46%), linear-gradient(165deg, var(--plate-hi) 0%, var(--plate) 55%, var(--plate-deep) 100%);border-bottom:5px solid var(--shell);border-radius:8px;flex:none;width:30px;height:24px;position:relative;transform:rotate(-8deg);box-shadow:inset 0 1px #ffffff59,0 6px 14px #00000080,0 0 18px #ff5a2e38}.brand-mark:after{content:"";background:#2a3e5080;border-radius:50%;width:4px;height:4px;position:absolute;top:45%;left:26%;transform:translateY(-50%);box-shadow:7px -3px #2a3e5080,14px 0 #2a3e5080}.brand h1{font-family:var(--font-display);letter-spacing:-.01em;color:var(--text);margin:0;font-size:1.34rem;font-weight:400;line-height:1.05}.brand h1 em{color:var(--accent-bright);font-style:italic;font-weight:300}.tagline{text-transform:uppercase;letter-spacing:.16em;color:var(--text-faint);margin:.22rem 0 0;font-size:.68rem;font-weight:500}.view-tabs{border:1px solid var(--border);background:#0000006b;border-radius:999px;gap:.25rem;padding:.28rem;display:flex}.view-tabs button{color:var(--text-muted);font-family:var(--font);letter-spacing:.03em;cursor:pointer;transition:background .28s var(--ease-out), color .28s var(--ease-out), box-shadow .28s var(--ease-out);background:0 0;border:none;border-radius:999px;padding:.45rem 1.15rem;font-size:.8rem;font-weight:500;position:relative}.view-tabs button:hover:not(.active){color:var(--text)}.view-tabs button.active{background:var(--text);color:#14110c}.tab-live{background:var(--blow);width:6px;height:6px;box-shadow:0 0 8px var(--blow-glow);vertical-align:1px;border-radius:50%;animation:2.2s ease-in-out infinite pulse-dot;display:inline-block}.tab-connection,.device-tab-connection{color:var(--blow);letter-spacing:.01em;text-transform:none;align-items:center;gap:.32rem;margin-left:.5rem;font-size:.62rem;font-weight:600;display:inline-flex}@keyframes pulse-dot{0%,to{opacity:1}50%{opacity:.45}}.hint-keys{color:var(--text-muted);flex-wrap:wrap;justify-content:center;align-items:center;gap:.4rem;font-size:.74rem;display:flex}.hint-keys kbd{border:1px solid var(--border-strong);font-family:var(--mono);color:var(--accent);background:linear-gradient(#ffffff0e,#ffffff04);border-bottom-width:2px;border-radius:6px;padding:.18rem .48rem;font-size:.68rem;display:inline-block;box-shadow:0 2px 4px #0000004d}.hint-keys .sep{opacity:.35;margin:0 .3rem}.layout{box-sizing:border-box;flex:1;grid-template-columns:minmax(0,1fr) minmax(280px,340px);align-items:start;gap:1.25rem;width:100%;max-width:1440px;margin:0 auto;padding:1.25rem 1.5rem 1rem;display:grid}.main-col{flex-direction:column;gap:.9rem;min-width:0;display:flex}.game-layout{gap:1rem;width:min(1120px,100% - 2rem);margin:1.25rem auto 1.5rem;display:grid}.rhythm-game{--target-y:84%;background:linear-gradient(160deg,#161c24f5,#080a0efa);border:1px solid #ff5a2e29;border-radius:24px;overflow:hidden;box-shadow:0 28px 70px #00000085,inset 0 1px #ffffff0f}.game-topbar{border-bottom:1px solid var(--border);background:#07090c85;justify-content:space-between;align-items:center;gap:2rem;padding:1.2rem 1.4rem;display:flex}.game-eyebrow{color:var(--accent);font:600 .62rem/1 var(--mono);letter-spacing:.16em;text-transform:uppercase}.game-song-copy h2{font:400 1.18rem/1.2 var(--font-display);margin:.35rem 0 .2rem}.game-song-copy p{color:var(--text-faint);margin:0;font-size:.72rem}.game-scoreboard{gap:.7rem;display:flex}.game-scoreboard>div{border:1px solid var(--border);background:#ffffff06;border-radius:11px;min-width:82px;padding:.6rem .75rem}.game-scoreboard span{color:var(--text-faint);letter-spacing:.12em;text-transform:uppercase;font-size:.56rem;display:block}.game-scoreboard strong{font:500 1rem/1 var(--mono);margin-top:.18rem;display:block}.game-scoreboard .combo-stat strong{color:var(--accent-bright)}.note-highway{perspective:700px;background:radial-gradient(at 50% 100%,#6496c324,#0000 48%);grid-template-columns:repeat(5,minmax(0,1fr));width:min(780px,100%);height:clamp(480px,62vh,690px);margin:0 auto;display:grid;position:relative;overflow:hidden}.highway-depth{background:repeating-linear-gradient(#0000 0 68px,#ffffff07 69px 70px),linear-gradient(90deg,#0000,#94b8d809 50%,#0000);position:absolute;inset:0;-webkit-mask-image:linear-gradient(#0000,#000 38%);mask-image:linear-gradient(#0000,#000 38%)}.game-lane{border-left:1px solid #ffffff0b;position:relative}.game-lane:last-of-type{border-right:1px solid #ffffff0b}.lane-rail{background:linear-gradient(180deg, transparent 20%, color-mix(in srgb, var(--lane-color) 7%, transparent));opacity:.55;position:absolute;inset:0}.falling-note{z-index:4;left:50%;top:calc(var(--fall) * var(--target-y));width:clamp(44px,7vw,74px);height:24px;transform:translate(-50%, -50%) scale(calc(.72 + var(--fall) * .28));border:2px solid color-mix(in srgb, var(--lane-color) 78%, white);background:radial-gradient(circle at 42% 35%, white 0 5%, var(--lane-color) 18% 55%, color-mix(in srgb, var(--lane-color) 45%, black));box-shadow:0 0 9px var(--lane-color), 0 7px 15px #0000007a, inset 0 2px 3px #ffffff73;border-radius:50%;transition:opacity .16s,transform .16s;position:absolute}.falling-note:after{content:"";border:1px solid #ffffff52;border-radius:50%;position:absolute;inset:4px 10px}.falling-note small{text-align:center;color:#000000b8;font:700 .6rem var(--mono);position:absolute;inset:1px 0 auto}.falling-note.hit{opacity:0;transform:translate(-50%,-50%)scale(1.8)}.falling-note.miss{filter:grayscale();opacity:.2}.hit-line{z-index:3;top:var(--target-y);background:linear-gradient(90deg,#0000,#dcefffdb 15% 85%,#0000);height:2px;position:absolute;left:0;right:0;box-shadow:0 0 14px #94b8d8a6}.hit-line span{color:#c2dcf18c;font:500 .52rem var(--mono);letter-spacing:.12em;text-transform:uppercase;position:absolute;bottom:.45rem;right:.7rem}.lane-target{z-index:6;top:var(--target-y);aspect-ratio:1.7;border:2px solid var(--lane-color);background:color-mix(in srgb, var(--lane-color) 16%, #0b0d10);color:#fff;cursor:pointer;width:clamp(52px,8vw,84px);box-shadow:0 0 0 6px #00000080, 0 0 18px color-mix(in srgb, var(--lane-color) 35%, transparent);border-radius:50%;position:absolute;left:50%;transform:translate(-50%,-50%)}.lane-target span{font:700 .75rem var(--mono)}.lane-target:hover,.lane-target.active{background:var(--lane-color);box-shadow:0 0 0 6px #0000006b, 0 0 32px var(--lane-color);transform:translate(-50%,-50%)scale(1.08)}.game-judgement{z-index:8;color:#fff;font:italic 500 clamp(1.4rem, 4vw, 2.6rem) var(--font-display);text-shadow:0 0 18px;animation:judge-pop .5s var(--ease-out) both;pointer-events:none;position:absolute;top:66%;left:50%;transform:translate(-50%)}.game-judgement.perfecto{color:#f7e79a}.game-judgement.bien{color:var(--blow)}.game-judgement.cerca{color:var(--draw)}.game-judgement.empty{color:var(--text-faint);font-size:1rem}@keyframes judge-pop{0%{opacity:0;transform:translate(-50%,12px)scale(.7)}35%{opacity:1;transform:translate(-50%)scale(1.08)}to{opacity:0;transform:translate(-50%,-14px)}}.game-curtain{z-index:10;text-align:center;-webkit-backdrop-filter:blur(5px);backdrop-filter:blur(5px);background:radial-gradient(circle,#121a23d9,#05070af5);place-content:center;justify-items:center;padding:1rem;display:grid;position:absolute;inset:0}.curtain-icon{border:1px solid var(--accent-line);width:58px;height:58px;color:var(--accent-bright);font:400 1.7rem var(--font-display);border-radius:50%;place-items:center;margin-bottom:1rem;display:grid;box-shadow:0 0 35px #94b8d826}.game-curtain strong{font:400 1.7rem var(--font-display)}.game-curtain p{color:var(--text-muted);margin:.5rem 0 1.25rem;font-size:.8rem}.game-curtain button,.game-footer-bar button{background:var(--accent);color:#101820;cursor:pointer;border:1px solid #c2dcf157;border-radius:999px;padding:.62rem 1.2rem;font-weight:700}.game-footer-bar{border-top:1px solid var(--border);color:var(--text-faint);align-items:center;gap:1rem;padding:.8rem 1.3rem;font-size:.68rem;display:flex}.game-progress{background:#ffffff12;border-radius:5px;flex:1;height:4px;overflow:hidden}.game-progress span{border-radius:inherit;background:linear-gradient(90deg, var(--accent), var(--blow));height:100%;box-shadow:0 0 10px var(--accent);display:block}.game-footer-bar button{color:var(--text-muted);background:0 0;padding:.4rem .75rem;font-size:.68rem}@media (width<=680px){.game-layout{width:calc(100% - 1rem);margin-top:.5rem}.game-topbar{flex-direction:column;align-items:flex-start;gap:.8rem;padding:1rem}.game-scoreboard{width:100%}.game-scoreboard>div{flex:1;min-width:0;padding:.5rem}.note-highway{height:510px}.game-footer-bar>span,.hit-line span{display:none}}@media (width>=1200px){.layout{grid-template-columns:minmax(420px,.78fr) minmax(640px,1.22fr);gap:.85rem;max-width:1600px;padding:.8rem 1rem .85rem}}@media (width<=960px){.layout{grid-template-columns:minmax(0,1fr);gap:1rem;padding:.9rem .8rem .75rem}}.view-enter{animation:view-in .55s var(--ease-out)}@keyframes view-in{0%{opacity:0;transform:translateY(10px)}to{opacity:1;transform:translateY(0)}}.app-footer{border-top:1px solid var(--border);flex-direction:column;align-items:center;gap:.7rem;margin-top:.5rem;padding:1.05rem 1.5rem 1.4rem;display:flex}.footer-note{color:var(--text-faint);letter-spacing:.03em;text-align:center;margin:0;font-size:.72rem}.panel{background:linear-gradient(168deg, var(--bg-panel) 0%, var(--bg-panel-2) 100%);border:1px solid var(--border);border-radius:var(--radius-lg);-webkit-backdrop-filter:blur(14px);padding:1.35rem 1.4rem 1.45rem;position:relative;box-shadow:inset 0 1px #ffffff0b,0 18px 44px #0000006b}.panel-header{justify-content:space-between;align-items:center;gap:.75rem;margin-bottom:1.15rem;display:flex}.panel-header h2{text-transform:uppercase;letter-spacing:.18em;color:var(--text-muted);align-items:center;gap:.6rem;margin:0;font-size:.68rem;font-weight:600;display:flex}.panel-header h2:before{content:"";background:var(--accent-line);flex:none;width:16px;height:1px}.audio-badge{letter-spacing:.08em;text-transform:uppercase;color:var(--text-muted);border:1px solid var(--border);white-space:nowrap;background:#ffffff0a;border-radius:999px;padding:.28rem .6rem;font-size:.62rem;font-weight:600}.audio-badge:not(.on){animation:2.6s ease-in-out infinite pulse-badge}@keyframes pulse-badge{0%,to{border-color:var(--border);color:var(--text-muted)}50%{border-color:var(--accent-line);color:var(--accent-bright)}}.audio-badge.on{color:var(--blow);background:#3fd8c714;border-color:#3fd8c74d}.direction-badge{border-radius:var(--radius-md);background:var(--bg-inset);border:1px solid var(--border);font-family:var(--font-display);letter-spacing:.01em;align-items:center;gap:.7rem;margin-bottom:1.2rem;padding:.9rem 1.05rem;font-size:1.5rem;font-weight:400;line-height:1.1;transition:color .25s,border-color .3s,box-shadow .35s,background .3s;display:flex}.direction-badge .dir-dot{background:var(--text-faint);border-radius:50%;flex:none;width:9px;height:9px;transition:background .25s,box-shadow .3s}.direction-badge.dir-blow{color:var(--blow);background:#3fd8c70d;border-color:#3fd8c747;box-shadow:inset 0 0 32px #3fd8c70f,0 0 24px #3fd8c70d}.direction-badge.dir-blow .dir-dot{background:var(--blow);box-shadow:0 0 12px var(--blow-glow);animation:1.6s ease-in-out infinite pulse-dot}.direction-badge.dir-draw{color:var(--draw);background:#f5c95c0d;border-color:#f5c95c47;box-shadow:inset 0 0 32px #f5c95c0f,0 0 24px #f5c95c0d}.direction-badge.dir-draw .dir-dot{background:var(--draw);box-shadow:0 0 12px var(--draw-glow);animation:1.6s ease-in-out infinite pulse-dot}.direction-badge.dir-none{color:var(--text-faint);font-style:italic;font-weight:300}.vu-block{margin-bottom:1.25rem}.vu-label{text-transform:uppercase;letter-spacing:.12em;color:var(--text-muted);justify-content:space-between;align-items:baseline;margin-bottom:.5rem;font-size:.7rem;font-weight:500;display:flex}.vu-value{font-family:var(--mono);letter-spacing:0;text-transform:none;color:var(--text);font-size:.82rem}.vu-track{background:var(--bg-inset);border:1px solid var(--border);border-radius:999px;height:12px;position:relative;overflow:hidden;box-shadow:inset 0 2px 5px #0006}.vu-fill{background:linear-gradient(90deg, #948d7e8c, var(--accent));border-radius:999px;width:0;height:100%;transition:width 90ms linear,background .25s,box-shadow .25s}.vu-fill.dir-blow{background:linear-gradient(90deg, #1f9c8d, var(--blow));box-shadow:0 0 14px var(--blow-glow)}.vu-fill.dir-draw{background:linear-gradient(90deg, #c99a3a, var(--draw));box-shadow:0 0 14px var(--draw-glow)}.vu-ticks{pointer-events:none;position:absolute;inset:0}.vu-ticks span{background:#ffffff17;width:1px;position:absolute;top:0;bottom:0}.status-row{justify-content:space-between;align-items:baseline;gap:.5rem;padding:.3rem 0;font-size:.8rem;display:flex}.status-row strong{text-align:right;font-weight:500}.status-row .ok{color:var(--blow)}.muted{color:var(--text-muted)}.serial-status{border-top:1px solid var(--border);margin-top:.6rem;padding-top:.75rem}.serial-error{color:var(--danger);margin:.4rem 0;font-size:.73rem;line-height:1.45}.serial-connection-feedback{color:var(--accent);align-items:center;gap:.45rem;margin:.45rem 0 0;font-size:.73rem;line-height:1.4;display:flex}.serial-banner.connecting,.firmware-notice.connecting{color:var(--accent);background:var(--accent-soft);border-color:#ff5a2e59}.connection-spinner{border:2px solid #ff5a2e4d;border-top-color:var(--accent);border-radius:50%;flex:none;width:.72rem;height:.72rem;animation:.8s linear infinite connection-spin}@keyframes connection-spin{to{transform:rotate(360deg)}}.serial-line{background:var(--bg-inset);border:1px solid var(--border);font-family:var(--mono);color:var(--text-muted);word-break:break-all;border-radius:7px;max-height:3.2em;margin-top:.45rem;padding:.45rem .55rem;font-size:.63rem;display:block;overflow:hidden}.notes-block{border-top:1px solid var(--border);margin-top:1.1rem;padding-top:.95rem}.notes-title{text-transform:uppercase;letter-spacing:.16em;margin-bottom:.6rem;font-size:.66rem;font-weight:600;display:block}.notes-empty{color:var(--text-faint);font-size:.9rem;font-family:var(--font-display);margin:0;font-style:italic}.current-note{animation:chip-in .3s var(--ease-out);align-items:baseline;gap:.75rem;display:flex}@keyframes chip-in{0%{opacity:0;transform:scale(.9)}to{opacity:1;transform:scale(1)}}.current-note-name{font-family:var(--font-display);color:var(--accent-bright);font-size:2rem;line-height:1}.current-note-name.dir-blow{color:var(--blow)}.current-note-name.dir-draw{color:var(--draw)}.current-note-meta{font-family:var(--mono);color:var(--text-muted);font-size:.66rem}.params-cols{flex-direction:column;display:flex}.params-col{min-width:0}.param-group+.param-group,.params-col+.params-col>.param-group:first-child{border-top:1px solid var(--border);margin-top:1rem;padding-top:.9rem}@media (width>=1200px){.params-cols{grid-template-columns:repeat(2,minmax(0,1fr));align-items:start;gap:.7rem;display:grid}.params-col{display:contents}.params-cols .param-group,.params-cols .mode-warning{border:1px solid var(--border);border-radius:var(--radius-md);background:#00000021;margin-top:0;padding:.72rem .78rem}.params-cols .mode-warning{margin:0}.params-cols .param-group[open]{grid-column:1/-1}.params-cols .param-group-grid{grid-template-columns:repeat(2,minmax(0,1fr));align-items:start;column-gap:1rem;display:grid}.param-group-grid>.rules-hint,.param-group-grid>.field-source{grid-column:1/-1}.params-panel{padding:.85rem}.params-panel>.panel-header{margin-bottom:.65rem}.params-panel .field{gap:.25rem;margin-bottom:.58rem;font-size:.7rem}.params-panel .field-hint{font-size:.61rem;line-height:1.3}.params-panel select{padding-top:.42rem;padding-bottom:.42rem;font-size:.76rem}.params-panel .source-toggle button{padding:.4rem .35rem;font-size:.7rem}}.param-group-title{text-transform:uppercase;letter-spacing:.18em;color:var(--text-faint);margin:0;font-size:.64rem;font-weight:600}.param-grid-title{border-top:1px solid var(--border);text-transform:uppercase;letter-spacing:.18em;color:var(--text-faint);grid-column:1/-1;margin:.35rem 0 .7rem;padding-top:.75rem;font-size:.62rem;font-weight:600}summary.param-group-title{cursor:pointer;-webkit-user-select:none;user-select:none;justify-content:space-between;align-items:center;gap:.5rem;padding:.15rem 0;list-style:none;transition:color .2s;display:flex}summary.param-group-title::-webkit-details-marker{display:none}summary.param-group-title:after{content:"";border-right:1.5px solid var(--text-faint);border-bottom:1.5px solid var(--text-faint);width:8px;height:8px;transition:transform .2s var(--ease-out);flex:none;margin-right:2px;transform:rotate(-45deg)}details[open]>summary.param-group-title:after{transform:rotate(45deg)}summary.param-group-title:hover{color:var(--text-muted)}details[open]>summary.param-group-title{margin-bottom:.85rem}.param-subgroup{border:1px dashed var(--border);border-radius:var(--radius-md);background:#0000001f;grid-column:1/-1;margin-top:.35rem;padding:.45rem .6rem}summary.param-subgroup-title{cursor:pointer;-webkit-user-select:none;user-select:none;text-transform:uppercase;letter-spacing:.16em;color:var(--text-faint);justify-content:space-between;align-items:center;gap:.5rem;margin:0;padding:.1rem 0;font-size:.6rem;font-weight:600;list-style:none;transition:color .2s;display:flex}summary.param-subgroup-title::-webkit-details-marker{display:none}summary.param-subgroup-title:after{content:"";border-right:1.5px solid var(--text-faint);border-bottom:1.5px solid var(--text-faint);width:7px;height:7px;transition:transform .2s var(--ease-out);flex:none;margin-right:2px;transform:rotate(-45deg)}details[open]>summary.param-subgroup-title:after{transform:rotate(45deg)}summary.param-subgroup-title:hover{color:var(--text-muted)}.param-subgroup[open]>summary.param-subgroup-title{margin-bottom:.6rem}.params-panel .field{color:var(--text-muted);flex-direction:column;gap:.42rem;margin-bottom:.9rem;font-size:.76rem;font-weight:500;display:flex}.params-panel .field:last-child{margin-bottom:0}.params-panel .field>span{letter-spacing:.02em;justify-content:space-between;align-items:baseline;display:flex}.params-panel select,.autoplay-bar select{appearance:none;background:url("data:image/svg+xml;charset=utf-8,%3Csvg xmlns='http://www.w3.org/2000/svg' width='10' height='6' viewBox='0 0 10 6'%3E%3Cpath d='M1 1l4 4 4-4' fill='none' stroke='%23d2ad78' stroke-width='1.5' stroke-linecap='round'/%3E%3C/svg%3E") no-repeat right .7rem center / 10px, var(--bg-inset);border:1px solid var(--border);border-radius:var(--radius-sm);color:var(--text);font-family:var(--font);cursor:pointer;padding:.55rem 2rem .55rem .75rem;font-size:.85rem;transition:border-color .2s,box-shadow .2s}.params-panel select:hover,.autoplay-bar select:hover{border-color:var(--border-strong)}.params-panel select:focus,.autoplay-bar select:focus{border-color:var(--accent-line);outline:none;box-shadow:0 0 0 3px #ff5a2e1f}.field-hint{color:var(--text-faint);font-size:.68rem;font-weight:400;line-height:1.45}.field-hint.mic-error{color:var(--danger)}.params-reset{padding:.28rem .6rem;font-size:.68rem}.preset-row{align-items:stretch;gap:.45rem;margin-bottom:.5rem;display:flex}.params-panel .preset-field-label{margin-bottom:.35rem}.preset-row select{flex:1;min-width:0}.rules-hint{border-radius:var(--radius-sm);background:var(--accent-soft);border:1px solid #ff5a2e33;margin:.2rem 0 0;padding:.6rem .75rem;line-height:1.5}.params-panel .field.field-disabled{opacity:.45}.params-panel input[type=range]{appearance:none;cursor:pointer;background:0 0;outline:none;width:100%;height:16px}.params-panel input[type=range]::-webkit-slider-runnable-track{background:var(--bg-inset);border:1px solid var(--border);border-radius:999px;height:5px;box-shadow:inset 0 1px 3px #00000073}.params-panel input[type=range]::-webkit-slider-thumb{-webkit-appearance:none;background:radial-gradient(circle at 35% 30%, #ffffff80, transparent 50%), linear-gradient(160deg, var(--plate-hi), var(--plate-deep));border:1px solid var(--plate-shadow);border-radius:50%;width:15px;height:15px;margin-top:-6.5px;transition:box-shadow .2s,transform .2s;box-shadow:0 2px 6px #00000073}.params-panel input[type=range]::-webkit-slider-thumb:hover{box-shadow:0 2px 6px #00000073,0 0 0 5px #ff5a2e24}.params-panel input[type=range]:active::-webkit-slider-thumb{transform:scale(1.12);box-shadow:0 2px 6px #00000073,0 0 0 6px #ff5a2e2e}.params-panel input[type=range]::-moz-range-track{background:var(--bg-inset);border:1px solid var(--border);border-radius:999px;height:5px}.params-panel input[type=range]::-moz-range-thumb{background:linear-gradient(160deg, var(--plate-hi), var(--plate-deep));border:1px solid var(--plate-shadow);border-radius:50%;width:15px;height:15px;box-shadow:0 2px 6px #00000073}.source-toggle{border-radius:var(--radius-md);background:var(--bg-inset);border:1px solid var(--border);grid-template-columns:1fr 1fr;gap:.3rem;padding:.3rem;display:grid}.source-toggle.harmony-toggle{grid-template-columns:repeat(4,1fr)}.source-toggle button{color:var(--text-muted);font-family:var(--font);letter-spacing:.02em;cursor:pointer;transition:background .22s var(--ease-out), color .22s, border-color .22s, box-shadow .22s;background:0 0;border:1px solid #0000;border-radius:8px;padding:.5rem;font-size:.8rem;font-weight:500}.source-toggle button:hover:not(:disabled):not(.active){color:var(--text)}.source-toggle button.active{color:var(--accent-bright);background:linear-gradient(#cee2f221,#cee2f20f);border-color:#ff5a2e4d;box-shadow:0 2px 8px #0000004d}.source-toggle button:disabled{opacity:.35;cursor:not-allowed}.serial-actions{flex-direction:column;gap:.5rem;margin-top:.65rem;display:flex}.btn-primary{background:var(--accent);color:#1a0c05;font-family:var(--font);letter-spacing:.02em;cursor:pointer;border:1px solid #0000;border-radius:999px;padding:.5rem 1.05rem;font-size:.8rem;font-weight:600;transition:background .2s,transform .15s}.btn-primary:hover:not(:disabled){background:var(--accent-bright)}.btn-primary:active:not(:disabled){transform:scale(.97)}.btn-primary:disabled{opacity:.4;cursor:not-allowed}.btn-secondary{color:var(--accent-bright);font-family:var(--font);cursor:pointer;background:0 0;border:1px solid #ff5a2e73;border-radius:999px;padding:.5rem .95rem;font-size:.8rem;font-weight:500;transition:background .2s,border-color .2s,transform .15s}.btn-secondary:hover:not(:disabled){background:var(--accent-soft);border-color:#ff5a2ea6}.btn-secondary:active:not(:disabled){transform:scale(.97)}.btn-ghost{border:1px solid var(--border-strong);color:var(--text-muted);font-family:var(--font);cursor:pointer;background:0 0;border-radius:999px;padding:.45rem .85rem;font-size:.78rem;font-weight:500;transition:color .2s,border-color .2s,background .2s}.btn-ghost:hover:not(:disabled){color:var(--text);border-color:var(--border-strong);background:#ffffff08}.btn-ghost:disabled{opacity:.35;cursor:not-allowed}.btn-link{color:var(--accent);font-family:var(--font);cursor:pointer;text-align:left;background:0 0;border:none;padding:.25rem 0;font-size:.78rem;font-weight:500;transition:color .2s}.btn-link:hover{color:var(--accent-bright);text-underline-offset:3px;text-decoration:underline}input[type=checkbox]{appearance:none;border:1px solid var(--border-strong);cursor:pointer;vertical-align:middle;background:#ffffff14;border-radius:999px;flex:none;width:30px;height:17px;margin:0;transition:background .18s,border-color .18s;position:relative}input[type=checkbox]:before{content:"";background:var(--text-muted);width:11px;height:11px;transition:transform .18s var(--ease-out), background .18s;border-radius:50%;position:absolute;top:2px;left:2px}input[type=checkbox]:hover:not(:disabled){border-color:#ff5a2e73}input[type=checkbox]:checked{background:var(--accent);border-color:var(--accent)}input[type=checkbox]:checked:before{background:#fff7f2;transform:translate(13px)}input[type=checkbox]:disabled{opacity:.4;cursor:not-allowed}.serial-btns-row{flex-wrap:wrap;gap:.45rem;display:flex}.serial-audio-check{color:var(--text-muted);cursor:pointer;flex-wrap:wrap;align-items:center;gap:.45rem;font-size:.78rem;display:flex}.serial-audio-check.inline{margin-top:.35rem}.serial-audio-check.dim{opacity:.45}.serial-exclusive-warn{border-radius:var(--radius-sm);border:1px solid #ff5a2e38;border-left:3px solid var(--accent-line);color:var(--text);background:#ff5a2e12;margin-bottom:.85rem;padding:.7rem .9rem;font-size:.75rem;line-height:1.5}.serial-exclusive-warn.compact{margin-bottom:.5rem;padding:.55rem .7rem}.serial-exclusive-warn code{font-family:var(--mono);color:var(--accent-bright);font-size:.72rem}.status-strip{flex-wrap:wrap;align-items:center;gap:.7rem 1.4rem;padding:.75rem 1.1rem;display:flex}.strip-dir{font-family:var(--font-display);width:8.2rem;color:var(--text-faint);white-space:nowrap;flex:none;align-items:center;gap:.55rem;font-size:1.15rem;font-style:italic;font-weight:300;line-height:1;display:flex}.strip-dir .dir-dot{background:var(--text-faint);border-radius:50%;flex:none;width:9px;height:9px;transition:background .25s,box-shadow .3s}.strip-dir.dir-blow{color:var(--blow);font-style:normal;font-weight:400}.strip-dir.dir-blow .dir-dot{background:var(--blow);box-shadow:0 0 12px var(--blow-glow);animation:1.6s ease-in-out infinite pulse-dot}.strip-dir.dir-draw{color:var(--draw);font-style:normal;font-weight:400}.strip-dir.dir-draw .dir-dot{background:var(--draw);box-shadow:0 0 12px var(--draw-glow);animation:1.6s ease-in-out infinite pulse-dot}.strip-note{white-space:nowrap;flex:none;align-items:baseline;gap:.6rem;width:13rem;height:1.65rem;display:flex;overflow:hidden}.strip-note-name{font-family:var(--font-display);color:var(--accent-bright);font-size:1.55rem;line-height:1}.strip-note-name.dir-blow{color:var(--blow)}.strip-note-name.dir-draw{color:var(--draw)}.strip-note-meta{font-family:var(--mono);color:var(--text-muted);white-space:nowrap;font-size:.64rem}.strip-note-empty{font-family:var(--font-display);color:var(--text-faint);font-size:1.55rem;line-height:1}.strip-vu{flex:1;align-items:center;gap:.5rem;min-width:110px;max-width:280px;display:flex}.strip-vu .vu-track{flex:1}.strip-vu-label{text-transform:uppercase;letter-spacing:.14em;color:var(--text-muted);font-size:.6rem;font-weight:600}.strip-vu-value{font-family:var(--mono);color:var(--text);text-align:right;min-width:2.3rem;font-size:.7rem}.strip-meta{flex-wrap:wrap;align-items:center;gap:.4rem;margin-left:auto;display:flex}.strip-chip{border:1px solid var(--border);background:var(--bg-inset);color:var(--text-muted);white-space:nowrap;border-radius:999px;padding:.26rem .6rem;font-size:.66rem;font-weight:500}.strip-chip.ok{color:var(--blow);border-color:#3fd8c74d}.strip-chip.bad{color:var(--danger);border-color:#e585734d}.strip-chip.warn{color:#e5c07b;border-color:#e5c07b4d}.strip-error{flex-basis:100%;margin:0}.sample-load-meter{min-width:0}button.sample-load-meter{width:100%;color:inherit;font:inherit;text-align:left;background:0 0;border:0;padding:0}button.sample-load-meter:disabled{opacity:1}.sample-load-meter.save-action{cursor:pointer;background:#e5c07b14;border:1px solid #e5c07b7a;border-radius:8px;padding:.48rem .58rem;transition:border-color .15s,background .15s,transform .15s;box-shadow:0 0 0 1px #e5c07b0a}.sample-load-meter.save-action:hover{background:#e5c07b24;border-color:#e5c07bd1}.sample-load-meter.save-action:active{transform:translateY(1px)}.sample-load-meter.save-action:focus-visible{outline:2px solid var(--accent-bright);outline-offset:2px}.sample-load-meter.save-action .sample-load-value{color:#e5c07b}.sample-load-meter.saving,.sample-load-meter.saved{background:#69db8e12;border:1px solid #69db8e5c;border-radius:8px;padding:.48rem .58rem}.sample-load-meter.compact{flex:1 0 100%;padding-top:.05rem}.sample-load-meter.compact.save-action,.sample-load-meter.compact.saving,.sample-load-meter.compact.saved{padding:.38rem .5rem}.sample-load-head,.memory-meter-head,.telemetry-card-title{justify-content:space-between;align-items:center;gap:.75rem;display:flex}.sample-load-head{color:var(--text);margin-bottom:.4rem;font-size:.74rem}.sample-load-head>span:first-child{align-items:baseline;gap:.65rem;min-width:0;display:flex}.sample-load-head strong{color:var(--accent-bright);font-weight:600}.sample-load-head small{color:var(--text-muted);font-size:.65rem}.sample-load-value{color:var(--accent-bright);font-family:var(--mono);flex:none;font-size:.67rem;font-weight:600}.sample-load-meter.ready .sample-load-value{color:var(--blow)}.sample-load-meter.ready.save-action .sample-load-value{color:#e5c07b}.sample-load-meter.unavailable .sample-load-value,.sample-load-meter.unavailable .sample-load-head strong{color:var(--danger,#ff6b6b)}.sample-load-meter.unavailable .sample-load-track{background:#ff6b6b1a;box-shadow:inset 0 0 0 1px #ff6b6b59}.sample-load-track{height:5px;box-shadow:inset 0 0 0 1px var(--border);background:#00000075;border-radius:99px;overflow:hidden}.sample-load-track>span{border-radius:inherit;background:linear-gradient(90deg, var(--draw), var(--accent-bright));height:100%;box-shadow:0 0 10px var(--draw-glow);transition:width .12s linear;display:block}.sample-load-meter.ready .sample-load-track>span{background:var(--blow);box-shadow:0 0 10px var(--blow-glow)}.autoplay-bar{box-sizing:border-box;border-radius:var(--radius-md);border:1px solid var(--border);background:linear-gradient(168deg, var(--bg-panel) 0%, var(--bg-panel-2) 100%);-webkit-backdrop-filter:blur(10px);flex-wrap:wrap;justify-content:center;align-items:center;gap:.6rem;width:100%;padding:.5rem .75rem;display:flex;box-shadow:inset 0 1px #ffffff0a,0 10px 26px #00000059}.autoplay-bar select{max-width:300px}.autoplay-bar select:disabled{opacity:.55;cursor:not-allowed}.autoplay-play{white-space:nowrap}.autoplay-loop{margin:0}.autoplay-progress{font-family:var(--mono);color:var(--text-muted);text-align:center;min-width:10.5rem;font-size:.68rem}.region-chip{font-family:var(--mono);color:var(--accent-bright);border-color:var(--accent-line);white-space:nowrap;padding:.35rem .6rem;font-size:.68rem}.autoplay-speed{color:var(--text-muted);align-items:center;gap:.45rem;font-size:.72rem;display:flex}.autoplay-speed .speed-value{font-family:var(--mono);text-align:right;min-width:2.6rem;color:var(--text)}.autoplay-speed input[type=range]{appearance:none;cursor:pointer;background:0 0;width:110px;height:16px}.autoplay-speed input[type=range]::-webkit-slider-runnable-track{background:var(--bg-inset);border:1px solid var(--border);border-radius:999px;height:5px}.autoplay-speed input[type=range]::-webkit-slider-thumb{-webkit-appearance:none;background:linear-gradient(160deg, var(--plate-hi), var(--plate-deep));border:1px solid var(--plate-shadow);border-radius:50%;width:13px;height:13px;margin-top:-5px;box-shadow:0 2px 5px #00000073}.autoplay-speed input[type=range]::-moz-range-track{background:var(--bg-inset);border:1px solid var(--border);border-radius:999px;height:5px}.autoplay-speed input[type=range]::-moz-range-thumb{background:linear-gradient(160deg, var(--plate-hi), var(--plate-deep));border:1px solid var(--plate-shadow);border-radius:50%;width:13px;height:13px;box-shadow:0 2px 5px #00000073}.note-timeline{border-radius:var(--radius-md);border:1px solid var(--border);background:linear-gradient(90deg, #ff5a2e0f, transparent 30%), var(--bg-inset);cursor:crosshair;touch-action:none;-webkit-user-select:none;user-select:none;width:100%;margin-top:-.8rem;position:relative;overflow:hidden;box-shadow:inset 0 2px 8px #0006}.tl-region{pointer-events:none;z-index:1;background:#ff5a2e24;border-left:2px solid #ff5a2ea6;border-right:2px solid #ff5a2ea6;position:absolute;top:0;bottom:0;box-shadow:inset 0 0 24px #ff5a2e1f}.tl-region.is-dragging{background:#ff5a2e33}.tl-playhead{background:var(--accent);z-index:2;pointer-events:none;border-radius:2px;width:2px;position:absolute;top:6%;bottom:6%;left:18%;box-shadow:0 0 12px #ff5a2eb3}.tl-track{will-change:transform;position:absolute;top:0;bottom:0;left:18%}.tl-beat{background:#ffffff09;width:1px;position:absolute;top:0;bottom:0}.tl-beat.tl-bar{background:#ffffff17}.tl-note{color:#161310;white-space:nowrap;background:linear-gradient(#f7f3ea,#dcd4c4);border-radius:7px;align-items:center;gap:4px;height:26px;padding:0 5px;display:flex;position:absolute;overflow:hidden;box-shadow:0 2px 6px #00000059}.tl-note.tl-draw{background:linear-gradient(#aeeee6,#3fd8c7)}.tl-holes{flex-direction:column;gap:2px;display:flex}.tl-hole-row{gap:2px;display:flex}.tl-hole-row-low{margin-left:3px}.tl-hole-row i{box-sizing:border-box;background:0 0;border:1px solid #1613108c;border-radius:50%;width:5px;height:5px}.tl-hole-row i.on{background:#171310;border-color:#171310}.tl-thumb{font-family:var(--mono);opacity:.85;font-size:.55rem;font-weight:700}.tl-note.is-hit{filter:brightness(1.15);box-shadow:0 0 16px #ff5a2ed9,0 0 30px #ff5a2e66}.tl-note.is-past{opacity:.28}.instrument-stage{justify-content:center;align-items:center;width:100%;min-height:0;padding:2.6rem .5rem 1.6rem;display:flex;position:relative}.stage-floor{filter:blur(6px);pointer-events:none;background:radial-gradient(#0000008c,#0000 68%);border-radius:50%;width:min(66%,500px);height:60px;position:absolute;bottom:7%;left:50%;transform:translate(-50%)}.note-callout{z-index:2;border:1px solid var(--border-strong);background:var(--bg-inset);-webkit-backdrop-filter:blur(6px);border-radius:10px;align-items:baseline;gap:.6rem;padding:.5rem .85rem;transition:border-color .25s,box-shadow .3s;display:flex;position:absolute;top:3%;right:5%}.callout-covered{font-family:var(--mono);color:var(--text-muted);font-size:.7rem}.callout-note{font-family:var(--font-display);color:var(--text-faint);font-size:1.45rem;line-height:1;transition:color .2s}.callout-midi{font-family:var(--mono);color:var(--text-faint);font-size:.62rem}.note-callout.is-live{border-color:var(--accent-line);box-shadow:0 0 22px #ff5a2e29}.note-callout.is-live .callout-note{color:var(--accent-bright)}.device{z-index:1;aspect-ratio:1.3;width:min(88%,500px);position:relative}.device-halo{pointer-events:none;opacity:.55;z-index:-1;background:radial-gradient(#ff5a2e21,#0000 62%);border-radius:50%;transition:opacity .5s;position:absolute;inset:-16%}.device.has-breath .device-halo{animation:2.4s ease-in-out infinite halo-breathe}.device.has-breath[data-direction=blow] .device-halo{background:radial-gradient(ellipse at center, var(--blow-glow), transparent 62%)}.device.has-breath[data-direction=draw] .device-halo{background:radial-gradient(ellipse at center, var(--draw-glow), transparent 62%)}@keyframes halo-breathe{0%,to{opacity:.35;transform:scale(.985)}50%{opacity:.7;transform:scale(1.015)}}.device-mouthpiece{background:linear-gradient(180deg, #c6cbd0 0%, var(--steel) 42%, #565c63 100%);border-radius:8px 14px 14px 8px;width:15.5%;height:17%;position:absolute;top:35%;right:-9%;box-shadow:inset 0 1px #fff6,inset 0 -3px 6px #00000059,0 12px 24px #00000080}.mouthpiece-bore{background:radial-gradient(circle at 45% 40%,#3a3f45,#16181b 75%);border-radius:50%;width:17%;height:66%;transition:box-shadow .3s;position:absolute;top:50%;right:4%;transform:translateY(-50%);box-shadow:inset 0 1px 3px #000000d9,0 0 0 2px #ffffff24}.device.has-breath[data-direction=blow] .mouthpiece-bore{box-shadow:0 1px 3px #000000d9 inset, 0 0 0 2px #3fd8c780, 0 0 18px var(--blow-glow)}.device.has-breath[data-direction=draw] .mouthpiece-bore{box-shadow:0 1px 3px #000000d9 inset, 0 0 0 2px #f5c95c80, 0 0 18px var(--draw-glow)}.device-shell{background:linear-gradient(180deg, var(--shell-edge) 0%, var(--shell) 32%, var(--shell-deep) 100%);transition:box-shadow .4s var(--ease-out);border-radius:18%/22%;flex-direction:column;display:flex;position:absolute;inset:0;box-shadow:inset 0 1px #ffffff1f,inset 0 -14px 26px #0006,0 30px 60px #0000008c,0 8px 18px #00000059}.device.has-breath[data-direction=blow] .device-shell{box-shadow:inset 0 1px #ffffff1f,inset 0 -14px 26px #0006,0 30px 60px #0000008c,0 0 52px #3fd8c738}.device.has-breath[data-direction=draw] .device-shell{box-shadow:inset 0 1px #ffffff1f,inset 0 -14px 26px #0006,0 30px 60px #0000008c,0 0 52px #f5c95c38}.device-plate{background:radial-gradient(85% 70% at 28% 12%,#94c4ff24 0%,#0000 55%),radial-gradient(70% 60% at 82% 95%,#00000073 0%,#0000 60%),linear-gradient(165deg,#33404f 0%,#232e3b 46%,#161e28 100%);border-radius:16% 16% 9% 9%/20% 20% 11% 11%;flex:1;margin:3.2% 3.2% 0;position:relative;box-shadow:inset 0 1px #ffffff24,inset 0 -2px 8px #00000080,0 4px 9px #00000073}.screw{aspect-ratio:1;background:radial-gradient(circle at 40% 35%,#55697c,#22303c 70%);border-radius:50%;width:4%;position:absolute;box-shadow:inset 0 1px 2px #000000b3,0 1px #ffffff40}.screw-tl{top:7.5%;left:5%}.screw-tr{top:7.5%;right:5%}.screw-bl{bottom:7.5%;left:5%}.screw-br{bottom:7.5%;right:5%}.plate-vent{aspect-ratio:1;background:#22303c;border-radius:50%;width:1.7%;position:absolute;top:46%;left:51%;box-shadow:inset 0 1px 1px #0009,0 1px #ffffff40}.device-side{flex:none;justify-content:flex-start;align-items:center;gap:15%;height:19%;margin:1% 6% 0;padding-left:26%;display:flex;position:relative}.device-label{text-overflow:ellipsis;white-space:nowrap;letter-spacing:.28em;color:#ffffff2e;-webkit-user-select:none;user-select:none;pointer-events:none;min-width:0;margin-left:auto;font-size:.48rem;font-weight:600;overflow:hidden}.pad{left:var(--pad-x);aspect-ratio:1;cursor:pointer;-webkit-tap-highlight-color:transparent;touch-action:none;width:14.5%;transition:transform .1s var(--ease-out);background:0 0;border:none;border-radius:50%;justify-content:center;align-items:center;padding:0;display:flex;position:absolute}.pad-dimple{background:radial-gradient(circle at 40% 32%,#b4d7ff1f,#0000 52%),radial-gradient(circle at 50% 62%,#101823 0%,#1b2531 60%,#2b3846 100%);border-radius:50%;transition:box-shadow .18s,background .18s;position:absolute;inset:0;box-shadow:inset 0 4px 8px #0000008c,inset 0 -1px 2px #a0c8ff24,0 0 0 1.5px #78a5d747,0 1px #ffffff14}.pad:hover .pad-dimple{box-shadow:inset 0 4px 8px #0000008c,inset 0 -1px 2px #a0c8ff24,0 0 0 3px #60beff66}.pad:active,.pad.is-pressed{transform:scale(.94)}.pad.is-pressed .pad-dimple{background:radial-gradient(circle at 50% 58%,#0c141d 0%,#16202b 68%,#223040 100%);box-shadow:inset 0 5px 10px #000000b3,0 0 0 2.5px #60beff8c,0 0 14px #60beff40}.pad.is-sounding .pad-dimple{background:radial-gradient(circle at 42% 38%,#eaf6ff,#9fd4f8 55%,#4d90c8 100%);box-shadow:0 0 20px #78c8ffcc,0 0 42px #78c8ff73,inset 0 2px 4px #0a19284d}.device[data-direction=blow] .pad.is-sounding .pad-dimple{box-shadow:0 0 22px #5eeabdd9,0 0 44px #5eeabd73,inset 0 2px 4px #0a19284d}.device[data-direction=draw] .pad.is-sounding .pad-dimple{box-shadow:0 0 22px #fbbf60d9,0 0 44px #fbbf6073,inset 0 2px 4px #2819054d}.pad-note{z-index:1;letter-spacing:-.01em;color:#e4f0ffeb;text-shadow:0 1px 2px #0009;pointer-events:none;-webkit-user-select:none;user-select:none;font-size:.82rem;font-weight:700;position:relative;transform:translateY(-16%)}.pad.is-sounding .pad-note{color:#0c1826;text-shadow:none}.pad-sub{z-index:1;font-size:.54rem;font-family:var(--mono);color:#7dd3fcd9;text-shadow:0 1px 2px #0000008c;pointer-events:none;-webkit-user-select:none;user-select:none;font-weight:600;position:absolute;bottom:15%}.pad.is-sounding .pad-sub{color:#123049;text-shadow:none}.pad-octave{z-index:1;color:#e4eaef80;pointer-events:none;-webkit-user-select:none;user-select:none;font-size:.6rem;font-weight:700;position:relative}.pad-key{font-size:.55rem;font-family:var(--mono);color:#18283680;pointer-events:none;-webkit-user-select:none;user-select:none;position:absolute;bottom:-1.05rem}.device-side .pad{width:9%;position:relative}.device-side .pad-dimple{background:radial-gradient(circle at 42% 36%,#ffffff14,#0000 50%),radial-gradient(circle at 50% 55%,#16181b 0%,#23262a 70%,#2e3136 100%);box-shadow:inset 0 3px 6px #000000b3,0 1px #ffffff17}.device-side .pad.is-pressed .pad-dimple{box-shadow:inset 0 4px 9px #000000d9,0 0 0 1px #00000080}.device-side .pad.is-sounding .pad-dimple{background:radial-gradient(circle at 42% 36%,#ffffff24,#0000 50%),radial-gradient(circle at 50% 55%,#2a3f52 0%,#1c2733 75%)}.device-side .pad.is-sounding .pad-octave{color:#e4eaefe6}.device-side .pad-key{color:#e4eaef66;bottom:-.95rem}.device-view{flex:1;width:100%}.device-tabs{box-sizing:border-box;border:1px solid var(--border);border-radius:var(--radius-md);background:#00000052;gap:.25rem;width:calc(100% - 2rem);max-width:1600px;margin:.9rem auto 0;padding:.3rem;display:flex}.device-tabs button{border-radius:var(--radius-sm);color:var(--text-faint);font-family:var(--font);cursor:pointer;background:0 0;border:0;flex:1 1 0;padding:.58rem 1rem;font-size:.76rem;font-weight:600;transition:color .18s,background .18s,box-shadow .18s;position:relative}.device-tabs button:hover:not(.active){color:var(--text-muted);background:#ffffff06}.device-tabs button.active{color:var(--accent-bright);background:var(--accent-soft);box-shadow:inset 0 0 0 1px #ff5a2e24}.device-tabs button:focus-visible{outline:2px solid var(--accent-line);outline-offset:1px}.device-tab-live{background:var(--blow);width:6px;height:6px;box-shadow:0 0 7px var(--blow-glow);vertical-align:1px;border-radius:50%;margin-left:.35rem;display:inline-block}.midi-test-panel{max-width:1100px}.midi-test-lead{color:var(--text-muted);max-width:62ch;margin:.35rem 0 0;font-size:.85rem;line-height:1.45}.midi-test-bar{margin-top:.9rem}.midi-test-hint{border-radius:var(--radius-sm);border:1px solid var(--border);color:var(--text-muted);background:#00000047;margin:.75rem 0 0;padding:.65rem .85rem;font-size:.8rem;line-height:1.4}.midi-test-hint-ok{color:var(--text);background:#2878501f;border-color:#50b47859}.midi-test-hint-warn{background:#8c641e1f;border-color:#c8963c59}.midi-test-grid{margin-top:1rem}.midi-test-metrics{gap:.65rem;display:grid}.midi-metric-label{text-transform:uppercase;letter-spacing:.04em;color:var(--text-faint);margin-bottom:.15rem;font-size:.68rem;display:block}.midi-metric-notes{font-variant-numeric:tabular-nums;color:var(--accent-bright)}.midi-breath-row{grid-template-columns:auto 1fr auto;align-items:center;gap:.55rem;margin-top:1rem;display:grid}.midi-breath-track{border:1px solid var(--border);background:#ffffff0f;border-radius:999px;height:10px;overflow:hidden}.midi-breath-fill{background:linear-gradient(90deg,#3d8fd1,#7ed0ff);height:100%;transition:width 80ms linear;box-shadow:0 0 10px #64b4f059}.midi-breath-value{font-variant-numeric:tabular-nums;text-align:right;min-width:2.2ch}.midi-piano{border-radius:var(--radius-sm);border:1px solid var(--border);background:#00000059;gap:1px;height:52px;margin-top:1rem;padding:.35rem;display:flex;overflow:hidden}.midi-key{border-radius:0 0 2px 2px;flex:1 1 0;min-width:0;transition:background 60ms linear,box-shadow 60ms linear}.midi-key.white{background:#ffffff1f}.midi-key.black{background:#0000008c;flex:.65 1 0;align-self:flex-start;height:62%;margin-top:0}.midi-key.on{background:var(--accent-bright);box-shadow:0 0 10px var(--accent-line)}.midi-key.black.on{background:#9ad4ff}.midi-test-stats{color:var(--text-muted);flex-wrap:wrap;align-items:center;gap:.75rem 1rem;margin-top:.9rem;font-size:.78rem;display:flex}.midi-test-stats strong{color:var(--text);font-variant-numeric:tabular-nums}.midi-webmidi-help{margin:0 0 .65rem}.midi-webmidi-row{flex-wrap:wrap;gap:.5rem;margin-top:.5rem;display:flex}.midi-webmidi-row select{flex:12rem;min-width:0}.midi-test-log-card{margin-top:1rem}.midi-test-log{max-height:320px;font-family:var(--font-mono,ui-monospace, monospace);margin:0;padding:0;font-size:.74rem;list-style:none;overflow:auto}.midi-test-log li{color:var(--text-muted);border-bottom:1px solid #ffffff0a;grid-template-columns:7.5rem 1fr;gap:.65rem;padding:.28rem .2rem;display:grid}.midi-test-log time{color:var(--text-faint);font-variant-numeric:tabular-nums}.midi-log-note-on span{color:#8fd99a}.midi-log-note-off span{color:#c9a0a0}.midi-log-cc span{color:#8ec8f0}.device-tab-panel-midi{padding:.5rem 1rem 2rem}.device-tab-panel-telemetry,.device-tab-panel-diagnostics{box-sizing:border-box;width:100%;max-width:1600px;margin:0 auto;padding:.9rem 1rem 1.25rem}.device-tab-panel>.debug-panel{box-sizing:border-box;width:100%}.layout-device{box-sizing:border-box;grid-template-columns:minmax(360px,.7fr) minmax(640px,1.3fr);align-items:start;gap:.9rem;width:100%;max-width:1600px;margin:0 auto;padding:.9rem 1rem 1.25rem;display:grid}.device-preview-col{flex-direction:column;gap:.7rem;min-width:0;display:flex}.device-preview-col .debug-panel{padding:1rem}.device-preview-col .dbg-remote{grid-template-columns:minmax(0,1fr)}.device-preview-col .dbg-command-card{grid-column:auto}.device-preview-col .dbg-picker-row{flex-wrap:wrap}.device-preview-col .dbg-picker-row>.dbg-label{flex-basis:100%}.device-preview-col .dbg-transport{width:100%}.device-preview-col .dbg-transport button{flex:1}.layout-debug{box-sizing:border-box;flex-direction:column;flex:1;gap:1.25rem;width:100%;max-width:1440px;margin:0 auto;padding:1.25rem 1.75rem;display:flex}.debug-instrument-strip{justify-content:center;display:flex}.debug-instrument-strip .instrument-stage{min-height:280px;padding:1rem .5rem 1.25rem}.debug-instrument-strip .device{width:min(78%,340px)}.device-sync-banner{border:1px solid var(--border);border-radius:var(--radius-sm);background:var(--bg-inset);color:var(--text-faint);align-items:center;gap:.55rem;margin:-.35rem 0 .8rem;padding:.62rem .75rem;font-size:.72rem;line-height:1.4;display:flex}.device-sync-dot{background:var(--text-faint);border-radius:50%;flex:none;width:7px;height:7px}.device-sync-banner.connected{color:var(--blow);background:#3fd8c712;border-color:#3fd8c747}.device-sync-banner.connected .device-sync-dot{background:var(--blow);box-shadow:0 0 9px var(--blow-glow)}.debug-panel{background:linear-gradient(168deg, var(--bg-panel) 0%, var(--bg-panel-2) 100%);border:1px solid var(--border);border-radius:var(--radius-lg);-webkit-backdrop-filter:blur(14px);flex-direction:column;gap:1.15rem;padding:1.35rem 1.45rem 1.45rem;display:flex;box-shadow:inset 0 1px #ffffff0b,0 18px 44px #0000006b}.debug-title-row{justify-content:space-between;align-items:baseline;gap:1rem;margin-bottom:.85rem;display:flex}.debug-title-row h2{letter-spacing:.18em;text-transform:uppercase;color:var(--text-muted);align-items:center;gap:.6rem;margin:0;font-size:.7rem;font-weight:600;display:flex}.debug-title-row h2:before{content:"";background:var(--accent-line);flex:none;width:16px;height:1px}.debug-baud{font-family:var(--mono);color:var(--text-faint);font-size:.68rem}.debug-controls{flex-wrap:wrap;align-items:center;gap:.75rem 1rem;display:flex}.debug-controls .source-toggle{min-width:220px}.serial-btns{gap:.45rem;display:flex}.serial-banner{border-radius:var(--radius-sm);flex-wrap:wrap;justify-content:space-between;align-items:center;gap:.75rem;margin-bottom:.85rem;padding:.75rem .95rem;font-size:.8rem;line-height:1.45;display:flex}.serial-banner.dfu{border:1px solid #3fd8c74d;border-left:3px solid var(--blow);color:var(--blow);background:#3fd8c717}.serial-banner.error{border:1px solid #e5857352;border-left:3px solid var(--danger);color:var(--danger);background:#e5857314}.serial-banner.warn{border:1px solid #ff5a2e47;border-left:3px solid var(--accent-line);color:var(--accent-bright);background:#ff5a2e14}.debug-section{border-top:1px solid var(--border);padding-top:1.05rem}.debug-section-title{text-transform:uppercase;letter-spacing:.18em;color:var(--text-faint);margin:0 0 .8rem;font-size:.64rem;font-weight:600}.debug-status-grid{grid-template-columns:repeat(auto-fill,minmax(128px,1fr));gap:.55rem;display:grid}.telemetry-connection-bar{border:1px solid var(--border);border-radius:var(--radius-sm);background:var(--bg-inset);flex-wrap:wrap;justify-content:space-between;align-items:center;gap:.65rem 1rem;padding:.6rem .7rem;display:flex}.telemetry-connection-state{color:var(--text-faint);align-items:center;gap:.5rem;font-size:.72rem;display:inline-flex}.telemetry-connection-state.connected{color:var(--blow)}.telemetry-connection-state.connected .device-sync-dot{background:var(--blow);box-shadow:0 0 9px var(--blow-glow)}.debug-panel-telemetry{gap:.85rem}.debug-panel-telemetry .telemetry-section{flex-direction:column;gap:.75rem;display:flex}.device-telemetry-grid{grid-template-columns:repeat(3,minmax(0,1fr));grid-template-areas:"cpu pressure deltas""sample memory memory""persistent persistent persistent";gap:.75rem;display:grid}.sample-card{grid-area:sample}.cpu-card{grid-area:cpu}.pressure-card{grid-area:pressure}.deltas-card{grid-area:deltas;padding:.85rem}.deltas-actions{flex-wrap:wrap;align-items:center;gap:.65rem .85rem;margin-top:.75rem;display:flex}.deltas-actions .cal-open{margin:0}.deltas-actions .debug-hint{flex:280px;margin:0}.deltas-card .deltas-header{justify-content:flex-end;margin-bottom:.55rem}.deltas-card .deltas-header h3{display:none}.deltas-card .deltas-plot{height:130px}.deltas-card .deltas-hint{font-size:.58rem;line-height:1.35}.telemetry-card{border:1px solid var(--border);border-radius:var(--radius-md);background:linear-gradient(145deg,#ff5a2e0a,#0000 58%),#0000002e;min-width:0;padding:.85rem}.telemetry-card-title{color:var(--accent-bright);letter-spacing:.04em;margin-bottom:.7rem;font-size:.71rem;font-weight:600}.live-dot{background:var(--text-faint);border-radius:50%;width:7px;height:7px}.live-dot.on{background:var(--blow);box-shadow:0 0 9px var(--blow-glow);animation:1.6s ease-in-out infinite pulse-dot}.cpu-number{color:var(--blow);font-family:var(--mono);letter-spacing:0;font-size:.67rem}.cpu-number.over{color:var(--danger)}.cpu-chart-wrap{border:1px solid var(--border);border-radius:var(--radius-sm);background:linear-gradient(#f4f1ea06 1px, transparent 1px) 0 0 / 100% 25%, var(--bg-inset);height:150px;position:relative;overflow:hidden}.cpu-chart{width:100%;height:100%;display:block}.cpu-budget-line{stroke:#e58573b3;stroke-width:1px;stroke-dasharray:5 4;vector-effect:non-scaling-stroke}.cpu-budget-label{fill:var(--danger);font-family:var(--mono);text-anchor:end;font-size:8px}.cpu-area{fill:#3fd8c71c}.cpu-line{fill:none;stroke:var(--blow);stroke-width:1.5px;vector-effect:non-scaling-stroke}.pressure-stream-toggle{color:var(--text-faint);letter-spacing:0;cursor:pointer;align-items:center;gap:.38rem;font-size:.57rem;font-weight:400;display:inline-flex}.pressure-live-readout{grid-template-columns:minmax(72px,auto) 1fr auto;align-items:baseline;gap:.65rem;margin-bottom:.55rem;display:grid}.pressure-live-readout>strong{color:var(--text);font-family:var(--mono);font-size:1.05rem;font-weight:500}.pressure-live-readout>span:last-child{color:var(--text-faint);font-size:.59rem}.pressure-direction{border:1px solid var(--border);color:var(--text-faint);text-align:center;border-radius:99px;padding:.22rem .4rem;font-size:.54rem}.pressure-direction.blow{color:var(--blow);background:#3fd8c712;border-color:#3fd8c759}.pressure-direction.draw{color:var(--draw);background:#8fa8dc12;border-color:#8fa8dc66}.pressure-direction.zeroing{color:var(--warning,#e5c07b);background:#e5c07b14;border-color:#e5c07b73}.pressure-chart-wrap{border:1px solid var(--border);border-radius:var(--radius-sm);background:linear-gradient(#f4f1ea06 1px, transparent 1px) 0 0 / 100% 25%, var(--bg-inset);height:160px;position:relative;overflow:hidden}.pressure-chart{width:100%;height:100%;display:block}.pressure-zero-line{stroke:#f4f1ea40;stroke-width:1px;vector-effect:non-scaling-stroke}.pressure-gate-line{stroke:#e5c07b61;stroke-width:1px;stroke-dasharray:4 4;vector-effect:non-scaling-stroke}.pressure-axis-label{fill:var(--text-faint);font-family:var(--mono);font-size:8px}.pressure-area{fill:#8fa8dc1a}.pressure-line{fill:none;stroke:#9db8ed;stroke-width:1.6px;vector-effect:non-scaling-stroke}.pressure-stats strong.bad{color:var(--danger)}.pressure-help{color:var(--text-faint);margin:.6rem 0 0;font-size:.55rem;line-height:1.4}.pressure-cal-actions{flex-wrap:wrap;align-items:center;gap:.45rem .65rem;margin-top:.55rem;display:flex}.pressure-cal-actions button{padding:.32rem .55rem;font-size:.62rem}.pressure-cal-actions span{color:var(--text-faint);font-family:var(--mono);font-size:.56rem}.telemetry-empty{color:var(--text-faint);place-items:center;margin:0;font-size:.7rem;display:grid;position:absolute;inset:0}p.telemetry-empty{min-height:72px;position:static}.telemetry-inline-stats{color:var(--text-faint);flex-wrap:wrap;gap:.38rem .9rem;margin-top:.7rem;font-size:.62rem;display:flex}.telemetry-inline-stats strong{color:var(--text-muted);font-family:var(--mono);font-weight:500}.memory-card{grid-area:memory}.memory-updated{color:var(--text-faint);letter-spacing:0;font-size:.59rem;font-weight:400}.memory-grid{grid-template-columns:repeat(3,minmax(0,1fr));gap:.65rem 1rem;display:grid}.memory-meter{min-width:0;padding-bottom:.85rem;position:relative}.memory-meter-head{color:var(--text-muted);margin-bottom:.3rem;font-size:.62rem}.memory-meter-head .mono{color:var(--text-faint);text-overflow:ellipsis;white-space:nowrap;font-size:.57rem;overflow:hidden}.memory-track{background:var(--bg-inset);height:5px;box-shadow:inset 0 0 0 1px var(--border);border-radius:99px;overflow:hidden}.memory-fill{border-radius:inherit;background:var(--draw);height:100%;transition:width .3s ease-out;display:block}.memory-fill.high{background:#e5c07b}.memory-fill.critical{background:var(--danger)}.memory-pct{color:var(--text-faint);font-family:var(--mono);font-size:.55rem;position:absolute;bottom:0;right:0}.persistent-card{grid-area:persistent}.persistent-total{color:var(--text-faint);letter-spacing:0;font-size:.59rem;font-weight:400}.qspi-map{border:1px solid var(--border);border-radius:var(--radius-sm);background:var(--bg-inset);width:100%;height:34px;display:flex;overflow:hidden;box-shadow:inset 0 1px 4px #00000059}.qspi-segment{color:#050a0fbf;letter-spacing:.02em;text-overflow:clip;white-space:nowrap;border-right:1px solid #070c12a6;place-items:center;min-width:2px;height:100%;font-size:.55rem;display:grid;overflow:hidden}.qspi-segment.system{background:#8293a5}.qspi-segment.firmware{background:#69b995}.qspi-segment.samples{background:#d6a85f}.qspi-segment.songs{background:#8fa8dc}.qspi-segment.reserved{background:#6f7882}.qspi-segment.settings{background:#ca87bd;border-right:0}.qspi-addresses{color:var(--text-faint);justify-content:space-between;margin-top:.25rem;font-size:.53rem;display:flex}.persistent-content{grid-template-columns:minmax(0,1fr);gap:.7rem;margin-top:.8rem;display:grid}.persistent-samples,.persistent-region{border:1px solid var(--border);border-radius:var(--radius-sm);background:var(--bg-inset);min-width:0;padding:.75rem}.persistent-samples{background:linear-gradient(145deg, #d6a85f0f, transparent 48%), var(--bg-inset);border-color:#d6a85f40}.persistent-block-head,.persistent-region.compact{justify-content:space-between;align-items:center;gap:.65rem;display:flex}.persistent-block-head>span:first-child,.persistent-region.compact>span:first-child{flex-direction:column;gap:.16rem;min-width:0;display:flex}.persistent-block-head strong,.persistent-region strong{color:var(--text);font-size:.67rem;font-weight:600}.persistent-block-head small,.persistent-region small{color:var(--text-faint);font-size:.55rem}.storage-source{border:1px solid var(--border);color:var(--text-faint);font-family:var(--mono);letter-spacing:.06em;border-radius:99px;flex:none;padding:.2rem .35rem;font-size:.49rem}.storage-source.live{color:var(--blow);background:#3fd8c70f;border-color:#3fd8c74d}.qspi-usage{margin-top:.65rem;padding-bottom:.8rem;position:relative}.qspi-usage-head{color:var(--text-muted);justify-content:space-between;gap:.6rem;margin-bottom:.3rem;font-size:.58rem;display:flex}.qspi-usage-head .mono{color:var(--text-faint);font-size:.54rem}.qspi-usage-track{border:1px solid var(--border);background:#0000003d;border-radius:99px;height:6px;overflow:hidden}.qspi-usage-track>span{border-radius:inherit;background:linear-gradient(90deg,#b7853f,#e0b66f);height:100%;display:block}.persistent-region .qspi-usage-track>span{background:linear-gradient(90deg,#1f9c8d,#3fd8c7)}.qspi-usage-foot{color:var(--text-faint);font-family:var(--mono);font-size:.51rem;position:absolute;bottom:0;right:0}.sample-pack-summary{color:var(--text-faint);flex-wrap:wrap;gap:.35rem .8rem;margin-top:.35rem;font-size:.56rem;display:flex}.sample-pack-summary strong{color:var(--text-muted);font-family:var(--mono);font-weight:500}.storage-warning{border-radius:var(--radius-sm);color:#e5c07b;background:#e5c07b0d;border:1px solid #e5c07b40;margin:.55rem 0 0;padding:.45rem .55rem;font-size:.57rem;line-height:1.4}.persistent-bank-grid{grid-template-columns:repeat(2,minmax(0,1fr));gap:.4rem;margin-top:.65rem;display:grid}.persistent-bank{border:1px solid var(--border);border-radius:var(--radius-sm);background:#ffffff05;grid-template-columns:auto minmax(0,1fr) auto;align-items:center;gap:.45rem;min-width:0;padding:.45rem .5rem;display:grid}.persistent-bank-id{color:#e0b66f;width:24px;height:24px;font-family:var(--mono);background:#d6a85f1a;border-radius:50%;place-items:center;font-size:.52rem;display:grid}.persistent-bank>span:nth-child(2){flex-direction:column;gap:.1rem;min-width:0;display:flex}.persistent-bank strong{color:var(--text-muted);text-overflow:ellipsis;white-space:nowrap;font-size:.58rem;overflow:hidden}.persistent-bank small,.persistent-bank-range{color:var(--text-faint);font-size:.5rem}.persistent-regions{flex-direction:column;gap:.5rem;min-width:0;display:flex}.persistent-region{flex:auto}.persistent-region>.persistent-block-head>span:last-child,.persistent-region.compact>span:last-child{color:var(--text-muted);font-family:var(--mono);flex:none;font-size:.55rem}.persistent-region.compact{flex:none;padding-block:.6rem}.persistent-region.compact.muted{opacity:.72}.settings-storage-state.saved{color:var(--blow)!important}.settings-storage-state.failed{color:var(--danger)!important}.persistent-note{border-top:1px solid var(--border);color:var(--text-faint);margin:.75rem 0 0;padding-top:.65rem;font-size:.57rem;line-height:1.45}.dbg-stat{border-radius:var(--radius-md);background:var(--bg-inset);border:1px solid var(--border);flex-direction:column;gap:.28rem;padding:.6rem .75rem .65rem;transition:border-color .25s;display:flex;box-shadow:inset 0 1px 3px #0000004d}.dbg-remote{grid-template-columns:minmax(0,1.15fr) minmax(300px,.85fr);gap:.75rem;display:grid}.dbg-remote.disabled{opacity:1}.dbg-remote.disabled .dbg-sensor-card,.dbg-remote.disabled .dbg-command-card{opacity:.45}.dbg-remote-card{border:1px solid var(--border);border-radius:var(--radius-md);background:#00000029;flex-direction:column;gap:.65rem;min-width:0;padding:.85rem;display:flex}.dbg-remote-card h4{color:var(--accent-bright);letter-spacing:.08em;margin:0 0 .15rem;font-size:.72rem;font-weight:600}.dbg-command-card{grid-column:1/-1}.dbg-remote-row{align-items:center;gap:.7rem;display:flex}.dbg-remote-row .dbg-label{flex:0 0 130px}.dbg-remote-row input[type=range]{flex:1;min-width:0}.dbg-remote-row input[type=text]{border-radius:var(--radius-md);background:var(--bg-inset);border:1px solid var(--border);min-width:0;color:var(--text);font-family:var(--font);flex:1;padding:.4rem .55rem;font-size:.78rem}.dbg-remote-row button{border-radius:var(--radius-md);border:1px solid var(--border-strong);background:var(--bg-inset);color:var(--text);cursor:pointer;padding:.4rem .9rem}.dbg-remote-row button:hover:not(:disabled){border-color:var(--accent-line)}.dbg-remote-row button:disabled,.tb-trigger:disabled{cursor:default;opacity:.55}.dbg-picker-control{flex:1;min-width:0}.dbg-picker-control .tb-trigger{min-height:44px}.dbg-song-picker{flex:1;width:100%;min-width:0;max-width:none}.dbg-transport{gap:.4rem;display:flex}.dbg-transport button{white-space:nowrap}.dbg-device-actions{flex-wrap:wrap;justify-content:space-between;align-items:center;gap:.6rem;display:flex}.dbg-remote-hint{color:var(--text-faint);margin:0 0 .5rem;font-size:.75rem}.dbg-stream-toggle{color:var(--text-muted);cursor:pointer;margin-bottom:.6rem;font-size:.78rem}.dbg-cmd-ref summary{cursor:pointer;color:var(--text-muted);-webkit-user-select:none;user-select:none;font-size:.75rem}.dbg-cmd-ref pre{border-radius:var(--radius-md);background:var(--bg-inset);border:1px solid var(--border);color:var(--text-muted);margin:.5rem 0 0;padding:.7rem .9rem;font-size:.7rem;line-height:1.55;overflow-x:auto}@media (width<=1200px){.device-telemetry-grid{grid-template-columns:repeat(2,minmax(0,1fr));grid-template-areas:"cpu pressure""deltas deltas""sample memory""persistent persistent"}}@media (width<=1100px){.layout-device{grid-template-columns:minmax(0,1fr);padding:.9rem .8rem 1rem}.layout-device>*{min-width:0;max-width:100%}}@media (width<=820px){.device-telemetry-grid{grid-template-columns:1fr;grid-template-areas:"cpu""pressure""deltas""sample""memory""persistent"}.persistent-content{grid-template-columns:1fr}.memory-grid{grid-template-columns:repeat(2,minmax(0,1fr))}.dbg-remote{grid-template-columns:1fr}.dbg-command-card{grid-column:auto}}@media (width<=600px){.memory-grid,.persistent-bank-grid{grid-template-columns:1fr}.persistent-total{text-align:right}.sample-load-head>span:first-child{gap:.35rem}.sample-load-head small{display:none}.dbg-remote-row,.dbg-picker-row{flex-wrap:wrap}.dbg-remote-row .dbg-label,.dbg-picker-control,.dbg-song-picker{flex-basis:100%}.dbg-transport{width:100%}.dbg-transport button{flex:1}}.dbg-stat:hover{border-color:var(--border-strong)}.dbg-label{text-transform:uppercase;letter-spacing:.12em;color:var(--text-faint);font-size:.6rem;font-weight:600}.dbg-value{font-size:.92rem;font-weight:500}.dbg-value.mono{font-family:var(--mono);font-size:.84rem}.dbg-value.ok{color:var(--blow)}.dbg-value.bad{color:var(--danger)}.dbg-value.warn{color:#e5c07b}.dbg-value.off{color:var(--text-faint)}.deltas-chart{padding:0}.deltas-header{flex-wrap:wrap;justify-content:space-between;align-items:center;gap:.75rem;margin-bottom:.85rem;display:flex}.deltas-header h3{text-transform:uppercase;letter-spacing:.18em;color:var(--text-faint);margin:0;font-size:.64rem;font-weight:600}.deltas-thresh{color:var(--text-muted);align-items:center;gap:.45rem;font-size:.74rem;display:flex}.deltas-thresh input{border:1px solid var(--border);background:var(--bg-inset);width:3.6rem;color:var(--text);font-family:var(--mono);text-align:center;border-radius:7px;padding:.3rem .4rem;font-size:.8rem;transition:border-color .2s,box-shadow .2s}.deltas-thresh input:focus{border-color:var(--accent-line);outline:none;box-shadow:0 0 0 3px #ff5a2e1f}.deltas-plot{gap:.55rem;height:150px;display:flex}.deltas-scale{font-family:var(--mono);color:var(--text-faint);text-align:right;flex-direction:column;justify-content:space-between;width:1.5rem;padding:.15rem 0 1.7rem;font-size:.6rem;display:flex}.deltas-bars{border-radius:var(--radius-md);background:var(--bg-inset);border:1px solid var(--border);flex:1;align-items:flex-end;gap:.4rem;height:100%;padding:.35rem .35rem 1.7rem;display:flex;position:relative;box-shadow:inset 0 1px 3px #0000004d}.deltas-threshold-line{z-index:2;pointer-events:none;border-top:1px dashed #e58573cc;height:0;position:absolute;left:.35rem;right:.35rem}.delta-col{flex-direction:column;flex:1;align-items:center;min-width:0;height:100%;display:flex;position:relative}.delta-bar-track{flex:1;align-items:flex-end;width:100%;max-width:26px;margin:0 auto;display:flex}.delta-bar{background:linear-gradient(180deg, var(--draw), #6b5423);border-radius:4px 4px 2px 2px;width:100%;min-height:2px;transition:height 90ms linear,background .18s,box-shadow .18s}.delta-bar.is-over{background:linear-gradient(180deg, var(--accent-bright), var(--accent));box-shadow:0 0 12px #ff5a2e73}.delta-val{font-family:var(--mono);color:var(--text-muted);font-size:.57rem;position:absolute;bottom:.9rem}.delta-idx{color:var(--text-faint);font-size:.6rem;font-weight:600;position:absolute;bottom:.1rem}.deltas-hint{margin:.6rem 0 0;font-size:.68rem}.log-console{flex-direction:column;min-height:300px;display:flex}.log-toolbar{flex-wrap:wrap;align-items:center;gap:.55rem;margin-bottom:.65rem;display:flex}.log-filter{border-radius:var(--radius-sm);border:1px solid var(--border);background:var(--bg-inset);min-width:150px;color:var(--text);font-family:var(--mono);flex:1;padding:.48rem .75rem;font-size:.76rem;transition:border-color .2s,box-shadow .2s}.log-filter::placeholder{color:var(--text-faint)}.log-filter:focus{border-color:var(--accent-line);outline:none;box-shadow:0 0 0 3px #ff5a2e1f}.log-count{color:var(--text-muted);font-size:.68rem;font-family:var(--mono);white-space:nowrap}.log-actions{flex-wrap:wrap;gap:.4rem;display:flex}.log-scroll{border-radius:var(--radius-md);border:1px solid var(--border);min-height:240px;max-height:380px;font-family:var(--mono);background:#050608;flex:1;padding:.5rem .55rem;font-size:.72rem;line-height:1.5;overflow-y:auto;box-shadow:inset 0 2px 10px #00000080}.log-scroll.is-paused{border-color:#ff5a2e40}.log-empty{text-align:center;color:var(--text-faint);font-family:var(--font-display);padding:2rem 1.5rem;font-size:.9rem;font-style:italic}.log-line{border-radius:4px;grid-template-columns:6.4rem 1fr;gap:.6rem;padding:.1rem .3rem;display:grid}.log-line:hover{background:#ffffff08}.log-ts{color:#52596a;-webkit-user-select:none;user-select:none}.log-text{color:#cfc9bd;word-break:break-all;white-space:pre-wrap}.log-line.is-diag .log-text{color:var(--accent-bright);font-weight:500}.log-line.kind-diagnostic .log-text,.log-line.kind-i2c .log-text{color:var(--accent-bright)}.log-line.is-diag .log-ts{color:#6ba8a0}.log-footer-hint{color:var(--text-faint);margin-top:.45rem;font-size:.65rem}@media (width<=960px){.app-header{gap:.6rem 1rem;padding:.85rem 1rem .7rem}.brand h1{font-size:1.12rem}.tagline{display:none}.view-tabs button{padding:.42rem .95rem;font-size:.76rem}.hint-keys{display:none}.app-footer{margin-top:0;padding:.4rem 1rem .8rem}.footer-note{font-size:.66rem}.status-strip{gap:.5rem 1rem;padding:.65rem .85rem}.strip-dir{width:7.2rem;font-size:1rem}.strip-note{flex:1;width:auto;min-width:0}.strip-meta{margin-left:0}.instrument-stage{padding:2.5rem 0 1.1rem}.device{width:min(100%,440px)}.note-callout{gap:.45rem;padding:.35rem .6rem;top:0;right:0}.callout-note{font-size:1.1rem}.note-timeline{margin-top:-.4rem}.panel{padding:1.05rem 1rem 1.15rem}.layout-debug{padding:.9rem .8rem 1rem}}@media (width<=640px){.autoplay-bar select{flex:100%;max-width:none}.autoplay-speed{flex:1}.autoplay-speed input[type=range]{flex:1;width:auto}.autoplay-progress{flex:100%;min-width:0}.strip-vu{flex-basis:100%;max-width:none}.pad-key,.device-label{display:none}.instrument-stage{padding:1.75rem 0 .55rem}.device{aspect-ratio:1.55;width:min(84%,390px);transform:translate(-12%)}.device-plate>.pad{left:var(--pad-mobile-x)}.stage-floor{height:42px;bottom:2%}}.timbre-browser{flex-direction:column;gap:.45rem;display:flex}.tb-search{background:var(--bg-inset);border:1px solid var(--border);border-radius:var(--radius-sm);color:var(--text);font-family:var(--font);padding:.55rem .75rem;font-size:.85rem;transition:border-color .2s,box-shadow .2s}.tb-search::placeholder{color:var(--text-faint)}.tb-search:focus{border-color:var(--accent-line);outline:none;box-shadow:0 0 0 3px #ff5a2e1f}.tb-chips{flex-wrap:wrap;gap:.28rem;display:flex}.tb-chip{border:1px solid var(--border);background:var(--bg-inset);color:var(--text-muted);font-family:var(--font);letter-spacing:.02em;cursor:pointer;border-radius:999px;padding:.3rem .62rem;font-size:.7rem;font-weight:500;transition:background .2s,color .2s,border-color .2s}.tb-chip:hover:not(.active){color:var(--text);border-color:var(--border-strong)}.tb-chip.active{color:var(--accent-bright);background:linear-gradient(#cee2f221,#cee2f20f);border-color:#ff5a2e4d}.tb-chips-sub .tb-chip{padding:.24rem .55rem;font-size:.66rem}.tb-count{color:var(--text-faint);letter-spacing:.02em;font-size:.66rem;font-weight:400}.tb-list{overscroll-behavior:contain;border:1px solid var(--border);border-radius:var(--radius-sm);background:var(--bg-inset);flex-direction:column;gap:2px;max-height:15.5rem;padding:.25rem;display:flex;overflow-y:auto}.tb-empty{color:var(--text-faint);text-align:center;padding:.8rem .6rem;font-size:.74rem}.tb-row{text-align:left;width:100%;color:var(--text-muted);font-family:var(--font);cursor:pointer;background:0 0;border:1px solid #0000;border-radius:8px;align-items:center;gap:.5rem;padding:.42rem .55rem;transition:background .16s,color .16s,border-color .16s;display:flex}.tb-row:hover,.tb-row.cursor{color:var(--text);background:#cee2f20d}.tb-row.selected{color:var(--accent-bright);background:linear-gradient(#cee2f221,#cee2f20f);border-color:#ff5a2e4d}.tb-fav{color:var(--text-faint);cursor:pointer;opacity:0;background:0 0;border:none;border-radius:6px;flex:none;padding:.08rem .3rem;font-size:.9rem;line-height:1;transition:color .16s,opacity .16s}.tb-row:hover .tb-fav,.tb-row.cursor .tb-fav,.tb-fav.is-fav,.tb-fav:focus-visible{opacity:1}.tb-fav:hover{color:var(--accent-bright)}.tb-fav.is-fav{color:#e8c35a}@media (hover:none){.tb-fav{opacity:1}}.tb-row-main{flex-direction:column;flex:1;gap:1px;min-width:0;display:flex}.tb-row-name{letter-spacing:.01em;font-size:.78rem;font-weight:600}.tb-row-desc{color:var(--text-faint);white-space:nowrap;text-overflow:ellipsis;font-size:.66rem;font-weight:400;overflow:hidden}.tb-tag{letter-spacing:.04em;color:var(--text-faint);border:1px solid var(--border);background:#00000040;border-radius:999px;flex-shrink:0;padding:.12rem .45rem;font-size:.6rem;font-weight:600}@media (width<=700px){.tb-list{max-height:12rem}.tb-row{padding:.55rem .6rem}}.tb-trigger{background:var(--bg-inset);border:1px solid var(--border);border-radius:var(--radius-sm);width:100%;color:var(--text);font-family:var(--font);cursor:pointer;align-items:flex-start;gap:.5rem;padding:.55rem .75rem;font-size:.85rem;transition:border-color .2s,box-shadow .2s;display:flex}.tb-trigger:hover{border-color:var(--border-strong)}.tb-trigger:focus-visible{border-color:var(--accent-line);outline:none;box-shadow:0 0 0 3px #ff5a2e1f}.tb-trigger-name{text-align:left;white-space:normal;overflow-wrap:anywhere;flex:1;min-width:0;font-weight:600;line-height:1.25}.tb-trigger-chevron{color:var(--text-faint);flex-shrink:0;margin-top:.05rem;font-size:.8rem;line-height:1.25}.tb-trigger .tb-tag{margin-top:.1rem}.tb-backdrop{z-index:950;-webkit-backdrop-filter:blur(3px);backdrop-filter:blur(3px);background:#040608b8;justify-content:center;align-items:center;padding:1.2rem;display:flex;position:fixed;inset:0}.tb-modal{-webkit-overflow-scrolling:touch;overscroll-behavior:contain;background:var(--bg-panel);border:1px solid var(--border-strong);border-radius:var(--radius-md);width:min(760px,100%);max-height:min(84vh,46rem);color:var(--text);font-family:var(--font);flex-direction:column;gap:.55rem;padding:.9rem;display:flex;overflow-y:auto;box-shadow:0 18px 60px #0000008c}.tb-modal-head{align-items:stretch;gap:.5rem;display:flex}.tb-modal-head .tb-search{flex:1}.tb-close{padding:0 .7rem;font-size:.9rem}.tb-list-modal{flex:1;min-height:10rem;max-height:none}.tb-row-desc-full{white-space:normal;-webkit-line-clamp:2;-webkit-box-orient:vertical;display:-webkit-box;overflow:hidden}.tb-detail{border-top:1px solid var(--border);flex-direction:column;gap:.2rem;padding-top:.55rem;display:flex}.tb-detail-name{color:var(--accent-bright);font-size:.82rem;font-weight:600}.tb-detail-hint{color:var(--text-faint);font-size:.66rem;font-weight:400}.tb-detail-desc{color:var(--text-muted);font-size:.72rem;line-height:1.4}.tb-detail-tech{color:var(--text-faint);letter-spacing:.02em;font-size:.66rem;line-height:1.5}@media (width<=700px){.tb-backdrop{padding:0}.tb-modal{width:100%;height:100dvh;max-height:100dvh;padding-top:max(.9rem, env(safe-area-inset-top));padding-bottom:max(.9rem, env(safe-area-inset-bottom));border-radius:0}.tb-list-modal{max-height:none}}.stage-wrap{position:relative}.play-full-btn{z-index:6;padding:.35rem .7rem;font-size:.72rem;position:absolute;top:.55rem;right:.55rem}.stage-hw-audio{z-index:6;white-space:nowrap;padding:.35rem .7rem;font-size:.72rem;position:absolute;top:.55rem;left:.55rem}.stage-hw-audio.is-active{border-color:var(--accent-line);color:var(--accent-bright);background:var(--accent-soft)}.autoplay-stop{white-space:nowrap;padding:.3rem .65rem}.play-overlay{z-index:400;background:var(--bg-deep);touch-action:none;overscroll-behavior:contain;flex-direction:column;display:flex;position:fixed;inset:0}.play-overlay-bar{border-bottom:1px solid var(--border);align-items:center;gap:.6rem;padding:.5rem .8rem;display:flex}.play-overlay-bar button{padding:.45rem .8rem;font-size:.78rem}.play-overlay-note{flex:1;justify-content:center;align-items:baseline;gap:.6rem;display:flex}.play-overlay-note strong{color:var(--accent-bright);letter-spacing:.04em;font-size:1.5rem;font-weight:700}.play-overlay-note strong.dim{color:var(--text-faint)}.play-overlay-note em{color:var(--text-muted);font-size:.72rem;font-style:normal}.play-rotor{min-height:0;padding:.5rem;padding-left:calc(.5rem + env(safe-area-inset-left));padding-right:calc(.5rem + env(safe-area-inset-right));flex:1}.ps-grid{grid-template-columns:3.6rem 1fr 3.6rem;gap:.5rem;height:100%;display:grid;position:relative}.ps-split{flex-direction:row;gap:.6rem;display:flex}.ps-split-row{flex:1 1 0;grid-template-rows:repeat(5,1fr);grid-template-columns:1fr;gap:.45rem;min-width:0;min-height:0;display:grid}.ps-split>.ps-thumb{flex:0 0 clamp(3.4rem,10vw,5.5rem)}.ps-split .ps-pad{flex-direction:row;gap:.5rem}body.play-full-open .mobile-nav{display:none!important}.play-close-float{top:calc(.4rem + env(safe-area-inset-top));right:calc(.5rem + env(safe-area-inset-right));z-index:5;opacity:.65;padding:.45rem .75rem;font-size:1.25rem;line-height:1;position:absolute}.ps-split .ps-vib{top:45%;transform:translate(-50%,-50%)}.ps-vib{background:var(--bg-inset);border:1px solid var(--accent-line);color:var(--accent-bright);pointer-events:none;z-index:3;white-space:nowrap;border-radius:999px;align-items:center;gap:6px;padding:3px 10px;font-size:.72rem;display:flex;position:absolute;top:6px;left:50%;transform:translate(-50%)}.ps-vib-wave{animation:.5s ease-in-out infinite rec-pulse}.ps-vib-bar{background:var(--border);border-radius:999px;width:64px;height:4px;overflow:hidden}.ps-vib-bar>span{background:var(--accent-bright);height:100%;transition:width 60ms linear;display:block}.ps-pads{grid-template-rows:repeat(2,1fr);grid-template-columns:repeat(5,1fr);gap:.55rem;min-width:0;display:grid}.ps-pad{border:1.5px solid var(--border-strong);color:var(--text);font-family:var(--font);cursor:pointer;-webkit-user-select:none;user-select:none;-webkit-tap-highlight-color:transparent;touch-action:none;background:linear-gradient(#cee2f217,#cee2f208);border-radius:18px;flex-direction:column;justify-content:center;align-items:center;gap:.15rem;transition:background 60ms,border-color 60ms,transform 60ms;display:flex;position:relative}.ps-pad-val{font-size:clamp(1.4rem,5.5vh,2.6rem);font-weight:700;line-height:1}.ps-pad-note{color:var(--text-faint);letter-spacing:.03em;font-size:clamp(.6rem,2vh,.85rem);font-weight:500}.ps-pad.is-on{border-color:var(--accent-bright);background:#ff5a2e4d;transform:scale(.97)}.ps-pad.is-sounding{border-color:var(--blow);box-shadow:0 0 0 2px var(--blow-glow), 0 0 22px var(--blow-glow)}.ps-pad.is-sounding .ps-pad-note{color:var(--accent-bright)}.ps-thumb{border:1.5px solid var(--border);color:var(--text-muted);font-family:var(--font);cursor:pointer;-webkit-user-select:none;user-select:none;-webkit-tap-highlight-color:transparent;touch-action:none;background:#00000047;border-radius:16px;flex-direction:column;justify-content:center;align-items:center;gap:.2rem;transition:background 60ms,border-color 60ms,color 60ms;display:flex}.ps-thumb-label{writing-mode:vertical-rl;letter-spacing:.08em;font-size:1.15rem;font-weight:700;transform:rotate(180deg)}.ps-thumb-sub{color:var(--text-faint);writing-mode:vertical-rl;letter-spacing:.06em;font-size:.62rem;transform:rotate(180deg)}.ps-thumb.is-on{border-color:var(--accent-line);color:var(--accent-bright);background:#ff5a2e47}.play-draw-btn{margin:0 .6rem calc(.55rem + env(safe-area-inset-bottom));border:1.5px solid var(--draw);color:var(--draw);font-family:var(--font);letter-spacing:.06em;cursor:pointer;-webkit-user-select:none;user-select:none;-webkit-tap-highlight-color:transparent;touch-action:none;background:#f5c95c1a;border-radius:14px;padding:.85rem;font-size:.9rem;font-weight:700;transition:background 60ms,color 60ms}.play-draw-btn.is-active,.play-draw-btn:active{border-color:var(--accent-bright);color:var(--accent-bright);background:#f5c95c52}.play-rotate-hint{display:none}@media (orientation:portrait){.play-overlay .play-rotor,.play-overlay .play-draw-btn{display:none}.play-rotate-hint{color:var(--text-muted);text-align:center;flex-direction:column;flex:1;justify-content:center;align-items:center;gap:.8rem;padding:2rem;display:flex}.play-rotate-hint .rot-icon{font-size:3rem;animation:2s ease-in-out infinite rothint}}@keyframes rothint{0%,to{transform:rotate(-12deg)}50%{transform:rotate(78deg)}}.tip{color:var(--text-faint);cursor:help;-webkit-tap-highlight-color:transparent;outline:none;margin-left:.35rem;font-size:.72rem;font-style:normal;display:inline-flex;position:relative}.tip:hover,.tip:focus{color:var(--accent-bright)}.tip:after{content:attr(data-tip);border:1px solid var(--accent-line);width:230px;color:var(--text);letter-spacing:.01em;text-align:left;white-space:normal;opacity:0;pointer-events:none;transition:opacity .15s var(--ease-out), transform .15s var(--ease-out);z-index:60;background:#12151b;border-radius:10px;padding:.55rem .7rem;font-size:.68rem;font-weight:400;line-height:1.45;position:absolute;bottom:calc(100% + 8px);left:50%;transform:translate(-50%)translateY(4px);box-shadow:0 8px 24px #00000080}.tip:before{content:"";border-right:1px solid var(--accent-line);border-bottom:1px solid var(--accent-line);opacity:0;z-index:61;background:#12151b;width:9px;height:9px;transition:opacity .15s;position:absolute;bottom:calc(100% + 3px);left:50%;transform:translate(-50%)rotate(45deg)}.tip:hover:after,.tip:focus:after,.tip:hover:before,.tip:focus:before{opacity:1;transform:translate(-50%)translateY(0)}.tip:hover:before,.tip:focus:before{transform:translate(-50%)rotate(45deg)}@media (width<=700px){.tip:after{width:min(230px,74vw)}}.song-picker-btn{background:var(--bg-inset);border:1px solid var(--border-strong);min-width:220px;max-width:340px;color:var(--text);cursor:pointer;text-align:left;border-radius:10px;flex-direction:column;align-items:flex-start;gap:2px;padding:.45rem .8rem;display:flex}.song-picker-btn:hover:not(:disabled){border-color:var(--accent-line);background:var(--accent-soft)}.song-picker-btn:disabled{opacity:.55;cursor:default}.song-picker-name{white-space:nowrap;text-overflow:ellipsis;max-width:100%;font-weight:600;overflow:hidden}.song-picker-sub{color:var(--text-muted);font-size:.72rem}.song-modal-overlay{z-index:60;-webkit-backdrop-filter:blur(4px);backdrop-filter:blur(4px);background:#040608b8;place-items:center;display:grid;position:fixed;inset:0}.song-modal{background:linear-gradient(168deg, var(--bg-panel) 0%, var(--bg-panel-2) 100%);border:1px solid var(--border-strong);border-radius:var(--radius-lg);flex-direction:column;width:min(760px,94vw);max-height:84vh;display:flex;box-shadow:0 30px 80px #0000008c}.song-modal-head{border-bottom:1px solid var(--border);align-items:baseline;gap:.8rem;padding:1rem 1.2rem .7rem;display:flex}.song-modal-head h3{color:var(--accent-bright);margin:0;font-size:1.05rem}.song-modal-hint{color:var(--text-faint);flex:1;font-size:.75rem}.song-modal-close{font-size:1rem;line-height:1}.song-import-btn{white-space:nowrap;font-size:.74rem}.song-import-msg{color:var(--text-muted);border-bottom:1px solid var(--border);padding:.35rem 1.2rem;font-size:.74rem;line-height:1.35}.song-user-actions{gap:2px;margin-left:auto;display:flex}.song-user-del{color:var(--text-faint);cursor:pointer;border-radius:999px;padding:2px 7px;font-size:.8rem;line-height:1}.song-user-del:hover{color:var(--danger);background:var(--bg-inset)}.field-check>span{align-items:center;gap:.45rem;display:flex}.field-check input[type=checkbox]{margin:0}.rec-btn{color:var(--danger);white-space:nowrap;font-variant-numeric:tabular-nums}.rec-btn.is-rec{animation:1.2s ease-in-out infinite rec-pulse}@keyframes rec-pulse{50%{opacity:.45}}.song-list{flex-direction:column;gap:4px;padding:.5rem;display:flex;overflow-y:auto}.song-row{text-align:left;width:100%;color:var(--text);cursor:pointer;background:0 0;border:1px solid #0000;border-radius:12px;flex-direction:column;gap:5px;padding:.6rem .75rem;display:flex}.song-row:hover{background:var(--accent-soft);border-color:var(--border-strong)}.song-row.active{border-color:var(--accent-line);background:var(--accent-soft)}.song-row-main{align-items:baseline;gap:.7rem;display:flex}.song-row-name{font-size:.92rem;font-weight:600}.song-row-key{color:var(--accent);white-space:nowrap;font-size:.74rem}.song-row-badges{flex-wrap:wrap;gap:4px;display:flex}.song-badge{background:var(--bg-inset);border:1px solid var(--border);color:var(--text-muted);white-space:nowrap;border-radius:999px;padding:2px 8px;font-size:.68rem}.badge-draw{color:var(--draw);border-color:#f5c95c59}.badge-real{color:var(--blow);border-color:#3fd8c759}.badge-user{color:var(--accent-bright);border-color:var(--accent-line)}.badge-timbre{color:var(--accent-bright)}.badge-inst{color:var(--plate-hi)}.badge-diff.diff-fcil{color:var(--blow)}.badge-diff.diff-media{color:#e8cf8f;border-color:#e8cf8f4d}.badge-diff.diff-difcil{color:var(--danger);border-color:#e5857359}.song-row-detail{color:var(--text-faint);font-size:.72rem;line-height:1.35}@media (width<=640px){.song-picker-btn{flex:100%;min-width:0}.song-modal-overlay{place-items:stretch stretch;padding:0}.song-modal{border-left:0;border-right:0;border-radius:0;width:100vw;height:100dvh;max-height:none}.song-modal-head{padding-top:max(1rem, env(safe-area-inset-top))}.song-list{padding-bottom:max(.8rem, env(safe-area-inset-bottom));-webkit-overflow-scrolling:touch}.song-row{padding:.8rem .75rem}.song-modal-close{padding:.5rem .9rem;font-size:1.15rem}.song-row-detail{display:none}}.song-filters{border-bottom:1px solid var(--border);flex-direction:column;gap:8px;padding:.7rem 1.2rem;display:flex}.song-search{background:var(--bg-inset);border:1px solid var(--border-strong);width:100%;color:var(--text);border-radius:10px;outline:none;padding:.5rem .9rem;font-size:.9rem}.song-search:focus{border-color:var(--accent-line)}.song-search::placeholder{color:var(--text-faint)}.song-filter-chips{flex-wrap:wrap;align-items:center;gap:6px;display:flex}.filter-chip{border:1px solid var(--border-strong);color:var(--text-muted);cursor:pointer;background:0 0;border-radius:999px;padding:4px 12px;font-size:.74rem}.filter-chip:hover{border-color:var(--accent-line);color:var(--text)}.filter-chip.active{background:var(--accent-soft);border-color:var(--accent-line);color:var(--accent-bright)}.chip-sep{background:var(--border-strong);width:1px;height:16px;margin:0 2px}.song-empty{color:var(--text-faint);flex-direction:column;align-items:center;gap:.6rem;padding:2rem 1rem;font-size:.85rem;display:flex}@media (width<=640px){.song-filters{padding:.6rem .75rem}.filter-chip{padding:7px 14px}}.mode-strip{gap:8px;width:100%;margin-top:10px;display:flex}.mode-btn{color:#ebf0ff8c;cursor:pointer;background:#ffffff0a;border:1px solid #ffffff1f;border-radius:12px;flex-direction:column;flex:1;align-items:flex-start;gap:2px;padding:8px 14px;transition:all .15s;display:flex}.mode-btn .mode-name{letter-spacing:.02em;font-size:.95rem;font-weight:700}.mode-btn .mode-detail{opacity:.75;font-size:.75rem}.mode-btn.mode-mono.active{color:#dff3ff;background:linear-gradient(135deg,#38bdf838,#6366f12e);border-color:#38bdf8a6;box-shadow:0 0 14px #38bdf840}.mode-btn.mode-poly.active{color:#fff3d6;background:linear-gradient(135deg,#fbbf243d,#d977062e);border-color:#fbbf24b3;box-shadow:0 0 14px #fbbf2440}.mode-btn:not(.active):hover{color:#ebf0ffd9;border-color:#ffffff4d}.mode-warning{color:#ffe9b8;background:#fbbf241a;border:1px solid #fbbf248c;border-radius:12px;margin:10px 0;padding:12px 14px;font-size:.85rem;line-height:1.45}.mode-warning strong{color:#ffd766}.mode-warning .btn-primary{margin-top:8px;display:block}@media (width<=640px){.mode-btn{padding:7px 10px}.mode-btn .mode-name{font-size:.85rem}}.mode-quick{flex-basis:100%;gap:10px;margin-top:8px;display:flex}.quick-field{flex:1;align-items:center;gap:8px;min-width:0;display:flex}.quick-field>span{text-transform:uppercase;letter-spacing:.08em;opacity:.6;white-space:nowrap;font-size:.72rem}.quick-field select{border:1px solid var(--border-strong);min-width:0;color:var(--text);background:#00000059;border-radius:9px;flex:1;padding:6px 8px;font-size:.85rem}.quick-dice{border:1px solid var(--border-strong);color:var(--text);cursor:pointer;background:0 0;border-radius:999px;flex:none;padding:4px 11px;font-size:1.05rem;line-height:1.4;transition:transform .12s,border-color .15s,background .15s}.quick-dice:hover{background:var(--accent-soft);border-color:#ff5a2e8c}.quick-dice:active{transform:rotate(24deg)scale(.92)}.quick-lang{letter-spacing:.08em;font-size:.72rem;font-weight:700}.quick-lang:active{transform:scale(.92)}.mode-strip{flex-wrap:wrap}@media (width<=640px){.mode-quick{flex-direction:column;gap:6px}}.mode-badge{cursor:default}.field-static{background:#ffffff0d;border:1px solid #ffffff1a;border-radius:9px;padding:6px 10px;font-size:.85rem}.timbre-group-label{text-transform:uppercase;letter-spacing:.1em;opacity:.55;margin:10px 4px 4px;font-size:.7rem}.timbre-desc{opacity:.65;-webkit-line-clamp:2;text-align:left;-webkit-box-orient:vertical;margin-top:3px;font-size:.76rem;line-height:1.35;display:-webkit-box;overflow:hidden}.quick-field .tb-trigger{flex:1;min-width:0}@media (width>=1200px){.app-header{grid-template-columns:auto auto minmax(0,1fr);align-items:center;gap:.75rem;padding:.55rem 1rem;display:grid}.brand{gap:.6rem}.brand-mark{border-bottom-width:4px;width:24px;height:19px}.brand h1{white-space:nowrap;font-size:1.05rem}.tagline{display:none}.view-tabs{gap:.15rem;padding:.18rem}.view-tabs button{padding:.34rem .72rem;font-size:.7rem}.mode-strip{flex-wrap:nowrap;grid-template-columns:minmax(165px,.55fr) minmax(330px,1.45fr);gap:.5rem;width:auto;min-width:0;margin-top:0;display:grid}.mode-btn{border-radius:9px;justify-content:center;min-width:0;padding:.35rem .65rem}.mode-btn .mode-name{text-overflow:ellipsis;white-space:nowrap;font-size:.72rem;line-height:1.1;overflow:hidden}.mode-btn .mode-detail{text-overflow:ellipsis;white-space:nowrap;max-width:100%;font-size:.62rem;line-height:1.1;overflow:hidden}.mode-quick{flex-basis:auto;align-items:center;gap:.5rem;min-width:0;margin-top:0}.quick-field{gap:.4rem}.quick-field>span{font-size:.58rem}.quick-field select{padding:.4rem .5rem;font-size:.72rem}.main-col{gap:.55rem;position:sticky;top:.65rem}.status-strip{gap:.45rem .8rem;padding:.48rem .7rem}.strip-dir{width:6.7rem;font-size:.95rem}.strip-note{width:9.2rem;height:1.35rem}.strip-note-name,.strip-note-empty{font-size:1.2rem}.strip-meta{gap:.25rem}.strip-chip{padding:.2rem .45rem;font-size:.58rem}.instrument-stage{padding:.7rem .5rem .35rem}.device{width:min(68%,350px)}.note-callout{gap:.4rem;padding:.32rem .55rem;top:0;right:1.5%}.callout-note{font-size:1.1rem}.play-full-btn{padding:.28rem .55rem;font-size:.65rem;top:.2rem;right:.2rem}.note-timeline{margin-top:-.35rem}.autoplay-bar{gap:.4rem;padding:.38rem .55rem}}@media (width<=640px){.pad-note{font-size:1rem}.pad-sub{font-size:.62rem;bottom:13%}}body.native-app{overscroll-behavior:none;-webkit-user-select:none;user-select:none;touch-action:manipulation;overflow-x:hidden}body.native-app .app{width:100%;max-width:100%;padding:8px;overflow-x:hidden}body.native-app .app *{min-width:0}body.native-app .app img,body.native-app .app canvas,body.native-app .app svg,body.native-app .panel{max-width:100%}body.native-app .app-main,body.native-app .app-grid{flex-direction:column;display:flex}body.native-app .autoplay-bar,body.native-app .autoplay-bar>div,body.native-app .panel-header,body.next .app-header,body.native-app .app-header{flex-wrap:wrap;row-gap:6px}body.native-app input[type=range]{width:100%;max-width:100%}body.native-app .source-toggle{width:100%;display:flex}body.native-app .source-toggle button{flex:1 1 0;padding-left:4px;padding-right:4px}body.native-app .app-footer,body.native-app .log-console,body.native-app .serial-panel{display:none!important}body.native-app .device-tab-panel .log-console{display:flex!important}body.native-app .device-tab-panel-telemetry,body.native-app .device-tab-panel-diagnostics{padding:.4rem .1rem .9rem}body.native-app .device-tab-panel-midi{padding:.4rem .1rem 1.2rem}body.native-app .debug-panel{border-radius:var(--radius-md);gap:.7rem;padding:.7rem .55rem .8rem}body.native-app .telemetry-card{padding:.6rem .5rem}body.native-app .device-telemetry-grid{gap:.5rem}body.native-app .pad,body.native-app .hole{min-width:52px;min-height:52px}body.native-app button{min-height:40px}.mobile-nav{display:none}body.native-app .mobile-nav{z-index:900;padding-bottom:env(safe-area-inset-bottom,0);background:#12151b;border-top:1px solid #2a2721;display:flex;position:fixed;bottom:0;left:0;right:0}body.native-app .mobile-nav button{color:#7f93a8;background:0 0;border:none;flex-direction:column;flex:1;align-items:center;gap:2px;padding:8px 4px 10px;font-size:11px;display:flex}body.native-app .mobile-nav button.active{color:#4fb3ff}body.native-app .mobile-nav .mnav-ico{font-size:20px;line-height:1}body.native-app .app{padding-bottom:84px}body.native-app .view-tabs,body.native-app .device-tabs{display:none!important}body.native-app[data-mtab=firmware] .device-tabs{flex-wrap:wrap;width:100%;max-width:100%;margin:.5rem 0 0;display:flex!important}body.native-app[data-mtab=firmware] .device-tabs button{flex:auto}body.native-app #device-tab-instrument,body.native-app[data-mtab=play] .params-panel,body.native-app[data-mtab=play] .app-header,body.native-app[data-mtab=play] .mode-quick,body.native-app[data-mtab=sound] .main-col{display:none!important}.mobile-play{display:none}body.native-app .mobile-play{flex-direction:column;gap:6px;min-height:58vh;display:flex}body.native-app .mobile-play .ps-grid{flex:1;grid-template:"pads pads"1fr"down up"/1fr 1fr;gap:.4rem;min-height:54vh}body.native-app .mobile-play .ps-grid>.ps-pads{grid-area:pads}body.native-app .mobile-play .ps-grid>.ps-thumb:first-child{grid-area:down}body.native-app .mobile-play .ps-grid>.ps-thumb:last-child{grid-area:up}body.native-app .mobile-play .ps-thumb{flex-direction:row;gap:.5rem;min-height:56px}body.native-app .mobile-play .ps-thumb-label,body.native-app .mobile-play .ps-thumb-sub{writing-mode:horizontal-tb;transform:none}body.native-app .mobile-play .ps-pads{gap:.45rem}body.native-app .mobile-full-btn{padding:.35rem .65rem;font-size:1.35rem;line-height:1;position:absolute;top:50%;right:.4rem;transform:translateY(-50%)}body.native-app .mobile-play-note{text-align:center;color:#cfe3f5;min-height:36px;font-size:30px;font-weight:700;line-height:36px;position:relative}.mobile-batt{display:none}body.native-app .mobile-batt{color:#8fd18f;background:#00000059;border:1px solid #2a2721;border-radius:999px;align-items:center;gap:2px;padding:5px 9px;font-size:13px;font-weight:600;line-height:1;display:inline-flex;position:absolute;top:50%;right:2px;transform:translateY(-50%)}body.native-app .mobile-batt.batt-low{color:#ffcf66}body.native-app .mobile-batt.batt-crit{color:#ff7a6b}body.native-app .note-timeline{max-height:96px}body.native-app .autoplay-bar{padding:8px 10px}body.native-app .autoplay-bar .btn-primary,body.native-app .autoplay-bar button{min-height:38px}body.native-app .stage-wrap,body.native-app .status-strip{display:none!important}.firmware-installed{color:var(--text-muted);margin:.35rem 0 0;font-size:.82rem}.firmware-installed strong{color:#8fd18f}.poweroff-btn{white-space:nowrap}.poweroff-btn.poweroff-armed{color:#ff7a6b;background:#ff7a6b1f;border-color:#ff7a6b8c}.params-search{margin:0 0 .65rem;position:relative}.params-search input{box-sizing:border-box;background:var(--bg-inset);width:100%;color:inherit;font:inherit;border:1px solid #ff5a2e38;border-radius:8px;padding:.5rem 2.1rem;font-size:.92rem}.params-search input::placeholder{opacity:.55}.params-search input:focus{border-color:var(--accent-line);box-shadow:0 0 0 2px var(--accent-soft);outline:none}.params-search-icon{color:var(--accent);opacity:.75;pointer-events:none;font-size:1.1rem;position:absolute;top:50%;left:.65rem;transform:translateY(-50%)}.params-search-clear{color:var(--accent);cursor:pointer;background:0 0;border:none;border-radius:6px;padding:.2rem .5rem;font-size:.85rem;line-height:1;position:absolute;top:50%;right:.35rem;transform:translateY(-50%)}.params-search-clear:hover{background:var(--accent-soft);color:var(--accent-bright)}.params-search-empty{opacity:.65;padding:.4rem .2rem .8rem;font-size:.9rem;font-style:italic}.param-hidden{display:none!important}.param-match{outline:1px solid var(--accent-line);outline-offset:3px;border-radius:6px}.eq-graphic{border:1px solid var(--border);border-radius:var(--radius-sm);background:linear-gradient(to bottom, transparent calc(50% - .5px), #f4f1ea1a 50%, transparent calc(50% + .5px)), var(--bg-inset);grid-template-columns:1.65rem repeat(8,minmax(0,1fr));align-items:end;gap:.2rem;margin:.65rem 0 .6rem;padding:.65rem .4rem .45rem;display:grid}.eq-band{flex-direction:column;align-items:center;gap:.3rem;min-width:0;display:flex}.eq-scale{color:var(--text-faint);font-family:var(--mono);text-align:right;grid-template-rows:1rem 7.5rem 1rem;gap:.3rem;font-size:.55rem;line-height:1;display:grid}.eq-scale>div{flex-direction:column;justify-content:space-between;padding:.1rem 0;display:flex}.eq-scale>span:first-child,.eq-scale>span:last-child{align-self:center}.eq-slider-shell{--eq-thumb-position:50%;--eq-fill-start:50%;--eq-fill-size:0%;background:linear-gradient(to bottom, transparent calc(50% - .5px), var(--border-strong) 50%, transparent calc(50% + .5px));border-radius:.45rem;width:1.75rem;height:7.5rem;display:block;position:relative}.eq-slider-shell:before{content:"";border:1px solid var(--border-strong);background:#00000080;border-radius:999px;width:.38rem;position:absolute;top:.1rem;bottom:.1rem;left:50%;transform:translate(-50%);box-shadow:inset 0 1px 4px #000000a6}.eq-slider-fill{z-index:1;top:var(--eq-fill-start);width:.3rem;height:var(--eq-fill-size);background:var(--accent);pointer-events:none;border-radius:999px;position:absolute;left:50%;transform:translate(-50%);box-shadow:0 0 7px #ff5a2e4d}.eq-slider-shell.is-cut .eq-slider-fill{background:var(--text-muted);box-shadow:none}.eq-slider-thumb{z-index:2;top:var(--eq-thumb-position);border:1px solid var(--plate-shadow);background:linear-gradient(to bottom, #ffffff61, transparent 45%), linear-gradient(160deg, var(--plate-hi), var(--plate-deep));pointer-events:none;border-radius:.2rem;width:1.25rem;height:.65rem;position:absolute;left:50%;transform:translate(-50%,-50%);box-shadow:0 2px 5px #0000008c}.eq-slider-shell:focus-within{background:#ff5a2e1a;box-shadow:0 0 0 2px #ff5a2e2e}.params-panel .eq-slider-shell .eq-slider{z-index:3;opacity:0;cursor:ns-resize;width:7.5rem;height:1.75rem;margin:0;padding:0;position:absolute;top:50%;left:50%;transform:translate(-50%,-50%)rotate(-90deg)}.eq-band-hz{color:var(--text-muted);font-family:var(--mono);font-size:.62rem;line-height:1rem}.eq-band-db{width:100%;color:var(--accent-bright);font-family:var(--mono);font-variant-numeric:tabular-nums;text-align:center;text-overflow:clip;font-size:.6rem;line-height:1rem;overflow:hidden}.eq-band:has(.is-cut) .eq-band-db{color:var(--text-muted)}.eq-flat{align-self:flex-start;padding:.15rem .6rem;font-size:.75rem}.cal-modal{width:min(560px,100%);color:var(--text);gap:.8rem}.breath-cal-modal{width:min(620px,100%)}.breath-cal-current,.breath-cal-result{grid-template-columns:repeat(3,minmax(0,1fr));gap:.45rem;display:grid}.breath-cal-result{grid-template-columns:repeat(2,minmax(0,1fr))}.breath-cal-current>span,.breath-cal-result>span{border:1px solid var(--border);border-radius:var(--radius-sm);background:var(--bg-inset);flex-direction:column;gap:.18rem;min-width:0;padding:.62rem .7rem;display:flex}.breath-cal-current small,.breath-cal-result small,.breath-cal-result em{color:var(--text-faint);font-size:.62rem;font-style:normal}.breath-cal-current strong,.breath-cal-result strong{color:var(--accent-bright);font-family:var(--mono);font-size:.9rem}.breath-cal-meter{border:1px solid var(--border-strong);border-radius:var(--radius-sm);background:linear-gradient(90deg, #8fa8dc14, transparent 48%, transparent 52%, #3fd8c714), var(--bg-inset);grid-template-columns:1fr auto 1fr;align-items:center;height:4.3rem;padding:0 .75rem;display:grid;position:relative;overflow:hidden}.breath-cal-meter:before{content:"";background:#f4f1ea24;border-radius:2px;height:2px;position:absolute;bottom:1rem;left:.75rem;right:.75rem}.breath-cal-meter-zero{background:#f4f1ea73;width:1px;height:.6rem;position:absolute;bottom:.72rem;left:50%}.breath-cal-meter-dot{z-index:1;background:var(--accent-bright);border-radius:50%;width:.62rem;height:.62rem;transition:left 80ms linear;position:absolute;bottom:.72rem;transform:translate(-50%);box-shadow:0 0 9px #ff5a2ea6}.breath-cal-meter small{color:var(--text-faint);font-size:.6rem}.breath-cal-meter small:last-child{text-align:right}.breath-cal-meter strong{min-width:5.5rem;color:var(--text);font-family:var(--mono);text-align:center;font-size:1.15rem}@media (width<=520px){.breath-cal-current,.breath-cal-result{grid-template-columns:repeat(2,minmax(0,1fr))}.breath-cal-current>span:first-child{grid-column:1/-1}}.cal-head{justify-content:space-between;align-items:center;gap:.5rem;display:flex}.cal-head h2{color:var(--accent-bright);margin:0;font-size:1.05rem}.cal-body{color:var(--text);flex-direction:column;gap:.7rem;display:flex}.cal-body p{margin:0;font-size:.85rem;line-height:1.45}.cal-body strong{color:var(--accent-bright)}.cal-body em{color:var(--text-muted)}.cal-instruction{color:var(--accent-bright);font-size:1rem!important}.cal-hint{color:var(--text-dim,#f4f1ea9e);font-size:.78rem!important}.cal-warn{border-radius:var(--radius-sm,6px);color:var(--danger);background:#e585731f;border:1px solid #e5857359;margin:0;padding:.5rem .65rem;font-size:.8rem;line-height:1.4}.cal-success{border-radius:var(--radius-sm,6px);color:var(--blow);background:#3fd8c71a;border:1px solid #3fd8c752;margin:0;padding:.5rem .65rem;font-size:.8rem;line-height:1.4}.cal-progress{background:#f4f1ea1a;border-radius:3px;height:6px;overflow:hidden}.cal-progress-fill{background:var(--accent);height:100%;transition:width 80ms linear}.cal-ocarina{border:1px solid var(--border-strong);border-radius:var(--radius-md,10px);background:linear-gradient(#262e388c,#161b228c);flex-direction:column;gap:.3rem;padding:.5rem;display:flex}.cal-plate{border-radius:var(--radius-sm,6px);background:linear-gradient(#3a4a5a80,#222c3780);border:1px solid #f4f1ea14;height:7.2rem;position:relative}.cal-band{justify-content:center;gap:.4rem;padding-top:.15rem;display:flex}.cal-hole{border:1px solid var(--border-strong);font-variant-numeric:tabular-nums;min-width:1.8rem;height:1.8rem;color:var(--text-dim,#f4f1ea9e);background:#0c101580;border-radius:999px;place-content:center;padding:0 .3rem;font-size:.72rem;transition:background .1s,border-color .1s,color .1s,box-shadow .1s;display:grid;position:absolute;transform:translate(-50%,-50%)}.cal-band .cal-hole{position:static;transform:none}.cal-hole.is-done{color:#a0dcb4d9;border-color:#8cc8a073}.cal-hole.is-target{border-color:var(--accent);color:var(--accent-bright);outline:2px solid var(--accent);outline-offset:2px}.cal-hole.is-touched{background:var(--accent);border-color:var(--accent-bright);color:#10151b;box-shadow:0 0 10px #ff5a2e80}.cal-count{color:var(--text-dim,#f4f1ea9e);font-size:.8rem}.cal-actions{flex-wrap:wrap;align-items:center;gap:.5rem;display:flex}.cal-current-tests{grid-template-columns:repeat(auto-fit,minmax(92px,1fr));gap:.4rem;display:grid}.cal-current-tests>span{border:1px solid var(--border);border-radius:var(--radius-sm);background:var(--bg-inset);color:var(--text-faint);font-family:var(--mono);flex-direction:column;gap:.15rem;padding:.45rem .5rem;font-size:.57rem;display:flex}.cal-current-tests strong{color:var(--accent-bright);font-size:.68rem}.cal-parameter-summary{grid-template-columns:repeat(3,minmax(0,1fr));gap:.45rem;display:grid}.cal-parameter-summary>span{border:1px solid var(--border);border-radius:var(--radius-sm);background:var(--bg-inset);flex-direction:column;gap:.2rem;min-width:0;padding:.55rem .65rem;display:flex}.cal-parameter-summary small{color:var(--text-faint);text-overflow:ellipsis;white-space:nowrap;font-size:.62rem;overflow:hidden}.cal-parameter-summary strong{color:var(--accent-bright);font-family:var(--mono);font-size:.82rem}.cal-table{border-collapse:collapse;width:100%;color:var(--text);font-variant-numeric:tabular-nums;font-size:.8rem}.cal-table th,.cal-table td{text-align:right;border-bottom:1px solid #f4f1ea14;padding:.22rem .4rem}.cal-table th:first-child,.cal-table td:first-child{text-align:left}.cal-table th{color:var(--text-dim,#f4f1ea9e);font-weight:500}.cal-grade{font-size:.72rem;text-align:right!important}.cal-retry-pad{margin-left:auto;padding:.08rem 0;font-size:.62rem;display:block}.cal-row.cal-malo .cal-grade{color:var(--danger)}.cal-row.cal-justo .cal-grade{color:#d8c07a}.cal-row.cal-bien .cal-grade{color:#a0dcb4e6}.cal-open{align-self:flex-start;margin-top:.4rem}.debug-hint{color:var(--text-dim,#f4f1ea9e);margin:.35rem 0 0;font-size:.75rem;line-height:1.4}.device-tab-panel-firmware{box-sizing:border-box;width:100%;max-width:1600px;margin:0 auto;padding:.9rem 1rem 1.25rem}.firmware-panel{color:var(--text);gap:.85rem;display:grid}.firmware-hero{border:1px solid var(--border);border-radius:var(--radius-md);background:var(--bg-panel);grid-template-columns:minmax(0,1fr) auto;align-items:center;gap:1rem;padding:1.15rem 1.25rem;display:grid}.firmware-kicker{color:var(--accent-bright);font-family:var(--mono);letter-spacing:.08em;text-transform:uppercase;font-size:.62rem}.firmware-hero h2{margin:.28rem 0 .35rem;font-size:1.15rem}.firmware-hero p,.firmware-footnote,.firmware-safety-grid p{color:var(--text-faint);margin:0;font-size:.72rem;line-height:1.5}.firmware-shield{border:1px solid var(--border);border-radius:var(--radius-sm);background:var(--bg-inset);text-align:center;min-width:150px;padding:.8rem 1rem;display:grid}.firmware-shield>span{color:var(--text-faint);font-size:1.5rem}.firmware-shield strong{color:var(--text-muted);font-size:.72rem}.firmware-shield small{color:var(--text-faint);margin-top:.15rem;font-size:.56rem}.firmware-shield.ready{border-color:#69b99559;box-shadow:inset 0 0 18px #69b9950f}.firmware-shield.ready>span,.firmware-shield.ready strong{color:#8bd3b0}.firmware-notice{border:1px solid var(--border);border-radius:var(--radius-sm);background:var(--bg-inset);color:var(--text-muted);flex-wrap:wrap;justify-content:space-between;align-items:center;gap:.75rem;padding:.7rem .85rem;font-size:.7rem;display:flex}.firmware-notice.warn{color:#d8c07a;border-color:#e5c07b47}.firmware-repository{border-radius:var(--radius-md);background:var(--bg-panel);border:1px solid #69b99547;gap:.75rem;padding:1rem 1.1rem;display:grid}.firmware-repository-head,.firmware-repository-actions{justify-content:space-between;align-items:center;gap:.75rem;display:flex}.firmware-repository-head>div{gap:.18rem;display:grid}.firmware-repository-head strong{color:var(--text);font-size:.76rem}.firmware-repository-url{grid-template-columns:minmax(0,1fr) auto;gap:.5rem;display:grid}.firmware-repository-url input{border:1px solid var(--border);border-radius:var(--radius-sm);background:var(--bg-inset);min-width:0;color:var(--text);font-family:var(--mono);outline:none;padding:.58rem .65rem;font-size:.65rem}.firmware-repository-url input:focus{border-color:#69b9958c}.firmware-repository-error{color:var(--danger);margin:0;font-size:.68rem}.firmware-release-list{gap:.42rem;max-height:240px;display:grid;overflow:auto}.firmware-release{border:1px solid var(--border);border-radius:var(--radius-sm);background:var(--bg-inset);cursor:pointer;grid-template-columns:auto minmax(0,1fr) auto;align-items:center;gap:.65rem;padding:.62rem .7rem;display:grid}.firmware-release.selected{border-color:#69b9958c;box-shadow:inset 0 0 14px #69b9950f}.firmware-release>span{gap:.12rem;min-width:0;display:grid}.firmware-release strong{color:var(--accent-bright);font-family:var(--mono);font-size:.74rem}.firmware-release small{color:var(--text-faint);text-overflow:ellipsis;white-space:nowrap;font-size:.6rem;overflow:hidden}.firmware-release a{color:var(--accent-bright);font-size:.65rem;text-decoration:none}.firmware-release a:hover{text-decoration:underline}.firmware-card{border:1px solid var(--border);border-radius:var(--radius-md);background:var(--bg-panel);padding:1rem 1.1rem}.firmware-card-head{justify-content:space-between;align-items:center;gap:1rem;display:flex}.firmware-card-head>div{gap:.18rem;min-width:0;display:grid}.firmware-card-head strong{color:var(--text);font-family:var(--mono);text-overflow:ellipsis;white-space:nowrap;font-size:.75rem;overflow:hidden}.firmware-actions{gap:.5rem!important;display:flex!important}.firmware-progress{margin-top:.9rem}.firmware-progress-label{color:var(--text-muted);justify-content:space-between;gap:.7rem;margin-bottom:.38rem;font-size:.65rem;display:flex}.firmware-progress-label span{color:var(--text-faint);font-family:var(--mono)}.firmware-progress.state-success strong{color:#8bd3b0}.firmware-progress.state-error strong{color:var(--danger)}.firmware-progress-track{border:1px solid var(--border);background:var(--bg-inset);border-radius:99px;height:7px;overflow:hidden}.firmware-progress-track span{border-radius:inherit;background:linear-gradient(90deg, var(--accent), #69b995);height:100%;transition:width .18s linear;display:block}.firmware-safety-grid{grid-template-columns:repeat(3,minmax(0,1fr));gap:.65rem;display:grid}.firmware-safety-grid article{border:1px solid var(--border);border-radius:var(--radius-sm);background:var(--bg-panel);padding:.85rem .9rem}.firmware-safety-grid strong{color:var(--text-muted);margin-bottom:.3rem;font-size:.68rem;display:block}.firmware-footnote{padding:0 .2rem}@media (width<=640px){.device-tabs{overflow-x:auto}.device-tabs button{flex:none;min-width:105px}.firmware-hero{grid-template-columns:1fr}.firmware-shield{min-width:0}.firmware-card-head,.firmware-repository-head,.firmware-repository-actions{flex-direction:column;align-items:stretch}.firmware-repository-url{grid-template-columns:1fr}.firmware-release{grid-template-columns:auto minmax(0,1fr)}.firmware-release a{grid-column:2}.firmware-actions{flex-direction:column}.firmware-safety-grid{grid-template-columns:1fr}}.lh-open{border:1px solid var(--accent-line);background:var(--accent-soft);width:1.15rem;height:1.15rem;color:var(--accent-bright);cursor:pointer;vertical-align:middle;border-radius:50%;margin-left:.4rem;padding:0;font-size:.72rem;font-weight:700;line-height:1}.lh-open:hover{background:var(--accent-line);color:var(--bg-deep)}.lh-modal{width:min(680px,100%)}.lh-head{justify-content:space-between;align-items:center;gap:.6rem;display:flex}.lh-head h2{color:var(--accent-bright);margin:0;font-size:1.05rem}.lh-intro{color:var(--text-muted);margin:0;font-size:.78rem}.lh-sections{flex-direction:column;gap:.8rem;display:flex}.lh-section{background:var(--bg-inset);border:1px solid var(--border);border-radius:var(--radius-md);padding:.7rem .8rem}.lh-section.is-active{border-color:var(--accent-line)}.lh-section-head{justify-content:space-between;align-items:center;gap:.6rem;margin-bottom:.35rem;display:flex}.lh-section-head h3{color:var(--text);margin:0;font-size:.92rem}.lh-badge{background:var(--accent-soft);border:1px solid var(--accent-line);color:var(--accent-bright);text-transform:uppercase;letter-spacing:.04em;border-radius:999px;padding:.14rem .55rem;font-size:.68rem;font-weight:700}.lh-use{padding:.2rem .6rem;font-size:.72rem}.lh-svg{width:100%;height:auto;display:block}.lh-body{fill:#a9c9e214;stroke:var(--border-strong);stroke-width:1.5px}.lh-mouth{fill:#a9c9e229;stroke:var(--border-strong);stroke-width:1.5px}.lh-mouth-label,.lh-thumb-label{fill:var(--text-faint);font-size:10px}.lh-pad circle{fill:#171b22e6;stroke:var(--accent-line);stroke-width:1.5px}.lh-pad-der circle{fill:#3fd8c729;stroke:var(--blow)}.lh-pad-izq circle{fill:#f5c95c29;stroke:var(--draw)}.lh-pad-val{fill:var(--text);font-size:13px;font-weight:700}.lh-pad-note{fill:var(--accent-bright);font-size:9.5px}.lh-ladder{fill:none;stroke:var(--accent-line);stroke-width:1.5px;stroke-dasharray:4 4;opacity:.85}.lh-arrow-head{fill:var(--accent-line)}.lh-hand-label{fill:var(--text-muted);font-size:10.5px}.lh-hand-label.lh-hand-izq{fill:var(--draw)}.lh-hand-label.lh-hand-der{fill:var(--blow);text-anchor:end}.lh-thumb{fill:#171b22e6;stroke:var(--border-strong);stroke-width:1.2px}.lh-points{color:var(--text-muted);flex-direction:column;gap:.28rem;margin:.5rem 0 0;padding-left:1.1rem;font-size:.78rem;display:flex}.lh-points li::marker{color:var(--accent-line)}.keymap{background:var(--bg-inset);border:1px solid var(--border);border-radius:var(--radius-md);margin-top:.7rem;padding:.65rem .75rem}.keymap-title{text-transform:uppercase;letter-spacing:.06em;color:var(--text-muted);margin:0 0 .45rem;font-size:.78rem;font-weight:700}.keymap-grid{grid-template-columns:repeat(auto-fit,minmax(3.1rem,1fr));gap:.35rem;display:grid}.keymap-cell{border:1px solid var(--border);background:#171b22bf;border-radius:.5rem;flex-direction:column;align-items:center;gap:.12rem;padding:.35rem .2rem;display:flex}.keymap-cell.is-on{border-color:var(--accent-line);background:var(--accent-soft)}.keymap-thumb{border-style:dashed}.keymap-pad{color:var(--text);font-size:.86rem;font-weight:700}.keymap-note{color:var(--accent-bright);font-size:.68rem}.keymap-key{border:1px solid var(--border-strong);color:var(--text-muted);background:#0006;border-bottom-width:2px;border-radius:.3rem;padding:.05rem .35rem;font-family:inherit;font-size:.66rem}.keymap-hint{color:var(--text-faint);margin:.45rem 0 0;font-size:.68rem}.pmc-warn{color:var(--danger);margin:0;font-size:.78rem}.pmc-tabs{gap:.4rem;display:flex}.pmc-tabs .is-active{border-color:var(--accent-line);color:var(--accent-bright)}.pmc-wizard,.pmc-manual{flex-direction:column;gap:.5rem;display:flex}.pmc-prompt{background:var(--accent-soft);border:1px solid var(--accent-line);border-radius:var(--radius-md);color:var(--accent-bright);margin:0;padding:.6rem .7rem;font-size:.95rem;font-weight:600}.pmc-row{flex-wrap:wrap;gap:.4rem;display:flex}.pmc-progress{color:var(--text-muted);margin:0;font-size:.74rem}.pmc-apply{border-color:var(--accent-line);color:var(--accent-bright)}.pmc-manual{grid-template-columns:repeat(auto-fit,minmax(9rem,1fr));display:grid}.pmc-line{align-items:center;gap:.4rem;font-size:.78rem;display:flex}.pmc-term{min-width:2rem;color:var(--text-muted);font-weight:700}.pmc-live{flex-wrap:wrap;gap:.3rem;display:flex}.pmc-chip{border:1px solid var(--border);color:var(--text-faint);border-radius:999px;padding:.18rem .5rem;font-size:.7rem}.pmc-chip.is-on{border-color:var(--blow);color:var(--blow);background:#3fd8c71f}.pmc-current{color:var(--text-faint);margin:0;font-size:.7rem}.pmc-notice{color:var(--accent-bright);margin:0;font-size:.74rem}.keymap-head{justify-content:space-between;align-items:center;gap:.5rem;margin-bottom:0;display:flex}.keymap-head .keymap-title{margin:0}summary.keymap-head{cursor:pointer;-webkit-user-select:none;user-select:none;list-style:none}summary.keymap-head::-webkit-details-marker{display:none}summary.keymap-head .keymap-title{align-items:center;gap:.45rem;display:flex}summary.keymap-head .keymap-title:after{content:"";border-right:1.5px solid var(--text-faint);border-bottom:1.5px solid var(--text-faint);width:7px;height:7px;transition:transform .2s var(--ease-out);flex:none;transform:rotate(-45deg)translateY(-1px)}details.keymap[open]>summary.keymap-head .keymap-title:after{transform:rotate(45deg)}details.keymap[open]>summary.keymap-head{margin-bottom:.45rem}details.keymap:not([open])>summary.keymap-head .keymap-actions{display:none}.keymap-assign{white-space:nowrap;padding:.22rem .6rem;font-size:.7rem}.pmc-help{color:var(--text-muted);margin:0;font-size:.78rem;line-height:1.45}.pmc-section{flex-direction:column;gap:.35rem;display:flex}.pmc-section-title{text-transform:uppercase;letter-spacing:.05em;color:var(--text-faint);margin:0;font-size:.72rem;font-weight:700}.pmc-steps{flex-wrap:wrap;gap:.3rem;display:flex}.pmc-step{border:1px solid var(--border);color:var(--text-faint);border-radius:.45rem;padding:.2rem .5rem;font-size:.72rem}.pmc-step.is-current{border-color:var(--accent-line);color:var(--accent-bright);background:var(--accent-soft)}.pmc-step.is-done{border-color:var(--blow);color:var(--blow)}.pmc-manual-wrap{flex-direction:column;gap:.5rem;display:flex}.keymap-actions{flex-wrap:wrap;gap:.35rem;display:flex}.keymap-assign.is-active{border-color:var(--accent-line);color:var(--accent-bright)}.keymap-cell.is-edit{cursor:pointer;border-style:dashed}.keymap-cell.is-edit:hover{border-color:var(--accent-line)}.keymap-cell.is-capture{border-color:var(--accent-bright);background:var(--accent-soft)}.strip-disconnect{white-space:nowrap;padding:.18rem .55rem;font-size:.7rem}.strip-connect-group{align-items:center;gap:.35rem;display:inline-flex}.strip-connect{white-space:nowrap;border-radius:999px;padding:.24rem .66rem;font-size:.7rem}.opd-svg{width:100%;max-width:26rem;height:auto;margin:0 auto;display:block}.opd-body{fill:#a9c9e214;stroke:var(--border-strong);stroke-width:1.5px}.opd-mouth{fill:#a9c9e229;stroke:var(--border-strong);stroke-width:1.5px}.opd-label{fill:var(--text-faint);font-size:10px}.opd-pad circle{fill:#171b22e6;stroke:var(--accent-line);stroke-width:1.5px}.opd-pad text{fill:var(--text);font-size:15px;font-weight:700}.opd-pad.is-on circle{fill:#3fd8c740;stroke:var(--blow)}.opd-pad.is-on text{fill:var(--blow)}.opd-pad.is-target circle{stroke:var(--accent-bright);stroke-width:3px;fill:var(--accent-soft)}.opd-pad.is-target text{fill:var(--accent-bright)}.opd-thumb rect{fill:#171b22e6;stroke:var(--border-strong);stroke-width:1.2px}.opd-thumb text{fill:var(--text-faint);font-size:10px}.opd-thumb.is-on rect{stroke:var(--blow);fill:#3fd8c733}.opd-thumb.is-on text{fill:var(--blow)}.opd-thumb.is-target rect{stroke:var(--accent-bright);stroke-width:2.5px;fill:var(--accent-soft)}.opd-thumb.is-target text{fill:var(--accent-bright)}.pmc-diagram-hint{text-align:center}.out-toggle{border:1px solid var(--border-strong);border-radius:999px;display:inline-flex;overflow:hidden}.out-seg{color:var(--text-muted);cursor:pointer;white-space:nowrap;background:0 0;border:none;padding:.24rem .62rem;font-size:.72rem}.out-seg+.out-seg{border-left:1px solid var(--border)}.out-seg.is-active{background:var(--accent-soft);color:var(--accent-bright);font-weight:700}.out-seg:disabled{opacity:.45;cursor:default}.firmware-channel-tabs{border-bottom:1px solid var(--border-strong);gap:.3rem;margin-bottom:.55rem;display:flex}.firmware-channel-tab{color:var(--text-muted);cursor:pointer;background:0 0;border:1px solid #0000;border-bottom:none;border-radius:.5rem .5rem 0 0;padding:.4rem .9rem;font-size:.82rem}.firmware-channel-tab.is-active{border-color:var(--border-strong);background:var(--bg-inset);color:var(--accent-bright);font-weight:700}
