:root{--bg: #faf9f7;--surface: #ffffff;--surface-2: #f4f2ee;--surface-3: #ece8e0;--border: #e7e3dc;--border-strong: #d6d1c7;--text: #1c1b18;--text-2: #5b5851;--text-3: #8a877f;--accent: #4a55c8;--accent-soft: #eceefb;--accent-text: #2e3899;--warn: #b86e1f;--warn-soft: #fbf1e3;--warn-text: #8a4f10;--danger: #a94c3a;--danger-soft: #f8eae6;--good: #4a7a4a;--good-soft: #ecf2ec;--shadow-sm: 0 1px 2px rgba(28, 27, 24, .04);--shadow-md: 0 4px 12px rgba(28, 27, 24, .06), 0 1px 2px rgba(28, 27, 24, .04);--shadow-lg: 0 12px 32px rgba(28, 27, 24, .1), 0 2px 6px rgba(28, 27, 24, .06);--radius: 10px;--radius-sm: 6px}*{box-sizing:border-box}html,body,#root{margin:0;padding:0;background:var(--bg);color:var(--text);font-family:Inter,system-ui,-apple-system,sans-serif;font-feature-settings:"cv11","ss01";-webkit-font-smoothing:antialiased;font-size:14px;line-height:1.5;min-height:100vh}.mono{font-family:JetBrains Mono,ui-monospace,monospace}a{color:inherit;text-decoration:none}.app{display:grid;grid-template-columns:248px 1fr;min-height:100vh}.app--library{grid-template-columns:248px 1fr 380px}.sidebar{background:var(--surface);border-right:1px solid var(--border);padding:20px 16px;display:flex;flex-direction:column;gap:24px;position:sticky;top:0;height:100vh}.brand{display:flex;align-items:center;gap:10px;padding:4px 8px}.brand-mark{width:28px;height:28px;border-radius:7px;background:var(--text);color:var(--bg);display:grid;place-items:center;font-weight:700;font-size:13px;letter-spacing:-.02em}.brand-title{font-weight:600;font-size:14px;letter-spacing:-.01em}.brand-sub{font-size:11px;color:var(--text-3);margin-top:-2px}.nav-section{display:flex;flex-direction:column;gap:2px}.nav-label{font-size:11px;text-transform:uppercase;letter-spacing:.08em;color:var(--text-3);padding:0 8px 6px;font-weight:500}.nav-item{display:flex;align-items:center;gap:10px;padding:7px 8px;border-radius:6px;color:var(--text-2);cursor:pointer;font-size:13.5px;-webkit-user-select:none;user-select:none;text-decoration:none;background:transparent;border:0;width:100%;text-align:left;font-family:inherit}.nav-item:hover{background:var(--surface-2);color:var(--text)}.nav-item.active{background:var(--surface-2);color:var(--text);font-weight:500}.nav-item .count{margin-left:auto;font-size:11.5px;color:var(--text-3);font-family:JetBrains Mono,monospace}.nav-item.active .count{color:var(--text-2)}.nav-icon{width:16px;height:16px;flex-shrink:0;color:currentColor}.sidebar-foot{margin-top:auto;display:flex;align-items:center;gap:10px;padding:14px 8px 8px;border-top:1px solid var(--border)}.avatar{width:28px;height:28px;border-radius:50%;background:linear-gradient(135deg,#d6d1c7,#8a877f);color:#fff;display:grid;place-items:center;font-size:11px;font-weight:600}.who{font-size:13px;line-height:1.2}.who small{color:var(--text-3);font-size:11px}.main{display:flex;flex-direction:column;min-width:0}.page-head{padding:32px 40px 20px;border-bottom:1px solid var(--border);background:var(--surface)}.app--library .page-head{padding:24px 32px 16px}.crumb{font-size:12px;color:var(--text-3);display:flex;align-items:center;gap:6px;margin-bottom:8px}.crumb-sep{color:var(--border-strong)}.h1{font-size:26px;font-weight:600;letter-spacing:-.02em;margin:0;display:flex;align-items:center;gap:14px}.app--library .h1{font-size:22px;align-items:baseline;gap:12px}.h1 .total{font-family:JetBrains Mono,monospace;font-size:14px;color:var(--text-3);font-weight:400}.h1 .badge-status{font-size:11px;text-transform:uppercase;letter-spacing:.08em;background:var(--good-soft);color:var(--good);padding:3px 8px;border-radius:999px;font-weight:600}.h1-meta{display:flex;gap:16px;font-size:13px;color:var(--text-3);margin-top:6px}.h1-meta .mono{color:var(--text-2)}.tabs{display:flex;gap:0;margin-top:14px;border-bottom:1px solid transparent;margin-bottom:-17px}.tab{padding:10px 14px;font-size:13.5px;font-weight:500;color:var(--text-3);cursor:pointer;border-bottom:2px solid transparent;margin-bottom:-1px;display:flex;align-items:center;gap:7px;background:transparent;border-top:0;border-left:0;border-right:0;font-family:inherit}.tab .count{font-family:JetBrains Mono,monospace;font-size:11.5px;color:var(--text-3);background:var(--surface-2);padding:1px 6px;border-radius:999px}.tab:hover{color:var(--text-2)}.tab.active{color:var(--text);border-bottom-color:var(--text)}.progress-card{margin-top:22px;background:var(--bg);border:1px solid var(--border);border-radius:var(--radius);padding:18px 20px;display:grid;grid-template-columns:1fr auto;gap:16px;align-items:center}.progress-stats{display:flex;align-items:baseline;gap:8px;flex-wrap:wrap}.progress-current{font-family:JetBrains Mono,monospace;font-size:28px;font-weight:500;letter-spacing:-.02em}.progress-target{font-family:JetBrains Mono,monospace;font-size:16px;color:var(--text-3)}.progress-label{font-size:12px;color:var(--text-2);margin-left:8px}.progress-label b{color:var(--text);font-weight:600}.progress-bar{grid-column:1 / -1;height:8px;background:var(--surface-2);border-radius:999px;overflow:hidden;position:relative;margin-top:4px}.progress-segments{position:absolute;top:0;right:0;bottom:0;left:0;display:flex;pointer-events:none}.seg-net{background:var(--text)}.seg-contested{background:repeating-linear-gradient(45deg,var(--warn) 0,var(--warn) 4px,#d4882f 4px,#d4882f 8px)}.progress-actions{display:flex;gap:8px}.btn{display:inline-flex;align-items:center;gap:6px;padding:8px 14px;border-radius:7px;font-size:13px;font-weight:500;border:1px solid var(--border-strong);background:var(--surface);color:var(--text);cursor:pointer;transition:background .12s,border-color .12s;font-family:inherit;white-space:nowrap}.btn:hover{background:var(--surface-2)}.btn-primary{background:var(--text);color:var(--bg);border-color:var(--text)}.btn-primary:hover{background:#000}.btn-accent{background:var(--accent);color:#fff;border-color:var(--accent)}.btn-accent:hover{background:#3a44a8}.btn-danger{background:var(--danger);color:#fff;border-color:var(--danger)}.btn-danger:hover{background:#8e3e2f}.btn-ghost{border-color:transparent;background:transparent;color:var(--text-2)}.btn-ghost:hover{background:var(--surface-2);color:var(--text)}.btn-sm{padding:5px 10px;font-size:12.5px}.btn-icon{padding:7px}.btn:disabled{opacity:.55;cursor:not-allowed}.toolbar{padding:14px 40px;background:var(--surface);border-bottom:1px solid var(--border);display:flex;align-items:center;gap:12px;position:sticky;top:0;z-index:10}.app--library .toolbar{padding:12px 32px;gap:10px}.toolbar.has-selection{background:var(--accent-soft);border-bottom-color:#d4d8f4}.search{position:relative;flex:0 1 320px}.app--library .search{flex:0 1 300px}.search input{width:100%;height:34px;padding:0 12px 0 32px;border-radius:7px;border:1px solid var(--border-strong);background:var(--surface);font-family:inherit;font-size:13px;color:var(--text);outline:none}.app--library .search input{height:32px;padding-left:30px}.search input:focus{border-color:var(--accent);box-shadow:0 0 0 3px #4a55c826}.search-icon{position:absolute;left:10px;top:50%;transform:translateY(-50%);color:var(--text-3);pointer-events:none}.filter-group{display:flex;border:1px solid var(--border-strong);border-radius:7px;overflow:hidden;background:var(--surface)}.filter-btn{border:none;background:transparent;padding:7px 12px;font-size:12.5px;font-family:inherit;color:var(--text-2);cursor:pointer;border-right:1px solid var(--border);display:flex;align-items:center;gap:6px}.filter-btn:last-child{border-right:none}.filter-btn.active{background:var(--text);color:var(--bg)}.filter-btn:not(.active):hover{background:var(--surface-2)}.filter-btn .count{font-family:JetBrains Mono,monospace;font-size:11px;opacity:.7}.filter-chip{display:inline-flex;align-items:center;gap:6px;padding:5px 10px;border:1px solid var(--border-strong);border-radius:999px;font-size:12px;color:var(--text-2);background:var(--surface);cursor:pointer;font-family:inherit}.filter-chip:hover{background:var(--surface-2)}.filter-chip.active{background:var(--text);color:var(--bg);border-color:var(--text)}.filter-chip .x{color:currentColor;opacity:.6;margin-left:2px}.toolbar-spacer{flex:1}.selection-bar{display:flex;align-items:center;gap:12px;width:100%}.selection-count{font-size:13px;font-weight:500;color:var(--accent-text)}.selection-size{font-family:JetBrains Mono,monospace;font-size:12px;color:var(--accent-text);opacity:.75}.content{padding:24px 40px 60px;max-width:1280px;width:100%}.app--library .content{padding:0;max-width:none}.section-title{font-size:12px;text-transform:uppercase;letter-spacing:.1em;color:var(--text-3);margin:8px 0 14px;display:flex;align-items:center;gap:8px;font-weight:600}.section-title .count{font-family:JetBrains Mono,monospace;color:var(--text-2);font-weight:500;letter-spacing:0;text-transform:none}.section-title .rule{flex:1;height:1px;background:var(--border)}.item-list{display:flex;flex-direction:column;gap:8px}.item{display:grid;grid-template-columns:28px 60px 1fr auto;align-items:center;gap:16px;padding:14px 18px;background:var(--surface);border:1px solid var(--border);border-radius:var(--radius);transition:border-color .12s,box-shadow .12s,background .12s}.item:hover{border-color:var(--border-strong)}.item.selected{border-color:var(--accent);background:linear-gradient(0deg,var(--accent-soft) 0%,var(--accent-soft) 100%),var(--surface);box-shadow:0 0 0 1px var(--accent) inset}.item.kept{opacity:.55;background:var(--surface-2)}.checkbox{width:18px;height:18px;border-radius:4px;border:1.5px solid var(--border-strong);background:var(--surface);cursor:pointer;position:relative;transition:all .12s}.checkbox:hover{border-color:var(--accent)}.checkbox.checked{background:var(--accent);border-color:var(--accent)}.checkbox.checked:after{content:"";position:absolute;left:5px;top:2px;width:5px;height:9px;border:solid white;border-width:0 2px 2px 0;transform:rotate(45deg)}.checkbox.indeterminate{background:var(--accent);border-color:var(--accent)}.checkbox.indeterminate:after{content:"";position:absolute;left:3px;right:3px;top:7px;height:2px;background:#fff;border-radius:1px}.page-size{display:inline-flex;align-items:center;gap:6px;font-size:12px;color:var(--text-3);-webkit-user-select:none;user-select:none}.page-size select{height:26px;padding:0 8px;border:1px solid var(--border-strong);background:var(--surface);color:var(--text);border-radius:6px;font-family:inherit;font-size:12.5px;cursor:pointer;outline:none}.page-size select:focus{border-color:var(--accent);box-shadow:0 0 0 3px #4a55c826}.pager{display:flex;align-items:center;gap:10px;padding:14px 32px;border-top:1px solid var(--border);background:var(--surface);font-size:12.5px;color:var(--text-2)}.pager-status .mono{color:var(--text);font-family:JetBrains Mono,monospace;font-size:12px}.poster{width:60px;height:90px;border-radius:4px;background:var(--surface-2);overflow:hidden;position:relative;border:1px solid var(--border);flex-shrink:0;display:grid;place-items:center}.poster.movie{background:repeating-linear-gradient(135deg,#ece8e0 0,#ece8e0 6px,#f4f2ee 6px,#f4f2ee 12px)}.poster.show{background:repeating-linear-gradient(135deg,#e6e8ea 0,#e6e8ea 6px,#f1f3f5 6px,#f1f3f5 12px)}.poster-letter{font-family:JetBrains Mono,monospace;font-size:18px;color:var(--text-3);font-weight:500}.poster-kind{font-family:JetBrains Mono,monospace;font-size:9px;text-transform:uppercase;color:var(--text-3);letter-spacing:.08em;padding:2px 5px;background:#ffffffd9;border-radius:3px;position:absolute;bottom:4px;left:4px}.item-body{min-width:0}.item-title-row{display:flex;align-items:baseline;gap:10px;margin-bottom:4px}.item-title{font-size:15px;font-weight:600;letter-spacing:-.01em;color:var(--text);white-space:nowrap;overflow:hidden;text-overflow:ellipsis}.item-year{font-family:JetBrains Mono,monospace;font-size:13px;color:var(--text-3);font-weight:400}.item-meta{display:flex;gap:14px;font-size:12.5px;color:var(--text-2);align-items:center;flex-wrap:wrap}.meta-cell{display:inline-flex;align-items:center;gap:5px}.meta-cell .label{color:var(--text-3);font-size:11px;text-transform:uppercase;letter-spacing:.06em}.meta-cell .value{color:var(--text-2)}.meta-cell .value.mono{font-family:JetBrains Mono,monospace;font-size:12px}.meta-cell.warn .value{color:var(--warn);font-weight:500}.meta-cell.cold .value{color:var(--text-3);font-style:italic}.meta-cell.never{color:var(--good)}.keep-pill{display:inline-flex;align-items:center;gap:6px;padding:3px 9px 3px 6px;border-radius:999px;background:var(--warn-soft);color:var(--warn-text);font-size:11.5px;font-weight:500;border:1px solid #f0ddb8}.keep-pill .dot{width:6px;height:6px;background:var(--warn);border-radius:50%;box-shadow:0 0 0 2px var(--warn-soft)}.item-right{display:flex;flex-direction:column;align-items:flex-end;gap:8px}.item-size{font-family:JetBrains Mono,monospace;font-size:17px;font-weight:500;letter-spacing:-.01em;color:var(--text)}.item-size.contested{color:var(--warn)}.item-actions{display:flex;gap:4px}.item-expand{grid-column:3 / 5;padding-top:14px;margin-top:4px;border-top:1px dashed var(--border);display:flex;flex-direction:column;gap:10px}.keep-request-list{display:flex;flex-direction:column;gap:8px}.keep-row{display:flex;align-items:flex-start;gap:10px;padding:10px 12px;background:var(--warn-soft);border:1px solid #f0ddb8;border-radius:8px}.keep-row .avatar{width:24px;height:24px;background:linear-gradient(135deg,#d4882f,#8a4f10);font-size:10px}.keep-row-body{flex:1;min-width:0;font-size:12.5px}.keep-row-body b{color:var(--warn-text);font-weight:600}.keep-row-body .reason{color:var(--text-2);margin-top:2px}.keep-row-time{font-family:JetBrains Mono,monospace;font-size:11px;color:var(--text-3)}.summary-row{display:grid;grid-template-columns:repeat(4,1fr);gap:12px;margin-bottom:28px}.stat-card{padding:14px 16px;background:var(--surface);border:1px solid var(--border);border-radius:var(--radius)}.stat-label{font-size:11px;text-transform:uppercase;letter-spacing:.08em;color:var(--text-3);font-weight:500}.stat-value{font-family:JetBrains Mono,monospace;font-size:22px;font-weight:500;letter-spacing:-.02em;margin-top:4px;color:var(--text)}.stat-sub{font-size:12px;color:var(--text-3);margin-top:2px}.stat-card.warn .stat-value{color:var(--warn)}.stat-card.good .stat-value{color:var(--good)}.group-bar{display:flex;align-items:center;gap:10px;margin-bottom:8px;padding:0 4px}.group-bar .select-all{font-size:12px;color:var(--text-3);cursor:pointer;display:inline-flex;align-items:center;gap:6px;padding:4px 6px;border-radius:5px;background:transparent;border:0;font-family:inherit}.group-bar .select-all:hover{background:var(--surface-2);color:var(--text-2)}.execute-card{margin-top:32px;padding:20px;background:var(--surface);border:1px solid var(--border);border-radius:var(--radius);display:flex;align-items:center;gap:18px}.execute-card .ico{width:36px;height:36px;border-radius:8px;background:var(--surface-2);display:grid;place-items:center;color:var(--text-2)}.execute-card .body{flex:1}.execute-card .body h4{margin:0;font-size:14px;font-weight:600}.execute-card .body p{margin:2px 0 0;font-size:12.5px;color:var(--text-3)}.hint{color:var(--text-3);font-size:11px;font-family:JetBrains Mono,monospace}.table-head{display:grid;grid-template-columns:36px 56px minmax(180px,1fr) 130px 130px 90px 110px 60px 120px;gap:12px;padding:10px 32px;align-items:center;font-size:11px;font-weight:600;text-transform:uppercase;letter-spacing:.08em;color:var(--text-3);background:var(--bg);border-bottom:1px solid var(--border);position:sticky;top:57px;z-index:9}.th{display:flex;align-items:center;gap:4px;cursor:pointer;-webkit-user-select:none;user-select:none}.th:hover{color:var(--text-2)}.th.sorted{color:var(--text)}.th .sort-arrow{font-family:JetBrains Mono,monospace;font-size:10px;opacity:.7}.row{display:grid;grid-template-columns:36px 56px minmax(180px,1fr) 130px 130px 90px 110px 60px 120px;gap:12px;padding:10px 32px;align-items:center;border-bottom:1px solid var(--border);background:var(--surface);transition:background .12s;cursor:default}.row:hover{background:var(--surface-2)}.row.selected{background:var(--accent-soft)}.row.added{background:var(--good-soft)}.row.added:hover{background:#e2eee2}.row.dragging{opacity:.4}.poster-mini{width:36px;height:54px;border-radius:3px;overflow:hidden;display:grid;place-items:center;border:1px solid var(--border);position:relative}.poster-mini.movie{background:repeating-linear-gradient(135deg,#ece8e0 0,#ece8e0 4px,#f4f2ee 4px,#f4f2ee 8px)}.poster-mini.show{background:repeating-linear-gradient(135deg,#e6e8ea 0,#e6e8ea 4px,#f1f3f5 4px,#f1f3f5 8px)}.poster-mini-letter{font-family:JetBrains Mono,monospace;font-size:12px;color:var(--text-3);font-weight:500}.poster-img{position:absolute;top:0;right:0;bottom:0;left:0;width:100%;height:100%;object-fit:cover;display:block;background:transparent}.title-cell{min-width:0;display:flex;flex-direction:column;gap:2px}.title-line{display:flex;align-items:baseline;gap:8px;min-width:0}.title{font-size:14px;font-weight:700;letter-spacing:-.01em;white-space:nowrap;overflow:hidden;text-overflow:ellipsis;min-width:0}.title-link{background:none;border:0;padding:0;margin:0;font:inherit;color:inherit;text-align:left;cursor:pointer;display:inline-block;max-width:100%}.title-link:hover{color:var(--accent);text-decoration:underline;text-underline-offset:3px}.title-link:focus-visible{outline:2px solid var(--accent);outline-offset:2px;border-radius:2px}.year{font-family:JetBrains Mono,monospace;font-size:12px;color:var(--text-3)}.sub-line{font-size:11.5px;color:var(--text-3);display:flex;gap:8px}.sub-line .dot{color:var(--border-strong)}.badge{font-size:10px;padding:1px 6px;border-radius:999px;font-weight:500;text-transform:uppercase;letter-spacing:.06em}.badge-cold{background:var(--surface-2);color:var(--text-3)}.badge-never{background:var(--good-soft);color:var(--good)}.badge-hot{background:var(--warn-soft);color:var(--warn-text)}.badge-unmonitored{background:var(--surface-2);color:var(--text-3);border:1px dashed var(--border-strong)}.badge-requested{background:var(--accent-soft);color:var(--accent-text);border:1px solid #d4d8f4;text-transform:none;letter-spacing:0;font-weight:500}.badge-nofile{background:var(--surface-2);color:var(--text-3);border:1px dashed var(--border-strong)}.cell-size--empty{color:var(--text-3);font-weight:400}.cell-watch{display:flex;flex-direction:column;gap:1px}.cell-watch .when{font-size:12.5px;color:var(--text-2)}.cell-watch .when.never{color:var(--good);font-weight:500}.cell-watch .when.cold{color:var(--text-3);font-style:italic}.cell-watch .by{font-size:11px;color:var(--text-3)}.cell-mono{font-family:JetBrains Mono,monospace;font-size:12.5px;color:var(--text-2)}.cell-size{font-family:JetBrains Mono,monospace;font-size:13.5px;font-weight:500;color:var(--text);text-align:right}.cell-q{font-family:JetBrains Mono,monospace;font-size:11px;color:var(--text-3);text-align:center;padding:2px 6px;background:var(--surface-2);border-radius:4px;width:fit-content;justify-self:center}.cell-action{display:flex;justify-content:flex-end}.add-btn{display:inline-flex;align-items:center;gap:5px;padding:5px 10px;border-radius:6px;font-size:12px;font-weight:500;border:1px solid var(--border-strong);background:var(--surface);color:var(--text-2);cursor:pointer;font-family:inherit;transition:all .12s}.add-btn:hover{background:var(--text);color:var(--bg);border-color:var(--text)}.add-btn .plus{font-size:13px;line-height:1}.add-btn.added{background:var(--good-soft);color:var(--good);border-color:#c9d8c9}.add-btn.added:hover{background:var(--danger);color:#fff;border-color:var(--danger)}.add-btn.added:hover .added-label{display:none}.add-btn.added:hover .remove-label{display:inline}.add-btn.added .remove-label{display:none}.dock{background:var(--surface);border-left:1px solid var(--border);position:sticky;top:0;height:100vh;overflow:hidden;display:flex;flex-direction:column}.dock-head{padding:18px 20px 14px;border-bottom:1px solid var(--border)}.dock-eyebrow{font-size:10px;text-transform:uppercase;letter-spacing:.1em;color:var(--text-3);font-weight:600;margin-bottom:4px}.dock-cleanup-select{display:flex;align-items:center;gap:8px;padding:8px 10px;border:1px solid var(--border);border-radius:8px;background:var(--bg);cursor:pointer;font-size:14px;font-weight:600;margin-bottom:12px;width:100%;font-family:inherit;text-align:left}.dock-cleanup-select:hover{background:var(--surface-2)}.dock-cleanup-select .name{flex:1;letter-spacing:-.01em}.dock-cleanup-select .badge-status{font-size:9.5px;text-transform:uppercase;letter-spacing:.08em;background:var(--good-soft);color:var(--good);padding:2px 6px;border-radius:999px;font-weight:600}.dock-cleanup-select .caret{color:var(--text-3)}.dock-progress{display:flex;flex-direction:column;gap:8px}.dock-progress-stats{display:flex;align-items:baseline;gap:6px}.dock-current{font-family:JetBrains Mono,monospace;font-size:22px;font-weight:500;letter-spacing:-.02em}.dock-target{font-family:JetBrains Mono,monospace;font-size:13px;color:var(--text-3)}.dock-progress-bar{height:6px;background:var(--surface-2);border-radius:999px;overflow:hidden;position:relative}.dock-progress-fill{height:100%;background:var(--text);border-radius:999px;transition:width .35s cubic-bezier(.2,.8,.2,1)}.dock-progress-fill.staged{background:var(--accent)}.dock-progress-meta{display:flex;justify-content:space-between;font-size:11px;color:var(--text-3)}.dock-progress-meta b{color:var(--text);font-weight:500}.dock-list-head{padding:12px 20px 8px;display:flex;align-items:center;gap:8px}.dock-list-head h3{margin:0;font-size:11px;font-weight:600;text-transform:uppercase;letter-spacing:.08em;color:var(--text-3)}.dock-list-head .count{font-family:JetBrains Mono,monospace;font-size:11px;color:var(--text-2)}.dock-list-head .spacer{flex:1}.dock-list-head .link{font-size:11.5px;color:var(--accent-text);cursor:pointer;text-decoration:none}.dock-list-head .link:hover{text-decoration:underline}.dock-list{flex:1;overflow-y:auto;padding:0 12px 8px;display:flex;flex-direction:column;gap:4px}.dock-list.drop-target{background:var(--accent-soft);box-shadow:inset 0 0 0 2px var(--accent)}.dock-item{display:grid;grid-template-columns:28px 1fr auto auto;gap:8px;padding:6px 8px;border-radius:6px;align-items:center;background:transparent}.dock-item:hover{background:var(--surface-2)}.dock-item.just-added{animation:pop .35s ease-out;background:var(--accent-soft)}@keyframes pop{0%{transform:scale(.94);opacity:0}60%{transform:scale(1.02)}to{transform:scale(1);opacity:1}}.dock-item-poster{width:24px;height:36px;border-radius:3px;overflow:hidden;display:grid;place-items:center;font-family:JetBrains Mono,monospace;font-size:9px;color:var(--text-3)}.dock-item-poster.movie{background:repeating-linear-gradient(135deg,#ece8e0 0,#ece8e0 3px,#f4f2ee 3px,#f4f2ee 6px)}.dock-item-poster.show{background:repeating-linear-gradient(135deg,#e6e8ea 0,#e6e8ea 3px,#f1f3f5 3px,#f1f3f5 6px)}.dock-item-body{min-width:0}.dock-item-title{font-size:12.5px;font-weight:500;white-space:nowrap;overflow:hidden;text-overflow:ellipsis;color:var(--text)}.dock-item-sub{font-size:10.5px;color:var(--text-3)}.dock-item-size{font-family:JetBrains Mono,monospace;font-size:11px;color:var(--text-2)}.dock-item-x{width:18px;height:18px;border:none;background:transparent;color:var(--text-3);cursor:pointer;border-radius:4px;display:grid;place-items:center;font-family:inherit;opacity:0;transition:opacity .12s}.dock-item:hover .dock-item-x{opacity:1}.dock-item-x:hover{background:var(--danger);color:#fff}.dock-empty{padding:32px 20px;text-align:center;color:var(--text-3);font-size:12.5px;border:1px dashed var(--border-strong);border-radius:8px;margin:8px 12px}.dock-foot{padding:14px 20px;border-top:1px solid var(--border);background:var(--bg);display:flex;flex-direction:column;gap:8px}.toast-stack{position:fixed;bottom:24px;right:24px;display:flex;flex-direction:column;gap:8px;z-index:100;pointer-events:none}.toast{background:var(--text);color:var(--bg);padding:10px 14px;border-radius:8px;font-size:13px;box-shadow:var(--shadow-lg);display:flex;align-items:center;gap:10px;animation:toast-in .2s ease-out;pointer-events:auto}@keyframes toast-in{0%{transform:translateY(8px);opacity:0}to{transform:translateY(0);opacity:1}}.toast .undo{color:#b9c0ff;cursor:pointer;text-decoration:underline;font-weight:500}.dropdown{position:absolute;background:var(--surface);border:1px solid var(--border);border-radius:8px;box-shadow:var(--shadow-lg);padding:6px;min-width:240px;z-index:50}.dropdown-item{display:flex;align-items:center;gap:10px;padding:8px 10px;border-radius:5px;cursor:pointer;font-size:13px}.dropdown-item:hover{background:var(--surface-2)}.dropdown-item .left{flex:1}.dropdown-item .left .name{font-weight:500}.dropdown-item .left .meta{font-size:11px;color:var(--text-3)}.dropdown-item.active{background:var(--accent-soft);color:var(--accent-text)}.dropdown-divider{height:1px;background:var(--border);margin:4px 0}.dropdown-item.create{color:var(--accent-text)}.dropdown-item.create .left .name{font-weight:600}.genre-menu{width:280px;max-height:380px;display:flex;flex-direction:column;padding:0}.genre-menu-search{padding:8px;border-bottom:1px solid var(--border)}.genre-menu-search input{width:100%;height:28px;padding:0 10px;border-radius:6px;border:1px solid var(--border-strong);background:var(--surface);font-family:inherit;font-size:12.5px;outline:none}.genre-menu-search input:focus{border-color:var(--accent);box-shadow:0 0 0 3px #4a55c826}.genre-menu-list{overflow-y:auto;padding:6px;flex:1}.genre-menu-item{display:flex;align-items:center;gap:10px;padding:6px 8px;border-radius:5px;cursor:pointer;font-size:12.5px;-webkit-user-select:none;user-select:none}.genre-menu-item:hover{background:var(--surface-2)}.genre-menu-item.on{color:var(--accent-text)}.genre-menu-foot{padding:6px;border-top:1px solid var(--border);display:flex;justify-content:flex-end}.center-page{min-height:100vh;display:grid;place-items:center;padding:40px;background:var(--bg)}.login-card{width:100%;max-width:380px;padding:28px 28px 24px;background:var(--surface);border:1px solid var(--border);border-radius:var(--radius);box-shadow:var(--shadow-md);text-align:center}.login-card h1{font-size:22px;margin:4px 0 6px;letter-spacing:-.02em}.login-card p{color:var(--text-3);font-size:13px;margin:0 0 20px}.loading{color:var(--text-3);font-size:13px;padding:40px 32px;text-align:center}.scan-error-banner{display:flex;align-items:flex-start;gap:10px;margin:16px 32px;padding:12px 14px;background:var(--danger-soft);border:1px solid #e7c7c0;border-radius:8px;color:var(--danger);font-size:13px}.scan-error-banner svg{margin-top:2px;flex-shrink:0}.scan-error-banner strong{color:var(--danger);font-weight:600}.scan-error-detail{color:var(--text-2);font-size:11.5px;margin-top:2px;word-break:break-word}.modal-backdrop{position:fixed;top:0;right:0;bottom:0;left:0;background:#1c1b1873;display:grid;place-items:center;z-index:1000;padding:24px;animation:modal-fade .12s ease-out}@keyframes modal-fade{0%{opacity:0}to{opacity:1}}.modal{background:var(--surface);border-radius:var(--radius);box-shadow:var(--shadow-lg);width:100%;max-width:760px;max-height:90vh;display:flex;flex-direction:column;overflow:hidden;animation:modal-pop .16s cubic-bezier(.2,.8,.2,1)}@keyframes modal-pop{0%{transform:translateY(8px) scale(.98);opacity:0}to{transform:translateY(0) scale(1);opacity:1}}.modal-head{padding:20px 24px 14px;border-bottom:1px solid var(--border)}.modal-title{margin:0;font-size:18px;font-weight:600;letter-spacing:-.02em}.modal-sub{margin-top:4px;color:var(--text-3);font-size:12.5px}.modal-sub b{color:var(--text-2);font-weight:500}.plan-totals{display:grid;grid-template-columns:1fr 1fr 1.4fr;gap:12px;padding:16px 24px;background:var(--bg);border-bottom:1px solid var(--border)}.plan-totals-stat{display:flex;flex-direction:column;gap:2px}.plan-totals-label{font-size:11px;text-transform:uppercase;letter-spacing:.08em;color:var(--text-3);font-weight:600}.plan-totals-value{font-family:JetBrains Mono,monospace;font-size:22px;font-weight:500;letter-spacing:-.02em;color:var(--text)}.plan-totals-sub{font-size:12px;color:var(--text-3)}.plan-totals-sub b{color:var(--text);font-weight:500}.plan-body{flex:1;overflow-y:auto;padding:8px 0}.plan-group{padding:8px 24px 12px}.plan-group-head{font-size:11px;text-transform:uppercase;letter-spacing:.08em;font-weight:600;padding:6px 0;color:var(--text-3)}.plan-group-head--delete{color:var(--danger)}.plan-group-head--skip{color:var(--warn)}.plan-rows{display:flex;flex-direction:column;gap:4px}.plan-row{display:grid;grid-template-columns:44px 1fr auto;gap:12px;padding:8px 12px;border:1px solid var(--border);border-radius:6px;background:var(--surface);align-items:center}.plan-row-icon{width:44px;height:32px;border-radius:4px;display:grid;place-items:center;font-family:JetBrains Mono,monospace;font-size:9.5px;font-weight:600;letter-spacing:.08em;color:var(--text-3);background:var(--surface-2);border:1px solid var(--border)}.plan-row-icon--folder{background:var(--surface-3)}.plan-row-body{min-width:0}.plan-row-title{font-size:13px;font-weight:600;letter-spacing:-.01em;white-space:nowrap;overflow:hidden;text-overflow:ellipsis}.plan-row-path{font-size:11px;color:var(--text-3);white-space:nowrap;overflow:hidden;text-overflow:ellipsis}.plan-row-reason{font-size:11.5px;color:var(--warn-text);margin-top:2px}.plan-row-meta{display:flex;flex-direction:column;align-items:flex-end;gap:2px;white-space:nowrap}.plan-row-backend{font-size:10.5px;text-transform:uppercase;letter-spacing:.08em;color:var(--text-3);font-weight:500}.plan-row-size{font-size:13px;font-weight:500;color:var(--text)}.modal-foot{display:flex;justify-content:flex-end;gap:8px;padding:14px 24px;border-top:1px solid var(--border);background:var(--surface)}.modal--links{max-width:520px}.details-meta{padding:14px 20px 4px;border-bottom:1px solid var(--border);background:var(--bg)}.details-facts{margin:0;display:grid;grid-template-columns:1fr 1fr;gap:6px 16px}.details-fact{display:flex;flex-direction:column;gap:1px;min-width:0;padding:4px 0}.details-fact dt{font-size:10.5px;text-transform:uppercase;letter-spacing:.08em;font-weight:600;color:var(--text-3)}.details-fact dd{margin:0;font-size:12.5px;color:var(--text);white-space:nowrap;overflow:hidden;text-overflow:ellipsis}.details-path{margin-top:8px;padding:8px 10px;background:var(--surface);border:1px solid var(--border);border-radius:6px;display:flex;flex-direction:column;gap:2px;margin-bottom:12px}.details-path-label{font-size:10.5px;text-transform:uppercase;letter-spacing:.08em;font-weight:600;color:var(--text-3)}.details-path-value{font-size:11.5px;color:var(--text-2);word-break:break-all;white-space:pre-wrap}.link-grid-head{padding:14px 20px 4px;font-size:11px;text-transform:uppercase;letter-spacing:.08em;font-weight:600;color:var(--text-3)}.link-grid{display:grid;grid-template-columns:1fr 1fr;gap:8px;padding:8px 20px 16px}.link-tile{display:flex;align-items:center;gap:10px;padding:10px 12px;border:1px solid var(--border);border-radius:8px;background:var(--surface);text-decoration:none;color:inherit;transition:border-color .1s,background .1s}.link-tile:hover{border-color:var(--border-strong);background:var(--surface-2)}.link-tile-icon{width:28px;height:28px;border-radius:6px;display:grid;place-items:center;background:var(--surface-2);color:var(--text-2);font-family:JetBrains Mono,monospace;font-size:13px;font-weight:700;flex:0 0 auto}.link-tile-body{min-width:0;flex:1}.link-tile-label{font-size:13px;font-weight:600;letter-spacing:-.01em}.link-tile-sub{font-size:11px;color:var(--text-3);font-family:JetBrains Mono,monospace;white-space:nowrap;overflow:hidden;text-overflow:ellipsis}.link-tile-arrow{color:var(--text-3);flex:0 0 auto}.link-tile:hover .link-tile-arrow{color:var(--accent)}@media (max-width: 480px){.link-grid{grid-template-columns:1fr}}.sidebar-toggle,.sidebar-backdrop,.mobile-cleanup-picker,.dock-pill{display:none}.sidebar-toggle{position:fixed;top:12px;left:12px;z-index:100;width:36px;height:36px;align-items:center;justify-content:center;background:var(--surface);border:1px solid var(--border-strong);border-radius:7px;color:var(--text-2);cursor:pointer;font-family:inherit;box-shadow:var(--shadow-sm)}.sidebar-toggle:hover{background:var(--surface-2);color:var(--text)}.sidebar-backdrop{position:fixed;top:0;right:0;bottom:0;left:0;background:#1c1b1873;z-index:80;animation:backdrop-in .12s ease-out}@keyframes backdrop-in{0%{opacity:0}to{opacity:1}}.dock-pill{position:fixed;bottom:14px;left:50%;transform:translate(-50%);z-index:70;align-items:center;gap:8px;padding:10px 14px;background:var(--text);color:var(--bg);border-radius:999px;box-shadow:var(--shadow-lg);font-size:13px;text-decoration:none;max-width:calc(100vw - 32px)}.dock-pill .dock-pill-name{font-weight:600;letter-spacing:-.01em}.dock-pill .dock-pill-meta{color:#faf9f7b3;font-size:12px}.mobile-cleanup-picker{padding:12px 16px;border-bottom:1px solid var(--border);background:var(--surface)}.mobile-cleanup-picker .dock-cleanup-select{margin-bottom:0}@media (max-width: 1400px){.table-head,.row{grid-template-columns:36px 56px minmax(180px,1fr) 130px 130px 60px 120px}.table-head>:nth-child(6),.table-head>:nth-child(7),.row>:nth-child(6),.row>:nth-child(7){display:none}}@media (max-width: 1180px){.table-head,.row{grid-template-columns:36px 56px minmax(180px,1fr) 130px 60px 120px}.table-head>:nth-child(5),.row>:nth-child(5){display:none}}@media (max-width: 980px){.table-head,.row{grid-template-columns:36px 56px minmax(180px,1fr) 60px 120px}.table-head>:nth-child(4),.row>:nth-child(4){display:none}}@media (max-width: 768px){.app,.app--library{grid-template-columns:1fr}.dock{display:none}.sidebar-toggle{display:flex}.mobile-cleanup-picker{display:block}.dock-pill{display:inline-flex}.sidebar{position:fixed;top:0;left:0;width:260px;height:100vh;transform:translate(-100%);transition:transform .2s ease-out;z-index:90;box-shadow:var(--shadow-lg)}.sidebar.open{transform:translate(0)}.sidebar-backdrop{display:none}.sidebar-backdrop.open{display:block}.page-head{padding:16px 16px 12px 60px}.h1{font-size:18px;gap:8px;flex-wrap:wrap}.h1 .total{font-size:12px}.app--library .page-head{padding:12px 16px 10px 60px}.app--library .h1{font-size:18px}.h1-meta{gap:8px;flex-wrap:wrap;font-size:12px}.toolbar{flex-wrap:wrap;padding:10px 16px;gap:8px}.app--library .toolbar{padding:10px 16px}.search{flex:1 1 100%}.toolbar-spacer{display:none}.filter-group{flex-wrap:wrap}.table-head,.row{grid-template-columns:28px 40px minmax(0,1fr) 64px 86px;padding:10px 12px;gap:8px}.table-head>:nth-child(n+4):nth-child(-n+7),.row>:nth-child(n+4):nth-child(-n+7){display:none}.table-head{top:49px;padding:8px 12px}.poster-mini{width:32px;height:48px}.progress-card{grid-template-columns:1fr;padding:14px 16px}.progress-actions{grid-column:1 / -1}.progress-current{font-size:22px}.progress-target{font-size:14px}.summary-row{grid-template-columns:repeat(2,1fr);gap:8px;margin-bottom:18px}.stat-card{padding:10px 12px}.stat-value{font-size:18px}.stat-sub{font-size:11px}.content{padding:16px 16px 80px}.item{grid-template-columns:24px 48px 1fr;padding:12px;gap:10px}.item .poster{width:48px;height:72px}.item-right{grid-column:1 / -1;flex-direction:row;justify-content:space-between;align-items:center;border-top:1px dashed var(--border);padding-top:8px;margin-top:4px}.item-meta{font-size:11.5px;gap:8px}.item-meta .label{display:none}.execute-card{flex-direction:column;align-items:stretch;gap:12px;padding:16px}.execute-card .ico{display:none}.modal-backdrop{padding:0}.modal{max-height:100vh;max-width:none;border-radius:0}.modal-head{padding:16px 16px 12px}.plan-totals{grid-template-columns:1fr 1fr;padding:12px 16px}.plan-totals>:nth-child(3){grid-column:1 / -1}.plan-row{grid-template-columns:36px 1fr;gap:8px}.plan-row-meta{grid-column:2;flex-direction:row;justify-content:space-between;align-items:center;margin-top:4px}.plan-group{padding:6px 16px 10px}.modal-foot{padding:12px 16px;flex-wrap:wrap}.modal-foot .btn{flex:1 1 auto;justify-content:center}.tabs{gap:4px}.tab{padding:8px 10px;font-size:13px}.pager{padding:12px 16px;flex-wrap:wrap;gap:8px}}.audit-list{display:flex;flex-direction:column;gap:8px}.audit-row{display:flex;flex-direction:column;gap:4px;padding:12px 14px;border:1px solid var(--border);border-radius:6px;background:var(--surface)}.audit-row--present{border-color:var(--warn);background:var(--warn-soft)}.audit-row--unknown{border-style:dashed}.audit-row__head{display:flex;align-items:center;gap:10px;flex-wrap:wrap}.audit-row__title{font-weight:600;font-size:14px}.audit-row__kind,.audit-row__when{font-size:11.5px;color:var(--text-3)}.audit-row__path{font-size:12px;color:var(--text-2);word-break:break-all}.audit-row__meta{display:flex;gap:6px;flex-wrap:wrap;font-size:11.5px;color:var(--text-3)}.audit-row__err{color:var(--warn-text)}
