:root{--bg:#10151b;--surface:rgba(16, 24, 32, 0.88);--surface-strong:#17212b;--surface-soft:#24303d;--primary:#ff7a18;--primary-hover:#ff9550;--accent:#3cc1a1;--text:#f4eee5;--text-dim:#9da8b4;--border:rgba(255, 255, 255, 0.12);--success:#69d69e;--danger:#ff6a63;--shadow:0 20px 60px rgba(0, 0, 0, 0.28);--radius:18px;}*{margin:0;padding:0;box-sizing:border-box;}body{background:radial-gradient(circle at top left, rgba(255, 122, 24, 0.18), transparent 28%),
radial-gradient(circle at top right, rgba(60, 193, 161, 0.14), transparent 22%),
linear-gradient(180deg, #121920 0%, #0e1318 100%);color:var(--text);font-family:'Segoe UI', 'Microsoft YaHei UI', sans-serif;min-height:100vh;overflow-x:hidden;}.screen{min-height:100vh;}.hidden{display:none !important;}.hero-header{max-width:1280px;margin:0 auto;padding:2.5rem 1rem 1rem;display:grid;grid-template-columns:140px minmax(0, 1fr) auto;gap:1.5rem;align-items:end;}.hero-mark{font-size:0.85rem;letter-spacing:0.4rem;text-transform:uppercase;color:var(--accent);writing-mode:vertical-rl;justify-self:center;}.hero-copy h1{font-size:clamp(2.4rem, 5vw, 4.2rem);line-height:0.95;font-weight:900;letter-spacing:0.02em;margin-bottom:0.75rem;}.subtitle{color:var(--text-dim);max-width:760px;line-height:1.6;}.badge{display:inline-block;padding:0.35rem 0.7rem;background:rgba(255, 122, 24, 0.14);border:1px solid rgba(255, 122, 24, 0.35);border-radius:999px;font-size:0.8rem;color:var(--text);}.badge-muted{background:rgba(255, 255, 255, 0.06);border-color:var(--border);color:var(--text-dim);}.hero-badge-block{display:flex;gap:0.6rem;justify-self:end;}.menu-container{max-width:1280px;margin:0 auto;padding:1rem;display:grid;grid-template-columns:minmax(320px, 0.92fr) minmax(360px, 1.08fr);gap:1rem;align-items:start;}.card,
.panel-card{background:var(--surface);border:1px solid var(--border);border-radius:var(--radius);padding:1.25rem;box-shadow:var(--shadow);backdrop-filter:blur(18px);}.card h2,
.panel-card h2{font-size:1.2rem;margin-bottom:0.9rem;color:var(--primary);}.card-accent{background:linear-gradient(180deg, rgba(255, 122, 24, 0.08), rgba(16, 24, 32, 0.86)),
var(--surface);}#game-list-section,
.menu-container .card:last-child{grid-column:2;}.section-head{display:flex;justify-content:space-between;align-items:start;gap:1rem;margin-bottom:1rem;}.section-head-compact{margin-bottom:0.75rem;}.section-note,
.panel-note{color:var(--text-dim);line-height:1.55;font-size:0.92rem;}.panel-note-warn{color:#f5a623;font-size:0.85rem;}.drop-zone{border:2px dashed rgba(255, 255, 255, 0.16);border-radius:var(--radius);padding:2.4rem 2rem;text-align:center;transition:border-color 0.2s, background 0.2s;cursor:pointer;background:rgba(255, 255, 255, 0.02);}.drop-zone.drag-over,
.drop-zone.dragover{border-color:var(--primary);background:rgba(255, 122, 24, 0.08);}.drop-zone .small{color:var(--text-dim);font-size:0.85rem;margin:0.5rem 0 1rem;}.btn{display:inline-block;padding:0.6rem 1.5rem;border:none;border-radius:var(--radius);font-size:1rem;cursor:pointer;transition:background 0.2s, transform 0.1s;color:#fff;}.btn:active{transform:scale(0.97);}.btn-primary{background:var(--primary);color:#111;font-weight:700;}.btn-primary:hover{background:var(--primary-hover);}.btn-small{padding:0.3rem 0.8rem;font-size:0.85rem;background:var(--surface-soft);border:1px solid var(--border);color:var(--text);}.btn-small:hover{background:rgba(60, 193, 161, 0.2);}.btn-danger{border-color:rgba(220, 80, 80, 0.5) !important;color:#e06060 !important;}.btn-danger:hover{background:rgba(220, 80, 80, 0.2) !important;}.sl-actions{display:flex;gap:0.5rem;flex-wrap:wrap;margin-top:0.5rem;}.card-slot-state[data-state="none"]{color:var(--text-dim);font-style:italic;}.card-slot-state[data-state="blank"]{color:#8bc4f0;}.card-slot-state[data-state="loaded"]{color:#6de08e;}.rom-list ul{list-style:none;max-height:200px;overflow-y:auto;}.rom-list li{padding:0.4rem 0;border-bottom:1px solid var(--border);font-size:0.9rem;display:flex;justify-content:space-between;gap:1rem;}.rom-list .rom-size{color:var(--text-dim);font-size:0.8rem;}.search-input{width:100%;padding:0.6rem 1rem;background:rgba(0, 0, 0, 0.18);border:1px solid var(--border);border-radius:var(--radius);color:var(--text);font-size:0.95rem;margin-bottom:0.8rem;}.search-input:focus{outline:none;border-color:var(--primary);}.game-list-wrapper{max-height:400px;overflow-y:auto;border:1px solid var(--border);border-radius:var(--radius);background:rgba(0, 0, 0, 0.16);}.game-table{width:100%;border-collapse:collapse;font-size:0.9rem;}.game-table thead th{position:sticky;top:0;background:#1d2934;padding:0.6rem 0.8rem;text-align:left;font-weight:600;border-bottom:2px solid var(--border);z-index:1;}.game-table tbody tr{cursor:pointer;transition:background 0.15s;}.game-table tbody tr:hover{background:rgba(255, 255, 255, 0.05);}.game-table tbody tr.selected{background:rgba(60, 193, 161, 0.18);}.game-table td{padding:0.5rem 0.8rem;border-bottom:1px solid var(--border);}.status-ok{color:var(--success);font-weight:700;}.status-bad{color:var(--danger);font-weight:700;}.game-actions{margin-top:0.8rem;text-align:right;}.file-name-label{color:var(--primary);font-weight:600;margin-bottom:0.5rem;}.status-text{color:var(--text-dim);font-style:italic;}.keymap-editor{display:grid;gap:0.9rem;}.keymap-editor-compact{gap:0.7rem;}.keymap-group{border:1px solid var(--border);border-radius:8px;background:rgba(255, 255, 255, 0.03);}.keymap-group summary{list-style:none;cursor:pointer;padding:0.9rem 1rem;font-weight:700;letter-spacing:0.04em;text-transform:uppercase;color:var(--text);}.keymap-grid{display:grid;gap:0.5rem;padding:0 1rem 1rem;}.keymap-row{display:grid;grid-template-columns:minmax(140px, 1fr) minmax(120px, 180px);gap:0.75rem;align-items:center;}.keymap-action{color:var(--text);font-size:0.92rem;}.keymap-binding{width:100%;padding:0.7rem 0.9rem;border-radius:12px;border:1px solid var(--border);background:rgba(0, 0, 0, 0.22);color:var(--text);text-align:left;cursor:pointer;transition:border-color 0.15s, background 0.15s, transform 0.15s;}.keymap-binding:hover{border-color:rgba(255, 122, 24, 0.45);background:rgba(255, 122, 24, 0.08);}.keymap-binding.capture-active{border-color:var(--accent);background:rgba(60, 193, 161, 0.18);transform:translateY(-1px);}#game-screen{height:100vh;overflow:hidden;}.play-shell{display:grid;grid-template-columns:minmax(0, 1fr) 380px;gap:1rem;height:100vh;padding:1rem;box-sizing:border-box;overflow:hidden;}.play-stage,
.play-panel{min-height:0;}.play-stage{display:flex;flex-direction:column;gap:1rem;height:100%;min-height:0;overflow:hidden;}.play-panel{display:flex;flex-direction:column;gap:1rem;height:100%;min-height:0;overflow-y:auto;overflow-x:hidden;}.panel-card-fill{flex:1;min-height:0;overflow:auto;}#game-header{display:flex;justify-content:space-between;align-items:center;gap:1rem;padding:0.9rem 1rem;background:var(--surface);border:1px solid var(--border);border-radius:var(--radius);box-shadow:var(--shadow);}.game-heading{display:flex;flex-direction:column;min-width:0;}#game-title{font-weight:700;font-size:1.08rem;}.game-meta{color:var(--text-dim);font-size:0.88rem;}#fps-display{color:var(--accent);font-weight:700;white-space:nowrap;}.canvas-shell{flex:1;min-height:0;display:flex;justify-content:center;align-items:center;padding:1rem;background:rgba(0, 0, 0, 0.38);border-radius:var(--radius);border:1px solid var(--border);overflow:hidden;}.canvas-scroll{max-width:100%;max-height:100%;overflow:auto;padding:0.35rem;}#game-canvas{image-rendering:pixelated;image-rendering:crisp-edges;border:2px solid rgba(255, 255, 255, 0.14);display:block;background:#000;}.panel-grid{display:grid;grid-template-columns:repeat(2, minmax(0, 1fr));gap:0.75rem;margin-bottom:0.9rem;}.metric-block{padding:0.85rem;border-radius:14px;background:rgba(255, 255, 255, 0.04);border:1px solid var(--border);}.metric-label{display:block;color:var(--text-dim);font-size:0.82rem;margin-bottom:0.3rem;}.zoom-control{display:grid;gap:0.5rem;margin-bottom:0.75rem;}.zoom-control input{width:100%;}.card-slot-list{display:grid;gap:0.75rem;}.card-slot-row{border:1px solid var(--border);border-radius:14px;padding:0.85rem;background:rgba(255, 255, 255, 0.04);}.card-slot-header{display:flex;justify-content:space-between;gap:0.75rem;align-items:center;margin-bottom:0.75rem;}.card-slot-state{color:var(--text-dim);font-size:0.88rem;text-align:right;}.card-slot-actions{display:flex;gap:0.6rem;align-items:center;flex-wrap:wrap;}.card-slot-actions input[type="file"]{flex:1;min-width:180px;color:var(--text-dim);}.overlay{position:fixed;inset:0;background:rgba(0, 0, 0, 0.85);display:flex;align-items:center;justify-content:center;z-index:100;}.loading-content{text-align:center;}.spinner{width:40px;height:40px;border:3px solid var(--border);border-top-color:var(--primary);border-radius:50%;animation:spin 0.8s linear infinite;margin:0 auto 1rem;}@keyframes spin{to{transform:rotate(360deg);}}.progress-bar{width:300px;height:6px;background:var(--surface-strong);border-radius:3px;margin-top:1rem;overflow:hidden;}.progress-fill{height:100%;background:var(--primary);width:0%;transition:width 0.3s;}#virtual-gamepad{position:fixed;bottom:0;left:0;right:0;padding:1rem;display:flex;justify-content:space-between;align-items:flex-end;pointer-events:none;z-index:20;}#virtual-gamepad > *{pointer-events:auto;}#dpad{display:flex;flex-direction:column;align-items:center;gap:2px;}.dpad-row{display:flex;gap:2px;}.dpad-btn{width:50px;height:50px;background:rgba(0, 0, 0, 0.55);border:1px solid rgba(255, 255, 255, 0.25);border-radius:8px;color:var(--text);font-size:1.2rem;touch-action:none;user-select:none;-webkit-user-select:none;}.dpad-btn:active{background:rgba(255, 122, 24, 0.55);}#action-buttons{display:grid;grid-template-columns:repeat(3, 1fr);gap:4px;}.action-btn{width:48px;height:48px;background:rgba(255, 122, 24, 0.82);border:1px solid rgba(255, 122, 24, 0.6);border-radius:50%;color:#1a0e03;font-size:0.9rem;font-weight:700;touch-action:none;user-select:none;-webkit-user-select:none;}.action-btn:active{background:rgba(255, 122, 24, 0.7);}#system-buttons{position:absolute;bottom:1rem;left:50%;transform:translateX(-50%);display:flex;gap:0.5rem;}.sys-btn{padding:6px 16px;background:rgba(0, 0, 0, 0.58);border:1px solid rgba(255, 255, 255, 0.22);border-radius:20px;color:var(--text);font-size:0.75rem;touch-action:none;user-select:none;-webkit-user-select:none;}.sys-btn:active{background:rgba(255, 255, 255, 0.3);}footer{text-align:center;padding:2rem 1rem;color:var(--text-dim);}footer a{color:var(--primary);text-decoration:none;}@media (max-width:900px){.hero-header,
.menu-container,
.play-shell{grid-template-columns:1fr;}.hero-header{align-items:start;}.hero-mark{writing-mode:horizontal-tb;justify-self:start;}.hero-badge-block{justify-self:start;}#game-list-section,
.menu-container .card:last-child{grid-column:auto;}.canvas-scroll{max-height:none;}}@media (max-width:600px){.menu-container,
.play-shell{padding:0.75rem;}.keymap-row,
.panel-grid{grid-template-columns:1fr;}.section-head,
.card-slot-header,
#game-header{flex-direction:column;align-items:stretch;}}