.shell{min-height:100vh;display:flex;flex-direction:column}.shell--center{align-items:center;justify-content:center;padding:2rem;text-align:center}.top-bar{display:flex;align-items:center;justify-content:space-between;padding:.75rem 1.25rem;border-bottom:1px solid var(--border);background:var(--bg-elevated);position:sticky;top:0;z-index:10}.brand{display:flex;align-items:center;gap:.6rem}.brand--hero{flex-direction:column;gap:.5rem}.brand__name{font-size:1.15rem;font-weight:700;letter-spacing:-.03em;margin:0}.logo-lg{width:48px;height:48px}.icon-btn{display:inline-flex;align-items:center;justify-content:center;width:2.5rem;height:2.5rem;padding:0;border:1px solid var(--border);border-radius:999px;background:var(--surface);color:var(--text);cursor:pointer;transition:background .15s ease,border-color .15s ease}.icon-btn:hover{background:var(--bg-elevated);border-color:var(--text-muted)}.theme-toggle__icon{font-size:1.1rem;line-height:1}.toast{position:fixed;bottom:1.25rem;left:50%;transform:translate(-50%);z-index:20;padding:.6rem 1rem;border-radius:999px;background:var(--surface);border:1px solid var(--border);box-shadow:var(--shadow);font-size:.9rem}.layout{display:grid;grid-template-columns:1fr;gap:0;flex:1;width:100%;max-width:1200px;margin:0 auto;padding:1rem 1rem 2rem}@media(min-width:900px){.layout{grid-template-columns:minmax(0,1fr) minmax(280px,340px);gap:1.5rem;align-items:start}}.main,.sidebar{min-width:0}.shared-banner{margin-bottom:1rem;padding:1rem;border-radius:12px;border:1px solid var(--border);background:var(--surface)}.shared-banner__inner{display:flex;flex-wrap:wrap;align-items:center;gap:.75rem 1rem}.shared-banner__inner--compact{gap:.5rem}.shared-banner__cover{width:56px;height:56px;border-radius:8px;object-fit:cover}.shared-banner__label{font-size:.75rem;text-transform:uppercase;letter-spacing:.06em;color:var(--text-muted)}.shared-banner__title{font-weight:600;font-size:1rem}.shared-banner__artist{font-size:.9rem;color:var(--text-muted)}.app-title{font-size:1.5rem;font-weight:600;margin:0 0 1.5rem;letter-spacing:-.02em}.card{padding:1.25rem;border-radius:12px;border:1px solid var(--border);background:var(--surface);margin-bottom:1rem}.card--auth{text-align:center}.login-lead{margin:0 0 1rem;font-size:.95rem;line-height:1.5;color:var(--text-muted)}.btn-lg{padding:.75rem 1.5rem;font-size:1.05rem}.hint--tight{margin-top:1rem;max-width:26rem;margin-left:auto;margin-right:auto}.login-app-try{margin-top:.75rem}.login-warmup{margin:1.25rem 0 0;padding:.85rem 1rem;border-radius:10px;background:var(--bg-elevated);border:1px solid var(--border);font-size:.88rem;line-height:1.45;color:var(--text-muted);text-align:left}.login-warmup__label{display:block;font-weight:600;color:var(--text);margin-bottom:.25rem}.login-warmup__link{font-weight:600}.user-row{display:flex;align-items:center;justify-content:center;gap:.5rem;flex-wrap:wrap;margin-bottom:1rem}.actions-row{display:flex;flex-wrap:wrap;gap:.5rem;justify-content:center}.btn{display:inline-flex;align-items:center;justify-content:center;gap:.5rem;padding:.65rem 1.25rem;font-size:1rem;font-weight:600;border:none;border-radius:999px;cursor:pointer;background:var(--accent);color:#121212;transition:filter .15s ease}[data-theme=light] .btn{color:#fafafa}.btn:hover{filter:brightness(1.08)}.btn:disabled{opacity:.55;cursor:not-allowed}.btn-secondary{background:var(--bg-elevated);color:var(--text);border:1px solid var(--border)}.btn-secondary:hover{filter:none;border-color:var(--text-muted)}.btn-sm{padding:.45rem .9rem;font-size:.9rem}.btn-text{background:none;border:none;padding:0;font:inherit;color:var(--accent);cursor:pointer;text-decoration:underline;text-underline-offset:2px}.btn-text:hover{color:var(--accent-hover)}.meta{font-size:.9rem;color:var(--text-muted)}.kbd-hint{margin-top:1rem;font-size:.8rem;color:var(--text-muted);text-align:center}.now-playing{display:flex;flex-direction:column;gap:1rem}@media(min-width:520px){.now-playing.card--now{flex-direction:row;align-items:flex-start;justify-content:space-between;text-align:left}}.now-playing__text{flex:1;min-width:0}.now-playing__title{font-size:1.2rem;font-weight:600;line-height:1.35;margin-bottom:.35rem}.now-playing__artist{font-size:.95rem;color:var(--text-muted)}.now-playing__album{font-size:.85rem;color:var(--text-muted);margin-top:.25rem}.now-playing__links{display:flex;flex-wrap:wrap;gap:.75rem 1rem;margin-top:.75rem;align-items:center}.now-playing__actions{display:flex;flex-wrap:wrap;align-items:center;gap:.5rem .75rem;margin-top:.75rem}.icon-btn--heart{font-size:1.1rem;line-height:1;color:var(--text-muted)}.icon-btn--heart[aria-pressed=true]{color:#e11d48}.playlist-add__select{font:inherit;font-size:.9rem;padding:.4rem .75rem;border-radius:999px;border:1px solid var(--border);background:var(--bg-elevated);color:var(--text);max-width:min(100%,280px);cursor:pointer}.playlist-add__select:disabled{opacity:.55;cursor:not-allowed}.link-inline{color:var(--accent);font-weight:600;text-decoration:none}.link-inline:hover{text-decoration:underline}.cover{width:min(100%,280px);max-width:280px;height:auto;border-radius:10px;box-shadow:var(--shadow);align-self:center}@media(min-width:520px){.cover{align-self:flex-start}}.error{margin-bottom:1rem;padding:.75rem 1rem;border-radius:8px;background:var(--danger-bg);color:var(--danger-text);font-size:.9rem;text-align:left}.avatar{width:28px;height:28px;border-radius:50%;object-fit:cover}.hint{margin-top:1.25rem;font-size:.85rem;color:var(--text-muted);line-height:1.45}.history-panel{position:sticky;top:4rem;padding:1rem;border-radius:12px;border:1px solid var(--border);background:var(--surface);max-height:min(70vh,640px);display:flex;flex-direction:column}.history-panel__head{display:flex;align-items:center;justify-content:space-between;gap:.5rem;margin-bottom:.75rem}.history-panel__title{margin:0;font-size:1rem;font-weight:600}.history-panel__empty{margin:0;font-size:.9rem;color:var(--text-muted)}.history-table-wrap{overflow:auto;flex:1;margin:0 -.25rem}.history-table{width:100%;border-collapse:collapse;font-size:.85rem}.history-table th{text-align:left;padding:.35rem .5rem;color:var(--text-muted);font-weight:500;font-size:.75rem;text-transform:uppercase;letter-spacing:.04em}.history-table td{padding:.5rem;vertical-align:top;border-top:1px solid var(--border)}.history-table__thumb-col{width:48px}.history-table__thumb{width:40px;height:40px;border-radius:6px;object-fit:cover;display:block}.history-table__link{color:var(--text);font-weight:600;text-decoration:none}.history-table__link:hover{color:var(--accent)}.history-table__meta{color:var(--text-muted);font-size:.8rem;margin-top:.15rem}.history-table__when{color:var(--text-muted);white-space:nowrap;font-size:.8rem}@media(max-width:899px){.history-panel{position:static;max-height:none}}*{box-sizing:border-box}:root{--bg: #0c0c0e;--bg-elevated: #16161a;--surface: #1c1c21;--border: #2a2a32;--text: #f4f4f5;--text-muted: #a1a1aa;--accent: #1ed760;--accent-hover: #1fdf64;--danger-bg: #3d1a1a;--danger-text: #fecaca;--shadow: 0 24px 48px rgba(0, 0, 0, .45);--logo-grad-a: #1ed760;--logo-grad-b: #169c46;--logo-fg: #0a0a0a}[data-theme=light]{--bg: #f4f4f5;--bg-elevated: #ffffff;--surface: #ffffff;--border: #e4e4e7;--text: #18181b;--text-muted: #52525b;--accent: #15883e;--accent-hover: #126d33;--danger-bg: #fef2f2;--danger-text: #991b1b;--shadow: 0 20px 40px rgba(0, 0, 0, .08);--logo-grad-a: #22c55e;--logo-grad-b: #15803d;--logo-fg: #fafafa}@media(prefers-reduced-motion:reduce){*,*:before,*:after{animation-duration:.01ms!important;animation-iteration-count:1!important;transition-duration:.01ms!important}}html{color-scheme:dark light}[data-theme=dark]{color-scheme:dark}[data-theme=light]{color-scheme:light}body{margin:0;min-height:100vh;font-family:system-ui,-apple-system,Segoe UI,Roboto,Helvetica,Arial,sans-serif;background:var(--bg);color:var(--text);line-height:1.5;-webkit-font-smoothing:antialiased}a{color:var(--accent)}a:hover{color:var(--accent-hover)}.sr-only{position:absolute;width:1px;height:1px;padding:0;margin:-1px;overflow:hidden;clip:rect(0,0,0,0);white-space:nowrap;border:0}kbd{display:inline-block;padding:.1em .4em;font-size:.8em;font-family:inherit;border:1px solid var(--border);border-radius:4px;background:var(--bg-elevated);color:var(--text-muted)}
