:root{color-scheme:light;--bg-0: #f8fafc;--bg-1: #eef3f7;--bg-2: #e4ecf3;--background: var(--bg-0);--surface: rgba(255, 255, 255, .78);--surface-elevated: rgba(255, 255, 255, .92);--surface-hover: rgba(255, 255, 255, .96);--surface-muted: #f3f7fb;--text-primary: #24384f;--text-secondary: #556b84;--text-muted: #5f758f;--text-inverse: #ffffff;--border: rgba(132, 159, 186, .22);--border-strong: rgba(132, 159, 186, .38);--border-focus: #3d6e99;--accent: #244a70;--accent-hover: #18314f;--accent-soft: rgba(122, 173, 215, .18);--accent-mid: #3d6e99;--accent-light: #7aadd7;--success: #3d7a58;--success-soft: rgba(143, 184, 160, .28);--warning: #9a6b1f;--warning-soft: rgba(214, 178, 90, .22);--danger: #9b2c2c;--danger-soft: rgba(155, 44, 44, .12);--info: #3d6e99;--info-soft: rgba(122, 173, 215, .2);--radius-sm: 8px;--radius-md: 12px;--radius-lg: 16px;--radius-pill: 999px;--space-1: .25rem;--space-2: .5rem;--space-3: .75rem;--space-4: 1rem;--space-5: 1.25rem;--space-6: 1.5rem;--space-8: 2rem;--space-10: 2.5rem;--shadow-sm: 0 6px 16px rgba(34, 58, 90, .05);--shadow-md: 0 14px 34px rgba(34, 58, 90, .07);--shadow-lg: 0 22px 48px rgba(28, 51, 82, .1);--font-sans: Inter, ui-sans-serif, system-ui, -apple-system, "Segoe UI", sans-serif;--font-display: Georgia, "Times New Roman", serif;--font-mono: ui-monospace, SFMono-Regular, Menlo, Consolas, monospace;--ink: var(--text-primary);--muted: var(--text-muted);--line: var(--border);--panel: var(--surface);font-family:var(--font-sans);line-height:1.5;color:var(--text-primary);background:radial-gradient(circle at 50% -8%,rgba(255,255,255,.95),transparent 42%),linear-gradient(180deg,var(--bg-0) 0%,var(--bg-1) 48%,var(--bg-2) 100%);min-height:100%}*{box-sizing:border-box}body{margin:0;min-height:100vh}a{color:var(--accent-mid);text-decoration:none}a:hover{color:var(--accent-hover);text-decoration:underline}:focus-visible{outline:2px solid var(--border-focus);outline-offset:2px}.text-display{font-family:var(--font-display);font-size:clamp(1.85rem,3.2vw,2.45rem);font-weight:500;letter-spacing:-.02em;line-height:1.15;color:var(--text-primary)}h1,.text-h1{font-family:var(--font-display);font-size:clamp(1.55rem,2.6vw,2rem);font-weight:500;letter-spacing:-.02em;line-height:1.2;margin:0 0 .35rem;color:var(--text-primary)}h2,.text-h2{font-family:var(--font-display);font-size:1.2rem;font-weight:500;margin:0 0 .5rem;color:var(--text-primary)}h3,.text-h3{font-family:var(--font-sans);font-size:1rem;font-weight:600;margin:1rem 0 .5rem;color:var(--text-primary)}.text-body{font-size:1rem;line-height:1.6}.text-body-sm,.small{font-size:.875rem;line-height:1.5}.text-label,.eyebrow{letter-spacing:.18em;text-transform:uppercase;font-size:.72rem;font-weight:600;color:var(--text-muted);margin:0 0 .5rem}.text-caption{font-size:.78rem;color:var(--text-muted)}.text-metric{font-family:var(--font-mono);font-size:.9rem;letter-spacing:.04em}.text-code,code{font-family:var(--font-mono);font-size:.9em}.muted{color:var(--text-muted)}.lead{font-size:1.05rem;font-weight:600;margin:0 0 .35rem;color:var(--text-primary)}.error{color:var(--danger)}.ok,.success{color:var(--success);word-break:break-all}.warning-text{color:var(--warning)}.shell{max-width:28rem;margin:0 auto;padding:3.5rem 1.25rem}.shell.wide{max-width:36rem}.app-shell{min-height:100vh;display:flex;flex-direction:column}.topbar{display:flex;flex-wrap:wrap;gap:1rem;align-items:center;justify-content:space-between;padding:.9rem 1.5rem;border-bottom:1px solid var(--border);background:#ffffff9e;-webkit-backdrop-filter:blur(12px);backdrop-filter:blur(12px);position:sticky;top:0;z-index:20}.brand{display:grid;gap:.1rem;min-width:0}.brand-mark{font-family:var(--font-display);font-size:1.12rem;font-weight:500;color:var(--accent-hover);letter-spacing:-.01em}.brand-sub{font-size:.72rem;letter-spacing:.16em;text-transform:uppercase;color:var(--text-muted);font-weight:600}.nav{display:flex;flex-wrap:wrap;gap:.35rem;align-items:center}.nav a{display:inline-flex;align-items:center;gap:.4rem;padding:.45rem .75rem;border-radius:var(--radius-sm);color:var(--text-secondary);font-weight:550;font-size:.92rem;text-decoration:none;transition:background .18s ease,color .18s ease}.nav a:hover{background:var(--accent-soft);color:var(--accent-hover);text-decoration:none}.nav a.active{background:#ffffffe0;color:var(--accent-hover);box-shadow:var(--shadow-sm);border:1px solid var(--border)}.nav-icon{width:1rem;height:1rem;flex:0 0 auto;opacity:.85}.content{width:min(960px,100%);margin:0 auto;padding:1.5rem;flex:1}.content.wide{width:min(1100px,100%)}.page{display:grid;gap:1.15rem}.page-header{display:flex;justify-content:space-between;gap:1rem;align-items:flex-start}.crumb{margin:0;color:var(--text-muted);font-size:.9rem}.card{padding:1.25rem 1.35rem;border:1px solid var(--border);border-radius:var(--radius-lg);background:var(--surface);box-shadow:var(--shadow-sm)}.card.elevated{background:var(--surface-elevated);box-shadow:var(--shadow-md)}.card.empty{text-align:left}.card.warning{border-color:#9a6b1f59;background:var(--warning-soft)}.card.success-card{border-color:#3d7a5847;background:var(--success-soft)}.card.revision-card{border-color:#9a6b1f66;background:linear-gradient(180deg,rgba(255,250,240,.9),var(--surface))}.card.pass-card{border-color:#3d7a5859;background:linear-gradient(180deg,rgba(240,248,243,.95),var(--surface))}.card.primary-panel{border-color:#3d6e9947;background:linear-gradient(180deg,#ffffffeb,#eef5fbbf)}.stack{display:grid;gap:.85rem}button,.btn{font:inherit;padding:.65rem 1rem;border:0;border-radius:var(--radius-sm);background:var(--accent);color:var(--text-inverse);cursor:pointer;font-weight:600;transition:background .18s ease,transform .18s ease,box-shadow .18s ease}button:hover:not(:disabled),.btn:hover{background:var(--accent-hover)}button:disabled{opacity:.55;cursor:default}button.ghost,.btn-ghost{background:transparent;color:var(--text-primary);border:1px solid var(--border)}button.ghost:hover:not(:disabled),.btn-ghost:hover{background:var(--surface-hover);border-color:var(--border-strong)}button.secondary,.btn-secondary{background:#ffffffb8;color:var(--accent-hover);border:1px solid var(--border)}button.danger,.btn-danger{background:var(--danger);color:#fff}.actions{display:flex;flex-wrap:wrap;gap:.5rem;margin-top:1rem;align-items:center}.button-link{display:inline-flex;align-items:center;padding:.65rem 1rem;border-radius:var(--radius-sm);border:1px solid var(--border);color:var(--text-primary);font-weight:550;background:#ffffff8c;text-decoration:none}.button-link:hover{background:var(--surface-hover);text-decoration:none}.button-link.primary{background:var(--accent);border-color:transparent;color:#fff}.button-link.primary:hover{background:var(--accent-hover);color:#fff}label{display:grid;gap:.35rem;font-size:.92rem;color:var(--text-secondary);font-weight:550}input,select,textarea{padding:.65rem .75rem;border:1px solid var(--border-strong);border-radius:var(--radius-sm);font:inherit;background:#fff;color:var(--text-primary);transition:border-color .15s ease,box-shadow .15s ease}input:focus,select:focus,textarea:focus{outline:none;border-color:var(--border-focus);box-shadow:0 0 0 3px var(--accent-soft)}input[readonly]{background:var(--surface-muted);color:var(--text-muted)}textarea{resize:vertical;min-height:6rem}.badge{display:inline-flex;align-items:center;padding:.18rem .55rem;border-radius:var(--radius-pill);background:var(--accent-soft);color:var(--accent-hover);font-size:.75rem;font-weight:600;border:1px solid transparent;white-space:nowrap}.badge-locked{background:#e8eef4;color:var(--text-muted)}.badge-available{background:var(--info-soft);color:var(--info)}.badge-progress{background:#3d6e9924;color:var(--accent)}.badge-review{background:#7aadd738;color:var(--blue-ish, #315a84)}.badge-revision{background:var(--warning-soft);color:var(--warning)}.badge-pass,.badge-completed{background:var(--success-soft);color:var(--success)}.badge-danger{background:var(--danger-soft);color:var(--danger)}.progress-track{height:.45rem;background:#849fba2e;border-radius:var(--radius-pill);overflow:hidden;margin:.55rem 0}.progress-fill{height:100%;background:linear-gradient(90deg,var(--accent-mid),var(--accent));border-radius:var(--radius-pill);transition:width .25s ease}.meta{display:grid;gap:1rem;grid-template-columns:repeat(auto-fit,minmax(140px,1fr));margin:0}.meta dt{font-size:.75rem;color:var(--text-muted);letter-spacing:.04em;text-transform:uppercase}.meta dd{margin:.2rem 0 0;font-weight:600}.week-head{display:flex;justify-content:space-between;gap:1rem;align-items:flex-start;margin-bottom:.75rem}.week-head h2{margin:0}.material-list{list-style:none;padding:0;margin:0;display:grid;gap:.55rem}.material-list li{display:flex;gap:.55rem;align-items:baseline}.list{list-style:none;padding:0;margin:0;display:grid;gap:.65rem}.mark{width:1.2rem;display:inline-block;color:var(--accent-mid);font-weight:700}.reader{width:min(42rem,100%);margin:0 auto}.markdown :is(h1,h2,h3){font-family:var(--font-display);font-weight:500;margin-top:1.35rem;color:var(--text-primary)}.markdown h1{font-size:1.45rem}.markdown h2{font-size:1.2rem}.markdown p,.markdown li{line-height:1.7;color:var(--text-primary)}.markdown pre{overflow-x:auto;padding:.85rem 1rem;border-radius:var(--radius-sm);background:#18314f;color:#e8eef5;font-size:.88rem}.markdown :not(pre)>code{background:var(--accent-soft);padding:.1rem .35rem;border-radius:4px}.markdown blockquote{margin:1rem 0;padding:.75rem 1rem;border-left:3px solid var(--accent-light);background:var(--surface-muted);color:var(--text-secondary);border-radius:0 var(--radius-sm) var(--radius-sm) 0}.report{white-space:pre-wrap;background:var(--surface-muted);padding:.85rem;border-radius:var(--radius-sm);border:1px solid var(--border)}.project-grid{display:grid;gap:.85rem;grid-template-columns:repeat(auto-fit,minmax(200px,1fr))}.project-option{padding:1rem;border:1px solid var(--border);border-radius:var(--radius-md);display:grid;gap:.5rem;align-content:start;background:#ffffff8c;transition:border-color .18s ease,box-shadow .18s ease,transform .18s ease}.project-option:hover{border-color:var(--border-strong);box-shadow:var(--shadow-sm);transform:translateY(-1px)}.project-option h3{margin:0}.skill-list{list-style:none;padding:0;margin:.75rem 0 0;display:grid;gap:1rem}.skill-row{display:grid;gap:.35rem}.skill-head{display:flex;justify-content:space-between;gap:1rem;align-items:baseline}.skill-bar{height:.45rem;background:#849fba33;border-radius:var(--radius-pill);overflow:hidden}.skill-bar-fill{height:100%;background:linear-gradient(90deg,var(--accent-mid),var(--accent));border-radius:var(--radius-pill)}.skill-na{color:var(--text-muted);font-style:italic;font-weight:500}.xp-bar{font-family:var(--font-mono);letter-spacing:.04em;margin:.35rem 0;font-size:.85rem;color:var(--text-secondary)}.achievement-grid{display:grid;gap:.85rem;grid-template-columns:repeat(auto-fit,minmax(200px,1fr));margin-top:.75rem}.achievement-card{padding:.85rem;border:1px solid var(--border);border-radius:var(--radius-md);background:#ffffff8c}.achievement-card.locked{opacity:.62}.achievement-card h3{margin:0 0 .35rem}.dashboard-grid{display:grid;gap:1rem;grid-template-columns:1.4fr 1fr;align-items:start}.dashboard-side{display:grid;gap:1rem}.stat-row{display:grid;gap:.75rem;grid-template-columns:repeat(auto-fit,minmax(120px,1fr));margin:.75rem 0}.stat{padding:.75rem;border-radius:var(--radius-md);background:#ffffff8c;border:1px solid var(--border)}.stat .label{font-size:.72rem;text-transform:uppercase;letter-spacing:.06em;color:var(--text-muted)}.stat .value{font-weight:600;margin-top:.2rem;color:var(--text-primary)}.skeleton{height:.85rem;border-radius:var(--radius-sm);background:linear-gradient(90deg,#e8eef4,#f7fafc,#e8eef4);background-size:200% 100%;animation:shimmer 1.2s ease-in-out infinite}@keyframes shimmer{0%{background-position:100% 0}to{background-position:-100% 0}}.form{display:grid;gap:.85rem}.form-row{display:grid;gap:.85rem;grid-template-columns:repeat(auto-fit,minmax(180px,1fr));align-items:end}.toolbar{display:flex;gap:.75rem;flex-wrap:wrap;margin-bottom:1rem}.toolbar input{flex:1;min-width:180px}.table-wrap{overflow-x:auto}table{width:100%;border-collapse:collapse;font-size:.92rem}th,td{text-align:left;padding:.7rem .55rem;border-bottom:1px solid var(--border)}th{font-size:.72rem;text-transform:uppercase;letter-spacing:.06em;color:var(--text-muted);font-weight:600}tbody tr{cursor:pointer;transition:background .15s ease}tbody tr:hover{background:var(--accent-soft)}.pager{display:flex;justify-content:space-between;align-items:center;gap:1rem;margin-top:1rem;flex-wrap:wrap}@media(max-width:900px){.dashboard-grid{grid-template-columns:1fr}.content{width:min(860px,100%)}}@media(max-width:640px){.content{padding:1rem;overflow-x:hidden}.topbar{padding:.75rem 1rem;position:sticky}.page{overflow-x:hidden}.card{overflow-wrap:anywhere}.markdown pre,.report,pre{max-width:100%;overflow-x:auto}.nav{gap:.25rem;width:100%}.nav a{padding:.4rem .55rem;font-size:.84rem}.nav-label-full{display:none}.brand-mark{font-size:1rem}}.content{width:min(1100px,100%)}.nav a{font-size:.86rem;padding:.4rem .65rem}
