/* Design tokens reused directly from FR Study Tracker.html. */
    :root {
      --font-sans: "Plus Jakarta Sans", -apple-system, BlinkMacSystemFont, "Segoe UI", Roboto, sans-serif;
      --font-mono: "JetBrains Mono", ui-monospace, SFMono-Regular, Menlo, Monaco, Consolas, monospace;

      /* Dark Mode Palette (Default: Neutral Zinc / Slate) */
      --background: #09090b;
      --surface: #121215;
      --surface-subtle: #18181b;
      --card: #18181b;
      --card-hover: #222226;
      --border: #27272a;
      --border-subtle: #1f1f23;
      --border-active: #52525b;

      --foreground: #fafafa;
      --muted: #a1a1aa;
      --subtle: #71717a;

      --primary: #6366f1;
      --primary-hover: #4f46e5;
      --primary-foreground: #ffffff;
      --primary-subtle: rgba(99, 102, 241, 0.12);
      --primary-border: rgba(99, 102, 241, 0.25);

      --success: #10b981;
      --success-foreground: #ffffff;
      --success-subtle: rgba(16, 185, 129, 0.12);
      --success-border: rgba(16, 185, 129, 0.25);

      --warning: #f59e0b;
      --warning-subtle: rgba(245, 158, 11, 0.12);
      --warning-border: rgba(245, 158, 11, 0.25);

      --info: #0ea5e9;
      --info-subtle: rgba(14, 165, 233, 0.12);
      --info-border: rgba(14, 165, 233, 0.25);

      --radius-sm: 6px;
      --radius-md: 10px;
      --radius-lg: 14px;
      --radius-full: 9999px;

      --shadow-card: 0 1px 3px rgba(0, 0, 0, 0.4), 0 1px 2px rgba(0, 0, 0, 0.24);
      --shadow-dropdown: 0 10px 25px -5px rgba(0, 0, 0, 0.5), 0 8px 10px -6px rgba(0, 0, 0, 0.5);
    }

    html.light {
      --background: #f8fafc;
      --surface: #ffffff;
      --surface-subtle: #f1f5f9;
      --card: #ffffff;
      --card-hover: #f8fafc;
      --border: #e2e8f0;
      --border-subtle: #f1f5f9;
      --border-active: #94a3b8;

      --foreground: #09090b;
      --muted: #475569;
      --subtle: #94a3b8;

      --primary: #4f46e5;
      --primary-hover: #4338ca;
      --primary-foreground: #ffffff;
      --primary-subtle: rgba(79, 70, 229, 0.08);
      --primary-border: rgba(79, 70, 229, 0.2);

      --success: #059669;
      --success-foreground: #ffffff;
      --success-subtle: rgba(5, 150, 105, 0.08);
      --success-border: rgba(5, 150, 105, 0.2);

      --warning: #d97706;
      --warning-subtle: rgba(217, 119, 6, 0.08);
      --warning-border: rgba(217, 119, 6, 0.2);

      --info: #0284c7;
      --info-subtle: rgba(2, 132, 199, 0.08);
      --info-border: rgba(2, 132, 199, 0.2);

      --shadow-card: 0 1px 3px rgba(0, 0, 0, 0.05), 0 1px 2px rgba(0, 0, 0, 0.03);
      --shadow-dropdown: 0 10px 25px -5px rgba(0, 0, 0, 0.08), 0 8px 10px -6px rgba(0, 0, 0, 0.04);
    }
*{box-sizing:border-box}body{margin:0;font-family:var(--font-sans);font-size:16px;line-height:1.5;color:var(--foreground);min-height:100vh;-webkit-font-smoothing:antialiased;background:linear-gradient(to bottom,#fff 0%,#fff 40%,#ffffff00 100%),linear-gradient(to right,#0ed2da,#5f29c7);background-attachment:fixed}body::before{content:"";position:fixed;inset:0;background-image:linear-gradient(90deg,#ccc 1px,transparent 1px);background-size:50px 100%;pointer-events:none;mask-image:linear-gradient(to bottom,#000,transparent 70%);z-index:0}html.dark body{background:linear-gradient(to bottom,#09090b 0%,#09090b 40%,#09090b00 100%),linear-gradient(to right,#094750,#2c1264);background-attachment:fixed}html.dark body::before{background-image:linear-gradient(90deg,#ffffff14 1px,transparent 1px)}button,input,textarea{font:inherit}button{cursor:pointer}a{color:inherit;text-decoration:none}button,a{touch-action:manipulation}button:focus-visible,a:focus-visible,input:focus-visible,textarea:focus-visible,summary:focus-visible{outline:2px solid var(--primary);outline-offset:3px}button:disabled{cursor:not-allowed;opacity:.5}[hidden]{display:none!important}.shell{max-width:1320px;margin:0 auto;padding:0 24px}.workspace,main{position:relative;z-index:1}.skip{position:fixed;left:16px;top:-100px;z-index:100;background:var(--card);padding:10px}.skip:focus{top:10px}.app-nav{position:sticky;top:0;z-index:40;background:#ffffffd9;border-bottom:1px solid var(--border);backdrop-filter:blur(12px)}html.dark .app-nav{background:#121215d9}.nav-inner{min-height:64px;display:flex;align-items:center;justify-content:space-between;gap:16px}.nav-left-group,.nav-brand,.nav-actions{display:flex;align-items:center}.nav-left-group{gap:20px;min-width:0}.nav-brand{gap:12px;flex-shrink:0}.brand-logo-badge{width:32px;height:32px;border-radius:9px;display:grid;place-items:center;color:white;background:linear-gradient(135deg,var(--primary),#4338ca);box-shadow:0 2px 6px #6366f159}.brand-name{font-size:17px;font-weight:700;letter-spacing:-.02em}.nav-actions{gap:9px;flex-shrink:0}#save-status{font-size:12px;color:var(--muted);margin-right:5px}.button{display:inline-flex;align-items:center;justify-content:center;gap:6px;border:1px solid var(--border);border-radius:var(--radius-md);background:var(--surface);color:var(--foreground);font-size:14px;font-weight:600;line-height:1.35;padding:9px 13px;box-shadow:var(--shadow-card);transition:background-color .15s,border-color .15s}.button:hover{background:var(--card-hover);border-color:var(--border-active)}.button.primary{background:var(--primary);color:var(--primary-foreground);border-color:var(--primary)}.button.primary:hover{background:var(--primary-hover)}.button.danger{color:#e11d48;border-color:#e11d4840;background:#e11d4808}.icon-button{border:0;border-radius:6px;background:transparent;color:var(--muted);font-size:22px;padding:3px 8px}.icon-button:hover{background:var(--surface-subtle)}.theme-switch{display:inline-flex;position:relative;width:44px;height:25px;cursor:pointer;margin:0 3px}.theme-switch input{opacity:0;position:absolute;width:100%;height:100%;margin:0}.theme-slider{width:44px;height:25px;background:#e2e8f0;border:1px solid var(--border-active);border-radius:999px;position:relative}.theme-knob{position:absolute;left:2px;top:2px;width:19px;height:19px;border-radius:50%;background:#fff;color:#d97706;display:grid;place-items:center;font-size:13px;line-height:1;box-shadow:0 1px 3px #0003;transition:transform .2s}.theme-switch input:checked+.theme-slider{background:#20262c;background-image:radial-gradient(circle at 30px 7px,#d7dca5 1px,transparent 1px),radial-gradient(circle at 22px 17px,#d7dca5 1px,transparent 1px)}.theme-switch input:checked+.theme-slider .theme-knob{transform:translateX(18px);background:#e2e8d4;color:#475569}.theme-switch:focus-within{outline:2px solid var(--primary);outline-offset:3px;border-radius:999px}.subject-nav-wrap{display:flex;align-items:center;justify-content:space-between;gap:18px;padding:16px 0}.subject-nav{display:flex;align-items:center;gap:5px;flex-wrap:wrap}.nav-item{display:flex;align-items:center;gap:6px;font-size:14px;font-weight:600;padding:8px 14px;border:1px solid var(--border);background:var(--surface);border-radius:var(--radius-md);color:var(--muted)}.nav-item.active{background:var(--primary);border-color:var(--primary);color:var(--primary-foreground);box-shadow:0 2px 7px #4f46e526}.nav-item:hover{border-color:var(--primary)}.nav-badge{font-family:var(--font-mono);font-size:11px;min-width:18px;text-align:center;border-radius:5px;background:var(--surface-subtle);color:var(--primary)}.nav-item.active .nav-badge{background:#ffffff29;color:white}.nav-symbol{display:none}#today-label{font-size:12px;color:var(--muted);white-space:nowrap}main{padding:0 0 12px}.page-heading{display:flex;align-items:center;justify-content:space-between;gap:20px;margin:4px 0 20px}.eyebrow{font-size:12px;font-weight:700;letter-spacing:.06em;text-transform:uppercase;color:var(--muted);margin:0 0 5px}h1{font-size:25px;line-height:1.3;letter-spacing:-.035em;font-weight:800;margin:0}h2{font-size:16px;letter-spacing:-.015em;margin:0;font-weight:700}h3{margin:0;font-size:19px;letter-spacing:-.02em}.subtitle{font-size:14px;color:var(--muted);margin:6px 0 0}.muted{color:var(--muted)}.exam-panel{display:flex;align-items:center;justify-content:space-between;gap:20px;padding:20px 24px;background:var(--card);border:1px solid var(--border);border-radius:var(--radius-lg);box-shadow:var(--shadow-card);margin-bottom:24px}.exam-kicker,.hero-label{display:flex;align-items:center;gap:7px;font-size:12px;letter-spacing:.06em;text-transform:uppercase;font-weight:700;color:var(--muted)}.exam-panel h2{font-family:var(--font-mono);font-size:25px;color:var(--primary);margin-top:7px}.exam-controls{display:flex;align-items:center;gap:26px}.exam-panel .button{font-size:13px}.countdown{text-align:right;border-left:1px solid var(--border);padding-left:24px;min-width:125px}.countdown strong{font-family:var(--font-mono);font-size:34px;line-height:1.15;letter-spacing:-.04em}.countdown span{display:block;font-size:12px;color:var(--muted);margin-top:4px}.section-heading{display:flex;justify-content:space-between;align-items:center;gap:16px;margin-bottom:14px}.section-heading .muted{font-size:12px}.cards{display:grid;grid-template-columns:repeat(3,minmax(0,1fr));gap:20px}.subject-card{background:var(--card);border:1px solid var(--border);border-radius:var(--radius-lg);box-shadow:var(--shadow-card);padding:22px;display:flex;flex-direction:column;gap:0}.card-top{display:flex;align-items:center;justify-content:space-between;gap:10px;margin-bottom:14px}.subject-icon{font-size:13px;font-weight:700;border:1px solid var(--primary-border);border-radius:999px;color:var(--primary);background:var(--primary-subtle);padding:4px 10px}.task-badge{font-size:12px;color:var(--muted);border:1px solid var(--border);border-radius:999px;padding:4px 9px;background:var(--surface)}.subject-name{font-size:12px;line-height:1.55;color:var(--muted);margin:5px 0 14px;min-height:38px}.progress-numbers{display:flex;align-items:center;justify-content:space-between;gap:10px;margin:0 0 12px}.progress-numbers strong{font-family:var(--font-mono);font-size:32px;font-weight:800;letter-spacing:-.05em;line-height:1.2}.progress-numbers strong>span{font-size:24px}.progress-numbers>span{font-size:11px;color:var(--muted);font-weight:600;text-transform:uppercase;letter-spacing:.03em}.epic-progress-stage{position:relative;background:linear-gradient(135deg,var(--surface-subtle),var(--surface));border:1px solid var(--border);border-radius:var(--radius-lg);padding:17px 16px;margin:0 0 16px;overflow:hidden}.epic-progress-stage::before{content:"";position:absolute;top:-40px;left:5%;right:5%;height:90px;background:radial-gradient(ellipse,#6366f126,transparent 70%);filter:blur(20px);pointer-events:none}.track-wrap{position:relative;z-index:1}.track-wrap::after{content:"";position:absolute;inset:0;background:linear-gradient(90deg,transparent calc(25% - 1px),var(--surface) calc(25% - 1px),var(--surface) calc(25% + 1px),transparent calc(25% + 1px),transparent calc(50% - 1px),var(--surface) calc(50% - 1px),var(--surface) calc(50% + 1px),transparent calc(50% + 1px),transparent calc(75% - 1px),var(--surface) calc(75% - 1px),var(--surface) calc(75% + 1px),transparent calc(75% + 1px));opacity:.5;pointer-events:none}progress{display:block;width:100%;height:13px;appearance:none;border:1px solid var(--border);border-radius:999px;overflow:hidden;background:var(--surface-subtle);box-shadow:inset 0 2px 4px #00000012}progress::-webkit-progress-bar{background:var(--surface-subtle)}progress::-webkit-progress-value{background:linear-gradient(90deg,#6366f1,#8b5cf6 35%,#ec4899 75%,#06b6d4);border-radius:999px}progress::-moz-progress-bar{background:linear-gradient(90deg,#6366f1,#8b5cf6,#ec4899);border-radius:999px}.epic-stats-strip{display:grid;grid-template-columns:repeat(3,minmax(0,1fr));gap:10px;margin-top:16px;padding-top:12px;border-top:1px solid var(--border-subtle);position:relative}.epic-stat-cell{display:flex;flex-direction:column;gap:4px}.epic-stat-label{font-size:10px;font-weight:700;letter-spacing:.04em;color:var(--muted);text-transform:uppercase}.epic-stat-val{font-family:var(--font-mono);font-size:13px;font-weight:700;white-space:nowrap}.card-bottom{display:flex;justify-content:space-between;align-items:center;gap:12px;border-top:1px solid var(--border-subtle);padding-top:13px;margin-top:auto}.text-deadline{border:0;background:transparent;color:var(--foreground);font-size:14px;font-weight:600;padding:0;text-align:left}.text-deadline:hover{color:var(--primary)}.deadline-status{font-size:12px;color:var(--muted);margin-top:4px}.deadline-status.overdue{color:#e11d48}.deadline-status.due{color:var(--warning)}.card-open{font-size:13px;font-weight:600;background:var(--primary-subtle);color:var(--primary);border:1px solid var(--primary-border);border-radius:var(--radius-md);padding:8px 12px;white-space:nowrap}.card-open:hover{background:var(--primary);color:var(--primary-foreground)}.ibs-panel{display:flex;align-items:baseline;gap:10px;padding:12px 0}.ibs-panel strong{font-family:var(--font-mono);font-size:32px}.ibs-panel span,.card-details{font-size:13px;color:var(--muted)}.card-details{margin:0 0 20px}.back-link{font-size:13px;color:var(--muted);display:inline-block;margin-bottom:16px}.back-link:hover{color:var(--primary)}.subject-header-actions{display:flex;gap:8px;flex-wrap:wrap}.hero-split{display:grid;grid-template-columns:1.15fr 1fr;gap:20px;margin:0 0 24px}.hero-card{background:var(--card);border:1px solid var(--border);border-radius:var(--radius-lg);padding:24px;box-shadow:var(--shadow-card)}.current-pos-header{display:flex;justify-content:space-between;align-items:center;gap:16px;margin-bottom:16px}.huge-stat{font-family:var(--font-mono);font-size:40px;font-weight:800;letter-spacing:-.04em;line-height:1.2;margin-top:9px}.ticks-badge{font-family:var(--font-mono);font-size:13px;padding:8px 10px;border:1px solid var(--border);border-radius:var(--radius-md);background:var(--surface-subtle)}.current-card .epic-progress-stage{margin-bottom:0;padding:22px}.current-card progress{height:18px}.current-card .epic-stat-val{font-size:15px}.current-card .epic-stat-label{font-size:11px}.forecast-input{background:var(--surface-subtle);border:1px solid var(--border);border-radius:var(--radius-md);padding:16px}.forecast-input .hero-label{margin-bottom:13px}.deadline-output{padding:16px;margin-top:14px;background:var(--primary-subtle);border:1px solid var(--primary-border);border-radius:var(--radius-md)}.deadline-output .stat-label{font-size:11px;font-weight:700;text-transform:uppercase;color:var(--primary);letter-spacing:.04em}.proj-date-large{font-family:var(--font-mono);color:var(--primary);font-size:23px;font-weight:700;margin-top:7px;line-height:1.4}.deadline-output .deadline-status{font-size:14px}.forecast-date-row{display:flex;align-items:center;justify-content:space-between;gap:16px;font-size:14px}.forecast-date-row strong{font-family:var(--font-mono);font-size:14px}.forecast-meta{display:flex;align-items:center;justify-content:space-between;gap:15px;margin-top:15px;font-size:12px;color:var(--muted)}.detail-grid{display:grid;grid-template-columns:minmax(0,1fr) 310px;gap:20px;align-items:start}.panel{background:var(--surface);border:1px solid var(--border);border-radius:var(--radius-lg);box-shadow:var(--shadow-card);overflow:hidden}.panel-head{padding:18px 20px;border-bottom:1px solid var(--border)}.chapter-controls{display:flex;gap:12px;align-items:center;flex-wrap:wrap;margin-top:14px}.search{flex:1;min-width:150px}.text-input,input[type=date],textarea{width:100%;border:1px solid var(--border);border-radius:var(--radius-md);padding:10px 12px;background:var(--surface);color:var(--foreground);font-size:14px}.text-input::placeholder,textarea::placeholder{color:var(--subtle)}.filter-tabs{display:flex;gap:3px;border:1px solid var(--border);border-radius:var(--radius-md);padding:3px;background:var(--surface-subtle)}.filter-tabs button{border:1px solid transparent;border-radius:var(--radius-sm);background:transparent;color:var(--muted);padding:7px 10px;font-size:12px;white-space:nowrap}.filter-tabs button.active{border-color:var(--border-active);background:var(--card);color:var(--foreground);box-shadow:var(--shadow-card)}.filter-count{font-family:var(--font-mono);font-size:10px;color:var(--subtle);margin-left:5px}.chapter-card,.chapter-group{border-bottom:1px solid var(--border)}.chapter-card:last-child,.chapter-group:last-child{border-bottom:0}.chapter-card-header,.group-summary{display:flex;align-items:center;justify-content:space-between;gap:13px;padding:15px 20px;background:var(--surface);list-style:none}.chapter-card-header:hover,.group-summary:hover{background:var(--surface-subtle)}summary{cursor:pointer;user-select:none}summary::-webkit-details-marker{display:none}.chapter-card[open]>.chapter-card-header,.chapter-group[open]>.group-summary{background:var(--surface-subtle);border-bottom:1px solid var(--border)}.chap-chevron{width:14px;height:14px;flex-shrink:0;color:var(--muted);transition:transform .2s}details[open]>.chapter-card-header>.chap-chevron,details[open]>.group-summary>.chap-chevron{transform:rotate(90deg)}.chapter-number{font-family:var(--font-mono);font-size:12px;color:var(--subtle);min-width:22px;flex-shrink:0}.chapter-name{font-size:14px;font-weight:700;line-height:1.5;overflow-wrap:anywhere;flex:1;min-width:0}.chapter-title-wrap{flex:1;min-width:0}.chapter-title-wrap .chapter-name{display:block}.chap-count-badge{display:inline-block;font-size:11px;padding:3px 8px;background:var(--surface);border:1px solid var(--border);border-radius:999px;color:var(--muted);white-space:nowrap}.chap-header-meta{display:flex;align-items:center;gap:10px;flex-shrink:0}.chap-pct{font-family:var(--font-mono);font-size:12px;font-weight:700;min-width:32px;text-align:right}.chap-mini-bar{width:56px;height:6px;box-shadow:none}progress.chap-mini-bar::-webkit-progress-value{background:var(--success)}.component{display:flex;align-items:center;gap:10px;font-size:14px;line-height:1.4;cursor:pointer}.single-component{flex:1;min-width:0;align-items:flex-start}.single-component input{margin-top:3px}.component.checked{color:var(--success)}.weight{display:block;font-family:var(--font-mono);font-size:12px;color:var(--muted);margin-top:4px;font-weight:400}.chapter-row.is-complete .chapter-name{color:var(--muted)}input[type=checkbox]{width:18px;height:18px;accent-color:var(--success);cursor:pointer;flex-shrink:0;margin:0}.note-toggle{display:inline-flex;align-items:center;justify-content:center;gap:5px;border:1px dashed var(--border);border-radius:999px;background:transparent;color:var(--muted);font-size:12px;padding:4px 9px;white-space:nowrap}.note-toggle:hover,.note-toggle.has-note{color:var(--primary);border-color:var(--primary-border);background:var(--primary-subtle)}.chapter-card-inner{background:var(--surface)}.book-table{width:100%;border-collapse:collapse;text-align:left}.book-table th{font-size:11px;text-transform:uppercase;letter-spacing:.05em;font-weight:600;color:var(--muted);padding:12px 20px;background:var(--surface-subtle);border-bottom:1px solid var(--border)}.book-table td{padding:14px 20px;font-size:14px;border-bottom:1px solid var(--border-subtle)}.book-table tbody tr:hover{background:var(--card-hover)}.book-table .book-pages{font-family:var(--font-mono);font-size:13px;white-space:nowrap}.book-table .component{font-size:13px}.book-range{font-family:var(--font-mono);font-size:11px;color:var(--muted);display:block;margin-top:4px}.chapter-note-row{padding:10px 20px;display:flex;align-items:center;gap:10px}.note-editor{padding:13px 20px;background:var(--surface-subtle);border-top:1px dashed var(--border)}.note-editor label{display:block;font-size:12px;font-weight:600;color:var(--muted);margin-bottom:7px}.note-editor textarea{min-height:75px;resize:vertical;line-height:1.6}.empty{padding:26px 20px;font-size:14px;color:var(--muted);line-height:1.7}.empty strong{display:block;color:var(--foreground);font-size:14px;margin-bottom:4px}.task-panel .panel-head{display:flex;align-items:center;justify-content:space-between;gap:12px}.pending-pill{padding:3px 9px;border:1px solid var(--primary-border);background:var(--primary-subtle);color:var(--primary);font-size:12px;border-radius:999px}.task-form{padding:16px;display:flex;gap:8px}.task-form input{min-width:0}.task-form button{padding:8px 12px}.task-item{padding:14px 16px;display:flex;align-items:start;gap:10px;border-top:1px solid var(--border-subtle)}.task-item>input{margin-top:3px}.task-text{font-size:14px;line-height:1.5;overflow-wrap:anywhere;flex:1;min-width:0}.task-item.done .task-text{text-decoration:line-through;color:var(--subtle)}.task-item .icon-button{padding:0 3px;font-size:16px}.task-explanation{font-size:12px;color:var(--muted);padding:0 16px 16px}.task-group-label{font-size:11px;font-weight:700;letter-spacing:.05em;color:var(--muted);padding:12px 16px}.ibs-layout{max-width:750px}.approx-note{font-size:12px;color:var(--muted);margin-top:7px}.page-footer{color:var(--muted);font-size:12px;padding:24px 0}.error-banner{padding:15px;background:var(--card);border:1px solid #e11d48;border-radius:var(--radius-md);color:#e11d48;margin-bottom:16px;font-size:14px}.sr-only{position:absolute;width:1px;height:1px;overflow:hidden;clip:rect(0,0,0,0);white-space:nowrap}dialog{border:1px solid var(--border);border-radius:var(--radius-lg);background:var(--card);color:var(--foreground);width:calc(100% - 32px);max-width:460px;padding:24px;box-shadow:var(--shadow-dropdown)}dialog::backdrop{background:#09090b66;backdrop-filter:blur(4px)}.modal-heading{display:flex;align-items:center;justify-content:space-between;gap:16px;margin-bottom:20px}.modal-heading h2{font-size:20px}.modal-copy{font-size:14px;line-height:1.7;color:var(--muted);margin:0 0 16px}.field-label{display:block;font-size:14px;font-weight:600;margin-bottom:8px}.modal-actions{display:flex;justify-content:flex-end;gap:9px;margin-top:24px}.restore-summary{padding:14px;border:1px solid var(--border);background:var(--surface-subtle);border-radius:var(--radius-md);font-size:14px;line-height:1.7}#toast{position:fixed;bottom:24px;left:50%;transform:translateX(-50%);background:var(--foreground);color:var(--background);border:1px solid var(--border);border-radius:var(--radius-md);box-shadow:var(--shadow-dropdown);padding:12px 20px;font-size:14px;max-width:calc(100% - 32px);z-index:100}
@media(max-width:1100px){#save-status{display:none}.subject-nav-wrap{align-items:start;flex-direction:column;gap:12px}.detail-grid{grid-template-columns:minmax(0,1fr) 280px}.subject-name{min-height:56px}.cards{gap:16px}.subject-card{padding:18px}.card-bottom{gap:8px}.card-open{padding:7px 9px}}@media(max-width:960px){.hero-split{grid-template-columns:1fr 1fr}.cards{grid-template-columns:repeat(2,minmax(0,1fr))}.detail-grid{grid-template-columns:1fr}.subject-name{min-height:38px}.forecast-input{padding:13px}.forecast-date-row{align-items:start;flex-direction:column;gap:10px}.nav-left-group{gap:12px}.nav-actions{gap:6px}.chap-count-badge{display:none}}@media(max-width:650px){.shell{padding:0 16px}.nav-inner{padding-top:12px;padding-bottom:12px;flex-wrap:wrap;gap:12px}.nav-left-group{flex:1;justify-content:space-between}.brand-name{font-size:16px}.nav-actions{width:100%;justify-content:flex-end}.nav-actions .button{padding:7px 11px;font-size:12px}.theme-switch{margin-right:auto}.subject-nav-wrap{padding:16px 0;gap:10px}.subject-nav{flex-wrap:nowrap;width:100%;overflow-x:auto;padding:0 0 5px}.nav-item{padding:7px 12px;flex-shrink:0;font-size:13px}#today-label{font-size:11px}.cards{grid-template-columns:1fr;gap:16px}.subject-card{padding:20px}.subject-name{min-height:0;margin-bottom:14px}.exam-panel{padding:18px;align-items:flex-start;gap:12px}.exam-panel h2{font-size:19px}.exam-kicker{font-size:10px}.exam-controls{gap:12px;flex-direction:column-reverse;align-items:flex-end}.exam-controls .button{padding:6px 8px;font-size:11px}.countdown{padding-left:15px;min-width:85px}.countdown strong{font-size:29px}.countdown span{font-size:11px}.section-heading{align-items:start;flex-direction:column;gap:5px}.hero-split{grid-template-columns:1fr;gap:16px}.hero-card{padding:20px}.page-heading{flex-wrap:wrap;gap:12px}.page-heading .subtitle{font-size:12px}.subject-header-actions .button{font-size:12px}.forecast-date-row{flex-direction:row;align-items:center}.forecast-meta{flex-wrap:wrap}.huge-stat{font-size:35px}.detail-grid{gap:16px}.chapter-controls{gap:10px}.search{flex-basis:100%}.filter-tabs{width:100%}.filter-tabs button{flex:1}.panel-head{padding:16px}.chapter-card-header,.group-summary{padding:14px 16px;gap:9px}.chap-header-meta{gap:7px}.chap-mini-bar{width:40px}.chapter-number{min-width:18px;font-size:11px}.chapter-name{font-size:13px}.chap-pct{font-size:11px;min-width:27px}.book-table th,.book-table td{padding:12px 14px}.book-table td:first-child{max-width:170px}.book-table .component{font-size:12px}.book-pages{font-size:12px!important}.book-table .book-range{font-size:10px}.single-component{gap:8px}.note-toggle{font-size:11px;padding:4px 7px}.weight{font-size:11px}.current-card .epic-progress-stage{padding:18px}.current-card .epic-stat-val{font-size:13px}.current-card .epic-stat-label{font-size:10px}.page-footer{font-size:11px}.filter-count{display:none}}@media(prefers-reduced-motion:reduce){*{transition:none!important;animation:none!important}}
.subject-card h3{min-height:58px}.subject-card .epic-progress-stage{margin-top:auto}.current-card{display:flex;flex-direction:column;gap:0}.completion-summary{display:flex;align-items:center;justify-content:space-between;gap:12px;border-top:1px solid var(--border-subtle);padding-top:16px;margin-top:auto;font-family:var(--font-mono);font-size:12px;color:var(--muted)}.current-card .epic-progress-stage{margin-bottom:18px}.current-card .approx-note{margin-bottom:12px}@media(max-width:650px){.subject-card h3{min-height:0}.completion-summary{font-size:11px;flex-wrap:wrap}}

/* Compact dashboard: all eight subjects share two rows on desktop. */
.cards{grid-template-columns:repeat(4,minmax(0,1fr));gap:14px}
.compact-card{padding:16px;gap:0;min-width:0}
.compact-card-top{display:flex;align-items:center;justify-content:space-between;gap:10px;margin-bottom:9px}
.compact-percent{font-family:var(--font-mono);font-size:26px;line-height:1;letter-spacing:-.05em}
.compact-percent span{font-size:16px;letter-spacing:0}
.compact-card .subject-icon{padding:3px 9px;font-size:12px}
.compact-card h3{font-size:13px;line-height:1.45;min-height:38px;margin-bottom:11px;letter-spacing:-.015em}
.compact-card progress{height:8px;box-shadow:none}
.compact-summary{display:flex;align-items:center;justify-content:space-between;gap:7px;margin:9px 0 12px;font-size:10px;color:var(--muted);white-space:nowrap}
.compact-summary span:first-child{font-family:var(--font-mono)}




.compact-ibs-label{font-size:10px;color:var(--muted);height:8px;line-height:8px}
.dashboard-exam{padding:14px 20px;margin-bottom:18px}
.dashboard-exam h2{font-size:21px;margin-top:3px}
.dashboard-exam .countdown strong{font-size:29px}
.dashboard-exam .countdown span{margin-top:2px;font-size:11px}

@media(max-width:1100px){.compact-card{padding:14px}.compact-summary{flex-wrap:wrap;row-gap:3px;font-size:10px}.compact-card h3{min-height:57px}}
@media(max-width:850px){.cards{grid-template-columns:repeat(2,minmax(0,1fr))}.compact-card h3{min-height:38px}.compact-summary{flex-wrap:nowrap}.compact-card{padding:15px}}
@media(max-width:650px){.cards{gap:10px}.compact-card{padding:12px}.compact-card h3{font-size:12px;min-height:52px;margin-bottom:8px}.compact-percent{font-size:23px}.compact-percent span{font-size:13px}.compact-card .subject-icon{font-size:10px;padding:3px 7px}.compact-summary{flex-direction:column;align-items:flex-start;gap:4px;margin:8px 0 10px}.dashboard-exam{padding:14px;margin-bottom:14px}.dashboard-exam h2{font-size:17px}.dashboard-exam .countdown strong{font-size:25px}}

.compact-card{cursor:pointer;transition:background-color .15s,border-color .15s,box-shadow .15s}.compact-card:hover,.compact-card:focus-visible{border-color:var(--primary);background:var(--card-hover);box-shadow:0 3px 12px #6366f126}.compact-card .compact-summary{margin-bottom:0}

/* Subject colours are shared by pages, dashboard cards and navigation. */
html[data-subject="scpm"],.subject-card[data-color="scpm"],.nav-item[data-color="scpm"],.deadline-chip[data-color="scpm"],.overview-task[data-color="scpm"]{--primary:#7c3aed;--primary-hover:#6d28d9;--primary-subtle:#7c3aed14;--primary-border:#7c3aed40;--subject-gradient:linear-gradient(90deg,#7c3aed,#9333ea);--subject-backdrop:linear-gradient(to right,#7c3aed,#9333ea);}
html.dark[data-subject="scpm"],html.dark .subject-card[data-color="scpm"],html.dark .nav-item[data-color="scpm"],html.dark .deadline-chip[data-color="scpm"],html.dark .overview-task[data-color="scpm"]{--primary:#a78bfa;--primary-hover:#7c3aed;--primary-subtle:#a78bfa1f;--primary-border:#a78bfa59;--subject-gradient:linear-gradient(90deg,#7c3aed,#a78bfa);--subject-backdrop:linear-gradient(to right,#3b1768,#54207d);}
html[data-subject="law"],.subject-card[data-color="law"],.nav-item[data-color="law"],.deadline-chip[data-color="law"],.overview-task[data-color="law"]{--primary:#2563eb;--primary-hover:#1d4ed8;--primary-subtle:#2563eb14;--primary-border:#2563eb40;--subject-gradient:linear-gradient(90deg,#2563eb,#0284c7);--subject-backdrop:linear-gradient(to right,#2563eb,#0284c7);}
html.dark[data-subject="law"],html.dark .subject-card[data-color="law"],html.dark .nav-item[data-color="law"],html.dark .deadline-chip[data-color="law"],html.dark .overview-task[data-color="law"]{--primary:#60a5fa;--primary-hover:#2563eb;--primary-subtle:#60a5fa1f;--primary-border:#60a5fa59;--subject-gradient:linear-gradient(90deg,#2563eb,#60a5fa);--subject-backdrop:linear-gradient(to right,#153779,#12465e);}
html[data-subject="fr"],.subject-card[data-color="fr"],.nav-item[data-color="fr"],.deadline-chip[data-color="fr"],.overview-task[data-color="fr"]{--primary:#4f46e5;--primary-hover:#4338ca;--primary-subtle:#4f46e514;--primary-border:#4f46e540;--subject-gradient:linear-gradient(90deg,#4f46e5,#8b5cf6);--subject-backdrop:linear-gradient(to right,#4f46e5,#8b5cf6);}
html.dark[data-subject="fr"],html.dark .subject-card[data-color="fr"],html.dark .nav-item[data-color="fr"],html.dark .deadline-chip[data-color="fr"],html.dark .overview-task[data-color="fr"]{--primary:#818cf8;--primary-hover:#4f46e5;--primary-subtle:#818cf81f;--primary-border:#818cf859;--subject-gradient:linear-gradient(90deg,#4f46e5,#818cf8);--subject-backdrop:linear-gradient(to right,#251758,#372063);}
html[data-subject="afm"],.subject-card[data-color="afm"],.nav-item[data-color="afm"],.deadline-chip[data-color="afm"],.overview-task[data-color="afm"]{--primary:#059669;--primary-hover:#047857;--primary-subtle:#05966914;--primary-border:#05966940;--subject-gradient:linear-gradient(90deg,#059669,#0d9488);--subject-backdrop:linear-gradient(to right,#059669,#0d9488);}
html.dark[data-subject="afm"],html.dark .subject-card[data-color="afm"],html.dark .nav-item[data-color="afm"],html.dark .deadline-chip[data-color="afm"],html.dark .overview-task[data-color="afm"]{--primary:#34d399;--primary-hover:#059669;--primary-subtle:#34d3991f;--primary-border:#34d39959;--subject-gradient:linear-gradient(90deg,#059669,#34d399);--subject-backdrop:linear-gradient(to right,#064e3b,#0c4a6e);}
html[data-subject="audit"],.subject-card[data-color="audit"],.nav-item[data-color="audit"],.deadline-chip[data-color="audit"],.overview-task[data-color="audit"]{--primary:#be123c;--primary-hover:#9f1239;--primary-subtle:#be123c14;--primary-border:#be123c40;--subject-gradient:linear-gradient(90deg,#be123c,#e11d48);--subject-backdrop:linear-gradient(to right,#be123c,#e11d48);}
html.dark[data-subject="audit"],html.dark .subject-card[data-color="audit"],html.dark .nav-item[data-color="audit"],html.dark .deadline-chip[data-color="audit"],html.dark .overview-task[data-color="audit"]{--primary:#fb7185;--primary-hover:#be123c;--primary-subtle:#fb71851f;--primary-border:#fb718559;--subject-gradient:linear-gradient(90deg,#be123c,#fb7185);--subject-backdrop:linear-gradient(to right,#59172d,#701d3e);}
html[data-subject="dt"],.subject-card[data-color="dt"],.nav-item[data-color="dt"],.deadline-chip[data-color="dt"],.overview-task[data-color="dt"]{--primary:#c2410c;--primary-hover:#9a3412;--primary-subtle:#c2410c14;--primary-border:#c2410c40;--subject-gradient:linear-gradient(90deg,#c2410c,#d97706);--subject-backdrop:linear-gradient(to right,#c2410c,#d97706);}
html.dark[data-subject="dt"],html.dark .subject-card[data-color="dt"],html.dark .nav-item[data-color="dt"],html.dark .deadline-chip[data-color="dt"],html.dark .overview-task[data-color="dt"]{--primary:#fb923c;--primary-hover:#c2410c;--primary-subtle:#fb923c1f;--primary-border:#fb923c59;--subject-gradient:linear-gradient(90deg,#c2410c,#fb923c);--subject-backdrop:linear-gradient(to right,#65270e,#713e16);}
html[data-subject="idt"],.subject-card[data-color="idt"],.nav-item[data-color="idt"],.deadline-chip[data-color="idt"],.overview-task[data-color="idt"]{--primary:#0e7490;--primary-hover:#155e75;--primary-subtle:#0e749014;--primary-border:#0e749040;--subject-gradient:linear-gradient(90deg,#0e7490,#0891b2);--subject-backdrop:linear-gradient(to right,#0e7490,#0891b2);}
html.dark[data-subject="idt"],html.dark .subject-card[data-color="idt"],html.dark .nav-item[data-color="idt"],html.dark .deadline-chip[data-color="idt"],html.dark .overview-task[data-color="idt"]{--primary:#22d3ee;--primary-hover:#0e7490;--primary-subtle:#22d3ee1f;--primary-border:#22d3ee59;--subject-gradient:linear-gradient(90deg,#0e7490,#22d3ee);--subject-backdrop:linear-gradient(to right,#164e63,#134e4a);}
html[data-subject="ibs"],.subject-card[data-color="ibs"],.nav-item[data-color="ibs"],.deadline-chip[data-color="ibs"],.overview-task[data-color="ibs"]{--primary:#a16207;--primary-hover:#854d0e;--primary-subtle:#a1620714;--primary-border:#a1620740;--subject-gradient:linear-gradient(90deg,#a16207,#ca8a04);--subject-backdrop:linear-gradient(to right,#a16207,#ca8a04);}
html.dark[data-subject="ibs"],html.dark .subject-card[data-color="ibs"],html.dark .nav-item[data-color="ibs"],html.dark .deadline-chip[data-color="ibs"],html.dark .overview-task[data-color="ibs"]{--primary:#facc15;--primary-hover:#a16207;--primary-subtle:#facc151f;--primary-border:#facc1559;--subject-gradient:linear-gradient(90deg,#a16207,#facc15);--subject-backdrop:linear-gradient(to right,#543814,#625018);}
html:not([data-subject="hub"]) body{background:linear-gradient(to bottom,#fff 0%,#fff 40%,#ffffff00 100%),var(--subject-backdrop);background-attachment:fixed}
html.dark:not([data-subject="hub"]) body{background:linear-gradient(to bottom,#09090b 0%,#09090b 40%,#09090b00 100%),var(--subject-backdrop);background-attachment:fixed}
html:not([data-subject="hub"]) .brand-logo-badge{background:var(--subject-gradient);box-shadow:0 2px 6px var(--primary-border)}
html:not([data-subject="hub"]) .epic-progress-stage::before{background:radial-gradient(ellipse,var(--primary-border),transparent 70%)}
html:not([data-subject="hub"]) progress::-webkit-progress-value,.subject-card progress::-webkit-progress-value{background:var(--subject-gradient)}
html:not([data-subject="hub"]) progress::-moz-progress-bar,.subject-card progress::-moz-progress-bar{background:var(--subject-gradient)}
.subject-card{box-shadow:inset 0 3px 0 var(--primary),var(--shadow-card)}
.subject-card:hover,.subject-card:focus-visible{box-shadow:inset 0 3px 0 var(--primary),0 3px 12px var(--primary-border)}
.compact-percent{color:var(--primary)}
.nav-item[data-color]:not(.active){color:var(--primary)}
.nav-item.active{box-shadow:0 2px 7px var(--primary-border)}
html.dark .nav-item[data-color].active{background:var(--primary-hover);border-color:var(--primary-hover);color:#fff}

html.dark:not([data-subject="hub"]){--primary-foreground:#09090b}

/* Keep navigation fixed in place across short dashboards and long subjects. */
html{scrollbar-gutter:stable}
.dashboard-overview{display:grid;grid-template-columns:minmax(0,1.6fr) minmax(0,1fr);gap:14px;margin-top:18px}
.overview-panel{background:var(--card);border:1px solid var(--border);border-radius:var(--radius-lg);box-shadow:var(--shadow-card);padding:14px 16px;min-width:0}
.overview-heading{display:flex;align-items:center;justify-content:space-between;gap:10px;margin-bottom:10px}
.overview-heading h2{font-size:13px}
.overview-heading>span{font-family:var(--font-mono);font-size:10px;color:var(--muted)}
.deadline-grid{display:grid;grid-template-columns:repeat(4,minmax(0,1fr));gap:7px}
.deadline-chip{display:flex;align-items:center;justify-content:space-between;gap:6px;border:1px solid var(--border);border-radius:7px;background:var(--surface);padding:6px 8px;min-width:0;color:var(--muted);font-size:10px;line-height:1.35}
.deadline-chip strong{font-size:10px;color:var(--primary)}
.deadline-chip:hover{border-color:var(--primary);background:var(--primary-subtle)}
.deadline-chip.overdue span{color:#e11d48}.deadline-chip.due span{color:var(--warning)}
.overview-tasks{display:flex;flex-direction:column;gap:6px}
.overview-task{display:flex;align-items:center;gap:9px;font-size:11px;line-height:1.4;min-width:0}
.overview-task .subject-icon{font-size:9px;padding:2px 6px;flex-shrink:0}
.overview-task>span:last-child{overflow:hidden;text-overflow:ellipsis;white-space:nowrap}
.overview-task:hover>span:last-child{color:var(--primary)}
.overview-empty{font-size:12px;line-height:1.7;color:var(--muted);padding:6px 0;margin:0}
@media(max-width:850px){.dashboard-overview{grid-template-columns:1fr}.overview-panel{padding:14px}}
@media(max-width:650px){.deadline-grid{grid-template-columns:repeat(2,minmax(0,1fr))}.dashboard-overview{margin-top:14px;gap:10px}}

[hidden]{display:none!important}
