:root{--bg:#09090b;--bg-card:#111115;--bg-elevated:#18181d;--bg-input:#1c1c23;--bg-glass:rgba(10,10,13,0.88);--border:rgba(255,255,255,0.06);--border-hi:rgba(255,255,255,0.12);--text-1:#f4f4f5;--text-2:#a1a1aa;--text-3:#52525b;--text-inv:#09090b;--accent:#60a5fa;--accent-dim:rgba(96,165,250,0.10);--accent-glow:rgba(96,165,250,0.22);--green:#34d399;--green-dim:rgba(52,211,153,0.10);--green-border:rgba(52,211,153,0.28);--green-glow:rgba(52,211,153,0.4);--amber:#fbbf24;--amber-dim:rgba(251,191,36,0.10);--amber-border:rgba(251,191,36,0.28);--red:#f87171;--red-dim:rgba(248,113,113,0.10);--red-border:rgba(248,113,113,0.28);--purple:#c084fc;--purple-dim:rgba(192,132,252,0.10);--purple-border:rgba(192,132,252,0.28);--nav-w:232px;--drawer-w:460px;--r-xs:4px;--r-sm:7px;--r:11px;--r-lg:14px;--r-xl:20px;--mono:'JetBrains Mono', monospace;--body:'Plus Jakarta Sans', sans-serif;--t:130ms ease}*,*::before,*::after{box-sizing:border-box;margin:0;padding:0}html,body{height:100%;background:var(--bg);color:var(--text-1);font-family:var(--body);font-size:14px;line-height:1.5;-webkit-font-smoothing:antialiased;-moz-osx-font-smoothing:grayscale}::-webkit-scrollbar{width:4px;height:4px}::-webkit-scrollbar-thumb{background:var(--bg-elevated);border-radius:99px}::-webkit-scrollbar-track{background:#fff0}a{color:var(--accent);text-decoration:none}a:hover{text-decoration:underline}button{font-family:var(--body)}.seo-text{position:absolute;width:1px;height:1px;overflow:hidden;clip:rect(0,0,0,0);white-space:nowrap;border:0;margin:-1px}.layout{display:flex;height:100vh;overflow:hidden}.sidebar{width:var(--nav-w);flex-shrink:0;background:var(--bg-glass);backdrop-filter:blur(24px) saturate(160%);-webkit-backdrop-filter:blur(24px) saturate(160%);border-right:1px solid var(--border);display:flex;flex-direction:column;padding:16px 10px;gap:2px;overflow-y:auto;position:relative;z-index:10}.sidebar-overlay{display:none;position:fixed;inset:0;z-index:49;background:rgb(0 0 0 / .6);backdrop-filter:blur(4px)}.brand{display:flex;align-items:center;gap:10px;padding:6px 10px 16px;border-bottom:1px solid var(--border);margin-bottom:6px}.brand-icon{width:30px;height:30px;background:linear-gradient(135deg,var(--accent) 0%,var(--purple) 100%);border-radius:var(--r-sm);display:flex;align-items:center;justify-content:center;color:#fff;font-size:13px;flex-shrink:0;box-shadow:0 0 16px var(--accent-glow)}.brand-name{font-family:var(--mono);font-size:13.5px;font-weight:700;letter-spacing:-.03em;color:var(--text-1)}.brand-ver{font-size:10px;color:var(--text-3);margin-top:1px;font-family:var(--mono);transition:opacity 0.35s ease}.nav-section{display:flex;flex-direction:column;gap:1px}.nav-item{display:flex;align-items:center;gap:9px;padding:8px 11px;border-radius:var(--r-sm);cursor:pointer;color:var(--text-2);font-weight:600;font-size:13px;transition:background var(--t),color var(--t);user-select:none;border:1px solid #fff0}.nav-item i{width:14px;text-align:center;font-size:12px;flex-shrink:0}.nav-item span{flex:1}.nav-item:hover{background:var(--bg-elevated);color:var(--text-1)}.nav-item.active{background:var(--bg-elevated);color:var(--text-1);border-color:var(--border-hi)}.nav-log{background:var(--accent);color:var(--text-inv);border:1px solid var(--accent);font-weight:800}.nav-log:hover{filter:brightness(1.18);background:var(--accent);box-shadow:0 0 18px var(--accent-glow);color:var(--text-inv)}.nav-log .nav-pill{background:rgb(0 0 0 / .18);color:var(--text-inv)}@keyframes log-pulse{0%,100%{box-shadow:0 0 0 0 var(--accent-glow)}50%{box-shadow:0 0 0 8px #fff0}}.nav-log-pulse{animation:log-pulse 2.4s ease-in-out infinite}.drawer-detach-btn{width:26px;height:26px;border:1px solid var(--border);border-radius:var(--r-sm);background:var(--bg-elevated);color:var(--text-3);cursor:pointer;font-size:11px;display:flex;align-items:center;justify-content:center;flex-shrink:0;transition:all var(--t)}.drawer-detach-btn:hover{color:var(--text-1);border-color:var(--border-hi)}.nav-pill{font-family:var(--mono);font-size:11px;font-weight:700;background:var(--accent);color:var(--text-inv);width:18px;height:18px;border-radius:99px;display:flex;align-items:center;justify-content:center;flex-shrink:0}.nav-divider{height:1px;background:var(--border);margin:5px 0}.sidebar-footer{margin-top:auto;padding-top:10px;border-top:1px solid var(--border)}.sync-block{padding:8px 11px;border-radius:var(--r-sm);cursor:pointer;transition:background var(--t)}.sync-block:hover{background:var(--bg-elevated)}.sync-row{display:flex;align-items:center;gap:7px;font-size:12.5px;color:var(--text-2);font-weight:600}.sync-dot{width:7px;height:7px;border-radius:50%;background:var(--text-3);flex-shrink:0;transition:background 0.4s}.sync-dot.syncing{background:var(--amber);animation:blink 1s infinite}.sync-dot.synced{background:var(--green)}.sync-dot.error{background:var(--red)}@keyframes blink{0%,100%{opacity:1}50%{opacity:.25}}.sync-time{font-size:10px;color:var(--text-3);margin-top:2px;padding-left:14px;font-family:var(--mono)}.theme-btn{display:flex;align-items:center;gap:9px;padding:8px 11px;border-radius:var(--r-sm);cursor:pointer;color:var(--text-2);font-weight:600;font-size:13px;border:none;background:none;width:100%;transition:background var(--t),color var(--t)}.theme-btn:hover{background:var(--bg-elevated);color:var(--text-1)}.theme-btn i{width:14px;text-align:center;font-size:12px}.main-col{display:flex;flex-direction:column;flex:1;overflow:hidden}.mobile-header{display:none;align-items:center;justify-content:space-between;padding:12px 16px;background:var(--bg-glass);backdrop-filter:blur(20px);border-bottom:1px solid var(--border)}.mobile-brand{font-family:var(--mono);font-size:14px;font-weight:700}.icon-btn{width:32px;height:32px;border:1px solid var(--border);border-radius:var(--r-sm);background:var(--bg-elevated);color:var(--text-2);cursor:pointer;display:flex;align-items:center;justify-content:center;font-size:13px;transition:all var(--t)}.icon-btn:hover{color:var(--text-1);border-color:var(--border-hi)}.main{flex:1;overflow-y:auto;padding:28px 30px;display:flex;flex-direction:column;gap:18px}.view{display:none;flex-direction:column;gap:18px}.view.active{display:flex}.page-header{display:flex;align-items:flex-start;justify-content:space-between;gap:12px}.page-title{font-size:22px;font-weight:800;letter-spacing:-.03em}.page-sub{font-size:13px;color:var(--text-3);margin-top:3px}.card{background:var(--bg-card);border:1px solid var(--border);border-radius:var(--r-lg);padding:20px}.card-sm{padding:14px;border-radius:var(--r)}.card-title{font-size:10px;font-weight:700;color:var(--text-3);text-transform:uppercase;letter-spacing:.09em;margin-bottom:14px;display:flex;align-items:center;gap:6px}.divider{height:1px;background:var(--border);margin:20px 0}.drawer-divider{height:1px;background:var(--border);margin:16px 0}.section-label{font-size:13.5px;font-weight:700;color:var(--text-1);margin-bottom:14px}.micro-copy{font-size:11px;color:var(--text-3);line-height:1.5;margin-top:8px}.micro-copy i{margin-right:4px}.label-note{font-weight:400;text-transform:none;font-size:10px;color:var(--text-3)}.empty-state{text-align:center;padding:56px 24px;color:var(--text-3)}.empty-state i{font-size:34px;margin-bottom:14px;opacity:.3;display:block}.empty-state h3{font-size:15px;font-weight:700;color:var(--text-2);margin-bottom:6px}.empty-state p{font-size:13px}.btn{display:inline-flex;align-items:center;gap:6px;padding:8px 15px;border-radius:var(--r-sm);font-size:13px;font-weight:700;font-family:var(--body);cursor:pointer;border:1px solid #fff0;transition:all var(--t);white-space:nowrap}.btn:disabled{opacity:.4;cursor:not-allowed}.btn:focus-visible{outline:2px solid var(--accent);outline-offset:2px}.btn-primary{background:var(--accent);color:var(--text-inv);border-color:var(--accent);box-shadow:0 0 0 0 var(--accent-glow)}.btn-primary:hover:not(:disabled){filter:brightness(1.18);box-shadow:0 0 18px var(--accent-glow)}.btn-secondary{background:var(--bg-elevated);color:var(--text-2);border-color:var(--border)}.btn-secondary:hover:not(:disabled){border-color:var(--border-hi);color:var(--text-1)}.btn-danger{background:var(--red-dim);color:var(--red);border-color:var(--red-border)}.btn-danger:hover:not(:disabled){background:rgb(248 113 113 / .18)}.btn-ghost{background:none;color:var(--text-2);border-color:#fff0}.btn-ghost:hover:not(:disabled){background:var(--bg-elevated);color:var(--text-1)}.btn-sm{padding:4px 10px;font-size:11px}.btn-row{display:flex;gap:8px;flex-wrap:wrap;align-items:center}.form-group{display:flex;flex-direction:column;gap:5px}.form-group label{font-size:10.5px;font-weight:700;color:var(--text-3);text-transform:uppercase;letter-spacing:.09em}input[type=text],input[type=number],input[type=password],select,textarea{background:var(--bg-input);border:1px solid var(--border);border-radius:var(--r-sm);padding:8px 10px;color:var(--text-1);font-family:var(--body);font-size:13.5px;transition:border-color var(--t),box-shadow var(--t);width:100%;appearance:none;-webkit-appearance:none}input:focus,select:focus,textarea:focus{outline:none;border-color:var(--accent);box-shadow:0 0 0 3px var(--accent-glow)}select{cursor:pointer}textarea{resize:vertical}.perc-display{background:var(--bg-input);border:1px solid var(--border);border-radius:var(--r-sm);padding:8px 10px;display:flex;align-items:center;justify-content:center;font-family:var(--mono);font-size:16px;font-weight:700;color:var(--text-3);transition:color var(--t);min-width:0}.checkbox-label{display:flex;align-items:center;gap:8px;font-size:13px;color:var(--text-2);cursor:pointer;user-select:none}input[type=checkbox]{accent-color:var(--accent);width:14px;height:14px;flex-shrink:0}.filter-grid{display:grid;grid-template-columns:repeat(auto-fill,minmax(130px,1fr));gap:8px}.form-row-2{display:grid;grid-template-columns:1fr 1fr;gap:12px}.form-row-3{display:grid;grid-template-columns:1fr 1fr 1fr;gap:12px}.welcome-hero{position:relative;background:var(--bg-card);border:1px solid var(--border);border-radius:var(--r-xl);padding:24px 26px;overflow:hidden}.welcome-hero::before{content:'';position:absolute;top:0;left:0;right:0;height:1px;background:linear-gradient(90deg,transparent 0%,var(--accent) 40%,var(--purple) 60%,transparent 100%)}.hero-head{display:flex;align-items:flex-start;justify-content:space-between;gap:12px;margin-bottom:16px}.hero-badge{display:inline-flex;align-items:center;gap:5px;padding:3px 9px;border-radius:99px;background:var(--accent-dim);border:1px solid var(--accent-glow);font-size:10px;font-weight:700;color:var(--accent);text-transform:uppercase;letter-spacing:.08em;margin-bottom:6px}.hero-title{font-size:17px;font-weight:800;letter-spacing:-.025em;color:var(--text-1);margin-bottom:4px}.hero-sub{font-size:12.5px;color:var(--text-3);line-height:1.5}.hero-dismiss{background:none;border:1px solid var(--border);border-radius:var(--r-sm);width:26px;height:26px;color:var(--text-3);cursor:pointer;display:flex;align-items:center;justify-content:center;font-size:11px;flex-shrink:0;transition:all var(--t)}.hero-dismiss:hover{color:var(--text-1);border-color:var(--border-hi)}.hero-steps{display:grid;grid-template-columns:repeat(auto-fit,minmax(200px,1fr));gap:10px;margin-bottom:18px}.hero-step{display:flex;gap:10px;align-items:flex-start;padding:10px 12px;background:var(--bg-elevated);border-radius:var(--r);border:1px solid var(--border)}.step-num{width:22px;height:22px;border-radius:50%;display:flex;align-items:center;justify-content:center;font-family:var(--mono);font-size:10px;font-weight:700;flex-shrink:0;margin-top:1px}.step-num.blue{background:var(--accent-dim);color:var(--accent);border:1px solid var(--accent-glow)}.step-num.purple{background:var(--purple-dim);color:var(--purple);border:1px solid var(--purple-border)}.step-num.green{background:var(--green-dim);color:var(--green);border:1px solid var(--green-border)}.step-num.amber{background:var(--amber-dim);color:var(--amber);border:1px solid var(--amber-border)}.step-body-title{font-size:12.5px;font-weight:700;color:var(--text-1);margin-bottom:2px}.step-body-text{font-size:11px;color:var(--text-3);line-height:1.5}.hero-footer{display:flex;align-items:center;justify-content:space-between;gap:12px;flex-wrap:wrap}.hero-privacy{font-size:11px;color:var(--text-3);display:flex;align-items:center;gap:5px}.empty-nudge{display:flex;align-items:center;gap:14px;padding:14px 18px;background:var(--bg-card);border:1px solid var(--border);border-radius:var(--r-lg);flex-wrap:wrap}.empty-nudge-icon{width:38px;height:38px;background:var(--accent-dim);border:1px solid var(--accent-glow);border-radius:var(--r);display:flex;align-items:center;justify-content:center;color:var(--accent);font-size:15px;flex-shrink:0}.empty-nudge-title{font-size:14px;font-weight:800;color:var(--text-1);margin-bottom:2px}.empty-nudge-sub{font-size:12px;color:var(--text-3)}.empty-nudge-text{flex:1}.tc-row-hi{background:var(--accent-dim)!important;border-color:var(--accent-glow)!important}.tc-col-hi{background:var(--accent-dim)!important;border-color:var(--accent-glow)!important}.yr-td-hi{color:var(--text-1)!important;background:var(--accent-dim)!important}.sess-th-hi{color:var(--accent)!important}.demo-toggle-row{display:flex;align-items:center;gap:10px;padding:10px 14px;background:var(--bg-elevated);border:1px solid var(--border);border-radius:var(--r)}.demo-label{flex:1;font-size:12.5px;color:var(--text-2)}.demo-label strong{color:var(--text-1)}.toggle-switch{position:relative;width:36px;height:20px;flex-shrink:0}.toggle-switch input{opacity:0;width:0;height:0;position:absolute}.toggle-track{position:absolute;inset:0;background:var(--bg-input);border:1px solid var(--border);border-radius:99px;cursor:pointer;transition:background var(--t),border-color var(--t)}.toggle-track::after{content:'';position:absolute;top:2px;left:2px;width:14px;height:14px;border-radius:50%;background:var(--text-3);transition:transform 200ms,background 200ms}.toggle-switch input:checked+.toggle-track{background:var(--accent-dim);border-color:var(--accent)}.toggle-switch input:checked+.toggle-track::after{transform:translateX(16px);background:var(--accent)}.grade-pill{display:inline-flex;align-items:center;padding:2px 9px;border-radius:99px;font-family:var(--mono);font-size:11px;font-weight:700;letter-spacing:.04em;border:1px solid #fff0;line-height:1.4}.grade-pill.gA{background:var(--green-dim);color:var(--green);border-color:var(--green-border);box-shadow:0 0 10px var(--green-glow)}.grade-pill.gB{background:var(--accent-dim);color:var(--accent);border-color:var(--accent-glow)}.grade-pill.gC,.grade-pill.gD{background:var(--amber-dim);color:var(--amber);border-color:var(--amber-border)}.grade-pill.gE,.grade-pill.gF,.grade-pill.gG{background:var(--red-dim);color:var(--red);border-color:var(--red-border)}.grade-pill.gU{background:rgb(82 82 91 / .2);color:var(--text-3);border-color:rgb(82 82 91 / .3)}.badge{display:inline-flex;align-items:center;gap:3px;padding:2px 8px;border-radius:99px;font-size:11px;font-weight:600}.badge-done{background:var(--green-dim);color:var(--green)}.badge-verified{background:var(--accent-dim);color:var(--accent)}.badge-404{background:var(--red-dim);color:var(--red)}.score-badge{display:inline-flex;align-items:center;padding:2px 9px;border-radius:99px;font-family:var(--mono);font-size:12px;font-weight:700}.score-high{background:var(--green-dim);color:var(--green)}.score-mid{background:var(--amber-dim);color:var(--amber)}.score-low{background:var(--red-dim);color:var(--red)}.stat-grid{display:grid;grid-template-columns:repeat(4,1fr);gap:12px}@media(max-width:900px){.stat-grid{grid-template-columns:repeat(2,1fr)}}.stat-card{background:var(--bg-card);border:1px solid var(--border);border-radius:var(--r-lg);padding:16px 18px;transition:border-color var(--t),transform var(--t)}.stat-card:hover{border-color:var(--border-hi);transform:translateY(-1px)}.stat-label{font-size:10px;font-weight:700;color:var(--text-3);text-transform:uppercase;letter-spacing:.09em;margin-bottom:8px;display:flex;align-items:center;gap:5px}.stat-val{font-family:var(--mono);font-size:28px;font-weight:700;line-height:1}.stat-meta{font-size:11.5px;color:var(--text-3);margin-top:4px}.perf-grid{display:grid;grid-template-columns:repeat(auto-fill,minmax(155px,1fr));gap:10px}.perf-card{background:var(--bg-card);border:1px solid var(--border);border-radius:var(--r-lg);padding:14px 16px;transition:border-color var(--t),transform var(--t)}.perf-card:hover{transform:translateY(-2px)}.perf-card.high{border-color:var(--green-border)}.perf-card.mid{border-color:var(--amber-border)}.perf-card.low{border-color:var(--red-border)}.perf-subject{font-size:10px;font-weight:700;color:var(--text-3);text-transform:uppercase;letter-spacing:.09em;margin-bottom:6px}.perf-score{font-family:var(--mono);font-size:25px;font-weight:700;line-height:1}.perf-meta{font-size:11px;color:var(--text-3);margin-top:3px}.perf-card.high .perf-score{color:var(--green)}.perf-card.mid .perf-score{color:var(--amber)}.perf-card.low .perf-score{color:var(--red)}.two-col{display:grid;grid-template-columns:1fr 1fr;gap:14px}@media(max-width:760px){.two-col{grid-template-columns:1fr}}.recent-item{display:flex;align-items:center;gap:10px;padding:9px 0;border-bottom:1px solid var(--border)}.recent-item:last-child{border-bottom:none}.recent-dot{width:6px;height:6px;border-radius:50%;flex-shrink:0}.recent-name{font-size:13px;font-weight:600;color:var(--text-1)}.recent-sub{font-size:11px;color:var(--text-3)}.wrong-item{padding:7px 11px;background:var(--bg-elevated);border-radius:var(--r-sm);border-left:2px solid var(--red);font-size:12px;color:var(--text-2)}.wrong-label{font-size:9.5px;font-weight:700;color:var(--text-3);text-transform:uppercase;letter-spacing:.07em;margin-bottom:2px}.cloud-nudge{display:flex;align-items:center;justify-content:space-between;padding:10px 14px;background:var(--bg-elevated);border-radius:var(--r);border:1px solid var(--border);gap:12px;font-size:12px;color:var(--text-3)}.tracker-wrap{overflow-x:auto;margin-top:4px}.tracker-table{border-collapse:collapse;font-size:11px}.tracker-table th{padding:4px 6px;font-size:9px;font-weight:700;color:var(--text-3);text-transform:uppercase;letter-spacing:.06em;text-align:center;border-bottom:1px solid var(--border);white-space:nowrap;background:var(--bg-elevated)}.tracker-table th.yr-th{text-align:left;padding-left:10px;position:sticky;left:0;z-index:2;background:var(--bg-elevated)}.tracker-table th.sess-th{border-left:2px solid var(--border)}.tracker-table td{padding:3px 3px;text-align:center;border-bottom:1px solid var(--border)}.tracker-table td.yr-td{text-align:left;font-family:var(--mono);font-size:11px;font-weight:700;color:var(--text-2);padding:3px 10px;white-space:nowrap;position:sticky;left:0;background:var(--bg-card);z-index:1;border-right:1px solid var(--border)}.tracker-table tr:last-child td{border-bottom:none}.tracker-table tr:hover td{background:rgb(255 255 255 / .015)}.tracker-table tr:hover td.yr-td{background:var(--bg-card)}.tc{width:36px;height:26px;border-radius:5px;border:1px solid var(--border);background:var(--bg-elevated);display:inline-flex;align-items:center;justify-content:center;font-family:var(--mono);font-size:9.5px;font-weight:700;cursor:pointer;transition:all 70ms ease}.tc.done-a{background:var(--green-dim);border-color:var(--green-border);color:var(--green);box-shadow:0 0 8px rgb(52 211 153 / .2)}.tc.done-b{background:var(--accent-dim);border-color:var(--accent-glow);color:var(--accent)}.tc.done-c{background:var(--amber-dim);border-color:var(--amber-border);color:var(--amber)}.tc.done-d,.tc.done-e,.tc.done-f,.tc.done-g,.tc.done-u{background:var(--red-dim);border-color:var(--red-border);color:var(--red)}.tc.done-pct{background:var(--green-dim);border-color:var(--green-border);color:var(--green)}.tc.done-pct.mid{background:var(--amber-dim);border-color:var(--amber-border);color:var(--amber)}.tc.done-pct.low{background:var(--red-dim);border-color:var(--red-border);color:var(--red)}.tc.todo{color:var(--text-3)}.tc.todo:hover{border-color:var(--accent);color:var(--accent);background:var(--accent-dim)}.tc.na{background:#fff0;border-color:#fff0;color:var(--text-3);opacity:.18;cursor:default}@keyframes scale-in{from{transform:scale(.7);opacity:0}to{transform:scale(1);opacity:1}}.tc-new{animation:scale-in 200ms cubic-bezier(.34,1.56,.64,1)}@keyframes row-in{from{transform:scaleY(0);opacity:0;transform-origin:top}to{transform:scaleY(1);opacity:1}}.row-new td{animation:row-in 220ms cubic-bezier(.4,0,.2,1)}.tab-row{display:flex;gap:4px;flex-wrap:wrap;margin-bottom:12px}.tab{padding:4px 11px;border-radius:99px;border:1px solid var(--border);background:#fff0;color:var(--text-3);font-size:11px;font-weight:700;cursor:pointer;font-family:var(--body);transition:all 70ms ease}.tab:hover{color:var(--text-2)}.tab.active{background:var(--accent-dim);border-color:var(--accent);color:var(--accent)}.tab.active.purple{background:var(--purple-dim);border-color:var(--purple);color:var(--purple)}.tracker-legend{display:flex;gap:14px;flex-wrap:wrap;margin-top:10px;font-size:11px;color:var(--text-3)}.legend-dot{width:9px;height:9px;border-radius:3px;display:inline-block;margin-right:4px;vertical-align:middle}.doc-tabs{display:flex;gap:5px;flex-wrap:wrap}.doc-tab{padding:6px 13px;border-radius:var(--r-sm);border:1px solid var(--border);background:var(--bg-elevated);color:var(--text-2);font-size:12px;font-weight:600;cursor:pointer;font-family:var(--body);transition:all var(--t)}.doc-tab:hover{border-color:var(--border-hi);color:var(--text-1)}.doc-tab.active{background:var(--accent-dim);border-color:var(--accent);color:var(--accent)}.filter-btn{display:flex;align-items:center;gap:6px;padding:7px 14px;background:var(--bg-elevated);border:1px solid var(--border);border-radius:var(--r-sm);color:var(--text-2);font-size:13px;font-weight:600;cursor:pointer;font-family:var(--body);transition:all var(--t)}.filter-btn:hover{border-color:var(--border-hi);color:var(--text-1)}.filter-btn.active{border-color:var(--accent);color:var(--accent);background:var(--accent-dim)}.year-group{margin-bottom:3px}.year-header{display:flex;align-items:center;gap:10px;padding:9px 13px;background:var(--bg-elevated);border-radius:var(--r-sm);cursor:pointer;font-weight:700;font-size:13px;color:var(--text-2);user-select:none;border:1px solid var(--border);transition:all var(--t)}.year-header:hover{color:var(--text-1);border-color:var(--border-hi)}.year-num{font-family:var(--mono);font-size:13px;color:var(--text-1)}.yr-caret{margin-left:auto;font-size:10px;transition:transform var(--t)}.year-header.open .yr-caret{transform:rotate(90deg)}.sess-group{border:1px solid var(--border);border-top:none;border-radius:0 0 var(--r-sm) var(--r-sm);overflow:hidden}.sess-label{padding:5px 13px;font-size:10px;font-weight:700;color:var(--text-3);text-transform:uppercase;letter-spacing:.08em;background:rgb(255 255 255 / .02);border-bottom:1px solid var(--border)}.paper-item{display:flex;align-items:center;gap:10px;padding:10px 13px;border-bottom:1px solid var(--border);transition:background var(--t)}.paper-item:last-child{border-bottom:none}.paper-item:hover{background:rgb(255 255 255 / .02)}.paper-item.not-found{opacity:.4}.paper-item.logged{background:rgb(52 211 153 / .04)}.paper-name{font-size:13px;font-weight:500;color:var(--text-1);flex:1}.paper-actions{display:flex;gap:5px;flex-shrink:0}.paper-btn{padding:4px 10px;border-radius:var(--r-sm);border:1px solid var(--border);background:var(--bg-elevated);color:var(--text-2);font-size:12px;font-weight:600;cursor:pointer;font-family:var(--body);transition:all var(--t)}.paper-btn:hover:not(:disabled){border-color:var(--border-hi);color:var(--text-1)}.paper-btn.primary{background:var(--accent-dim);border-color:var(--accent);color:var(--accent)}.paper-btn:disabled{opacity:.35;cursor:not-allowed}.table-wrap{overflow-x:auto;border-radius:var(--r-lg);border:1px solid var(--border)}table{width:100%;border-collapse:collapse}thead{background:var(--bg-elevated)}th{padding:10px 13px;font-size:10px;font-weight:700;color:var(--text-3);text-transform:uppercase;letter-spacing:.08em;text-align:left;border-bottom:1px solid var(--border);white-space:nowrap}th.sortable{cursor:pointer;transition:color var(--t)}th.sortable:hover{color:var(--text-1)}td{padding:11px 13px;border-bottom:1px solid var(--border);font-size:13px;color:var(--text-2);vertical-align:middle}tr:last-child td{border-bottom:none}tr:hover td{background:rgb(255 255 255 / .02)}.cell-main{font-weight:700;color:var(--text-1);font-size:13px}.cell-sub{font-size:11px;color:var(--text-3);margin-top:2px}.action-btns{display:flex;gap:3px}.action-btn{width:28px;height:28px;border-radius:var(--r-sm);border:1px solid var(--border);background:var(--bg-elevated);color:var(--text-3);cursor:pointer;font-size:11px;display:flex;align-items:center;justify-content:center;transition:all var(--t)}.action-btn:hover{color:var(--text-1);border-color:var(--border-hi)}.action-btn.danger:hover{color:var(--red);border-color:var(--red-border);background:var(--red-dim)}.stats-bar{display:flex;align-items:center;gap:12px;font-size:13px;color:var(--text-3);flex-wrap:wrap}.sub-item{display:flex;align-items:center;justify-content:space-between;gap:10px;padding:11px 13px;background:var(--bg-elevated);border-radius:var(--r);border:1px solid var(--border);margin-bottom:6px}.sub-item-name{font-size:13px;font-weight:700;color:var(--text-1)}.sub-item-meta{font-size:11px;color:var(--text-3);margin-top:2px}.sub-badge{font-size:10px;font-weight:700;padding:2px 7px;border-radius:99px;background:var(--bg-card);border:1px solid var(--border);color:var(--text-3);text-transform:uppercase;letter-spacing:.05em}.edit-banner{display:none;align-items:center;gap:10px;padding:9px 13px;background:var(--amber-dim);border:1px solid var(--amber-border);border-radius:var(--r-sm);font-size:13px;color:var(--amber)}.edit-banner.visible{display:flex}.edit-banner button{margin-left:auto;background:none;border:none;color:var(--amber);cursor:pointer;font-size:12px;font-family:var(--body);font-weight:700;text-decoration:underline}.drawer-backdrop{position:fixed;inset:0;background:rgb(0 0 0 / .45);backdrop-filter:blur(2px);z-index:79;opacity:0;visibility:hidden;transition:opacity 280ms,visibility 280ms}.drawer-backdrop.show{opacity:1;visibility:visible}.log-drawer{position:fixed;right:0;top:0;bottom:0;width:var(--drawer-w);background:var(--bg-card);border-left:1px solid var(--border);z-index:80;display:flex;flex-direction:column;transform:translateX(100%);transition:transform 300ms cubic-bezier(.4,0,.2,1);box-shadow:-24px 0 64px rgb(0 0 0 / .5)}.log-drawer.open{transform:translateX(0)}.drawer-header{display:flex;align-items:flex-start;justify-content:space-between;gap:10px;padding:18px 20px;border-bottom:1px solid var(--border);flex-shrink:0}.drawer-title{font-size:15px;font-weight:800;letter-spacing:-.02em}.drawer-sub{font-size:12px;color:var(--text-3);margin-top:2px}.drawer-body{flex:1;overflow-y:auto;padding:18px 20px;display:flex;flex-direction:column;gap:14px}.drawer-footer{padding:14px 20px;border-top:1px solid var(--border);display:flex;justify-content:flex-end;gap:8px;flex-shrink:0;background:var(--bg-glass);backdrop-filter:blur(12px);-webkit-backdrop-filter:blur(12px)}.drawer-tm-section{flex-shrink:0;border-top:1px solid var(--border);overflow-y:auto;max-height:50vh;background:var(--bg-card)}.overlay{position:fixed;inset:0;background:rgb(0 0 0 / .65);backdrop-filter:blur(4px);z-index:100;display:flex;align-items:center;justify-content:center;padding:20px;visibility:hidden;opacity:0;transition:opacity 100ms,visibility 100ms}.overlay.open{visibility:visible;opacity:1}.modal{background:var(--bg-card);border:1px solid var(--border);border-radius:var(--r-xl);width:100%;max-width:500px;max-height:88vh;display:flex;flex-direction:column;transform:translateY(8px) scale(.98);transition:transform 120ms cubic-bezier(.4,0,.2,1);box-shadow:0 24px 80px rgb(0 0 0 / .6)}.overlay.open .modal{transform:none}.modal-lg{max-width:640px}.modal-head{display:flex;align-items:flex-start;justify-content:space-between;padding:18px 22px;border-bottom:1px solid var(--border);flex-shrink:0;gap:10px}.modal-title{font-size:15px;font-weight:800}.modal-subtitle{font-size:12px;color:var(--text-3);margin-top:2px}.modal-close{width:26px;height:26px;border-radius:var(--r-sm);border:1px solid var(--border);background:var(--bg-elevated);color:var(--text-3);cursor:pointer;font-size:11px;display:flex;align-items:center;justify-content:center;flex-shrink:0;transition:all var(--t)}.modal-close:hover{color:var(--text-1);border-color:var(--border-hi)}.modal-body{padding:20px 22px;overflow-y:auto;flex:1}.modal-foot{padding:14px 22px;border-top:1px solid var(--border);display:flex;justify-content:flex-end;gap:7px;flex-shrink:0;flex-wrap:wrap}.info-block{margin-bottom:16px}.info-block:last-child{margin-bottom:0}.info-label{font-size:10px;font-weight:700;color:var(--text-3);text-transform:uppercase;letter-spacing:.09em;margin-bottom:5px}.info-val{font-size:13.5px;color:var(--text-1)}.info-val.big{font-family:var(--mono);font-size:25px;font-weight:700}.wrong-list{list-style:none;display:flex;flex-direction:column;gap:3px}.wrong-list li{display:flex;align-items:flex-start;gap:7px;padding:5px 9px;background:var(--bg-elevated);border-radius:var(--r-sm);font-size:12px;color:var(--text-2)}.wrong-list li i{color:var(--red);font-size:10px;margin-top:2px;flex-shrink:0}.cloud-status{display:flex;align-items:flex-start;gap:9px;padding:10px 13px;border-radius:var(--r-sm);font-size:13px;margin-top:10px;line-height:1.5}.cloud-status.info{background:var(--accent-dim);color:var(--accent)}.cloud-status.success{background:var(--green-dim);color:var(--green)}.cloud-status.error{background:var(--red-dim);color:var(--red)}.cloud-status.loading{background:var(--bg-elevated);color:var(--text-2)}.cloud-status.warning{background:var(--amber-dim);color:var(--amber)}.passphrase-box{background:var(--bg-elevated);border:1px solid var(--border);border-radius:var(--r-sm);padding:12px 14px;display:flex;align-items:center;gap:10px}.passphrase-text{font-family:var(--mono);font-size:11px;color:var(--text-1);flex:1;word-break:break-all;line-height:1.5}.filter-chip-row{display:flex;flex-wrap:wrap;gap:5px}.filter-chip{padding:4px 11px;border-radius:99px;border:1px solid var(--border);background:var(--bg-elevated);color:var(--text-2);font-size:12px;font-weight:600;cursor:pointer;font-family:var(--body);transition:all var(--t)}.filter-chip:hover{border-color:var(--border-hi);color:var(--text-1)}.filter-chip.active{background:var(--accent-dim);border-color:var(--accent);color:var(--accent)}@keyframes shimmer{0%{background-position:-200% 0}100%{background-position:200% 0}}.skeleton{background:linear-gradient(90deg,var(--bg-elevated) 25%,rgb(255 255 255 / .04) 50%,var(--bg-elevated) 75%);background-size:200% 100%;animation:shimmer 1.6s infinite;border-radius:var(--r-sm)}.toast{position:fixed;bottom:20px;right:20px;background:var(--bg-elevated);border:1px solid var(--border-hi);border-radius:var(--r-sm);padding:9px 15px;font-size:13px;font-weight:600;color:var(--text-1);z-index:300;transform:translateY(16px);opacity:0;transition:all 160ms ease;pointer-events:none;box-shadow:0 8px 32px rgb(0 0 0 / .4)}.toast.show{transform:none;opacity:1}.tour-overlay-block{position:fixed;inset:0;z-index:199}.tour-hole{position:absolute;border-radius:8px;box-shadow:0 0 0 9999px rgb(0 0 0 / .76);transition:all 200ms ease;pointer-events:none}.tour-card{position:absolute;background:var(--bg-card);border:1px solid var(--border);border-radius:var(--r-xl);padding:18px 20px;width:280px;box-shadow:0 10px 40px rgb(0 0 0 / .6);z-index:201;transition:all 200ms ease}.tour-card::before{content:'';position:absolute;width:10px;height:10px;background:var(--bg-card);border:1px solid var(--border);transform:rotate(45deg)}.tour-card.arrow-left::before{left:-6px;top:20px;border-right:none;border-top:none}.tour-card.arrow-bottom::before{bottom:-6px;left:50%;transform:translateX(-50%) rotate(45deg);border-top:none;border-left:none}.tour-card.arrow-top::before{top:-6px;left:50%;transform:translateX(-50%) rotate(45deg);border-bottom:none;border-right:none}.tour-step-num{font-family:var(--mono);font-size:9.5px;font-weight:700;color:var(--text-3);margin-bottom:6px;text-transform:uppercase;letter-spacing:.08em}.tour-card h3{font-size:14px;font-weight:800;color:var(--text-1);margin-bottom:5px}.tour-card p{font-size:12px;color:var(--text-3);line-height:1.55;margin-bottom:14px}.tour-dots{display:flex;gap:5px;align-items:center;margin-bottom:12px}.tour-dot{width:6px;height:6px;border-radius:50%;background:var(--border);transition:all 150ms}.tour-dot.active{background:var(--accent);width:16px;border-radius:3px}.tour-btns{display:flex;justify-content:space-between;align-items:center}.light{--bg:#f4f6fb;--bg-card:#ffffff;--bg-elevated:#eef0f7;--bg-input:#e8eaf2;--bg-glass:rgba(244,246,251,0.9);--border:rgba(0,0,0,.07);--border-hi:rgba(0,0,0,.13);--text-1:#111827;--text-2:#4b5563;--text-3:#9ca3af;--text-inv:#ffffff;--accent:#1d6ef5;--accent-dim:rgba(29,110,245,0.08);--accent-glow:rgba(29,110,245,0.18);--green:#059669;--green-dim:rgba(5,150,105,0.08);--green-border:rgba(5,150,105,0.3);--green-glow:rgba(5,150,105,0.2);--amber:#b45309;--amber-dim:rgba(180,83,9,0.08);--amber-border:rgba(180,83,9,0.3);--red:#dc2626;--red-dim:rgba(220,38,38,0.08);--red-border:rgba(220,38,38,0.3);--purple:#7c3aed;--purple-dim:rgba(124,58,237,0.08);--purple-border:rgba(124,58,237,0.3)}@keyframes viewIn{from{opacity:0;transform:translateY(12px)}to{opacity:1;transform:none}}@keyframes viewOut{from{opacity:1;transform:none}to{opacity:0;transform:translateY(-8px)}}@keyframes modalSpring{from{opacity:0;transform:translateY(18px) scale(.96)}to{opacity:1;transform:none}}@keyframes cardIn{from{opacity:0;transform:translateY(14px) scale(.97)}to{opacity:1;transform:none}}@keyframes rowFadeIn{from{opacity:0;transform:translateX(-6px)}to{opacity:1;transform:none}}@keyframes sparkDraw{to{stroke-dashoffset:0}}@keyframes sparkDot{to{opacity:1}}.stat-card{animation:cardIn 280ms calc(var(--i,0) * 55ms) cubic-bezier(.34,1.56,.64,1) both}.bot-nav{display:none;position:fixed;bottom:0;left:0;right:0;background:var(--bg-glass);backdrop-filter:blur(20px) saturate(160%);-webkit-backdrop-filter:blur(20px) saturate(160%);border-top:1px solid var(--border);z-index:60;padding-bottom:env(safe-area-inset-bottom)}.bot-nav-inner{display:flex;align-items:stretch;height:56px}.bot-nav-item{flex:1;display:flex;flex-direction:column;align-items:center;justify-content:center;gap:3px;cursor:pointer;color:var(--text-3);font-size:9.5px;font-weight:700;letter-spacing:.03em;transition:color var(--t),background var(--t);border:none;background:none;font-family:var(--body);position:relative;-webkit-tap-highlight-color:#fff0}.bot-nav-item i{font-size:16px;transition:transform 200ms cubic-bezier(.34,1.56,.64,1)}.bot-nav-item.active{color:var(--accent)}.bot-nav-item.active i{transform:scale(1.15)}.bot-nav-item.active::before{content:'';position:absolute;top:0;left:25%;right:25%;height:2px;border-radius:0 0 2px 2px;background:var(--accent)}.bot-nav-fab{flex:1;display:flex;align-items:center;justify-content:center;cursor:pointer;-webkit-tap-highlight-color:#fff0;background:none;border:none}.bot-nav-fab-inner{width:44px;height:44px;background:var(--accent);color:var(--text-inv);border-radius:14px;display:flex;align-items:center;justify-content:center;font-size:18px;box-shadow:0 4px 16px var(--accent-glow);transition:transform 200ms cubic-bezier(.34,1.56,.64,1),box-shadow var(--t)}.bot-nav-fab:active .bot-nav-fab-inner{transform:scale(.92)}@media(max-width:768px){.sidebar{position:fixed;left:0;top:0;bottom:0;z-index:50;transform:translateX(-100%);transition:transform 260ms cubic-bezier(.4,0,.2,1)}.sidebar.open{transform:none}.sidebar-overlay.show{display:block}.mobile-header{display:flex}.bot-nav{display:flex;flex-direction:column}.main{padding:16px 16px 72px}.log-drawer{width:100%!important;top:auto!important;bottom:0!important;right:0!important;left:0!important;height:88vh!important;border-left:none!important;border-top:1px solid var(--border)!important;border-radius:20px 20px 0 0!important;transform:translateY(100%)!important;transition:transform 320ms cubic-bezier(.4,0,.2,1)!important;box-shadow:0 -20px 60px rgb(0 0 0 / .5)!important}.log-drawer.open{transform:translateY(0)!important}.log-drawer.drawer-expanded{height:100vh!important;border-radius:0!important}.drawer-header::before{content:'';position:absolute;top:8px;left:50%;transform:translateX(-50%);width:36px;height:4px;border-radius:2px;background:var(--border-hi);pointer-events:none}.drawer-header{position:relative}.stat-grid{grid-template-columns:repeat(2,1fr)!important}.tracker-wrap{-webkit-overflow-scrolling:touch}.tracker-table td.yr-td,.tracker-table th.yr-th{position:sticky;left:0;z-index:3}.tracker-table th.yr-th{z-index:4}.form-row-3{grid-template-columns:1fr 1fr!important}}@media(min-width:769px){.log-drawer.drawer-expanded{left:var(--nav-w)!important;width:auto!important;border-left:none!important;border-top:1px solid var(--border);top:0!important;border-radius:0!important;z-index:90;box-shadow:none!important}.log-drawer.drawer-expanded .drawer-body{max-width:680px;margin:0 auto;width:100%}}.thr-drawer{background:var(--bg-elevated);border:1px solid var(--border);border-radius:var(--r);overflow:hidden;transition:border-color var(--t)}.thr-drawer[open]{border-color:var(--border-hi)}.thr-drawer>summary{display:flex;align-items:center;gap:8px;padding:9px 13px;cursor:pointer;font-size:12px;font-weight:700;color:var(--text-2);list-style:none;user-select:none;transition:color var(--t)}.thr-drawer>summary::-webkit-details-marker{display:none}.thr-drawer>summary::after{content:'\f078';font-family:'Font Awesome 6 Free';font-weight:900;font-size:9px;color:var(--text-3);margin-left:auto;transition:transform 200ms ease}.thr-drawer[open]>summary::after{transform:rotate(180deg)}.thr-drawer>summary:hover{color:var(--text-1)}.thr-drawer-badge{font-family:var(--mono);font-size:10px;color:var(--accent);background:var(--accent-dim);border:1px solid var(--accent);border-radius:99px;padding:1px 7px;transition:opacity var(--t)}.thr-drawer-badge:empty{display:none}.thr-drawer-grade{font-family:var(--mono);font-size:13px;font-weight:800}.thr-drawer-body{padding:12px 13px;border-top:1px solid var(--border);animation:viewIn 180ms ease}.tm-entry{display:flex;align-items:center;gap:10px;padding:8px 10px;background:var(--bg-elevated);border:1px solid var(--border);border-radius:var(--r-sm);margin-bottom:5px;font-size:12px}.tm-entry:last-child{margin-bottom:0}.tm-entry-key{flex:1;color:var(--text-2);font-family:var(--mono);font-size:10.5px}.tm-entry-grades{display:flex;gap:3px;flex-wrap:wrap}.tm-entry-grade-tag{padding:1px 5px;border-radius:4px;font-family:var(--mono);font-size:9.5px;font-weight:700;background:var(--bg-card);border:1px solid var(--border);color:var(--text-3)}.stat-grid-5{grid-template-columns:repeat(5,1fr)!important}@media(max-width:1100px){.stat-grid-5{grid-template-columns:repeat(3,1fr)!important}}@media(max-width:680px){.stat-grid-5{grid-template-columns:repeat(2,1fr)!important}}@keyframes cardBounce{0%{transform:scale(1)}30%{transform:scale(1.06)}55%{transform:scale(.97)}75%{transform:scale(1.025)}100%{transform:scale(1)}}.stat-card{cursor:pointer}.tracker-tip{position:fixed;z-index:500;background:var(--bg-card);border:1px solid var(--border-hi);border-radius:var(--r);padding:10px 12px;width:210px;box-shadow:0 8px 32px rgb(0 0 0 / .55);pointer-events:none;opacity:0;transform:translateY(4px) scale(.97);transition:opacity 120ms ease,transform 120ms ease}.tracker-tip.show{opacity:1;transform:none;pointer-events:none}.tracker-tip.show .tt-dismiss{pointer-events:auto}.tt-header{display:flex;align-items:flex-start;justify-content:space-between;gap:6px;margin-bottom:5px}.tt-paper{font-size:10.5px;font-weight:700;color:var(--text-2);line-height:1.4;flex:1}.tt-dismiss{background:none;border:none;color:var(--text-3);cursor:pointer;font-size:10px;padding:0;flex-shrink:0;opacity:.5;transition:opacity var(--t);pointer-events:auto}.tt-dismiss:hover{opacity:1;color:var(--red)}.tt-score{font-family:var(--mono);font-size:14px;font-weight:700;margin-bottom:3px}.tt-meta{font-size:10.5px;color:var(--text-3)}.tt-notes{font-size:10.5px;color:var(--text-3);margin-top:4px;padding-top:4px;border-top:1px solid var(--border);font-style:italic}.exam-countdown{transition:all var(--t)}.exam-countdown:hover{transform:translateY(-2px)}@keyframes navSameTap{0%{box-shadow:0 0 0 0 var(--accent-glow)}40%{box-shadow:0 0 0 6px var(--accent-glow);background:var(--accent-dim)}100%{box-shadow:0 0 0 0 #fff0}}.nav-same-tap{animation:navSameTap 380ms cubic-bezier(.22,1,.36,1)!important}@keyframes tabSameTap{0%{box-shadow:0 0 0 0 var(--accent-glow)}40%{box-shadow:0 0 0 5px var(--accent-dim)}100%{box-shadow:0 0 0 0 #fff0}}.tab-same-tap{animation:tabSameTap 380ms cubic-bezier(.22,1,.36,1)!important}.perf-card{cursor:pointer}.perf-card{cursor:pointer}.cell-date{font-family:var(--mono);font-size:11.5px;color:var(--text-2);white-space:nowrap}.streak-card{cursor:default!important;transition:border-color var(--t),transform var(--t)!important}.streak-val{display:inline-block;transition:transform 40ms ease;will-change:transform,color}.tm-drawer{background:var(--bg-elevated);border:1px solid var(--border);border-radius:var(--r);overflow:hidden;margin-top:4px;transition:border-color var(--t)}.tm-drawer[open]{border-color:var(--border-hi)}.tm-drawer-summary{display:flex;align-items:center;padding:10px 14px;cursor:pointer;font-size:12px;font-weight:700;color:var(--text-2);list-style:none;user-select:none;transition:color var(--t)}.tm-drawer-summary::-webkit-details-marker{display:none}.tm-drawer-summary::after{content:'\f078';font-family:'Font Awesome 6 Free';font-weight:900;font-size:9px;color:var(--text-3);margin-left:auto;transition:transform 200ms ease}.tm-drawer[open] .tm-drawer-summary::after{transform:rotate(180deg)}.tm-drawer-summary:hover{color:var(--text-1)}.tm-drawer-body{padding:12px 14px;border-top:1px solid var(--border);animation:viewIn 160ms ease}.exam-countdown{cursor:pointer;transition:border-color var(--t),transform var(--t)}.exam-countdown:hover{transform:translateY(-2px)}.exam-countdown-empty{border-style:dashed;opacity:.45}.exam-countdown-empty:hover{opacity:.7}.exam-countdown-val{font-size:13px;color:var(--text-3)}input[type=date]{color-scheme:dark;background:var(--bg-input);color:var(--text-1);border:1px solid var(--border);border-radius:var(--r-sm);padding:8px 10px;font-family:var(--body);font-size:13.5px;width:100%;appearance:none;-webkit-appearance:none;transition:border-color var(--t),box-shadow var(--t)}input[type=date]:focus{outline:none;border-color:var(--accent);box-shadow:0 0 0 3px var(--accent-glow)}input[type=date]::-webkit-calendar-picker-indicator{filter:invert(.7);cursor:pointer;opacity:.6}input[type=date]::-webkit-calendar-picker-indicator:hover{opacity:1}#thr-toggle-btn.active{color:var(--accent);background:var(--accent-dim);border-color:var(--accent)}@keyframes streakBounce{0%{transform:scale(1)}35%{transform:scale(1.32)}65%{transform:scale(.94)}82%{transform:scale(1.06)}100%{transform:scale(1)}}.streak-bounce{animation:streakBounce 480ms cubic-bezier(.34,1.56,.64,1) forwards;display:inline-block}
/* ─── Planner ──────────────────────────────────────────────────────────────── */
.planner-header{display:flex;align-items:center;justify-content:space-between;margin-bottom:16px;flex-wrap:wrap;gap:10px}
.planner-stats{display:flex;gap:18px}
.planner-stat{display:flex;flex-direction:column;align-items:center;gap:2px}
.planner-stat-val{font-size:22px;font-weight:800;font-family:var(--mono);line-height:1}
.planner-stat-lbl{font-size:10px;color:var(--text-3);text-transform:uppercase;letter-spacing:.06em}
.planner-filters{display:flex;gap:6px;margin-bottom:14px}
.planner-filter-btn{padding:5px 14px;border-radius:20px;border:1px solid var(--border);background:transparent;color:var(--text-2);font-size:12px;font-weight:600;cursor:pointer;font-family:var(--body);transition:all var(--t)}
.planner-filter-btn:hover{border-color:var(--border-hi);color:var(--text-1)}
.planner-filter-btn.active{background:var(--accent);border-color:var(--accent);color:#000}
.planner-list{display:flex;flex-direction:column;gap:8px}
.planner-task{display:flex;align-items:flex-start;gap:12px;background:var(--bg-card);border:1px solid var(--border);border-radius:var(--r);padding:13px 14px;transition:all var(--t);animation:rowFadeIn 180ms ease both}
.planner-task:hover{border-color:var(--border-hi);background:var(--bg-elevated)}
.planner-task-done{opacity:.5}
.planner-task-done .planner-task-title{text-decoration:line-through;color:var(--text-3)}
.planner-task-overdue{border-color:var(--red-border);background:var(--red-dim)}
.planner-check{background:none;border:none;cursor:pointer;padding:2px;font-size:18px;color:var(--text-3);transition:color var(--t);flex-shrink:0;margin-top:1px}
.planner-check:hover{color:var(--accent)}
.planner-check.checked{color:var(--green)}
.planner-task-body{flex:1;min-width:0}
.planner-task-title{font-size:14px;font-weight:600;color:var(--text-1);margin-bottom:6px;line-height:1.4;word-break:break-word}
.planner-task-meta{display:flex;flex-wrap:wrap;gap:5px;margin-bottom:5px}
.planner-meta-chip{display:inline-flex;align-items:center;gap:4px;font-size:10.5px;color:var(--text-3);background:var(--bg-elevated);border:1px solid var(--border);padding:2px 7px;border-radius:10px}
.planner-meta-chip i{font-size:9px;opacity:.7}
.planner-meta-chip.overdue{color:var(--red);border-color:var(--red-border);background:var(--red-dim)}
.planner-task-notes{font-size:12px;color:var(--text-3);line-height:1.5;margin-top:4px;white-space:pre-wrap;word-break:break-word}
.planner-task-actions{display:flex;gap:4px;flex-shrink:0;margin-top:1px}
@media(max-width:600px){.planner-header{flex-direction:column;align-items:flex-start}.planner-stats{gap:14px}.planner-task-actions{flex-direction:column}}

/* ─── Profile Block ────────────────────────────────────────────────────────── */
.profile-block{display:flex;align-items:center;gap:10px;padding:8px 10px;border-radius:var(--r);cursor:pointer;transition:background var(--t);margin-bottom:8px}
.profile-block:hover{background:var(--bg-elevated)}
.profile-avatar{width:32px;height:32px;border-radius:50%;flex-shrink:0;overflow:hidden;border:1.5px solid var(--border)}
.profile-avatar-img{width:100%;height:100%;object-fit:cover;border-radius:50%;display:none}
.profile-info{flex:1;min-width:0}
.profile-name-display{font-size:13px;font-weight:700;color:var(--text-1);white-space:nowrap;overflow:hidden;text-overflow:ellipsis}
.profile-settings-hint{font-size:10px;color:var(--text-3)}

/* ─── Settings Modal ───────────────────────────────────────────────────────── */
.accent-swatch{width:22px;height:22px;border-radius:50%;border:2px solid transparent;cursor:pointer;transition:all var(--t);flex-shrink:0}
.accent-swatch:hover{transform:scale(1.2);border-color:rgba(255,255,255,.3)}

/* ─── Brand Logo ───────────────────────────────────────────────────────────── */
.brand-logo-wrap{width:36px;height:36px;flex-shrink:0;display:flex;align-items:center;justify-content:center;border-radius:9px}
.brand-svg{transition:transform .3s ease}
.brand:hover .brand-svg{transform:rotate(10deg) scale(1.05)}

/* ─── Light theme overrides for new components ─────────────────────────────── */
[data-theme=light] .planner-task{background:#fff;border-color:rgba(0,0,0,.08)}
[data-theme=light] .planner-task:hover{background:#f9f9fb;border-color:rgba(0,0,0,.14)}
[data-theme=light] .planner-meta-chip{background:#f1f1f5;border-color:rgba(0,0,0,.08)}
[data-theme=light] .profile-block:hover{background:#f3f3f7}

/* ─── Task Category Chips ────────────────────────────────────────────────────── */
.task-cat-chips{display:flex;flex-wrap:wrap;gap:6px}
.task-cat-chip{display:inline-flex;align-items:center;gap:5px;padding:5px 11px;border-radius:20px;border:1.5px solid var(--border);background:transparent;color:var(--text-2);font-size:12px;font-weight:600;cursor:pointer;font-family:var(--body);transition:all var(--t)}
.task-cat-chip:hover{border-color:var(--border-hi);color:var(--text-1)}
.task-cat-chip[data-cat=exam].active{background:rgba(248,113,113,.15);border-color:var(--red);color:var(--red)}
.task-cat-chip[data-cat=revision].active{background:var(--accent-dim);border-color:var(--accent);color:var(--accent)}
.task-cat-chip[data-cat=pastpaper].active{background:var(--purple-dim);border-color:var(--purple);color:var(--purple)}
.task-cat-chip[data-cat=finals].active{background:var(--amber-dim);border-color:var(--amber);color:var(--amber)}
.task-cat-chip[data-cat=other].active{background:var(--bg-elevated);border-color:var(--border-hi);color:var(--text-1)}
.task-cat-chip i{font-size:10px}

/* ─── Light theme ────────────────────────────────────────────────────────────── */
[data-theme=light] .pdw-row:hover{background:#f3f3f7}
[data-theme=light] .task-cat-chip{border-color:rgba(0,0,0,.12);color:#555}

/* ─── Planner Dashboard Banner ───────────────────────────────────────────────── */
.pdb-bar{background:var(--bg-card);border:1px solid var(--border);border-radius:var(--r);padding:10px 12px 10px;margin-bottom:0;animation:cardIn 300ms 180ms cubic-bezier(0.34,1.56,0.64,1) both}
.pdb-header{display:flex;align-items:center;gap:8px;margin-bottom:8px}
.pdb-title{font-size:11px;font-weight:700;color:var(--text-3);text-transform:uppercase;letter-spacing:.07em;display:flex;align-items:center;gap:5px}
.pdb-title i{color:var(--accent);font-size:10px}
.pdb-overdue-badge{font-size:10px;font-weight:700;color:var(--red);background:var(--red-dim);border:1px solid var(--red-border);padding:1px 6px;border-radius:8px}
.pdb-all-btn{margin-left:auto;background:none;border:none;color:var(--accent);font-size:11px;font-weight:700;cursor:pointer;font-family:var(--body);padding:2px 4px;border-radius:4px;transition:opacity var(--t)}
.pdb-all-btn:hover{opacity:.7}
.pdb-scroll{display:flex;gap:7px;overflow-x:auto;padding-bottom:3px;scrollbar-width:none;-ms-overflow-style:none}
.pdb-scroll::-webkit-scrollbar{display:none}
.pdb-chip{display:flex;align-items:center;gap:6px;background:var(--bg-elevated);border:1px solid var(--border);border-left:2.5px solid var(--cat-color,var(--accent));border-radius:var(--r-sm);padding:6px 10px;cursor:pointer;flex-shrink:0;transition:all var(--t);white-space:nowrap;min-width:0;max-width:220px}
.pdb-chip:hover{border-color:var(--border-hi);transform:translateY(-1px);box-shadow:0 3px 10px rgba(0,0,0,.25)}
.pdb-icon{font-size:11px;color:var(--cat-color,var(--accent));flex-shrink:0;width:14px;text-align:center}
.pdb-label{font-size:12px;font-weight:600;color:var(--text-1);overflow:hidden;text-overflow:ellipsis;display:flex;align-items:center;gap:4px;min-width:0}
.pdb-sub{font-size:10.5px;color:var(--text-3);flex-shrink:0}
.pdb-date{font-size:10px;font-weight:700;color:var(--text-3);font-family:var(--mono);flex-shrink:0}
.pdb-date-overdue{color:var(--red)}
.pdb-date-today{color:var(--amber)}
.pdb-date-soon{color:var(--accent)}
.pdb-urgent{font-size:10px;font-weight:900;color:var(--red);background:var(--red-dim);border-radius:3px;padding:0 3px;line-height:1.4;flex-shrink:0}
.pdb-high{font-size:10px;font-weight:900;color:var(--amber);flex-shrink:0}
[data-theme=light] .pdb-bar{background:#fff;border-color:rgba(0,0,0,.08)}
[data-theme=light] .pdb-chip{background:#f3f3f7;border-color:rgba(0,0,0,.08)}
[data-theme=light] .pdb-chip:hover{border-color:rgba(0,0,0,.18)}

/* ─── Assign Me Work ─────────────────────────────────────────────────────────── */
.assign-sub-chips{display:flex;flex-wrap:wrap;gap:6px}
.assign-sub-chip{display:inline-flex;align-items:center;gap:5px;cursor:pointer}
.assign-sub-chip input{display:none}
.assign-sub-chip span{padding:4px 11px;border-radius:99px;border:1.5px solid var(--border);background:var(--bg-elevated);color:var(--text-2);font-size:11.5px;font-weight:600;transition:all var(--t);user-select:none}
.assign-sub-chip input:checked + span{background:var(--accent-dim);border-color:var(--accent);color:var(--accent)}
.assign-sub-chip:hover span{border-color:var(--border-hi);color:var(--text-1)}
.assign-paper-row{display:flex;align-items:center;gap:10px;padding:9px 12px;background:var(--bg-elevated);border:1px solid var(--border);border-radius:var(--r-sm);transition:border-color var(--t)}
.assign-paper-row:hover{border-color:var(--border-hi)}
.assign-paper-num{font-family:var(--mono);font-size:10px;font-weight:700;color:var(--text-3);width:18px;text-align:right;flex-shrink:0}
.assign-paper-info{flex:1;min-width:0}
.assign-paper-title{font-size:13px;font-weight:600;color:var(--text-1);display:block}
.assign-paper-meta{font-size:11px;color:var(--text-3)}
.assign-empty{text-align:center;padding:24px;color:var(--text-3);font-size:13px}
.assign-status{padding:9px 13px;border-radius:var(--r-sm);font-size:13px;font-weight:500}
.assign-status-error{background:var(--red-dim);color:var(--red);border:1px solid var(--red-border)}
.assign-status-success{background:var(--green-dim);color:var(--green);border:1px solid var(--green-border)}
.assign-status-loading{background:var(--bg-elevated);color:var(--text-2);border:1px solid var(--border)}
.assign-ai-section{background:var(--bg-elevated);border:1px solid var(--border);border-radius:var(--r);overflow:hidden}
.assign-ai-section>summary{padding:10px 14px;cursor:pointer;font-size:12.5px;font-weight:700;color:var(--text-2);list-style:none;user-select:none;transition:color var(--t)}
.assign-ai-section>summary::-webkit-details-marker{display:none}
.assign-ai-section[open]>summary{color:var(--text-1);border-bottom:1px solid var(--border)}
.assign-ai-section>div{padding:0 14px 14px}
[data-theme=light] .assign-paper-row{background:#f3f3f7}
[data-theme=light] .assign-sub-chip span{background:#eef0f7;border-color:rgba(0,0,0,.1);color:#555}

/* ─── Tracker Cell Action Modal ─────────────────────────────────────────────── */
.tca-btn{display:flex;align-items:center;gap:12px;width:100%;padding:12px 14px;background:var(--bg-elevated);border:1px solid var(--border);border-radius:var(--r-sm);cursor:pointer;font-family:var(--body);font-size:13.5px;font-weight:600;color:var(--text-1);text-align:left;transition:all var(--t)}
.tca-btn:hover{background:var(--bg-input);border-color:var(--border-hi)}
.tca-btn i:first-child{width:18px;text-align:center;font-size:15px;flex-shrink:0}
.tca-btn span{flex:1}
.tca-ext{font-size:10px;color:var(--text-3);flex-shrink:0}
.tca-divider{height:1px;background:var(--border);margin:4px 0}

/* ─── AI Source Buttons ─────────────────────────────────────────────────────── */
.assign-ai-src-btn{display:inline-flex;align-items:center;gap:6px;padding:6px 13px;border-radius:99px;border:1.5px solid var(--border);background:transparent;color:var(--text-2);font-size:12px;font-weight:600;cursor:pointer;font-family:var(--body);transition:all var(--t)}
.assign-ai-src-btn:hover{border-color:var(--border-hi);color:var(--text-1)}
.assign-ai-src-btn.active{background:var(--accent-dim);border-color:var(--accent);color:var(--accent)}
.assign-ai-free-badge{font-size:9px;font-weight:800;padding:1px 5px;border-radius:99px;background:var(--green-dim);color:var(--green);border:1px solid var(--green-border);text-transform:uppercase;letter-spacing:.04em}
.assign-lock-btn{padding:6px 9px;flex-shrink:0}
[data-theme=light] .tca-btn{background:#f3f3f7;border-color:rgba(0,0,0,.08)}
[data-theme=light] .tca-btn:hover{background:#e8eaf2}

/* ─── Planner Topics to Review ───────────────────────────────────────────────── */
.topics-section{background:var(--bg-elevated);border:1px solid var(--border);border-radius:var(--r);padding:12px 14px;margin-bottom:14px}
.topics-header{font-size:11px;font-weight:700;color:var(--text-3);text-transform:uppercase;letter-spacing:.07em;display:flex;align-items:center;gap:6px;margin-bottom:10px}
.topics-header i{color:var(--red)}
.topics-count{margin-left:auto;font-weight:400;text-transform:none;letter-spacing:0;color:var(--text-3)}
.topics-list{display:flex;flex-direction:column;gap:8px}
.topics-sub-row{display:flex;align-items:flex-start;gap:10px;min-width:0}
.topics-sub-name{font-size:12px;font-weight:700;color:var(--text-2);flex-shrink:0;width:110px;white-space:nowrap;overflow:hidden;text-overflow:ellipsis;padding-top:2px}
.topics-tags{display:flex;flex-wrap:wrap;gap:5px;flex:1}
.topic-tag{font-size:11px;color:var(--text-2);background:var(--bg-card);border:1px solid var(--border);border-left:2px solid var(--red);padding:2px 8px;border-radius:var(--r-sm);max-width:180px;white-space:nowrap;overflow:hidden;text-overflow:ellipsis}
.topic-tag-more{border-left-color:var(--text-3);color:var(--text-3)}
[data-theme=light] .topics-section{background:#f3f3f7}
[data-theme=light] .topic-tag{background:#fff;border-color:rgba(0,0,0,.08)}

/* ─── AI button scaling fix ─────────────────────────────────────────────────── */
#assign-ai-run-btn{min-width:0;word-break:break-word;white-space:normal;text-align:center}
@media(max-width:480px){#assign-ai-run-btn{font-size:12px;padding:8px 10px}}

/* ─── Topics to Review — checkbox dismiss ───────────────────────────────────── */
.topic-check-label{display:inline-flex;align-items:center;gap:4px;cursor:pointer}
.topic-check-label input[type=checkbox]{width:12px;height:12px;flex-shrink:0;accent-color:var(--green);cursor:pointer}
.topic-check-label input[type=checkbox]:checked + .topic-tag{opacity:.35;text-decoration:line-through}
.topics-clear-btn{margin-left:auto;background:none;border:none;color:var(--text-3);font-size:11px;cursor:pointer;font-family:var(--body);text-decoration:underline;padding:0;transition:color var(--t)}
.topics-clear-btn:hover{color:var(--red)}
