:root{--lightningcss-light: ;--lightningcss-dark:initial;color-scheme:dark;font-synthesis:none;text-rendering:optimizelegibility;color:#f7f8fb;background:#07090d;font-family:Inter,ui-sans-serif,system-ui,-apple-system,BlinkMacSystemFont,Segoe UI,sans-serif}*{box-sizing:border-box}html,body,#root{min-height:100%;margin:0}body{min-width:320px;overflow-x:hidden}button,input,select{font:inherit}button,select,input{color:inherit}button{cursor:pointer}button:disabled{cursor:not-allowed;opacity:.42}a{color:inherit}::selection{background:#6874ff66}:focus-visible{outline-offset:3px;outline:2px solid #8d96ff}:root{--bg:#07090d;--panel:#10131a;--panel-2:#151923;--line:#ffffff17;--muted:#949baa;--primary:#7b84ff;--primary-2:#a66cff;--success:#61d99d;--warning:#ffbd66;--danger:#ff6e83}.app-shell{background:radial-gradient(circle at 18% -5%, #4850aa2e, transparent 34rem), radial-gradient(circle at 96% 40%, #5d2d8a1a, transparent 28rem), var(--bg);min-height:100vh}.app-header{z-index:40;border-bottom:1px solid var(--line);background:#0a0d12;justify-content:space-between;align-items:center;gap:16px;min-height:70px;padding:12px clamp(16px,3vw,42px);display:flex;position:sticky;top:0}.brand,.header-actions,.brand>div,.transport-bar,.card-heading,.offline-row,.settings-header{align-items:center;display:flex}.brand{gap:12px}.brand-icon{border-radius:11px;width:42px;height:42px;box-shadow:0 8px 30px #5b5bff40}.brand>div{flex-direction:column;align-items:flex-start;line-height:1.15}.brand strong{letter-spacing:.01em;font-size:1.02rem}.brand span{color:var(--muted);margin-top:4px;font-size:.75rem}.header-actions{justify-content:flex-end;gap:9px}button,select,input[type=number]{border:1px solid var(--line);background:#171b24;border-radius:10px}button{min-height:39px;padding:8px 13px;transition:border-color .16s,background .16s,transform .16s}button:hover:not(:disabled){background:#1e2330;border-color:#9da5ff80}button:active:not(:disabled){transform:translateY(1px)}.quiet-button{color:#cdd1db;background:0 0}.icon-button{width:40px;padding:0;font-size:1.35rem;line-height:1}.primary-button{background:linear-gradient(135deg, var(--primary), var(--primary-2));border:0;min-height:46px;padding:11px 19px;font-weight:750;box-shadow:0 12px 34px #745aff4d}.primary-button:hover:not(:disabled){background:linear-gradient(135deg,#9299ff,#b882ff)}.network-badge{border:1px solid var(--line);color:var(--muted);border-radius:999px;align-items:center;gap:6px;padding:7px 10px;font-size:.75rem;display:inline-flex}.network-badge:before{background:var(--muted);content:"";border-radius:50%;width:7px;height:7px}.network-badge.online:before{background:var(--success);box-shadow:0 0 12px #61d99db3}.network-badge.offline:before{background:var(--warning)}.workspace{grid-template-columns:minmax(0,1fr) minmax(270px,330px);gap:clamp(16px,2vw,26px);width:min(1560px,100%);margin:0 auto;padding:clamp(16px,2.2vw,34px);display:grid}.emulator-panel{min-width:0}.player-stage{--stage-ratio:4 / 3;width:100%;max-height:calc(100vh - 190px);aspect-ratio:var(--stage-ratio);background:#010203;border:1px solid #ffffff1c;border-radius:18px 18px 0 0;position:relative;overflow:hidden;box-shadow:0 28px 90px #00000070,inset 0 0 80px #3f46960d}.player-stage.aspect-16-9{--stage-ratio:16 / 9}.player-stage.aspect-stretch{aspect-ratio:auto;min-height:min(70vh,720px)}.player-stage canvas{object-fit:contain;background:#000;width:100%;height:100%;display:block}.player-stage.filter-pixelated canvas{image-rendering:pixelated}.player-stage.filter-smooth canvas{image-rendering:auto}.player-stage:fullscreen{aspect-ratio:auto;border:0;border-radius:0;width:100vw;height:100vh;max-height:none}.player-stage:fullscreen canvas{object-fit:contain}.player-overlay{z-index:3;text-align:center;background:radial-gradient(circle,#1e2234c2,#020305f5 72%),repeating-linear-gradient(0deg,#0000 0 2px,#ffffff04 2px 3px);flex-direction:column;justify-content:center;align-items:center;padding:clamp(24px,7vw,80px);display:flex;position:absolute;inset:0}.player-overlay h1{letter-spacing:-.035em;margin:15px 0 8px;font-size:clamp(1.65rem,4vw,3.2rem)}.player-overlay p{color:#a9afbc;max-width:560px;margin:0 0 22px;line-height:1.6}.player-overlay small{color:#747c8c;margin-top:12px}.status-orb{background:radial-gradient(circle at 35% 32%,#b8bdff,#706df6 34%,#3c2c88 72%);border:1px solid #939aff80;border-radius:17px;width:53px;height:53px;transform:rotate(12deg);box-shadow:0 0 40px #6e67ff61,inset 0 0 18px #ffffff3b}.status-orb.starting,.status-orb.loading{animation:1.2s ease-in-out infinite alternate orb-pulse}.status-orb.error{border-color:var(--danger);filter:hue-rotate(115deg)}@keyframes orb-pulse{to{opacity:.72;transform:rotate(102deg)scale(.86)}}.fps-counter{z-index:15;color:#d8ffeb;background:#030508a6;border:1px solid #ffffff21;border-radius:8px;padding:6px 9px;font:700 .75rem ui-monospace,SFMono-Regular,Consolas,monospace;position:absolute;top:12px;right:12px}.transport-bar{border:1px solid var(--line);background:#10131af2;border-top:0;border-radius:0 0 18px 18px;gap:8px;min-height:61px;padding:10px 12px;overflow-x:auto}.transport-bar button{white-space:nowrap;background:#151923}.transport-spacer{flex:1}.game-label{max-width:260px;color:var(--muted);text-overflow:ellipsis;white-space:nowrap;font-size:.8rem;overflow:hidden}.status-line,.error-banner{border:1px solid var(--line);color:var(--muted);border-radius:11px;margin-top:10px;padding:11px 14px;font-size:.82rem}.error-banner{color:#ffc4cd;background:#ff456214;border-color:#ff6e8347}.control-panel{flex-direction:column;gap:13px;display:flex}.panel-card{border:1px solid var(--line);background:linear-gradient(145deg,#141821f5,#0d1016f5);border-radius:15px;padding:18px;box-shadow:0 15px 45px #00000026}.compact-card{padding-bottom:14px}.card-heading{justify-content:space-between;gap:12px;margin-bottom:16px}.card-heading h2,.settings-header h2{margin:3px 0 0;font-size:1.05rem}.eyebrow{color:#858da0;letter-spacing:.14em;font-size:.66rem;font-weight:800}.ok-dot,.warn-dot{background:var(--success);border-radius:50%;width:9px;height:9px;box-shadow:0 0 13px #61d99d8c}.warn-dot{background:var(--warning);box-shadow:0 0 13px #ffbd6673}.field-label{color:var(--muted);margin-bottom:7px;font-size:.75rem;display:block}select,input[type=number]{min-height:39px;padding:7px 10px}.panel-card>select{width:100%;margin-bottom:10px}.button-grid{grid-template-columns:1fr 1fr;gap:7px;display:grid}.button-grid button,.wide-button{width:100%}.fine-print,.muted{color:var(--muted);margin:12px 0 0;font-size:.72rem;line-height:1.55}.controller-count{border:1px solid var(--line);color:var(--muted);border-radius:7px;padding:5px 8px;font:.7rem ui-monospace,monospace}.controller-list{color:#cfd4df;margin:0 0 12px;padding:0;font-size:.75rem;list-style:none}.controller-list li{text-overflow:ellipsis;white-space:nowrap;margin:7px 0;overflow:hidden}.controller-list li:first-letter{color:var(--success)}.offline-row{justify-content:space-between;gap:12px;margin-top:9px;font-size:.85rem}.offline-row span{color:var(--success)}.app-footer{color:#686f7c;gap:18px;width:min(1560px,100%);margin:0 auto;padding:3px clamp(16px,3vw,42px) 26px;font-size:.67rem;display:flex}.app-footer span:nth-child(2){text-align:center;flex:1}.app-footer a:hover{color:#c4c9d4}.settings-backdrop{z-index:100;background:#010204ad;justify-content:flex-end;display:flex;position:fixed;inset:0}.settings-drawer{border-left:1px solid var(--line);background:#0c0f15;width:min(520px,100%);height:100%;padding:22px;animation:.22s ease-out drawer-in;overflow-y:auto;box-shadow:-30px 0 90px #00000073}@keyframes drawer-in{0%{opacity:0;transform:translate(35px)}}.settings-header{justify-content:space-between;gap:12px;margin-bottom:20px}.settings-header h2{font-size:1.35rem}.settings-section{border-top:1px solid var(--line);padding:18px 0}.settings-section h3{margin:0 0 15px;font-size:.92rem}.settings-section>label:not(.toggle-row),.mapping-list label{color:#c5cad4;grid-template-columns:minmax(0,1fr) minmax(90px,auto);align-items:center;gap:12px;margin:11px 0;font-size:.78rem;display:grid}.settings-section select{min-width:140px}.settings-section input[type=range]{width:100%;accent-color:var(--primary);grid-column:1/-1}.toggle-row{color:#c5cad4;cursor:pointer;justify-content:space-between;align-items:center;gap:16px;min-height:38px;font-size:.78rem;display:flex;position:relative}.toggle-row input{opacity:0;pointer-events:none;position:absolute}.toggle-track{background:#292e3a;border-radius:999px;flex:none;width:37px;height:21px;transition:background .15s;position:relative}.toggle-track:after{content:"";background:#aeb4c1;border-radius:50%;width:15px;height:15px;transition:transform .15s,background .15s;position:absolute;top:3px;left:3px}.toggle-row input:checked+.toggle-track{background:#555fce}.toggle-row input:checked+.toggle-track:after{background:#fff;transform:translate(16px)}details{border:1px solid var(--line);border-radius:10px;margin:12px 0}summary{color:#cbd0da;cursor:pointer;padding:12px;font-size:.78rem}.mapping-list{padding:0 12px 12px}.mapping-list input[type=number]{justify-self:end;width:76px}.axis-mapping{border-top:1px solid #ffffff0e;padding-top:8px}.keyboard-help p{color:var(--muted);font-size:.75rem;line-height:1.7}.mouse-settings,.touch-settings{background:#ffffff05;border:1px solid #ffffff12;border-radius:10px;margin:8px 0 12px;padding:11px}.mouse-button-grid{gap:7px;display:grid}.player-stage canvas.touch-navigation{touch-action:none}.virtual-controller{--touch-opacity:.72;--touch-scale:1;z-index:10;pointer-events:none;-webkit-user-select:none;user-select:none;touch-action:none;position:absolute;inset:0}.touch-layout-toggle,.touch-button,.analog-stick{opacity:var(--touch-opacity)}.touch-layout-toggle{z-index:2;top:max(8px, env(safe-area-inset-top));pointer-events:auto;color:#ffffffdb;touch-action:manipulation;background:#07090fa3;border:1px solid #ffffff3d;border-radius:999px;width:auto;min-height:30px;padding:5px 12px;font-size:.64rem;font-weight:750;position:absolute;left:50%;transform:translate(-50%)}.touch-button,.analog-stick{pointer-events:auto;touch-action:none}.touch-button{color:#ffffffbd;background:#0a0d147a;border:1px solid #ffffff42;border-radius:50%;width:clamp(42px,7.5vw,68px);height:clamp(42px,7.5vw,68px);min-height:0;padding:0;font-weight:800;box-shadow:inset 0 0 18px #ffffff0a,0 4px 18px #0000002e}.touch-button:active{opacity:1;background:#6d75f58c;transform:scale(.9)}.dpad{aspect-ratio:1;width:clamp(130px,23vw,205px);transform:scale(var(--touch-scale));transform-origin:0 100%;position:absolute;bottom:9%;left:3.5%}.dpad .touch-button{border-radius:12px;width:38%;height:38%;position:absolute}.dpad-up{top:0;left:31%}.dpad-down{bottom:0;left:31%}.dpad-left{top:31%;left:0}.dpad-right{top:31%;right:0}.face-buttons{aspect-ratio:1;width:clamp(140px,24vw,215px);transform:scale(var(--touch-scale));transform-origin:100% 100%;position:absolute;bottom:9%;right:3.5%}.face-buttons .touch-button{width:38%;height:38%;position:absolute}.face-buttons .triangle{color:#6ef697e6;top:0;left:31%}.face-buttons .cross{color:#7ca9fff2;bottom:0;left:31%}.face-buttons .square{color:#ff80beeb;top:31%;left:0}.face-buttons .circle{color:#ff7474eb;top:31%;right:0}.shoulder-controls{transform:scale(var(--touch-scale));gap:7px;display:flex;position:absolute;top:3%}.shoulder-controls .touch-button{border-radius:999px;width:clamp(46px,8vw,75px);height:clamp(28px,4.5vw,40px);font-size:.68rem}.left-shoulders{transform-origin:0 0;left:3%}.right-shoulders{transform-origin:100% 0;right:3%}.center-controls{transform:translateX(-50%) scale(var(--touch-scale));gap:10px;display:flex;position:absolute;bottom:11%;left:50%}.center-controls .touch-button{text-transform:uppercase;border-radius:999px;width:clamp(48px,7vw,70px);height:29px;font-size:.55rem}.analog-controls{width:min(30%,280px);transform:translateX(-50%) scale(var(--touch-scale));transform-origin:bottom;justify-content:space-between;gap:12px;display:flex;position:absolute;bottom:2.5%;left:50%}.analog-control-group{justify-items:center;gap:3px;display:grid}.analog-control-group .stick-click{border-radius:999px;width:34px;height:20px;font-size:.55rem}.analog-stick{--stick-x:0%;--stick-y:0%;aspect-ratio:1;background:#07090d73;border:1px solid #fff3;border-radius:50%;width:clamp(54px,8vw,82px);position:relative}.analog-stick-knob{width:40%;height:40%;transform:translate(var(--stick-x), var(--stick-y));background:#e4e7ff8c;border-radius:50%;position:absolute;top:30%;left:30%;box-shadow:0 3px 10px #0000004d}.virtual-controller.menu-layout .shoulder-controls,.virtual-controller.menu-layout .analog-controls,.virtual-controller.menu-layout .face-buttons .triangle,.virtual-controller.menu-layout .face-buttons .square{display:none}.virtual-controller.menu-layout .face-buttons{width:clamp(112px,20vw,168px);bottom:7%}.virtual-controller.menu-layout .face-buttons .cross{bottom:8%;left:3%}.virtual-controller.menu-layout .face-buttons .circle{top:auto;bottom:8%;right:3%}.virtual-controller.menu-layout .dpad{bottom:7%}.virtual-controller.menu-layout .center-controls{bottom:4%}.visually-hidden{opacity:0;pointer-events:none;width:1px;height:1px;overflow:hidden;position:fixed!important}@media (hover:hover) and (pointer:fine){.touch-layout-toggle,.touch-button,.analog-stick{opacity:min(var(--touch-opacity), .72)}.touch-layout-toggle:hover,.touch-button:hover,.analog-stick:hover{opacity:var(--touch-opacity)}}@media (max-width:980px){.workspace{grid-template-columns:1fr}.control-panel{grid-template-columns:repeat(3,minmax(0,1fr));display:grid}.player-stage{max-height:none}.app-footer{flex-wrap:wrap}}@media (max-width:720px){.app-header{align-items:flex-start}.brand span,.network-badge,.header-actions .quiet-button:not(:last-of-type){display:none}.workspace{padding:10px}.player-stage,.transport-bar{border-radius:12px 12px 0 0}.transport-bar{border-radius:0 0 12px 12px}.transport-bar .game-label{display:none}.control-panel{grid-template-columns:1fr}.app-footer{flex-direction:column;gap:8px;padding-top:10px}.app-footer span:nth-child(2){text-align:left}.player-overlay{padding:22px}.player-overlay h1{font-size:1.6rem}}@media (max-width:500px){.brand-icon{width:36px;height:36px}.brand strong{font-size:.9rem}.header-actions{gap:5px}.header-actions button{padding-inline:9px}.transport-bar{min-height:55px}.transport-bar button{font-size:.72rem}.transport-bar button:nth-of-type(3){display:none}}@media (prefers-reduced-motion:reduce){*,:before,:after{scroll-behavior:auto!important;transition-duration:.01ms!important;animation-duration:.01ms!important;animation-iteration-count:1!important}}
