:root{--bg:#15110d;--bg-panel:#1e1915;--bg-card:#262019;--bg-card-hover:#2c251d;--bg-elev:#342c23;--bg-input:#100d0b;--border:#463a2e;--border-focus:#ff6a2a;--text:#f6efe4;--text-dim:#c3b6a4;--text-faint:#948573;--accent:#ff6a2a;--accent-hover:#ff8247;--accent-soft:#ff6a2a24;--accent-soft-strong:#ff6a2a42;--owned:#8ecb93;--owned-soft:#7ec58524;--wishlist:#94b7ec;--wishlist-soft:#8fb3e824;--danger:#e27062;--danger-soft:#e2706221;--star:#f5b566;--radius-panel:16px;--radius-card:14px;--radius-input:8px;--font-display:Georgia, "Times New Roman", "Songti SC", "STSong", "SimSun", serif;--font-sans:"Helvetica Neue", Arial, "PingFang SC", "Hiragino Sans GB", "Microsoft YaHei", system-ui, sans-serif;--ease-out:cubic-bezier(.22, 1, .36, 1);--t-press:.14s;--t-hover:.18s;--t-ui:.24s;--lightningcss-light: ;--lightningcss-dark:initial;color-scheme:dark}*{box-sizing:border-box}[hidden]{display:none!important}.visually-hidden{clip:rect(0 0 0 0);white-space:nowrap;border:0;width:1px;height:1px;margin:-1px;padding:0;position:absolute;overflow:hidden}html,body{margin:0;padding:0}body{background:var(--bg);color:var(--text);font-family:var(--font-sans);-webkit-font-smoothing:antialiased;min-height:100svh;font-size:15px;line-height:1.55}::selection{background:var(--accent-soft-strong);color:var(--text)}:focus-visible{outline:2px solid var(--accent);outline-offset:2px}.app{max-width:1180px;margin:0 auto;padding:32px 24px 64px}.app-header{flex-wrap:wrap;justify-content:space-between;align-items:flex-end;gap:18px;padding:6px 0 26px;display:flex}.brand{align-items:center;gap:14px;min-width:0;display:flex}.brand-mark{background:#0c0a08;border:5px solid #2a231b;border-radius:50%;flex-shrink:0;width:46px;height:46px;position:relative}.brand-mark:before{content:"";background:var(--accent);border-radius:50%;position:absolute;inset:10px}.brand-mark:after{content:"";background:var(--bg);border-radius:50%;position:absolute;inset:18px}.app-header h1{font-family:var(--font-display);letter-spacing:-.01em;margin:0;font-size:30px;font-weight:700;line-height:1.1}.subtitle{color:var(--text-dim);margin:5px 0 0;font-size:13px}.header-side{flex-wrap:wrap;align-items:center;gap:14px;display:flex}.tally{color:var(--text-dim);font-variant-numeric:tabular-nums;font-size:13px}.tally strong{color:var(--text)}.sync-chip{color:var(--text-dim);background:var(--bg-panel);white-space:nowrap;border-radius:999px;padding:4px 12px;font-size:11.5px;transition:background .16s,color .16s}.sync-chip-error{color:var(--danger);background:var(--danger-soft)}.notice{background:var(--bg-panel);border-left:4px solid var(--text-faint);border-radius:12px;flex-wrap:wrap;justify-content:space-between;align-items:center;gap:12px;margin-top:16px;padding:12px 16px 12px 18px;font-size:13px;animation:.2s ease-out both panel-in;display:flex}.notice-text{flex:260px;min-width:0}.notice-info{background:var(--wishlist-soft);border-left-color:var(--wishlist);color:#dbe7fb}.notice-warn{background:var(--accent-soft);border-left-color:var(--accent);color:#ffd9b8}.notice-error{background:var(--danger-soft);border-left-color:var(--danger);color:#f3c0b8}.btn{background:var(--bg-elev);color:var(--text);cursor:pointer;border:none;border-radius:999px;padding:8px 16px;font-family:inherit;font-size:13px;font-weight:600;transition:background .16s,color .16s,transform 80ms}.btn:hover{background:#3e352a}.btn:active{transition-duration:var(--t-press);transform:scale(.97)}.btn:disabled{opacity:.45;cursor:not-allowed;transform:none}.btn-primary{background:var(--accent);color:#1d0e06;font-weight:700}.btn-primary:hover{background:var(--accent-hover)}.btn-ghost{color:var(--text-dim);background:0 0}.btn-ghost:hover{background:var(--bg-elev);color:var(--text)}.btn-play{background:var(--accent-soft);color:var(--accent);font-weight:700}.btn-play:hover{background:var(--accent-soft-strong)}.btn-edit{background:var(--bg-elev)}.btn-edit:hover{background:#3e352a}.btn-danger{background:var(--danger-soft);color:var(--danger)}.btn-danger:hover{background:#e270623d}.btn-link{color:var(--text-faint);text-underline-offset:3px;background:0 0;border:none;padding:2px 4px;text-decoration:underline}.btn-link:hover{color:var(--danger);background:0 0}.panel{background:var(--bg-panel);border-radius:var(--radius-panel);padding:22px 24px}.form-panel{margin-top:22px;animation:.2s ease-out both panel-in}.form-panel h2,.stats-head h2,.data-head h2{font-family:var(--font-display);letter-spacing:-.01em;margin:0;font-size:20px;font-weight:700}@keyframes panel-in{0%{opacity:0;transform:translateY(-4px)}to{opacity:1;transform:none}}.record-form{margin-top:2px}.form-grid{grid-template-columns:repeat(auto-fill,minmax(210px,1fr));gap:14px 16px;display:grid}.field{color:var(--text-dim);flex-direction:column;gap:6px;font-size:12.5px;display:flex}.field input,.field select{background:var(--bg-input);border:1px solid var(--border);border-radius:var(--radius-input);color:var(--text);padding:9px 12px;font-family:inherit;font-size:14px;transition:border-color .16s}.field input::placeholder{color:var(--text-faint)}.field input:focus,.field select:focus{outline:2px solid var(--accent-soft);outline-offset:0;border-color:var(--border-focus)}.form-errors{background:var(--danger-soft);border-left:4px solid var(--danger);color:#f3c0b8;border-radius:10px;margin:0 0 14px;padding:11px 14px 11px 34px;font-size:13px}.form-hint{background:var(--wishlist-soft);border-left:4px solid var(--wishlist);color:#dbe7fb;border-radius:10px;margin:0 0 14px;padding:11px 16px;font-size:13px}.form-actions{gap:10px;margin-top:20px;display:flex}.filter-tabs{background:var(--bg-panel);border-radius:999px;flex-wrap:wrap;gap:2px;margin:24px 0 16px;padding:4px;display:inline-flex}.tab{color:var(--text-dim);cursor:pointer;background:0 0;border:none;border-radius:999px;padding:8px 16px;font-family:inherit;font-size:13px;font-weight:600;transition:background .16s,color .16s}.tab:hover{color:var(--text)}.tab-active{background:var(--accent-soft);color:var(--accent)}.tab-count{color:var(--text-faint);font-variant-numeric:tabular-nums;margin-left:4px}.tab-active .tab-count{color:var(--accent)}.grid{grid-template-columns:repeat(auto-fill,minmax(262px,1fr));gap:18px;display:grid}.card{background:var(--bg-card);border-radius:var(--radius-card);flex-direction:column;transition:background .18s ease-out,transform .18s ease-out;animation:.28s ease-out both card-in;display:flex;position:relative;overflow:hidden}.card:before{content:"";background:var(--owned);height:4px;display:block}.card-wishlist:before{background:var(--wishlist)}.card:hover{background:var(--bg-card-hover)}.card:hover .cover-label{transform:rotate(18deg)}@keyframes card-in{0%{opacity:0;transform:translateY(8px)}to{opacity:1;transform:none}}.cover{aspect-ratio:4/3;justify-content:center;align-items:center;display:flex;position:relative}.cover-label{aspect-ratio:1;width:52%;transition:transform .5s var(--ease-out);background:#0a0806bd;border:4px solid #ffffff1a;border-radius:50%;justify-content:center;align-items:center;display:flex}.cover-initial{font-family:var(--font-display);color:#fffffff5;font-size:40px;font-weight:700;line-height:1}.cover-format{z-index:2;letter-spacing:.04em;color:#f4f2ff;background:#0a0806a8;border-radius:999px;padding:3px 10px;font-size:11px;font-weight:600;position:absolute;top:10px;left:10px}.card-body{flex-direction:column;flex:1;gap:7px;padding:14px 15px;display:flex}.card-heading{justify-content:space-between;align-items:flex-start;gap:10px;display:flex}.album{text-overflow:ellipsis;-webkit-line-clamp:2;-webkit-box-orient:vertical;margin:0;font-size:16px;font-weight:700;line-height:1.32;display:-webkit-box;overflow:hidden}.badge{white-space:nowrap;border-radius:999px;flex-shrink:0;padding:3px 10px;font-size:11px;font-weight:600}.badge-owned{background:var(--owned-soft);color:var(--owned)}.badge-wishlist{background:var(--wishlist-soft);color:var(--wishlist)}.artist{color:var(--text-dim);text-overflow:ellipsis;white-space:nowrap;margin:0;font-size:13px;overflow:hidden}.meta{color:var(--text-faint);flex-wrap:wrap;align-items:center;gap:6px;margin:0;font-size:12.5px;display:flex}.meta .year{font-variant-numeric:tabular-nums;color:var(--text-dim)}.meta .dot{opacity:.8}.meta .genre,.meta .format{text-overflow:ellipsis;white-space:nowrap;overflow:hidden}.card-stats{color:var(--text-dim);flex-wrap:wrap;align-items:center;gap:10px;margin:3px 0 0;font-size:12.5px;display:flex}.condition{background:var(--bg-elev);border-radius:999px;padding:2px 10px;font-size:11.5px}.rating{letter-spacing:.02em;align-items:center;gap:1px;display:inline-flex}.rating-unrated{color:var(--text-faint);font-size:12.5px}.star{fill:none;width:14px;height:14px;stroke:var(--text-faint);stroke-width:1.6px;stroke-linejoin:round}.star-on{fill:var(--star);stroke:var(--star)}.plays{color:var(--text-faint);font-variant-numeric:tabular-nums;margin-left:auto}.card-actions{background:#0000002e;border-radius:10px;flex-wrap:wrap;gap:7px;margin-top:auto;padding:10px;display:flex}.card-delete{align-items:center;gap:8px;min-height:26px;font-size:12.5px;display:flex}.confirm-text{color:var(--danger);font-weight:600}.stats-panel{margin-top:22px}.stats-head{justify-content:space-between;align-items:baseline;gap:12px;margin-bottom:16px;display:flex}.stats-scope{color:var(--text-faint);font-size:12.5px}.stat-hero{grid-template-columns:240px 1fr;align-items:stretch;gap:14px;display:grid}.stat-total{background:var(--bg-card);border-radius:12px;flex-direction:column;gap:8px;min-width:0;padding:16px 18px;display:flex}.stat-label{color:var(--text-dim);font-size:12.5px}.stat-total-value{font-family:var(--font-display);color:var(--text);font-variant-numeric:tabular-nums;font-size:52px;font-weight:700;line-height:1}.status-split{background:var(--bg-elev);border-radius:999px;height:8px;margin-top:2px;display:flex;overflow:hidden}.status-split span:first-child{background:var(--owned)}.status-split span:last-child{background:var(--wishlist)}.stat-split-note{color:var(--text-faint);font-variant-numeric:tabular-nums;font-size:12px}.stat-mini-grid{grid-template-columns:repeat(3,1fr);gap:14px;display:grid}.stat-mini{background:var(--bg-card);border-radius:12px;flex-direction:column;gap:3px;min-width:0;padding:14px 16px;display:flex}.stat-mini-value{color:var(--text);font-variant-numeric:tabular-nums;text-overflow:ellipsis;white-space:nowrap;font-size:22px;font-weight:700;line-height:1.2;overflow:hidden}.stat-mini-value-text{font-size:15px;line-height:1.3}.stat-mini-label{color:var(--text-dim);font-size:12.5px}.stat-mini-sub{color:var(--text-faint);text-overflow:ellipsis;white-space:nowrap;font-size:11.5px;overflow:hidden}.stat-bars{background:var(--bg-card);border-radius:12px;grid-template-columns:repeat(auto-fit,minmax(220px,1fr));gap:18px 28px;margin-top:14px;padding:18px 20px;display:grid}.bar-group{min-width:0}.bar-title{color:var(--text-dim);margin:0 0 10px;font-size:13px;font-weight:700}.bar-empty{color:var(--text-faint);margin:0;font-size:12.5px}.bar-list{flex-direction:column;gap:8px;margin:0;padding:0;list-style:none;display:flex}.bar-row{color:var(--text-dim);grid-template-columns:78px 1fr 30px;align-items:center;gap:8px;font-size:12px;display:grid}.bar-label{text-overflow:ellipsis;white-space:nowrap;overflow:hidden}.bar-track{background:var(--bg-input);border-radius:999px;height:10px;overflow:hidden}.bar-fill{background:var(--accent);border-radius:999px;height:100%;transition:width .2s;display:block}.bar-count{text-align:right;color:var(--text);font-variant-numeric:tabular-nums}.stat-note{color:var(--text-faint);margin:12px 0 0;font-size:12px}.data-panel{margin-top:22px}.data-head{justify-content:space-between;align-items:baseline;gap:12px;display:flex}.data-scope{color:var(--text-faint);font-size:12.5px}.data-hint{color:var(--text-dim);margin:10px 0 14px;font-size:13px}.data-actions{flex-wrap:wrap;gap:10px;display:flex}.data-pending{color:var(--text-faint);margin:12px 0 0;font-size:12.5px}.data-corrupt{background:var(--danger-soft);border-left:4px solid var(--danger);color:#f3c0b8;border-radius:10px;flex-wrap:wrap;justify-content:space-between;align-items:center;gap:12px;margin-top:14px;padding:11px 14px 11px 16px;font-size:12.5px;display:flex}.data-corrupt code{background:#0000004d;border-radius:4px;padding:1px 5px;font-size:11.5px}.toast-stack{z-index:50;flex-direction:column;gap:10px;max-width:min(420px,100vw - 40px);display:flex;position:fixed;bottom:20px;right:20px}.toast{background:var(--bg-elev);border-left:4px solid var(--text-faint);border-radius:12px;align-items:center;gap:10px;padding:12px 14px 12px 16px;font-size:13px;animation:.18s ease-out both toast-in;display:flex}.toast-success{border-left-color:var(--owned)}.toast-error{border-left-color:var(--danger);color:#f3c0b8}.toast-info{border-left-color:var(--accent)}@keyframes toast-in{0%{opacity:0;transform:translateY(8px)}to{opacity:1;transform:none}}.toast-message{flex:1;min-width:0}.toast-action{background:var(--accent-soft);color:var(--accent);border:none;flex-shrink:0;font-weight:700}.toast-action:hover{background:var(--accent-soft-strong)}.toast-close{color:var(--text-faint);cursor:pointer;background:0 0;border:none;flex-shrink:0;padding:0 2px;font-size:18px;line-height:1}.toast-close:hover{color:var(--text)}.filter-panel{margin-top:16px}.filter-grid{grid-template-columns:repeat(auto-fit,minmax(150px,1fr));align-items:end;gap:12px 14px;display:grid}.filter-keyword{grid-column:span 2}.sort-dir{gap:6px;display:flex}.sort-toggle{flex:1;padding:8px 6px}.sort-toggle-active{background:var(--accent-soft);color:var(--accent)}.filter-actions{justify-content:space-between;align-items:center;gap:12px;margin-top:16px;display:flex}.result-count{color:var(--text-dim);background:var(--bg-card);border-radius:999px;padding:6px 14px;font-size:13px}.result-count strong{color:var(--text);font-variant-numeric:tabular-nums}main{margin-top:18px}.empty-state{text-align:center;margin-top:6px;padding:48px 22px 44px}.empty-art{background:var(--bg-card);border-radius:50%;justify-content:center;align-items:center;width:108px;height:108px;margin-bottom:18px;display:inline-flex}.vinyl{background:#0d0b09;border-radius:50%;width:68px;height:68px;display:inline-block;position:relative}.vinyl:before{content:"";background:var(--accent);border-radius:50%;position:absolute;inset:14px}.vinyl:after{content:"";background:var(--bg);border-radius:50%;position:absolute;inset:28px}.empty-state h2{font-family:var(--font-display);margin:0 0 6px;font-size:20px;font-weight:700}.empty-state p{color:var(--text-dim);margin:0 0 18px;font-size:14px}.empty-actions{justify-content:center;gap:10px;display:flex}.app-footer{color:var(--text-faint);text-align:center;margin-top:48px;padding-top:22px;font-size:12.5px}@media (width<=900px){.stat-hero{grid-template-columns:1fr}.stat-mini-grid{grid-template-columns:repeat(3,1fr)}}@media (width<=640px){.app{padding:22px 14px 48px}.app-header{align-items:flex-start}.brand{gap:11px}.brand-mark{border-width:4px;width:40px;height:40px}.brand-mark:before{inset:9px}.brand-mark:after{inset:16px}.app-header h1{font-size:25px}.header-side{justify-content:space-between;gap:10px;width:100%}.grid{grid-template-columns:1fr}.filter-keyword{grid-column:span 1}.stat-hero,.stat-mini-grid{grid-template-columns:1fr}.bar-row{grid-template-columns:66px 1fr 26px}.btn{padding:9px 16px;font-size:13.5px}.toast-stack{max-width:none;bottom:10px;left:10px;right:10px}.empty-state{padding:36px 16px 32px}.empty-actions{flex-wrap:wrap}.panel{padding:18px 16px}}@media (prefers-reduced-motion:reduce){*,:before,:after{transition-duration:.001ms!important;animation-duration:.001ms!important}}
