:root{color:#111;background:#3a6ea5;font-family:Tahoma,Verdana,Segoe UI,sans-serif;font-synthesis:none;text-rendering:optimizeLegibility;-webkit-font-smoothing:antialiased;-moz-osx-font-smoothing:grayscale}*{box-sizing:border-box}html,body,#app{width:100%;height:100%;margin:0;overscroll-behavior:none}body{min-width:320px;overflow:hidden}#app{display:grid;grid-template-columns:minmax(0,1fr) minmax(320px,430px);gap:16px;align-items:start;position:relative;padding:48px 22px 54px;overflow:auto;touch-action:auto;background:linear-gradient(180deg,#3a8dde2e,#1f5da847),var(--desktop-wallpaper-url, none) center / cover no-repeat,linear-gradient(180deg,#3a8dde,#2f78c6 48%,#1f5da8)}#desktop-taskbar{position:fixed;z-index:5;left:0;right:0;bottom:0;display:flex;align-items:center;gap:8px;min-height:38px;padding:3px 8px;border-top:1px solid #78a8e8;background:linear-gradient(180deg,#3f90e8f5,#1053b8fa);box-shadow:inset 0 1px #ffffff6b}.start-menu-button{display:inline-flex;align-items:center;gap:7px;min-width:112px;min-height:32px;padding:0 13px 0 8px;border-color:#8bd66b #0b5f16 #0b5f16 #aef097;border-radius:13px 5px 5px 13px;background:linear-gradient(180deg,#7be56a,#2fa52c 48%,#0b6f1f);color:#fff;font-weight:700;text-shadow:1px 1px 0 rgba(0,0,0,.45)}.taskbar-hide-button{display:inline-flex;align-items:center;gap:6px;min-width:72px;min-height:30px;padding:0 9px;background:#ece9d8f0}.taskbar-hide-sprite-placeholder,.taskbar-restore-sprite-placeholder{width:18px;height:18px;border:1px solid rgba(8,60,156,.55);background:linear-gradient(180deg,#fff 0 30%,#78a8e8 0 100%);box-shadow:inset 0 0 0 1px #ffffff80}.taskbar-restore-button{position:fixed;z-index:6;left:8px;bottom:8px;display:grid;place-items:center;width:34px;min-width:34px;height:34px;min-height:34px;padding:0;background:#ece9d8f0}.taskbar-restore-button[hidden]{display:none}.start-sprite-placeholder{width:22px;height:22px;border:1px solid rgba(255,255,255,.78);background:conic-gradient(#27a6ff 0 25%,#35bd55 0 50%,#ffdf4d 0 75%,#f04d38 0 100%);box-shadow:inset 0 0 0 1px #00000029}.start-popover{position:absolute;left:8px;bottom:calc(100% + 8px);display:grid;gap:5px;width:min(320px,calc(100vw - 16px));padding:12px;border:2px outset #ffffff;background:#ece9d8fa;color:#111;font-size:12px;box-shadow:4px 4px #0000004d;opacity:0;pointer-events:none;transform:translateY(8px);transition:opacity .8s ease,transform .8s ease,visibility .8s ease;visibility:hidden}.start-popover.is-open{opacity:1;pointer-events:auto;transform:translateY(0);visibility:visible}.start-popover:after{content:"";position:absolute;left:34px;bottom:-9px;width:14px;height:14px;border-right:2px outset #ffffff;border-bottom:2px outset #ffffff;background:#ece9d8fa;transform:rotate(45deg)}.start-popover strong{color:#003a9f;font-size:14px}.start-popover a{color:#003a9f;font-weight:700}#stage-area{display:grid;grid-template-rows:auto auto;gap:10px;min-width:0;justify-items:center}#stage{position:relative;z-index:1;width:min(100%,calc((100dvh - 160px) * 16 / 9));aspect-ratio:16 / 9;padding:34px 6px 24px;border:2px solid #083c9c;border-radius:7px 7px 0 0;background:#ece9d8;box-shadow:inset 1px 1px #fff,inset -1px -1px #6f6f6f,0 22px 48px #00000061}#stage:before{content:"Drumagery Visual Instrument - Internet Explorer";position:absolute;top:3px;left:3px;right:3px;height:26px;padding:5px 78px 0 10px;border-radius:4px 4px 0 0;background:linear-gradient(180deg,#2d8cff,#0058d8 48%,#003a9f);color:#fff;font-size:12px;font-weight:700;line-height:1;overflow:hidden;pointer-events:none;text-shadow:1px 1px 0 rgba(0,0,0,.45);white-space:nowrap}#stage:after{content:"Ready";position:absolute;left:6px;right:6px;bottom:4px;height:16px;padding-left:6px;border:1px solid #b6b2a4;background:#f5f4ea;color:#333;font-size:11px;line-height:14px;pointer-events:none}#stage-window-controls{display:none}#stage canvas{display:block;width:100%;height:100%;border:2px inset #d4d0c8;background:#050607;touch-action:none}#fullscreen-exit{display:none}#stage-actions{display:grid;grid-template-columns:repeat(auto-fit,minmax(112px,1fr));gap:8px;width:min(100%,calc((100dvh - 160px) * 16 / 9));padding:8px;border:2px outset #ffffff;background:#ece9d8;box-shadow:4px 4px #00000038}#debug-toggle{position:fixed;z-index:4;top:max(6px,env(safe-area-inset-top));left:max(12px,env(safe-area-inset-left));min-width:118px;min-height:30px;padding:0 12px;border:2px outset #ffffff;border-radius:0;background:#ece9d8;color:#111;box-shadow:1px 1px #0000003d}.performance-edge-dock{display:none;position:absolute;z-index:6;right:max(10px,env(safe-area-inset-right));bottom:max(10px,env(safe-area-inset-bottom));justify-items:end;gap:8px;max-width:min(360px,calc(100vw - 20px));pointer-events:none}.performance-edge-dock button,.performance-edge-dock input,.performance-edge-dock label{pointer-events:auto}.dock-action-row{display:flex;justify-content:flex-end;gap:8px;pointer-events:none}.dock-menu-button{width:auto;min-width:72px;height:44px;min-height:44px;padding:0 12px;border:2px outset #ffffff;background:#ece9d8f2;font-size:12px;font-weight:700;line-height:1}.dock-reset-button{min-width:72px;min-height:44px;padding:0 12px;background:#ece9d8f2}.dock-popover{display:grid;gap:8px;width:min(360px,calc(100vw - 20px));max-height:min(72dvh,560px);overflow:auto;padding:10px;border:2px outset #ffffff;background:#ece9d8f5;box-shadow:4px 4px #00000047;pointer-events:none}.dock-categories{grid-template-columns:repeat(2,minmax(0,1fr))}.dock-categories button,.dock-play-grid button{min-height:42px;overflow-wrap:anywhere}.dock-panel-header{display:grid;grid-template-columns:80px 1fr;align-items:center;gap:8px;color:#003a9f;font-size:12px;font-weight:700;text-transform:uppercase}.dock-panel-header span{min-width:0;overflow:hidden;text-overflow:ellipsis;white-space:nowrap}.dock-slider{display:grid;grid-template-columns:82px 1fr 44px;align-items:center;gap:8px;min-height:38px;padding:7px 8px;border:1px inset #d4d0c8;background:#fff;font-size:12px}.dock-slider span{min-width:0;overflow:hidden;color:#111;text-overflow:ellipsis;white-space:nowrap}.dock-slider b{color:#003a9f;font-family:Cascadia Mono,Consolas,monospace;font-size:11px;font-weight:400;text-align:right}.dock-play-grid{display:grid;grid-template-columns:repeat(2,minmax(0,1fr));gap:6px}.reactive-mode-toggle{position:absolute;z-index:7;left:max(10px,env(safe-area-inset-left));bottom:max(10px,env(safe-area-inset-bottom));display:none;align-items:center;gap:7px;min-width:112px;min-height:38px;padding:0 10px;border:2px outset #ffffff;background:#ece9d8c7;color:#111;font-size:12px;font-weight:700;opacity:.42;transition:opacity .42s ease,background-color .42s ease,box-shadow .42s ease}#reactive-mode-action.is-active{border-style:inset;background:#dbeeff}.reactive-mode-toggle.is-reactive{background:#ece9d8f5;opacity:1;box-shadow:0 0 0 1px #2d8cff73,0 0 18px #2d8cff57}.reactive-mode-toggle span{margin:0}.reactive-array-sprite{display:grid;grid-template-columns:repeat(3,4px);grid-template-rows:repeat(3,4px);gap:2px;width:16px;height:16px}.reactive-array-sprite:before{content:"";width:4px;height:4px;background:#5f6f7e;box-shadow:6px 0 #5f6f7e,12px 0 #5f6f7e,0 6px #5f6f7e,6px 6px #2d8cff,12px 6px #5f6f7e,0 12px #5f6f7e,6px 12px #5f6f7e,12px 12px #5f6f7e;transition:background-color .42s ease,box-shadow .42s ease}.reactive-mode-toggle.is-reactive .reactive-array-sprite:before{background:#2d8cff;box-shadow:6px 0 #77e6ff,12px 0 #2d8cff,0 6px #77e6ff,6px 6px #fff,12px 6px #77e6ff,0 12px #2d8cff,6px 12px #77e6ff,12px 12px #2d8cff}#debug-panel{position:relative;z-index:2;width:100%;max-height:calc(100dvh - 70px);overflow:auto;padding:14px 14px 18px;border:2px outset #ffffff;border-radius:0;background:#ece9d8;color:#111;box-shadow:5px 5px #00000047;opacity:1;transform:translate(0);transition:opacity .16s ease,transform .16s ease,visibility .16s ease}.is-debug-hidden #debug-panel{visibility:hidden;pointer-events:none;opacity:0;transform:translate(16px)}.is-debug-hidden{grid-template-columns:minmax(0,1fr) 0}.is-debug-hidden #stage{width:min(100%,calc((100dvh - 160px) * 16 / 9))}.is-taskbar-hidden #desktop-taskbar,.is-mobile-grid-mode #desktop-taskbar,.is-stage-fullscreen-active #desktop-taskbar,.is-mobile-grid-mode .taskbar-restore-button,.is-stage-fullscreen-active .taskbar-restore-button{display:none}.debug-header{display:flex;align-items:flex-start;justify-content:space-between;gap:12px;margin-bottom:12px}.debug-title{margin:0;font-size:15px;font-weight:700;color:#111}.debug-kicker{margin:3px 0 0;color:#3d3d3d;font-size:11px;line-height:1.35}.debug-badge{flex:0 0 auto;padding:4px 7px;border:1px solid rgba(29,185,146,.38);border-radius:0;color:#003a9f;background:#fff;font-family:Cascadia Mono,Consolas,monospace;font-size:10px}.debug-section{margin-bottom:12px;padding-top:10px;border-top:1px solid #aca899}.debug-grid{display:grid;grid-template-columns:repeat(4,minmax(0,1fr));gap:6px}.debug-mode-toggle{width:100%;text-align:left}.debug-mode-toggle.is-active{border-style:inset;background:#dbeeff}.debug-readout{display:grid;grid-template-columns:1fr;gap:5px;margin:0;font-family:Cascadia Mono,Consolas,monospace;font-size:12px;color:#111}.debug-readout span{display:grid;grid-template-columns:74px 1fr;gap:8px;min-width:0;padding:5px 6px;border:1px inset #d4d0c8;border-radius:0;background:#fff;overflow-wrap:anywhere}.debug-readout b{color:#003a9f;font-weight:700;text-transform:uppercase}.debug-subtitle{margin:0 0 6px;font-size:11px;font-weight:700;color:#003a9f;letter-spacing:0;text-transform:uppercase}.midi-monitor{padding:8px;border:1px inset #d4d0c8;border-radius:0;background:#fff}.midi-table{display:grid;gap:3px;max-height:128px;overflow:auto}.midi-row,.midi-learned{font-family:Cascadia Mono,Consolas,monospace;font-size:11px;line-height:1.35;color:#111;overflow-wrap:anywhere}.midi-empty{color:#656565}.midi-learned{display:grid;gap:2px;margin-top:8px;color:#003a9f}.midi-slots{display:grid;grid-template-columns:repeat(2,minmax(0,1fr));gap:2px 8px}.midi-slot-group{display:grid;gap:2px;margin-top:6px}.midi-slot-title{color:#555;text-transform:uppercase}.midi-slot{min-width:0;overflow-wrap:anywhere}button{min-height:36px;border:2px outset #ffffff;border-radius:0;background:#ece9d8;color:#111;font:inherit;font-size:12px;cursor:pointer}button span{display:block;margin-bottom:2px;color:#003a9f;font-family:Cascadia Mono,Consolas,monospace;font-size:10px}button:active{transform:translateY(1px);border-style:inset}.debug-slider{display:grid;grid-template-columns:86px 1fr 44px;align-items:center;gap:8px;min-height:34px;margin-top:6px;padding:6px 8px;border:1px inset #d4d0c8;border-radius:0;background:#fff;font-size:12px}.debug-slider-label{min-width:0;overflow:hidden;color:#111;text-overflow:ellipsis;white-space:nowrap}.debug-slider-value{color:#003a9f;font-family:Cascadia Mono,Consolas,monospace;font-size:11px;text-align:right}input[type=range]{appearance:none;width:100%;height:18px;margin:0;background:transparent;cursor:pointer;touch-action:pan-x}input[type=range]::-webkit-slider-runnable-track{height:7px;border-radius:999px;background:linear-gradient(90deg,#2d8cff var(--slider-fill),#d4d0c8 0)}input[type=range]::-webkit-slider-thumb{appearance:none;width:18px;height:18px;margin-top:-5.5px;border:2px outset #ffffff;border-radius:0;background:#ece9d8;box-shadow:1px 1px #0003}input[type=range]::-moz-range-track{height:7px;border-radius:999px;background:#d4d0c8}input[type=range]::-moz-range-progress{height:7px;border-radius:999px;background:#2d8cff}input[type=range]::-moz-range-thumb{width:16px;height:16px;border:2px outset #ffffff;border-radius:0;background:#ece9d8}#stage:fullscreen{width:100vw;height:100vh;max-width:none;aspect-ratio:auto;padding:0;border:0;border-radius:0;background:#050607;box-shadow:none;overflow:hidden}#stage:fullscreen:before,#stage:fullscreen:after{display:none}#stage:fullscreen canvas{position:absolute;inset:0;z-index:1;width:100%;height:100%;border:0}#stage:fullscreen #fullscreen-exit{display:block;position:absolute;z-index:10;top:max(12px,env(safe-area-inset-top));right:max(12px,env(safe-area-inset-right));min-width:44px;min-height:36px;padding:0 10px;border:2px outset #ffffff;background:#ece9d8eb;color:#111;box-shadow:2px 2px #00000059}#stage:fullscreen .reactive-mode-toggle,#stage.is-stage-fullscreen .reactive-mode-toggle,.is-mobile-grid-mode .reactive-mode-toggle{display:inline-flex;z-index:12;left:max(10px,env(safe-area-inset-left));bottom:max(10px,env(safe-area-inset-bottom));min-width:44px}#stage:fullscreen .performance-edge-dock,#stage.is-stage-fullscreen .performance-edge-dock,.is-mobile-grid-mode .performance-edge-dock{display:grid;z-index:12}.is-mobile-grid-mode{grid-template-columns:1fr;grid-template-rows:minmax(0,1fr);align-items:center;justify-items:center;padding:max(12px,env(safe-area-inset-top)) max(12px,env(safe-area-inset-right)) max(12px,env(safe-area-inset-bottom)) max(12px,env(safe-area-inset-left));overflow:hidden}.is-mobile-grid-mode #stage-area{place-items:center;width:100%;height:100%;min-height:calc(100dvh - max(24px,env(safe-area-inset-top)) - max(24px,env(safe-area-inset-bottom)))}.is-mobile-grid-mode #stage{width:min(calc(100vw - 24px),calc((100dvh - 24px) * 16 / 9));height:min(calc(100dvh - 24px),calc((100vw - 24px)*.5625));max-width:none;aspect-ratio:auto;padding:0;border:2px solid rgba(236,233,216,.72);border-radius:4px;background:#050607;box-shadow:0 0 0 1px #083c9c80,0 18px 42px #0000005c;overflow:hidden}.is-mobile-grid-mode #stage:before,.is-mobile-grid-mode #stage:after,.is-mobile-grid-mode #debug-toggle,.is-mobile-grid-mode #debug-panel{display:none}.is-mobile-grid-mode #stage canvas{position:absolute;inset:0;z-index:1;width:100%;height:100%;border:0}.is-mobile-grid-mode #fullscreen-exit{display:block;position:absolute;z-index:14;top:max(8px,env(safe-area-inset-top));right:max(8px,env(safe-area-inset-right));min-width:54px;min-height:38px;background:#ece9d8eb}.is-mobile-grid-mode #stage-actions{position:fixed;z-index:13;top:max(8px,env(safe-area-inset-top));left:max(8px,env(safe-area-inset-left));display:flex;width:auto;padding:0;border:0;background:transparent;box-shadow:none}.is-mobile-grid-mode #stage-actions button{display:none}.is-mobile-grid-mode #stage-actions #mobile-grid-toggle,.is-mobile-grid-mode #stage-actions #fullscreen-toggle,.is-mobile-grid-mode #stage-actions #reactive-mode-action{display:block;min-width:72px;min-height:38px;background:#ece9d8eb}@media(max-width:720px),(max-height:520px){#debug-toggle{top:max(6px,env(safe-area-inset-top));left:max(8px,env(safe-area-inset-left));min-width:110px;min-height:32px}#app{grid-template-columns:1fr;grid-template-rows:auto minmax(0,1fr);gap:10px;padding:44px 8px 8px}#stage{width:100%;padding:30px 4px 20px}#stage-actions{grid-template-columns:repeat(auto-fit,minmax(110px,1fr));width:100%}#debug-panel{width:100%;max-height:42dvh;padding:10px 10px 14px}.is-debug-hidden{grid-template-rows:auto 0}.is-debug-hidden #debug-panel{transform:translateY(16px)}.debug-grid{grid-template-columns:repeat(4,minmax(54px,1fr))}.debug-slider{grid-template-columns:78px 1fr 42px}.midi-slots{grid-template-columns:1fr}}
