:root{--pms-bg:#0a0a0a;--pms-bg-elevated:#141414;--pms-yellow:#e5a00d;--pms-yellow-worn:#c78f12;--pms-yellow-bright:#f5b81b;--pms-text:#f0ebe2;--pms-text-muted:#9a9288;--pms-border:#3d3428;--pms-font:"Segoe UI",system-ui,sans-serif}*,:after,:before{box-sizing:border-box}body,html{margin:0;min-height:100%;font-family:var(--pms-font);background:var(--pms-bg);color:var(--pms-text)}body:before{content:"";position:fixed;inset:0;pointer-events:none;z-index:9999;opacity:.04;background-image:url("data:image/svg+xml,%3Csvg viewBox='0 0 256 256' xmlns='http://www.w3.org/2000/svg'%3E%3Cfilter id='n'%3E%3CfeTurbulence type='fractalNoise' baseFrequency='0.9' numOctaves='4' stitchTiles='stitch'/%3E%3C/filter%3E%3Crect width='100%25' height='100%25' filter='url(%23n)'/%3E%3C/svg%3E")}a{color:var(--pms-yellow-bright)}.wrap{width:100%;max-width:min(110rem,calc(100vw - 2rem));margin:0 auto;padding:1.5rem clamp(1rem,3vw,1.75rem);box-sizing:border-box}.site-topbar{display:flex;align-items:center;justify-content:space-between;gap:1rem;padding-bottom:1rem;margin-bottom:.5rem;border-bottom:1px solid var(--pms-border)}.site-brand{font-weight:700;font-size:1.05rem;color:var(--pms-text);text-decoration:none;letter-spacing:-.02em}.site-brand:hover{color:var(--pms-yellow-bright)}.site-topbar__actions{display:flex;align-items:center;gap:.5rem}.site-nav-menu{position:relative}.site-nav-menu__summary{list-style:none}.site-nav-menu__summary::-webkit-details-marker{display:none}.site-nav-menu__panel{position:absolute;right:0;top:calc(100% + .35rem);min-width:11rem;padding:.5rem;background:var(--pms-bg-elevated);border:1px solid var(--pms-border);border-radius:8px;box-shadow:0 8px 24px rgba(0,0,0,.45);display:flex;flex-direction:column;gap:.15rem;z-index:100}.site-nav-menu__panel a{padding:.45rem .6rem;border-radius:4px;text-decoration:none;font-size:.9rem}.site-nav-menu__panel a:hover{background:rgba(229,160,13,.08)}.site-nav-menu[open] .site-nav-menu__summary{outline:1px solid var(--pms-yellow-worn);outline-offset:2px}h1{font-weight:700;letter-spacing:-.02em;margin:0 0 .5rem}h1 .accent{color:var(--pms-yellow);text-shadow:0 0 24px rgba(229,160,13,.25)}.sub{color:var(--pms-text-muted);margin:0 0 1.5rem;font-size:1rem;line-height:1.5}.panel{background:linear-gradient(165deg,var(--pms-bg-elevated),#0d0d0d);border:1px solid var(--pms-border);border-radius:8px;padding:1.25rem;margin-bottom:1rem;box-shadow:inset 0 1px 0 rgba(255,255,255,.04)}.row{display:flex;flex-wrap:wrap;gap:.75rem;align-items:center;margin-bottom:.75rem}.auth-page{width:100%;max-width:28rem;margin-inline:auto}.auth-page__header{margin-bottom:.25rem}.auth-page__panels{display:flex;flex-direction:column;gap:0}.auth-panel__title{margin:0 0 1rem;font-size:1rem;font-weight:600;color:var(--pms-yellow)}.auth-form{display:flex;flex-direction:column;gap:0;width:100%}.auth-form--confirm{margin-top:1.25rem;padding-top:1.25rem;border-top:1px solid var(--pms-border)}.auth-field{display:flex;flex-direction:column;align-items:stretch;gap:.35rem;width:100%;margin-bottom:.85rem}.auth-field label{width:100%}.auth-input,.auth-input-group{width:100%;max-width:100%}.auth-input-group{display:flex;gap:.5rem;align-items:stretch;min-width:0}.auth-input-group .auth-input{flex:1 1;min-width:0}.auth-page input[type=email],.auth-page input[type=password],.auth-page input[type=text]{width:100%;max-width:100%;min-width:0}.auth-password-toggle{flex:0 0 auto;align-self:stretch;white-space:nowrap;padding-left:.65rem;padding-right:.65rem;font-size:.8125rem}.auth-form__actions{display:flex;flex-direction:column;gap:.5rem;width:100%;margin-top:.15rem}.auth-form__actions--inline{flex-direction:row;flex-wrap:wrap}.auth-btn{width:100%;text-align:center;text-decoration:none;box-sizing:border-box}.auth-form__actions--inline .auth-btn{flex:1 1 8rem;width:auto;min-width:min(100%,8rem)}.auth-panel__hint{margin:.75rem 0 0;font-size:.875rem}.auth-status{margin:.75rem 0 0}@media (min-width:36rem){.auth-page{max-width:32rem}}@media (min-width:48rem){.auth-page{max-width:36rem}}label{font-size:.875rem;color:var(--pms-text-muted)}input[type=email],input[type=password],input[type=text],select{background:#080808;border:1px solid var(--pms-border);color:var(--pms-text);border-radius:6px;padding:.5rem .65rem;min-width:12rem;font:inherit}input:focus,select:focus{outline:1px solid var(--pms-yellow-worn);border-color:var(--pms-yellow-worn)}.btn{font:inherit;cursor:pointer;border-radius:6px;padding:.55rem 1rem;border:1px solid #8a6400;background:linear-gradient(180deg,var(--pms-yellow-bright),var(--pms-yellow));color:#1a1204;font-weight:600;box-shadow:inset 0 1px 0 rgba(255,255,255,.35),inset 0 -2px 0 rgba(0,0,0,.18);transition:transform .08s ease,filter .08s ease}.btn:hover{filter:brightness(1.05);transform:translateY(-1px)}.btn:active{transform:translateY(0)}.btn-secondary{background:#222;color:var(--pms-text);border-color:var(--pms-border);box-shadow:inset 0 1px 0 rgba(255,255,255,.06)}.keys{display:flex;flex-wrap:wrap;gap:.35rem;margin-top:.75rem}.key{min-width:2.25rem;height:5rem;border-radius:4px;border:1px solid #333;background:linear-gradient(180deg,#2a2a2a,#181818);color:var(--pms-text);font-size:.75rem;cursor:pointer;-webkit-user-select:none;-moz-user-select:none;user-select:none}.key.active,.key:active{background:linear-gradient(180deg,var(--pms-yellow-worn),#7a5a0a);border-color:var(--pms-yellow);color:#0a0a0a}.status{font-family:ui-monospace,monospace;font-size:.8rem;color:var(--pms-text-muted);white-space:pre-wrap}.meter{height:6px;background:#222;border-radius:3px;overflow:hidden;margin-top:.5rem}.meter>span{display:block;height:100%;width:0;background:var(--pms-yellow);transition:width .05s linear}footer{margin-top:2rem;padding-top:1rem;border-top:1px solid var(--pms-border);font-size:.65rem;color:rgba(229,160,13,.45)}.device-directory h2{margin:0 0 .5rem;font-size:1rem;font-weight:600;color:var(--pms-yellow)}.device-grid{display:grid;grid-template-columns:repeat(auto-fill,minmax(11rem,1fr));grid-gap:.85rem;gap:.85rem;margin-top:.75rem}.device-card{text-align:left;padding:0;border-radius:8px;border:1px solid var(--pms-border);background:linear-gradient(165deg,#161616,#0c0c0c);cursor:pointer;overflow:hidden;color:inherit;font:inherit;transition:border-color .12s ease,box-shadow .12s ease}.device-card:hover{border-color:var(--pms-yellow-worn);box-shadow:0 0 0 1px rgba(229,160,13,.15)}.device-card:focus-visible{outline:2px solid var(--pms-yellow);outline-offset:2px}.device-card-image{width:100%;height:auto;background:#111 linear-gradient(145deg,#1e1e1e,#0a0a0a);object-fit:contain;display:block;pointer-events:none;-webkit-user-select:none;-moz-user-select:none;user-select:none;-webkit-user-drag:none}.device-card-body{padding:.55rem .65rem .65rem}.device-card-title{font-size:.88rem;font-weight:600;color:var(--pms-text);line-height:1.25}.device-card-meta{font-size:.68rem;color:var(--pms-text-muted);margin-top:.2rem}.session-id-box{font-family:ui-monospace,monospace;font-size:.72rem;word-break:break-all;background:#0a0a0a;border:1px solid var(--pms-border);border-radius:6px;padding:.5rem .65rem;margin-top:.35rem}.landing-hero{text-align:center;padding:2rem 0 1rem}.landing-hero h1{font-size:clamp(1.75rem,4vw,2.5rem)}.tagline{color:var(--pms-text-muted);max-width:36rem;margin:0 auto 2rem;line-height:1.6}.landing-hero .tagline{margin-bottom:1.25rem}.landing-cta-row{justify-content:center;margin-bottom:1.5rem}.waitlist-form{display:flex;gap:.5rem;justify-content:center;flex-wrap:wrap;margin-bottom:2rem}.waitlist-form input[type=email]{min-width:18rem}.steps{text-align:left;max-width:28rem;margin:0 auto;color:var(--pms-text-muted);line-height:1.6}.steps li{margin-bottom:.5rem}kbd{font-family:ui-monospace,monospace;font-size:.72rem;padding:.12rem .38rem;border:1px solid var(--pms-border);border-radius:4px;background:#121212;color:var(--pms-text-muted)}.player-full-velocity{display:inline-flex;align-items:center;gap:.3rem;margin:0;font-size:.72rem;font-weight:500;color:var(--muted,#666);cursor:pointer;-webkit-user-select:none;-moz-user-select:none;user-select:none;white-space:nowrap}.player-full-velocity input{width:.85rem;height:.85rem;margin:0;accent-color:var(--pms-yellow-worn,#c9a227)}.piano-section h3,.player-piano-panel__title{margin:0 0 .35rem;font-size:1rem;font-weight:600;color:var(--pms-yellow)}.player-piano-panel.panel{padding:.3rem .5rem;margin-bottom:.35rem}.player-piano-panel.panel[open]{padding:.85rem .85rem .75rem;margin-bottom:.75rem}.player-piano-panel__summary{list-style:none;cursor:pointer;display:flex;align-items:center;justify-content:space-between;gap:.35rem;-webkit-user-select:none;-moz-user-select:none;user-select:none;min-height:0;padding:0;line-height:1.15}.player-piano-panel__summary::-webkit-details-marker{display:none}.player-piano-panel__title{margin:0}.player-piano-panel:not([open]) .player-piano-panel__title{font-size:.76rem;font-weight:600;letter-spacing:.01em}.player-piano-panel[open] .player-piano-panel__title{font-size:.92rem;margin-bottom:0}.player-piano-panel__chevron{flex-shrink:0;width:.4rem;height:.4rem;border-right:2px solid var(--pms-text-muted);border-bottom:2px solid var(--pms-text-muted);transform:rotate(45deg);transition:transform .15s ease;margin-right:.05rem}.player-piano-panel:not([open]) .player-piano-panel__chevron{width:.32rem;height:.32rem;margin-right:0}.player-piano-panel[open] .player-piano-panel__chevron{transform:rotate(-135deg);margin-top:.15rem}.player-piano-panel__body{margin-top:.65rem}.piano-root{width:100%;max-width:100%;touch-action:none;display:flex;flex-direction:column;min-height:0}.piano-range-bar{flex-shrink:0;text-align:center;font-size:.72rem;font-weight:600;color:var(--pms-text-muted);line-height:1.2;padding:.12rem .35rem .22rem;letter-spacing:.03em;-webkit-user-select:none;-moz-user-select:none;user-select:none}.piano-keybed{flex:1 1 auto;min-height:0;display:grid;grid-template-columns:auto minmax(0,1fr) auto;align-items:stretch;width:100%;max-width:100%}.piano-octave-side{align-self:stretch;width:1.65rem;min-width:1.65rem;padding:0;margin:0;border:1px solid var(--pms-border);border-radius:0;background:linear-gradient(180deg,#1a1a1a,#101010);color:var(--pms-text-muted);font-size:1.15rem;font-weight:600;line-height:1;cursor:pointer;touch-action:manipulation;-webkit-user-select:none;-moz-user-select:none;user-select:none;display:flex;align-items:center;justify-content:center}.piano-octave-side--down{border-radius:5px 0 0 5px;border-right:none}.piano-octave-side--up{border-radius:0 5px 5px 0;border-left:none}.piano-octave-side:hover:not(:disabled){color:var(--pms-yellow);background:linear-gradient(180deg,#222,#141414)}.piano-octave-side:disabled{opacity:.35;cursor:not-allowed}.piano-frame{position:relative;margin-top:0;width:100%;max-width:100%;--piano-n-keys:8;touch-action:none}.piano-whites{display:grid;grid-template-columns:repeat(var(--piano-n-keys),1fr);grid-column-gap:0;column-gap:0;height:9.5rem}.piano-white{flex:unset;min-width:0;border:1px solid #2a2a2a;border-left:none;border-radius:0;background:linear-gradient(180deg,#f8f4ec,#e0d8cc 55%,#c8c0b4);color:#1a1a1a;font-size:clamp(.5rem,.9vw + .35rem,.65rem);font-weight:600;cursor:pointer;display:flex;flex-direction:column;justify-content:flex-end;padding-bottom:.35rem;box-shadow:inset 0 1px 0 rgba(255,255,255,.65);-webkit-user-select:none;-moz-user-select:none;user-select:none}.piano-whites>.piano-white:first-child{border-left:1px solid #2a2a2a;border-radius:0}.piano-whites>.piano-white:last-child{border-radius:0}.piano-white:hover{filter:brightness(1.03)}.piano-white.active,.piano-white:active{background:linear-gradient(180deg,var(--pms-yellow-bright),var(--pms-yellow-worn));color:#0a0a0a;border-color:#5a4508}.piano-blacks{position:absolute;top:0;left:0;right:0;height:58%;pointer-events:none}.piano-black{position:absolute;width:min(1.65rem,calc(100% / var(--piano-n-keys) * .58));min-width:.55rem;height:100%;transform:translateX(-50%);border:1px solid #0a0a0a;border-radius:0 0 3px 3px;background:linear-gradient(180deg,#2d2d2d,#0f0f0f);color:#bbb;font-size:.55rem;cursor:pointer;pointer-events:auto;padding:0;box-shadow:inset 0 -2px 2px rgba(0,0,0,.45);-webkit-user-select:none;-moz-user-select:none;user-select:none}.piano-black:hover{background:linear-gradient(180deg,#3a3a3a,#181818)}.piano-black.active,.piano-black:active{background:linear-gradient(180deg,#4a3a08,#2a2204);border-color:var(--pms-yellow-worn);color:var(--pms-yellow-bright)}.piano-black:disabled,.piano-white:disabled{opacity:.45;cursor:not-allowed;pointer-events:none}.volca-keys-deck{--vk-panel:#8c8c8c;--vk-ink:#141414;--vk-dial:#b5b5b5;background:linear-gradient(180deg,#949494 0,var(--vk-panel) 40%,#7a7a7a 100%);color:var(--vk-ink);border-radius:4px;padding:.65rem .75rem .95rem;border:1px solid #5a5a5a;box-shadow:inset 0 1px 0 rgba(255,255,255,.35),0 2px 8px rgba(0,0,0,.35);max-width:100%;overflow-x:auto}.volca-keys-header{flex-wrap:wrap;margin-bottom:.35rem;font-size:.95rem;font-weight:700}.volca-keys-header,.volca-keys-title-group{display:flex;align-items:center;gap:.45rem}.volca-keys-status-dot{width:9px;height:9px;border-radius:50%;background:#e5c100;box-shadow:0 0 6px rgba(229,193,0,.85);flex-shrink:0}.volca-keys-title{letter-spacing:.02em}.volca-keys-meta{margin-left:auto;font-size:.68rem;font-weight:600;opacity:.85}.volca-keys-doc{margin:0 0 .5rem;font-size:.72rem;line-height:1.45;color:#222}.volca-keys-doc a{color:#0a3069;text-decoration:underline}.volca-keys-voice-row{display:flex;justify-content:flex-start;margin-bottom:.5rem}.volca-keys-aux{display:flex;flex-wrap:wrap;align-items:flex-end;justify-content:flex-end;gap:.75rem 1.25rem;margin-bottom:.35rem;padding-right:.15rem}.volca-voice-field{display:flex;flex-direction:column;align-items:stretch;gap:.28rem;flex:0 0 auto;width:10rem;max-width:10rem}.volca-voice-field .volca-keys-knob-label{font-size:.74rem;font-weight:700;text-align:left;align-self:stretch;max-width:none;width:100%;line-height:1.2;padding-left:.12rem}.volca-voice-select{width:100%;max-width:10rem;box-sizing:border-box;font:inherit;font-size:.875rem;font-weight:600;color:var(--vk-ink,#141414);background:#e8e8e8;border:1px solid #444;border-radius:4px;padding:.45rem .55rem;box-shadow:inset 0 1px 0 rgba(255,255,255,.6)}.volca-voice-select:focus{outline:2px solid var(--pms-yellow-worn);outline-offset:1px}.volca-keys-grid{display:flex;flex-wrap:nowrap;gap:.35rem .5rem;justify-content:space-between;min-width:min(100%,38rem)}.volca-keys-col{flex:1 1;min-width:3.25rem;display:flex;flex-direction:column;align-items:center;gap:.35rem}.volca-keys-col-head{font-size:.62rem;font-weight:800;text-transform:uppercase;letter-spacing:.06em;min-height:1rem;line-height:1rem;text-align:center;width:100%}.volca-keys-spacer{flex:0 0 2.5rem;width:100%}.volca-keys-knob-col{display:flex;flex-direction:column;align-items:center;gap:.15rem;width:100%}.volca-keys-knob-label{font-size:.62rem;font-weight:700;text-align:center;line-height:1.15;max-width:4.5rem;color:var(--vk-ink);cursor:pointer}.volca-knob{position:relative;width:3.25rem;height:3.25rem;min-width:3.25rem;min-height:3.25rem;cursor:ns-resize;touch-action:none;border-radius:50%;flex-shrink:0}.volca-knob-selected .volca-knob-dial{border-color:var(--pms-yellow-worn);box-shadow:inset 0 2px 4px rgba(255,255,255,.45),inset 0 -3px 5px rgba(0,0,0,.35),0 0 0 2px rgba(229,160,13,.45)}.volca-knob:focus{outline:2px solid var(--pms-yellow-worn);outline-offset:2px}.volca-knob-learning .volca-knob-dial{border-color:#b84fd4;background:radial-gradient(circle at 35% 30%,#e8c4f5 0,#9a5cb0 45%,#5a3068 100%);box-shadow:0 0 0 3px rgba(184,79,212,.55),0 0 14px rgba(184,79,212,.35),inset 0 2px 4px rgba(255,255,255,.45),inset 0 -3px 5px rgba(0,0,0,.35);animation:volca-knob-learn-pulse 1.1s ease-in-out infinite}@keyframes volca-knob-learn-pulse{0%,to{box-shadow:0 0 0 3px rgba(184,79,212,.55),0 0 14px rgba(184,79,212,.35),inset 0 2px 4px rgba(255,255,255,.45),inset 0 -3px 5px rgba(0,0,0,.35)}50%{box-shadow:0 0 0 4px rgba(220,120,255,.75),0 0 20px rgba(184,79,212,.55),inset 0 2px 4px rgba(255,255,255,.45),inset 0 -3px 5px rgba(0,0,0,.35)}}@media (prefers-reduced-motion:reduce){.volca-knob-learning .volca-knob-dial{animation:none}}.volca-knob-learning .volca-knob-needle{background:linear-gradient(180deg,#f0d0ff,#c45ce6)}.volca-knob-mapped:not(.volca-knob-learning) .volca-knob-dial{border-color:#4a6a8a}.volca-knob-dial{position:absolute;inset:0;border-radius:50%;background:radial-gradient(circle at 35% 30%,#ddd 0,var(--vk-dial) 45%,#6a6a6a 100%);border:2px solid #333;box-shadow:inset 0 2px 4px rgba(255,255,255,.45),inset 0 -3px 5px rgba(0,0,0,.35)}.volca-knob-needle{position:absolute;left:50%;top:50%;width:2px;height:38%;margin-left:-1px;margin-top:-38%;background:#111;border-radius:1px;transform-origin:50% 100%;transform:rotate(-135deg);pointer-events:none}.volca-keys-knob-col .volca-knob{margin-bottom:0}.volca-keys-footer{margin-top:.85rem;font-size:.65rem;color:#222;opacity:.9;text-align:right}.volca-deck-tabs{display:flex;align-items:center}.deck-tab-btn.deck-tab-active{border-color:var(--pms-yellow-worn);box-shadow:0 0 0 1px rgba(229,160,13,.35)}.volca-knob-value-wrap{width:100%;display:flex;justify-content:center;margin-top:.15rem}.volca-keys-deck .volca-knob-num{width:2.75rem;max-width:100%;min-width:2.25rem;padding:.15rem .25rem;font:inherit;font-size:.68rem;font-weight:700;text-align:center;color:var(--vk-ink,#141414);background:#e8e8e8;border:1px solid #444;border-radius:3px;box-shadow:inset 0 1px 0 rgba(255,255,255,.6);-moz-appearance:textfield;-webkit-appearance:textfield;appearance:textfield}.volca-keys-deck .volca-knob-num::-webkit-inner-spin-button,.volca-keys-deck .volca-knob-num::-webkit-outer-spin-button{-webkit-appearance:none;margin:0}.volca-keys-deck .volca-knob-num:focus{outline:2px solid var(--pms-yellow-worn);outline-offset:1px;border-color:#333}.volca-knob-zone{display:block;font-size:.62rem;font-weight:600;color:#222;text-align:center;margin-top:.2rem;line-height:1.2;min-height:1.2em}.player-connection-panel--hidden,.player-layout:not(.player-layout--connected) .player-fs-bottom{display:none!important}.player-layout.player-layout--connected{display:flex;flex-direction:column;min-height:calc(100dvh - 6.5rem)}.player-layout.player-layout--connected .player-fs-top{flex:0 0 auto}.player-layout.player-layout--connected .player-fs-bottom{flex:1 1 auto;min-height:0;display:flex;flex-direction:column;overflow:hidden}.player-layout.player-layout--connected .player-fs-bottom #controlDeckPanel{flex:0 1 auto;min-height:0;max-height:none;overflow-y:auto;overflow-x:hidden}.player-layout.player-layout--connected .player-fs-bottom #pianoMount.piano-dock{flex:0 0 auto;flex-shrink:0;height:var(--piano-dock-height,30dvh);min-height:6.75rem;max-height:min(45dvh,calc(100dvh - 10rem));display:flex;flex-direction:column;overflow:hidden}.player-browse[hidden],.player-session[hidden]{display:none!important}.player-session-bar{display:flex;align-items:center;gap:.5rem;margin-bottom:.65rem;flex-wrap:wrap}.player-session-bar__label{margin:0;min-width:0}.player-disconnect-btn{flex-shrink:0;font-size:.78rem;padding:.32rem .6rem}@media (max-height:720px),(max-width:768px){.player-kbd-hint,.player-play-intro__keyboard{display:none}}.player-control-deck.panel{padding:.55rem .65rem .65rem;margin-bottom:.2rem}.player-control-deck__head{display:flex;flex-wrap:wrap;align-items:center;justify-content:space-between;gap:.35rem .75rem;margin-bottom:.35rem}.player-control-deck__head h3{margin:0;font-size:.95rem}.player-compact-view-toggle{display:inline-flex;align-items:center;gap:.35rem;font-size:.78rem;font-weight:600;color:var(--pms-muted,#aaa);cursor:pointer;-webkit-user-select:none;-moz-user-select:none;user-select:none;white-space:nowrap}.player-compact-view-toggle input{margin:0;accent-color:var(--pms-yellow-worn)}.player-control-deck .volca-keys-doc,.player-control-deck .volca-keys-footer{display:none}.player-control-deck .player-control-deck__hint{font-size:.75rem;line-height:1.35;margin-bottom:.4rem!important}.player-control-deck .player-control-deck__usage{font-size:.78rem;line-height:1.45;margin-bottom:.35rem!important;color:var(--pms-muted,#b8b0a4)}.player-control-deck__usage--touch{display:none}@media (pointer:coarse){.volca-knob{width:max(3rem,var(--vk-knob-size,3.25rem));height:max(3rem,var(--vk-knob-size,3.25rem));min-width:3rem;min-height:3rem}.volca-keys-knob-col{min-width:3rem;padding:.1rem}.player-control-deck.player-compact-view .volca-keys-deck--compact{--vk-knob-size:max(3rem,clamp(3rem,min(5.5vmin,7.5dvh),3.35rem))}.player-control-deck--touch-knobs:has(.volca-knob-selected) .volca-keys-deck{cursor:ns-resize}.player-control-deck--touch-knobs.player-control-deck--knob-adjusting,.player-control-deck--touch-knobs.player-control-deck--knob-selected-lock,.player-layout.player-fs-active .player-fs-bottom #controlDeckPanel.player-control-deck--knob-adjusting,.player-layout.player-fs-active .player-fs-bottom #controlDeckPanel.player-control-deck--knob-selected-lock,.player-layout.player-layout--connected .player-fs-bottom #controlDeckPanel.player-control-deck--knob-adjusting,.player-layout.player-layout--connected .player-fs-bottom #controlDeckPanel.player-control-deck--knob-selected-lock{overflow:hidden!important;touch-action:none;overscroll-behavior:contain;-webkit-overflow-scrolling:auto}.player-control-deck__usage--desktop{display:none!important}.player-control-deck__usage--touch{display:block}}.player-control-deck:not(.player-compact-view) .volca-keys-deck .volca-knob-num{width:2.85rem;min-width:2.5rem;padding:.2rem .35rem;font-size:.72rem}.player-control-deck.player-compact-view.panel{padding:.45rem .55rem .4rem}.player-control-deck.player-compact-view h3{font-size:.92rem}.player-control-deck.player-compact-view .player-control-deck__hint{font-size:.72rem;margin-bottom:.35rem!important}.player-control-deck.player-compact-view .volca-keys-deck--compact{--vk-knob-size:clamp(1.4rem,min(4.5vmin,6.5dvh),2rem);--vk-knob-label:clamp(0.52rem,1.6vmin,0.62rem);--vk-col-gap:clamp(0.12rem,0.9vmin,0.35rem);padding:clamp(.3rem,1vmin,.55rem) clamp(.35rem,1.2vmin,.65rem);display:grid;grid-template-columns:minmax(0,1fr) auto auto;grid-gap:.2rem clamp(.25rem,1.2vmin,.55rem);gap:.2rem clamp(.25rem,1.2vmin,.55rem);align-items:center;overflow:hidden}.player-control-deck.player-compact-view .volca-keys-deck--compact .volca-keys-doc,.player-control-deck.player-compact-view .volca-keys-deck--compact .volca-keys-footer{display:none}.player-control-deck.player-compact-view .volca-keys-deck--compact .volca-keys-header{grid-column:1/-1;margin-bottom:0;font-size:clamp(.72rem,2.2vmin,.88rem);gap:.3rem}.player-control-deck.player-compact-view .volca-keys-deck--compact .volca-keys-meta{font-size:.58rem}.player-control-deck.player-compact-view .volca-keys-deck--compact .volca-keys-voice-row{grid-column:1;margin-bottom:0;justify-self:start}.player-control-deck.player-compact-view .volca-keys-deck--compact .volca-keys-aux{grid-column:2/-1;margin-bottom:0;padding-right:0;gap:.35rem .65rem;justify-content:flex-end}.player-control-deck.player-compact-view .volca-keys-deck--compact .volca-keys-grid{grid-column:1/-1;display:grid;grid-template-columns:repeat(5,minmax(0,1fr));grid-gap:var(--vk-col-gap) clamp(.15rem,1vmin,.45rem);gap:var(--vk-col-gap) clamp(.15rem,1vmin,.45rem);min-width:0;width:100%}.player-control-deck.player-compact-view .volca-keys-deck--compact .volca-keys-col{min-width:0;gap:var(--vk-col-gap)}.player-control-deck.player-compact-view .volca-keys-deck--compact .volca-keys-col-head{font-size:clamp(.52rem,1.5vmin,.62rem);min-height:.85rem;line-height:.85rem}.player-control-deck.player-compact-view .volca-keys-deck--compact .volca-keys-spacer{flex:0 0 var(--vk-knob-size);height:var(--vk-knob-size);min-height:var(--vk-knob-size)}.player-control-deck.player-compact-view .volca-keys-deck--compact .volca-keys-knob-col{gap:.08rem}.player-control-deck.player-compact-view .volca-keys-deck--compact .volca-keys-knob-label{font-size:var(--vk-knob-label);max-width:none;line-height:1.1}.player-control-deck.player-compact-view .volca-keys-deck--compact .volca-knob{width:var(--vk-knob-size);height:var(--vk-knob-size)}.player-control-deck.player-compact-view .volca-keys-deck--compact .volca-knob-dial{border-width:1.5px}.player-control-deck.player-compact-view .volca-keys-deck--compact .volca-knob-value-wrap{margin-top:.05rem}.player-control-deck.player-compact-view .volca-keys-deck--compact .volca-knob-num{width:clamp(1.65rem,4vmin,2.35rem);padding:.05rem .1rem;font-size:clamp(.58rem,1.5vmin,.66rem)}.player-control-deck.player-compact-view .volca-keys-deck--compact .volca-knob-zone{font-size:clamp(.52rem,1.4vmin,.6rem);margin-top:.05rem;min-height:0}.player-control-deck.player-compact-view .volca-voice-field{width:clamp(5.75rem,18vw,7.75rem);max-width:7.75rem;gap:.2rem}.player-control-deck.player-compact-view .volca-voice-field .volca-keys-knob-label{font-size:clamp(.66rem,1.7vmin,.74rem)}.player-control-deck.player-compact-view .volca-voice-select{max-width:100%;font-size:clamp(.74rem,1.9vmin,.84rem);padding:.28rem .4rem}.player-control-deck.player-compact-view #customDeckWrap{display:grid;grid-template-columns:repeat(auto-fill,minmax(min(100%,8.5rem),1fr));grid-gap:.35rem .5rem;gap:.35rem .5rem;margin-top:.35rem!important}.player-control-deck.player-compact-view #customDeckWrap .row{margin:0!important;gap:.25rem!important}.player-control-deck.player-compact-view #customDeckWrap label{min-width:0!important;font-size:.72rem}.player-control-deck.player-compact-view .player-control-deck__hint,.player-control-deck.player-compact-view .volca-keys-deck--compact .volca-keys-meta{display:none}.player-control-deck.player-compact-view .player-control-deck__usage{font-size:.7rem;line-height:1.35;margin-bottom:.25rem!important}.player-control-deck.player-compact-view .volca-keys-deck--compact .volca-knob-num,.player-control-deck.player-compact-view .volca-keys-deck--compact .volca-knob-zone{display:none}@media (max-height:560px){.player-control-deck.player-compact-view .volca-keys-deck--compact .volca-keys-status-dot{display:none}.player-control-deck.player-compact-view .volca-keys-deck--compact{--vk-knob-size:clamp(1.25rem,4vmin,1.75rem)}}html.player-fs-html-lock,html.player-fs-html-lock body{height:100%;overflow:hidden}.player-fs-minibar{display:flex;justify-content:flex-end;margin-bottom:.75rem}#btnPlayerFullscreen{white-space:nowrap}.player-fs-dock-audio{flex-shrink:0;position:relative}.player-fs-dock-audio #unlockAudioRow{position:absolute;left:0;right:0;bottom:100%;z-index:2;margin-top:0!important;margin-bottom:.35rem;padding:.35rem .5rem;background:var(--pms-bg);border:1px solid var(--pms-border);border-radius:8px;box-shadow:0 4px 16px rgba(0,0,0,.35)}.player-fs-dock-audio audio{position:absolute;left:0;bottom:0;width:4px;height:4px;opacity:.02;pointer-events:none}.player-layout:-webkit-full-screen{position:relative;display:flex;flex-direction:column;height:100%;min-height:100dvh;box-sizing:border-box;background:var(--pms-bg)}.player-layout.player-fs-active,.player-layout:-webkit-full-screen,.player-layout:fullscreen{position:relative;display:flex;flex-direction:column;height:100%;min-height:100dvh;box-sizing:border-box;background:var(--pms-bg)}.player-layout:-webkit-full-screen{padding:max(.35rem,env(safe-area-inset-top,0px)) max(.5rem,env(safe-area-inset-right,0px)) max(.35rem,env(safe-area-inset-bottom,0px)) max(.5rem,env(safe-area-inset-left,0px))}.player-layout:-webkit-full-screen,.player-layout:fullscreen{padding:max(.35rem,env(safe-area-inset-top,0px)) max(.5rem,env(safe-area-inset-right,0px)) max(.35rem,env(safe-area-inset-bottom,0px)) max(.5rem,env(safe-area-inset-left,0px))}.player-layout.player-fs-active.player-fs-fixed{position:fixed;inset:0;z-index:10000;padding:max(.35rem,env(safe-area-inset-top,0px)) max(.5rem,env(safe-area-inset-right,0px)) max(.35rem,env(safe-area-inset-bottom,0px)) max(.5rem,env(safe-area-inset-left,0px));overflow:hidden}.player-layout.player-fs-active .player-fs-chrome,.player-layout.player-fs-active .player-session-bar{display:none!important}.player-layout.player-fs-active .player-fs-minibar{position:absolute;top:max(.2rem,env(safe-area-inset-top,0px));right:max(.3rem,env(safe-area-inset-right,0px));margin:0;z-index:10001;pointer-events:none}.player-layout.player-fs-active #btnPlayerFullscreen{pointer-events:auto;min-width:0;width:1.35rem;height:1.35rem;padding:0;font-size:.95rem;line-height:1;font-weight:400;border-radius:3px;opacity:.4;color:var(--pms-text-muted);background:rgba(0,0,0,.25);border:1px solid rgba(255,255,255,.08);box-shadow:none}.player-layout.player-fs-active #btnPlayerFullscreen:focus-visible,.player-layout.player-fs-active #btnPlayerFullscreen:hover{opacity:.75;color:var(--pms-text);border-color:rgba(255,255,255,.18)}.player-layout.player-fs-active .player-fs-top{display:block;flex:0 0;min-height:0;overflow:visible;padding:0;position:static}.player-layout.player-fs-active .player-fs-scroll{flex:0 0;min-height:0;overflow:visible;margin:0;padding:0}.player-layout.player-fs-active .player-fs-scroll .player-session{min-height:0;margin:0;padding:0}.player-layout.player-fs-active .player-fs-bottom{flex:1 1;min-height:0;overflow:hidden;display:flex;flex-direction:column;border-top:1px solid var(--pms-border);padding-top:.35rem}.player-layout.player-fs-active .player-fs-bottom #controlDeckPanel,.player-layout.player-fs-active .player-fs-bottom .player-control-deck{flex:1 1 auto;flex-shrink:1;min-height:0;max-height:none;overflow-y:auto;overflow-x:hidden;-webkit-overflow-scrolling:touch}.player-fs-bottom #pianoMount{touch-action:none}.piano-dock{--piano-dock-height:30dvh;display:flex;flex-direction:column;overflow:hidden;min-height:0}.piano-dock__resize{flex-shrink:0;height:.55rem;margin:0;padding:0;border:none;background:transparent;cursor:ns-resize;touch-action:none;display:flex;align-items:center;justify-content:center;-webkit-user-select:none;-moz-user-select:none;user-select:none}.piano-dock__resize-grip{width:2.25rem;height:3px;border-radius:999px;background:rgba(255,255,255,.16);box-shadow:0 0 0 1px rgba(0,0,0,.25);transition:background .12s ease}.piano-dock--resizing .piano-dock__resize-grip,.piano-dock__resize:focus-visible .piano-dock__resize-grip,.piano-dock__resize:hover .piano-dock__resize-grip{background:rgba(229,160,13,.55)}.piano-dock__keys{flex:1 1 auto;min-height:0;overflow:hidden;display:flex;flex-direction:column}.player-layout.player-fs-active .player-fs-bottom #pianoMount.piano-dock{flex:0 0 auto;flex-shrink:0;height:var(--piano-dock-height,30dvh);min-height:6.75rem;max-height:min(45dvh,calc(100dvh - 8rem))}.player-layout.player-fs-active.player-layout--connected .player-fs-bottom #controlDeckPanel{max-height:none}@media (max-height:720px),(max-width:520px){.player-layout.player-fs-active .player-fs-bottom #pianoMount.piano-dock{min-height:6.25rem;max-height:min(45dvh,calc(100dvh - 7rem))}.player-layout.player-fs-active .player-fs-bottom #controlDeckPanel{max-height:none}}.player-layout:not(.player-fs-active) .player-fs-bottom #controlDeckPanel{overflow-x:hidden}.player-fs-bottom footer{flex-shrink:0;margin-top:.5rem;padding-top:.5rem}.player-fs-bottom #controlDeckPanel,.player-fs-bottom .player-control-deck{flex-shrink:0}.player-layout.player-fs-active .player-fs-bottom .piano-root{flex:1 1 auto;width:100%;min-height:0;max-height:100%;display:flex;flex-direction:column}.player-layout.player-fs-active .player-fs-bottom .piano-range-bar{flex-shrink:0;padding-bottom:.15rem;font-size:.68rem}.player-layout.player-fs-active .player-fs-bottom .piano-frame,.player-layout.player-fs-active .player-fs-bottom .piano-keybed{flex:1 1 auto;min-height:0;align-self:stretch;width:100%;max-width:100%}.player-layout.player-fs-active .player-fs-bottom .piano-frame{position:relative;height:100%;display:flex;flex-direction:column}.player-layout.player-fs-active .player-fs-bottom .piano-whites{flex:1 1 auto;height:auto;min-height:0;max-height:100%;grid-template-rows:minmax(0,1fr)}.player-layout.player-fs-active .player-fs-bottom .piano-black{width:min(3.3rem,calc(100% / var(--piano-n-keys) * 1.16));min-width:1.1rem}