:root{color-scheme:dark;--bg:#090a0c;--panel:#1b1d20;--panel2:#242629;--blue:#80c0f0;--white:#f5f5f5;--muted:#a5a8ad;--nav:#121315;--radius:18px;--button-radius:16px}
*{box-sizing:border-box}html,body{margin:0;min-height:100%;background:var(--bg);color:var(--white);font-family:-apple-system,BlinkMacSystemFont,"Segoe UI",sans-serif}body{overscroll-behavior:none}button,input{font:inherit}button{border:0;cursor:pointer}#app{min-height:100dvh;display:flex;flex-direction:column;background:var(--bg)}#pages{position:relative;flex:1;min-height:0;padding-bottom:70px}.page{display:none;position:absolute;inset:0;overflow:hidden;background:var(--bg)}.page.active{display:block}.page-scroll{height:100%;overflow-y:auto;overscroll-behavior:contain;padding:18px 18px 28px;scrollbar-width:thin;scrollbar-color:#45484d transparent}.page-header{margin:0 0 20px}.brand{font-size:13px;font-weight:700;letter-spacing:.07em;color:var(--blue);margin-bottom:10px}.page-header h1{font-size:27px;line-height:1.15;margin:0 0 4px;font-weight:700}.page-header p{font-size:14px;line-height:1.4;color:var(--muted);margin:0}.card{background:var(--panel);border-radius:var(--radius);overflow:hidden}.radio-card{padding:14px 12px 16px}.main-artwork{display:block;width:100%;height:300px;object-fit:contain;margin:0 0 12px}.track-card{display:flex;align-items:center;gap:10px;min-width:0;background:var(--panel2);border-radius:14px;padding:8px 10px 8px 8px}.track-art{width:58px;height:58px;object-fit:cover;border-radius:8px;flex:none}.track-words{min-width:0;flex:1}.track-status{font-size:11px;font-weight:700;color:var(--blue);white-space:nowrap;overflow:hidden;text-overflow:ellipsis}.track-title{font-size:16px;font-weight:700;line-height:1.25;display:-webkit-box;-webkit-line-clamp:2;-webkit-box-orient:vertical;overflow:hidden}.track-artist{font-size:12px;color:var(--muted);overflow-wrap:anywhere}.favorite{width:48px;height:48px;flex:none;border-radius:12px;background:var(--panel2);font-size:25px;color:var(--muted)}.favorite.on{color:var(--blue)}.play-button{display:block;width:calc(100% - 84px);height:58px;margin:14px auto 0;border-radius:var(--button-radius);background:var(--blue);color:#000;font-size:15px;font-weight:700}.search{display:block;width:100%;height:50px;border:0;outline:0;border-radius:var(--radius);background:var(--panel);color:var(--white);padding:0 14px;font-size:14px;margin:0 0 14px}.search::placeholder{color:var(--muted)}.section-title{font-size:14px;font-weight:700;color:var(--blue);margin:0 0 8px}.track-row{display:flex;align-items:center;gap:10px;background:var(--panel);border-radius:var(--radius);padding:8px 7px 8px 9px;margin-bottom:8px;min-height:78px}.track-row img{width:62px;height:62px;border-radius:8px;object-fit:cover;flex:none}.track-row .track-words{padding:0}.track-row .track-title{font-size:14px}.track-row .track-artist{font-size:12px}.track-time{font-size:11px;color:var(--blue);margin-top:2px}.empty-text{font-size:13px;color:var(--muted);line-height:1.45;margin:0 0 8px}.spaced{margin-top:16px}.section-description{font-size:14px;color:var(--muted);margin:0 0 10px}.settings-card{display:flex;align-items:center;justify-content:space-between;gap:10px;background:var(--panel);border-radius:var(--radius);padding:12px;margin-bottom:8px;min-height:64px}.settings-copy{display:flex;flex-direction:column;gap:3px}.settings-copy strong{font-size:14px}.settings-copy span{font-size:12px;color:var(--muted);line-height:1.35}.switch{position:relative;flex:none;width:48px;height:28px}.switch input{position:absolute;opacity:0;width:1px;height:1px}.switch-ui{position:absolute;inset:0;border-radius:20px;background:#555;transition:.15s}.switch-ui:after{content:"";position:absolute;top:3px;left:3px;width:22px;height:22px;border-radius:50%;background:white;transition:.15s}.switch input:checked+.switch-ui{background:var(--blue)}.switch input:checked+.switch-ui:after{transform:translateX(20px);background:#000}.timer-buttons{display:grid;grid-template-columns:repeat(4,1fr);gap:6px;margin-bottom:8px}.timer-buttons button,.dark-button{background:var(--panel2);color:var(--white);border-radius:var(--button-radius);height:46px;font-size:13px}.dark-button{width:100%;height:48px}.timer-status{font-size:13px;color:var(--muted);margin:0 0 22px}.link-card{display:flex;flex-direction:column;gap:3px;text-decoration:none;color:var(--white);background:var(--panel);border-radius:var(--radius);padding:10px 12px;margin-bottom:8px;min-height:58px}.link-card strong{font-size:14px}.link-card span{font-size:12px;color:var(--muted);overflow-wrap:anywhere}.about{font-size:13px;color:var(--muted);line-height:1.55;margin:18px 0 16px}.shutdown{height:62px;width:100%;border-radius:var(--button-radius);background:var(--blue);color:#000;font-size:16px;font-weight:700}.tabbar{position:fixed;z-index:10;bottom:0;left:0;right:0;height:calc(70px + env(safe-area-inset-bottom));padding:5px 4px calc(5px + env(safe-area-inset-bottom));display:grid;grid-template-columns:repeat(4,1fr);background:var(--nav)}.tab{display:flex;flex-direction:column;align-items:center;justify-content:center;gap:3px;border-radius:var(--button-radius);background:transparent;color:var(--muted);font-size:10px;font-weight:400}.tab.selected{background:var(--blue);color:#000}.nav-icon{display:block;width:28px;height:28px}.nav-icon svg{width:100%;height:100%;display:block;fill:none;stroke:currentColor;stroke-width:2.5;stroke-linecap:round;stroke-linejoin:round}#toast{position:fixed;z-index:20;left:50%;bottom:calc(82px + env(safe-area-inset-bottom));transform:translate(-50%,12px);opacity:0;pointer-events:none;background:#292b2f;color:var(--white);border-radius:9px;padding:10px 14px;font-size:13px;transition:.18s;max-width:calc(100vw - 32px);text-align:center}#toast.show{opacity:1;transform:translate(-50%,0)}
/* Console Game Boy — proportions, colors and hit areas ported from GameBoyView.swift / ConsoleRenderer.swift. */
.game-page{background:#0a090d}
.game-scroll{height:100%;overflow-y:auto;padding:10px 8px 20px;display:flex;flex-direction:column;align-items:center}
.console{position:relative;width:min(100%,430px);aspect-ratio:390/700;flex:0 0 auto;background:#0a090d;overflow:visible;touch-action:none;user-select:none;-webkit-user-select:none}
#console-base,#console-overlay{position:absolute;inset:0;width:100%;height:100%;display:block}
#console-base{z-index:1;pointer-events:none}
#console-overlay{z-index:3;touch-action:none;cursor:default}
.emulator-wrap{position:absolute;z-index:2;background:#090909;overflow:hidden;image-rendering:pixelated;touch-action:none}
.emulator-player{width:100%;height:100%;min-height:0;background:#090909;position:relative;overflow:hidden}
#game canvas{image-rendering:pixelated!important;max-width:100%!important;max-height:100%!important;width:100%!important;height:100%!important;object-fit:fill}
#game .ejs_menu,#game .ejs_settings,#game .ejs_gamepad,#game .ejs_virtualGamepad,#game .ejs_touch_controls,#game .ejs_controls,#game .ejs_mobile_controls,#game [class*=gamepad],#game [class*=touch],#game [class*=joystick]{display:none!important}
.game-loading{height:100%;display:grid;place-items:center;color:#c9ccd2;font-size:12px;letter-spacing:.08em}
.game-error{font-size:12px;color:var(--muted);text-align:center;max-width:440px;line-height:1.4}
@media(max-width:370px){.console{width:100%}}
