:root{--bg-primary: #0f172a;--bg-secondary: #1e293b;--bg-tertiary: #334155;--accent-color: #6366f1;--accent-color-glow: rgba(99, 102, 241, .4);--text-primary: #f8fafc;--text-secondary: #94a3b8;--border-color: rgba(255, 255, 255, .08);--glass-bg: rgba(30, 41, 59, .7);--glass-border: rgba(255, 255, 255, .05);--snes-grey: #b2b2b2;--snes-dark-grey: #838383;--snes-purple-light: #b5b6e4;--snes-purple-dark: #7a7cb5;--snes-blue: #3b82f6;--snes-green: #22c55e;--snes-yellow: #eab308;--snes-red: #ef4444}*{box-sizing:border-box;margin:0;padding:0}body{font-family:Outfit,sans-serif;background-color:var(--bg-primary);color:var(--text-primary);min-height:100vh;display:flex;justify-content:center;align-items:center;overflow-x:hidden}#app{width:100%;max-width:540px;padding:1.5rem 1.25rem;display:flex;flex-direction:column;gap:1.25rem}.app-header{text-align:center;margin-bottom:.5rem}.logo-area{display:flex;align-items:center;justify-content:center;gap:.75rem}.badge{background:linear-gradient(135deg,#4f46e5,#818cf8);color:#fff;padding:.2rem .6rem;font-size:.75rem;font-weight:800;border-radius:4px;letter-spacing:.05em;text-shadow:0 1px 2px rgba(0,0,0,.2)}.app-header h1{font-size:2.25rem;font-weight:800;letter-spacing:-.025em;background:linear-gradient(to right,#f8fafc,#cbd5e1);-webkit-background-clip:text;-webkit-text-fill-color:transparent}.subtitle{color:var(--text-secondary);font-size:.95rem;margin-top:.4rem}.main-layout{display:flex;flex-direction:column;gap:1.25rem;width:100%}.game-section{display:flex;flex-direction:column;gap:1.25rem}.canvas-wrapper{position:relative;width:100%;aspect-ratio:256 / 224;border-radius:12px;overflow:hidden;border:1px solid var(--border-color);background-color:#000;box-shadow:0 20px 25px -5px #00000080,0 10px 10px -5px #0006;touch-action:none}.minimap-overlay{position:absolute;top:10px;right:10px;width:84px;height:84px;background-color:#0f172aa6;-webkit-backdrop-filter:blur(4px);backdrop-filter:blur(4px);border:1.5px solid rgba(255,255,255,.1);border-radius:8px;overflow:hidden;box-shadow:0 4px 6px -1px #0006,0 2px 4px -1px #0006;z-index:20}#minimapCanvas{width:100%;height:100%;display:block}#gameCanvas{width:100%;height:100%;display:block;image-rendering:-moz-crisp-edges;image-rendering:-webkit-crisp-edges;image-rendering:pixelated;image-rendering:crisp-edges;touch-action:none}.scanlines{pointer-events:none;position:absolute;top:0;left:0;width:100%;height:100%;background:linear-gradient(#12101000 50%,#00000026 50%);background-size:100% 4px;z-index:10}.controller-card,.keyboard-card{background-color:var(--glass-bg);border:1px solid var(--glass-border);-webkit-backdrop-filter:blur(10px);backdrop-filter:blur(10px);border-radius:12px;padding:1.25rem;box-shadow:0 10px 15px -3px #0000004d}.controller-card h2,.keyboard-card h2{font-size:1.1rem;font-weight:600;color:var(--text-primary);margin-bottom:1rem;border-left:3px solid var(--accent-color);padding-left:.5rem;line-height:1}.snes-controller{position:relative;width:100%;max-width:380px;margin:0 auto;aspect-ratio:2.2 / 1;padding-top:10px}.shoulder{position:absolute;top:0;width:60px;height:12px;background-color:#cfcfcf;border-radius:4px 4px 0 0;text-align:center;font-size:8px;font-weight:800;line-height:12px;color:#888;border:1px solid #9c9c9c;transition:all .1s ease}.shoulder.L{left:20px;border-top-left-radius:10px}.shoulder.R{right:20px;border-top-right-radius:10px}.shoulder.active{background-color:#888;color:#fff;height:9px;top:3px}.controller-body{position:absolute;top:10px;left:0;width:100%;bottom:0;background-color:var(--snes-grey);border-radius:40px;border:4px solid var(--snes-dark-grey);box-shadow:inset 0 3px 5px #fff6,0 5px 10px #0006;display:flex;align-items:center;justify-content:space-between;padding:0 20px;overflow:hidden}.dpad-container{width:76px;height:76px;position:relative}.dpad{position:absolute;top:50%;left:50%;transform:translate(-50%,-50%);width:72px;height:72px}.dpad-btn{background-color:#333;position:absolute;border-radius:2px;box-shadow:0 2px 2px #0000004d;transition:background-color .1s}.dpad-btn.up{top:0;left:24px;width:24px;height:28px;border-bottom:0;border-radius:4px 4px 0 0}.dpad-btn.down{bottom:0;left:24px;width:24px;height:28px;border-top:0;border-radius:0 0 4px 4px}.dpad-btn.left{left:0;top:24px;width:28px;height:24px;border-right:0;border-radius:4px 0 0 4px}.dpad-btn.right{right:0;top:24px;width:28px;height:24px;border-left:0;border-radius:0 4px 4px 0}.dpad-center{position:absolute;top:24px;left:24px;width:24px;height:24px;background-color:#333}.dpad-btn.active,.dpad-center.active{background-color:#777}.center-buttons{display:flex;gap:15px;transform:rotate(-25deg);margin-top:15px}.pill-container{display:flex;flex-direction:column;align-items:center;gap:4px}.pill-button{width:26px;height:8px;background-color:#7a7a7a;border-radius:4px;border:1px solid #5a5a5a;box-shadow:inset 0 -1px 2px #0000004d;transition:background-color .1s}.pill-button.active{background-color:#fff;box-shadow:0 0 8px #fff}.pill-label{font-size:6px;font-weight:800;color:#666;letter-spacing:.05em}.action-buttons{position:relative;width:96px;height:96px;background-color:#9c9c9c;border-radius:50%;transform:rotate(-25deg);border:2px solid #888;box-shadow:inset 0 2px 4px #0003}.button-wrapper{position:absolute;width:24px;height:24px}.button-wrapper.x{top:6px;left:36px}.button-wrapper.y{top:36px;left:6px}.button-wrapper.b{top:66px;left:36px}.button-wrapper.a{top:36px;left:66px}.round-button{width:100%;height:100%;border-radius:50%;display:flex;align-items:center;justify-content:center;font-size:8px;font-weight:800;color:#ffffffb3;box-shadow:0 3px 3px #0000004d,inset 0 1px 2px #fff3;transition:all .1s ease;cursor:pointer;transform:rotate(25deg)}.round-button.x{background-color:var(--snes-blue);border:1.5px solid #1e3a8a}.round-button.y{background-color:var(--snes-green);border:1.5px solid #064e3b}.round-button.b{background-color:var(--snes-yellow);border:1.5px solid #713f12;color:#555}.round-button.a{background-color:var(--snes-red);border:1.5px solid #7f1d1d}.round-button.active{transform:scale(.9) rotate(25deg);box-shadow:0 1px 1px #0003;filter:brightness(1.3)}.keyboard-grid{display:flex;flex-direction:column;gap:.5rem}.key-row{display:flex;justify-content:space-between;align-items:center;padding:.4rem 0;border-bottom:1px solid rgba(255,255,255,.04)}.key-row:last-child{border-bottom:none}.key-bind{font-family:Share Tech Mono,monospace;background-color:var(--bg-tertiary);padding:.2rem .5rem;border-radius:4px;font-size:.8rem;color:var(--text-primary);border:1px solid rgba(255,255,255,.05)}.key-desc{font-size:.85rem;color:var(--text-secondary)}.gamepad-alert{margin-top:1rem;background-color:#6366f11a;border:1px dashed rgba(99,102,241,.3);border-radius:8px;padding:.6rem .8rem;display:flex;align-items:center;gap:.5rem;color:#a5b4fc;font-size:.75rem}.gamepad-alert svg{flex-shrink:0}.driver-selector-card{background-color:var(--glass-bg);border:1px solid var(--glass-border);-webkit-backdrop-filter:blur(10px);backdrop-filter:blur(10px);border-radius:12px;padding:1.25rem;box-shadow:0 10px 15px -3px #0000004d}.card-header-row{display:flex;justify-content:space-between;align-items:center;margin-bottom:1rem;width:100%}.card-header-row h2{font-size:1.1rem;font-weight:600;color:var(--text-primary);border-left:3px solid var(--accent-color);padding-left:.5rem;line-height:1;margin-bottom:0}.hud-button{font-family:Outfit,sans-serif;font-size:.85rem;font-weight:600;color:var(--text-primary);background:#ffffff0d;border:1px solid rgba(255,255,255,.1);padding:.4rem .8rem;border-radius:6px;cursor:pointer;transition:all .2s cubic-bezier(.4,0,.2,1);letter-spacing:.02em}.hud-button:hover{background:#6366f126;border-color:var(--accent-color);box-shadow:0 0 10px var(--accent-color-glow);transform:translateY(-1px)}.hud-button:active{transform:translateY(0)}.driver-grid{display:flex;flex-wrap:wrap;gap:.75rem;max-height:180px;overflow-y:auto;scrollbar-width:thin;scrollbar-color:var(--bg-tertiary) transparent;transition:max-height .3s ease,opacity .3s ease,padding .3s ease,margin .3s ease;padding:.25rem .25rem .5rem}.driver-grid::-webkit-scrollbar{width:6px}.driver-grid::-webkit-scrollbar-track{background:transparent}.driver-grid::-webkit-scrollbar-thumb{background:var(--bg-tertiary);border-radius:3px}.driver-option{background-color:#ffffff08;border:1px solid var(--glass-border);border-radius:8px;padding:.4rem;cursor:pointer;transition:all .2s cubic-bezier(.4,0,.2,1);display:flex;align-items:center;justify-content:center}.driver-option:hover{background-color:#ffffff12;border-color:#6366f166;transform:translateY(-2px)}.driver-option.active{background-color:#6366f126;border-color:var(--accent-color);box-shadow:0 0 12px var(--accent-color-glow)}.driver-preview-canvas{width:54px;height:54px;image-rendering:-moz-crisp-edges;image-rendering:-webkit-crisp-edges;image-rendering:pixelated;image-rendering:crisp-edges;margin:0;background-color:#00000040;border-radius:6px;border:1px solid rgba(255,255,255,.05)}.controls-dialog{border:none;background:transparent;padding:0;margin:auto;outline:none;max-width:420px;width:calc(100% - 2rem);box-shadow:0 25px 50px -12px #00000080;border-radius:16px;overflow:hidden}.controls-dialog::backdrop{background-color:#0f172ab3;-webkit-backdrop-filter:blur(8px);backdrop-filter:blur(8px);transition:backdrop-filter .3s ease}.dialog-content{background-color:var(--bg-secondary);border:1px solid var(--border-color);border-radius:16px;display:flex;flex-direction:column;overflow:hidden}.dialog-header{display:flex;justify-content:space-between;align-items:center;padding:1.25rem 1.5rem;border-bottom:1px solid var(--border-color);background-color:#ffffff05}.dialog-header h2{font-size:1.15rem;font-weight:700;color:var(--text-primary)}.close-btn{background:transparent;border:none;color:var(--text-secondary);font-size:1.5rem;cursor:pointer;line-height:1;padding:.2rem;transition:color .15s ease}.close-btn:hover{color:var(--snes-red)}.dialog-body{padding:1.5rem;display:flex;flex-direction:column;gap:1.25rem;max-height:70vh;overflow-y:auto;scrollbar-width:thin;scrollbar-color:var(--bg-tertiary) transparent}.dialog-body::-webkit-scrollbar{width:6px}.dialog-body::-webkit-scrollbar-track{background:transparent}.dialog-body::-webkit-scrollbar-thumb{background:var(--bg-tertiary);border-radius:3px}.add-driver-option{border:2px dashed rgba(255,255,255,.15);background-color:#ffffff03!important;min-width:64px;min-height:64px;display:flex;align-items:center;justify-content:center}.add-driver-option:hover{border-color:var(--accent-color);background-color:#6366f10d!important;box-shadow:0 0 10px var(--accent-color-glow)}.plus-icon{font-size:1.75rem;font-weight:600;color:var(--text-secondary);line-height:1;transition:color .2s ease}.add-driver-option:hover .plus-icon{color:var(--accent-color)}.creator-step{display:flex;flex-direction:column;gap:.5rem}.creator-step label{font-size:.8rem;font-weight:600;color:var(--text-secondary);text-transform:uppercase;letter-spacing:.05em}.creator-input,.creator-select{width:100%;padding:.6rem .8rem;background-color:var(--bg-tertiary);border:1px solid var(--border-color);border-radius:6px;color:var(--text-primary);font-family:Outfit,sans-serif;font-size:.9rem;outline:none;transition:border-color .2s ease}.creator-input:focus,.creator-select:focus{border-color:var(--accent-color);box-shadow:0 0 0 2px #6366f133}.photo-source-toggle{display:flex;gap:.5rem;margin-bottom:.25rem}.photo-source-toggle .hud-button.active{background:var(--accent-color);border-color:var(--accent-color);box-shadow:0 0 10px var(--accent-color-glow)}.source-section{background:#00000026;border-radius:8px;padding:.75rem;border:1px solid rgba(255,255,255,.03)}.source-section.hidden{display:none!important}.creator-file-input{width:100%;font-size:.85rem;color:var(--text-secondary)}.webcam-wrapper{position:relative;width:160px;height:160px;margin:0 auto .75rem;border-radius:50%;overflow:hidden;border:2px solid rgba(255,255,255,.1);background-color:#000}#webcamVideo{width:100%;height:100%;object-fit:cover}.webcam-status{text-align:center;font-size:.75rem;color:var(--text-secondary);margin-top:.4rem}.photo-preview-container{display:flex;flex-direction:column;align-items:center;gap:.5rem;margin-top:.5rem;padding-top:.5rem;border-top:1px dashed rgba(255,255,255,.08)}.preview-label{font-size:.75rem;color:var(--text-secondary);align-self:flex-start}#photoPreview{width:90px;height:90px;border-radius:50%;object-fit:cover;border:2px solid var(--accent-color);box-shadow:0 0 10px var(--accent-color-glow)}.photo-preview-container.hidden{display:none!important}.generate-btn{font-family:Outfit,sans-serif;font-size:.95rem;font-weight:700;color:#fff;background:linear-gradient(135deg,#4f46e5,#6366f1);border:none;padding:.7rem 1rem;border-radius:8px;cursor:pointer;transition:all .2s ease;width:100%;box-shadow:0 4px 12px #6366f140;margin-top:.5rem}.generate-btn:hover:not(:disabled){background:linear-gradient(135deg,#4338ca,#4f46e5);box-shadow:0 6px 16px #6366f166;transform:translateY(-1px)}.generate-btn:active:not(:disabled){transform:translateY(0)}.generate-btn:disabled{background:var(--bg-tertiary);color:var(--text-secondary);cursor:not-allowed;box-shadow:none;border:1px solid rgba(255,255,255,.03)}.creation-status{background-color:#0c101a;border:1px solid rgba(255,255,255,.05);border-radius:8px;padding:.8rem 1rem;font-family:Share Tech Mono,monospace;font-size:.8rem;color:var(--text-secondary);margin-top:.5rem}.creation-status.hidden{display:none!important}.status-title{font-weight:600;text-transform:uppercase;color:var(--text-primary);margin-bottom:.5rem;font-size:.85rem;border-bottom:1px solid rgba(255,255,255,.05);padding-bottom:.25rem}.status-steps{list-style:none;display:flex;flex-direction:column;gap:.4rem}.status-step{display:flex;align-items:center;gap:.5rem}.status-step:before{content:"○";color:var(--text-secondary)}.status-step.active{color:var(--accent-color)}.status-step.active:before{content:"●";color:var(--accent-color);animation:pulse 1s infinite alternate}.status-step.completed{color:var(--snes-green)}.status-step.completed:before{content:"✓";color:var(--snes-green)}.status-error{margin-top:.5rem;color:var(--snes-red);background:#ef44441a;border:1px solid rgba(239,68,68,.2);padding:.4rem;border-radius:4px;font-size:.75rem}.status-error.hidden{display:none!important}@keyframes pulse{0%{opacity:.5}to{opacity:1}}.color-swatches{display:flex;flex-wrap:wrap;gap:.65rem;margin-top:.25rem}.color-swatch{width:30px;height:30px;border-radius:50%;border:2px solid rgba(255,255,255,.15);cursor:pointer;outline:none;transition:all .2s cubic-bezier(.4,0,.2,1);box-shadow:0 2px 4px #0000004d}.color-swatch:hover{transform:scale(1.15);border-color:#ffffff80}.color-swatch.active{border-color:var(--accent-color);box-shadow:0 0 10px var(--accent-color-glow);transform:scale(1.1)}.driver-option{position:relative}.delete-driver-btn{position:absolute;top:-4px;right:-4px;width:18px;height:18px;background-color:var(--snes-red);color:#fff;border-radius:50%;border:1px solid rgba(255,255,255,.2);display:flex;align-items:center;justify-content:center;font-size:11px;font-weight:800;cursor:pointer;opacity:0;transition:opacity .2s ease,transform .2s ease,background-color .2s ease;z-index:10;line-height:1}.driver-option:hover .delete-driver-btn{opacity:1}.delete-driver-btn:hover{transform:scale(1.2);background-color:#f33;box-shadow:0 0 6px #ff000080}.title-with-collapse{display:flex;align-items:center;gap:.5rem;cursor:pointer;-webkit-user-select:none;user-select:none}.chevron-icon{font-size:.75rem;color:var(--text-secondary);transition:transform .3s ease;display:inline-block}.driver-selector-card{transition:padding .3s ease,border-radius .3s ease}.driver-selector-card.collapsed{padding-bottom:.75rem}.driver-selector-card.collapsed .driver-grid{max-height:0;padding-top:0;padding-bottom:0;overflow:hidden;opacity:0;pointer-events:none;margin-top:0}.driver-selector-card.collapsed .chevron-icon{transform:rotate(-90deg)}.touch-controls-area{display:none;width:100%;aspect-ratio:256 / 100;background-color:var(--glass-bg);border:1px solid var(--glass-border);-webkit-backdrop-filter:blur(10px);backdrop-filter:blur(10px);border-radius:12px;box-shadow:0 10px 15px -3px #0000004d;overflow:hidden;touch-action:none}#touchCanvas{width:100%;height:100%;display:block;touch-action:none}@media (max-width: 600px){body{align-items:flex-start}#app{padding-top:max(40px,calc(env(safe-area-inset-top) + 15px));padding-bottom:1.5rem;padding-left:1.25rem;padding-right:1.25rem;gap:1rem}.touch-controls-area{display:block}}
