@import "https://fonts.googleapis.com/css2?family=IBM+Plex+Mono:wght@400;600&family=Noto+Sans+SC:wght@400;500;700&family=Space+Grotesk:wght@500;700&display=swap";:root{--bg-0:#0b1219;--bg-1:#111b24;--bg-2:#162230;--panel:#162230eb;--panel-solid:#162230;--line:#78aac838;--line-strong:#8cc8e673;--text:#d7e6ef;--text-dim:#8aa0b2;--accent:#3ec7c7;--accent-2:#6eb8e8;--warn:#e0a14a;--danger:#d66a6a;--ok:#5cbc7a;--reading:#6eb8e8;--planned:#c9a45c;--shadow:0 12px 40px #00000059;--radius:2px;--font-ui:"Noto Sans SC", "Segoe UI", sans-serif;--font-display:"Space Grotesk", "Noto Sans SC", sans-serif;--font-mono:"IBM Plex Mono", ui-monospace, monospace}*,:before,:after{box-sizing:border-box}html,body,#root{height:100%;margin:0}body{font-family:var(--font-ui);color:var(--text);background:radial-gradient(1200px 600px at 10% -10%, #3ec7c71f, transparent 55%), radial-gradient(900px 500px at 90% 0%, #6eb8e81a, transparent 50%), linear-gradient(165deg, var(--bg-0), var(--bg-1) 45%, #0e1720);background-attachment:fixed}button,input,select,textarea{font:inherit;color:inherit}button{cursor:pointer}.app-shell{grid-template-rows:auto auto 1fr;gap:0;min-height:100%;display:grid}.topbar{border-bottom:1px solid var(--line);-webkit-backdrop-filter:blur(8px);backdrop-filter:blur(8px);z-index:20;background:linear-gradient(#111b24f2,#111b24b3);justify-content:space-between;align-items:center;gap:16px;padding:14px 20px 10px;display:flex;position:sticky;top:0}.brand{flex-direction:column;gap:2px;min-width:160px;display:flex}.brand-name{font-family:var(--font-display);letter-spacing:.04em;color:var(--text);text-shadow:0 0 24px #3ec7c740;font-size:1.55rem;font-weight:700;line-height:1}.brand-sub{font-family:var(--font-mono);color:var(--accent);letter-spacing:.12em;text-transform:uppercase;font-size:.72rem}.topbar-actions{flex-wrap:wrap;justify-content:flex-end;align-items:center;gap:8px;display:flex}.lang-switch{align-items:center;gap:6px;display:inline-flex}.lang-select{min-width:7.5rem}.btn{appearance:none;border:1px solid var(--line-strong);color:var(--text);border-radius:var(--radius);clip-path:polygon(0 0,calc(100% - 8px) 0,100% 8px,100% 100%,8px 100%,0 calc(100% - 8px));background:linear-gradient(#1b2b3a,#152433);padding:7px 12px;transition:border-color .18s,transform .18s,background .18s}.btn:hover{border-color:var(--accent);transform:translateY(-1px)}.btn:active{transform:translateY(0)}.btn-accent{color:#bff6f6;background:linear-gradient(#1d3a42,#153038);border-color:#3ec7c78c}.btn-ghost{clip-path:none;background:0 0;border-radius:2px}.btn:disabled{opacity:.4;cursor:not-allowed;transform:none}.workspace{grid-template-columns:minmax(280px,1.15fr) minmax(320px,1.35fr) minmax(240px,.9fr);gap:12px;height:calc(100vh - 120px);min-height:0;padding:12px 16px 18px;display:grid}.panel{background:var(--panel);border:1px solid var(--line);box-shadow:var(--shadow);flex-direction:column;min-height:0;display:flex;position:relative;overflow:hidden}.panel:before{content:"";background:var(--accent);width:42px;height:2px;position:absolute;top:0;left:0}.panel-header{border-bottom:1px solid var(--line);font-family:var(--font-mono);letter-spacing:.08em;color:var(--accent-2);text-transform:uppercase;justify-content:space-between;align-items:center;gap:8px;padding:10px 12px;font-size:.78rem;display:flex}.panel-body{flex:1;min-height:0;padding:10px 12px;overflow:auto}.filter-grid{grid-template-columns:1fr 1fr;gap:8px;margin-bottom:10px;display:grid}.filter-row{flex-direction:column;gap:4px;display:flex}.filter-row.full{grid-column:1/-1}.filter-label{color:var(--text-dim);font-size:.78rem}.field,.select-like{background:var(--bg-0);border:1px solid var(--line);border-radius:2px;width:100%;padding:6px 8px}.date-row{gap:4px;display:flex}.date-row select{flex:1;min-width:0}.chip-btn{text-align:left}.plot-list{flex-direction:column;gap:6px;display:flex}.plot-item{cursor:pointer;background:#0b12198c;border:1px solid #0000;border-left-width:2px;padding:8px 10px;transition:border-color .15s,background .15s,transform .15s}.plot-item:hover{border-color:var(--line);transform:translate(2px)}.plot-item.active{border-color:#3ec7c773;border-left-color:var(--accent);background:#1e3a468c}.plot-item.checked{background:#28465a73}.plot-line1{flex-wrap:wrap;align-items:baseline;gap:6px 10px;font-size:.95rem;display:flex}.plot-name{font-weight:700}.plot-meta{font-family:var(--font-mono);color:var(--text-dim);font-size:.75rem}.plot-line2{color:var(--text-dim);margin-top:4px;font-size:.78rem;line-height:1.4}.status-pill{font-family:var(--font-mono);border:1px solid;padding:1px 6px;font-size:.72rem}.status-未读{color:var(--danger)}.status-计划读{color:var(--planned)}.status-正在读{color:var(--reading)}.status-已读{color:var(--ok)}.detail-toolbar{align-items:center;gap:6px;margin-bottom:10px;display:flex}.detail-fade{animation:.28s fadeIn}@keyframes fadeIn{0%{opacity:0;transform:translateY(4px)}to{opacity:1;transform:translateY(0)}}.detail-title{font-family:var(--font-display);margin:0 0 8px;font-size:1.35rem}.detail-kv{gap:6px;margin:10px 0;font-size:.88rem;display:grid}.detail-kv div{grid-template-columns:88px 1fr;gap:8px;display:grid}.detail-kv span:first-child{color:var(--text-dim);font-family:var(--font-mono);font-size:.75rem}.preplot-block{border-top:1px dashed var(--line);margin-top:14px;padding-top:10px}.preplot-block h4{color:var(--accent-2);font-size:.85rem;font-family:var(--font-mono);letter-spacing:.06em;margin:0 0 8px}.preplot-item{border-bottom:1px solid #78aac81a;flex-wrap:wrap;align-items:baseline;gap:6px 10px;padding:6px 0;display:flex}.preplot-link{color:var(--accent-2);text-underline-offset:3px;background:0 0;border:none;padding:0;font-weight:600;text-decoration:underline}.preplot-link:hover{color:var(--accent)}.preplot-reason{width:100%;color:var(--text-dim);font-size:.78rem}.rec-section{margin-bottom:14px}.rec-section h4{align-items:center;gap:6px;margin:0 0 6px;font-size:.82rem;display:flex}.tip{border:1px solid var(--line-strong);width:16px;height:16px;color:var(--text-dim);cursor:help;justify-content:center;align-items:center;font-size:.7rem;display:inline-flex}.rec-item{align-items:center;gap:6px;margin:4px 0;display:flex}.rec-item button.linkish{text-align:left;color:var(--accent-2);background:0 0;border:none;flex:1;padding:2px 0}.rec-item button.linkish:hover{color:var(--accent)}.modal-backdrop{z-index:50;background:#04080cb8;justify-content:center;align-items:center;padding:20px;animation:.18s fadeIn;display:flex;position:fixed;inset:0}.modal{background:var(--panel-solid);border:1px solid var(--line-strong);width:min(560px,100%);max-height:min(80vh,720px);box-shadow:var(--shadow);padding:16px;overflow:auto}.modal h3{font-family:var(--font-display);margin:0 0 12px}.modal-actions{justify-content:flex-end;gap:8px;margin-top:14px;display:flex}.check-grid{grid-template-columns:repeat(auto-fill,minmax(140px,1fr));gap:6px 10px;max-height:360px;padding:4px 0;display:grid;overflow:auto}.check-grid label{align-items:flex-start;gap:6px;font-size:.86rem;display:flex}.video-row{border-bottom:1px solid var(--line);align-items:center;gap:8px;padding:8px 0;display:flex}.video-row a{color:var(--accent-2);flex:1}.empty{color:var(--text-dim);padding:12px 4px;font-size:.86rem}.error-banner{border:1px solid var(--danger);color:#ffc9c9;background:#50181859;margin:8px 16px 0;padding:10px 12px}.loading{text-align:center;color:var(--text-dim);font-family:var(--font-mono);padding:40px}.toggles{color:var(--text-dim);flex-wrap:wrap;gap:10px;margin:8px 0 4px;font-size:.8rem;display:flex}@media (width<=1100px){.workspace{grid-template-columns:1fr;height:auto}.panel{min-height:360px}}
