:root{--bg: #0e1014;--surface: #171a21;--surface-2: #1f232c;--line: #2b303b;--text: #e6e8ee;--muted: #939aab;--accent: #f0a24b;--danger: #ff6b6b;--radius: 10px;color-scheme:dark}*{box-sizing:border-box}html{background:var(--bg)}body{margin:0;min-height:100vh;min-height:100dvh;background:var(--bg);color:var(--text);font:15px/1.5 ui-sans-serif,system-ui,-apple-system,Segoe UI,sans-serif}h1,h2,h3{margin:0;line-height:1.25}code{font-family:ui-monospace,SFMono-Regular,Menlo,monospace;font-size:.9em}p{margin:0 0 .5rem}.chip{-webkit-appearance:none;-moz-appearance:none;appearance:none;border:1px solid var(--line);background:var(--surface-2);color:var(--text);border-radius:999px;padding:.35rem .85rem;font:inherit;font-size:.875rem;cursor:pointer;white-space:nowrap}.chip:hover:not(:disabled){border-color:var(--accent);color:var(--accent)}.chip:disabled{opacity:.4;cursor:not-allowed}.chip-active{background:var(--accent);border-color:var(--accent);color:#17120a;font-weight:600}.chip-quiet{background:transparent;color:var(--muted)}input[type=search]{background:var(--surface-2);border:1px solid var(--line);border-radius:var(--radius);color:var(--text);padding:.5rem .85rem;font:inherit;min-width:16rem}input[type=search]:focus{outline:2px solid var(--accent);outline-offset:1px}.badge{font-size:.7rem;font-weight:600;letter-spacing:.03em;text-transform:uppercase;padding:.15rem .45rem;border-radius:4px;background:var(--surface-2);border:1px solid var(--line);color:var(--muted)}.badge-dos{color:#7fd1a6;border-color:#2f5c46}.badge-win31{color:#8fb8f0;border-color:#2f4a6b}.badge-win9x{color:#d3a0f0;border-color:#503069}.hint{color:var(--muted);font-size:.85rem}.isolation-warning{display:flex;gap:1rem;align-items:center;justify-content:space-between;background:#3a2a12;border-bottom:1px solid #5c421c;padding:.5rem 1rem;font-size:.85rem}.library{max-width:1200px;margin:0 auto;padding:2rem 1.5rem 4rem}.library-header{display:flex;flex-wrap:wrap;gap:1rem;align-items:flex-end;justify-content:space-between;margin-bottom:2rem}.library-header h1{font-size:1.75rem;letter-spacing:-.01em}.subtitle{color:var(--muted);margin:.25rem 0 0}.library-controls{display:flex;flex-wrap:wrap;gap:.5rem;align-items:center}.filters{display:flex;gap:.35rem}.grid{display:grid;grid-template-columns:repeat(auto-fill,minmax(180px,1fr));gap:1rem}.card{-webkit-appearance:none;-moz-appearance:none;appearance:none;text-align:left;padding:0;background:var(--surface);border:1px solid var(--line);border-radius:var(--radius);overflow:hidden;cursor:pointer;color:inherit;font:inherit;transition:border-color .12s,transform .12s}.card:hover{border-color:var(--accent);transform:translateY(-2px)}.card:focus-visible{outline:2px solid var(--accent);outline-offset:2px}.card-art{position:relative;aspect-ratio:4 / 3;background:var(--surface-2);display:grid;place-items:center;overflow:hidden}.card-art-blur{position:absolute;top:0;right:0;bottom:0;left:0;background-size:cover;background-position:center;filter:blur(18px) saturate(1.3);opacity:.45;transform:scale(1.2)}.card-art-img{position:relative;width:100%;height:100%;object-fit:contain;image-rendering:pixelated}.card-art-fallback{display:grid;place-items:center;align-content:center;gap:.4rem;width:100%;height:100%;padding-bottom:1.75rem;background:radial-gradient(120% 90% at 50% 0%,rgba(255,255,255,.06),transparent 70%),repeating-linear-gradient(135deg,transparent 0 6px,rgba(255,255,255,.02) 6px 12px)}.card-art-initials{font-size:1.9rem;font-weight:700;letter-spacing:.05em;color:var(--muted);opacity:.5}.card-art-hint{font-size:.65rem;text-transform:uppercase;letter-spacing:.08em;color:var(--muted);opacity:.45}.card-art:after{content:"";position:absolute;inset:auto 0 0 0;height:3rem;background:linear-gradient(to top,rgba(14,16,20,.75),transparent);pointer-events:none}.card-art .badge{position:absolute;bottom:.5rem;right:.5rem;z-index:1;background:#0e1014d9;-webkit-backdrop-filter:blur(4px);backdrop-filter:blur(4px)}.card-body{padding:.75rem}.card-body h3{font-size:.95rem}.card-meta{color:var(--muted);font-size:.8rem;margin:.25rem 0 0}.empty{color:var(--muted);text-align:center;padding:3rem 1rem}.problems{background:#35191c;border:1px solid #6b2b31;border-radius:var(--radius);padding:.85rem 1rem;margin-bottom:1.5rem;font-size:.875rem}.problems ul{margin:.5rem 0 0;padding-left:1.1rem}.problems li{margin-bottom:.25rem}.player{display:grid;grid-template-columns:minmax(0,1fr) 320px;grid-template-rows:auto minmax(0,1fr);grid-template-areas:"bar bar" "stage side";height:100vh;height:100dvh}.player-bar{grid-area:bar;display:flex;align-items:center;gap:1rem;padding:.6rem 1rem;border-bottom:1px solid var(--line);background:var(--surface)}.player-title{display:flex;align-items:center;gap:.6rem;min-width:0}.player-title strong{overflow:hidden;text-overflow:ellipsis;white-space:nowrap}.player-actions{margin-left:auto;display:flex;align-items:center;gap:.5rem}.player-status{color:var(--accent);font-size:.85rem}.stage{grid-area:stage;position:relative;background:#000;min-width:0;min-height:0}.screen{width:100%;height:100%}.screen>.jsdos-rso{width:100%;height:100%}.v86-screen{width:100%;height:100%;display:grid;place-items:center}.v86-text{white-space:pre;font:14px/14px ui-monospace,SFMono-Regular,Menlo,monospace;color:#ccc}.v86-canvas{max-width:100%;max-height:100%;image-rendering:pixelated}.overlay{position:absolute;top:0;right:0;bottom:0;left:0;display:grid;place-items:center;background:#0e1014e6;-webkit-backdrop-filter:blur(2px);backdrop-filter:blur(2px)}.overlay-card{width:min(420px,85%);text-align:center}.overlay-message{font-size:1rem;margin-bottom:.75rem}.overlay-detail{color:var(--muted);font-size:.8rem;margin-top:.5rem}.overlay-error h2{color:var(--danger);margin-bottom:.5rem;font-size:1.1rem}.progress{height:6px;background:var(--surface-2);border-radius:999px;overflow:hidden}.progress-bar{height:100%;background:var(--accent);transition:width .15s linear}.progress-indeterminate{width:35%;animation:slide 1.1s ease-in-out infinite}@keyframes slide{0%{margin-left:-35%}to{margin-left:100%}}.player-side{grid-area:side;border-left:1px solid var(--line);background:var(--surface);padding:1rem;overflow-y:auto}.player-side section{margin-bottom:1.75rem}.player-side h2{font-size:.8rem;text-transform:uppercase;letter-spacing:.05em;color:var(--muted);margin-bottom:.6rem}.notes{white-space:pre-wrap}.slots{list-style:none;margin:0;padding:0;display:grid;gap:.5rem}.slots li{background:var(--surface-2);border:1px solid var(--line);border-radius:var(--radius);padding:.6rem}.slot-info{display:flex;justify-content:space-between;gap:.5rem;font-size:.8rem;margin-bottom:.5rem}.slot-info span{color:var(--muted);text-align:right}.slot-actions{display:flex;gap:.35rem}.slot-actions .chip{flex:1;padding:.25rem .4rem;font-size:.8rem}@media(max-width:900px){.player{grid-template-columns:minmax(0,1fr);grid-template-areas:"bar" "stage" "side";grid-template-rows:auto auto auto;height:auto}.stage{aspect-ratio:4 / 3}.player-side{border-left:none;border-top:1px solid var(--line)}}.cover-row{display:flex;gap:.75rem;align-items:flex-start}.cover-preview{flex:0 0 84px;aspect-ratio:4 / 3;border:1px solid var(--line);border-radius:6px;overflow:hidden;background:var(--surface-2);display:grid;place-items:center}.cover-preview img{width:100%;height:100%;object-fit:cover;image-rendering:pixelated}.cover-preview span{font-size:.7rem;color:var(--muted)}.cover-actions{display:flex;flex-direction:column;gap:.35rem;flex:1}.cover-actions .chip{width:100%}.login{min-height:100vh;min-height:100dvh;display:grid;place-items:center;padding:1.5rem}.login-card{width:min(360px,100%);display:flex;flex-direction:column;gap:.75rem;background:var(--surface);border:1px solid var(--line);border-radius:var(--radius);padding:1.75rem}.login-card h1{font-size:1.5rem}.login-card .subtitle{margin-bottom:.5rem}.login-card label{display:flex;flex-direction:column;gap:.3rem;font-size:.85rem;color:var(--muted)}.login-card input{background:var(--surface-2);border:1px solid var(--line);border-radius:var(--radius);color:var(--text);padding:.5rem .75rem;font:inherit}.login-card input:focus{outline:2px solid var(--accent);outline-offset:1px}.login-card button[type=submit]{margin-top:.5rem;padding:.5rem}.login-error{color:var(--danger);font-size:.85rem;margin:0}.linkish{-webkit-appearance:none;-moz-appearance:none;appearance:none;background:none;border:none;padding:0;font:inherit;font-size:inherit;color:var(--accent);text-decoration:underline;cursor:pointer}.storage-line{color:var(--muted);font-size:.85rem;margin:-.5rem 0 1.25rem}
