:root{--bg: #F6F5F1;--side: #EFEDE7;--side-b: #E2DFD7;--surface: #FFFFFF;--border: #E4E1DA;--line: #EEECE6;--text: #1E2329;--text2: #3F474F;--text3: #4D555E;--text4: #646C75;--accent: #2F5FD0;--accent-hover: #1E3F9A;--on-accent: #FFFFFF;--accent-t: #EEF3FD;--accent-b: #C9D7F5;--row-on: #F5F8FE;--nav-on-bg: #E3E9F8;--nav-on-fg: #1E3A8A;--hover: #E6E3DC;--row-hover: #FAF9F6;--chip: #F1EFEA;--seg: #EFEDE7;--seg-on: #FFFFFF;--track: #E6E3DC;--input-b: #D3D0C8;--input-bg: #FFFFFF;--shadow: 0 1px 2px rgba(30,35,41,.05);--overlay: rgba(30,35,41,.32);--pop-shadow: 0 16px 40px rgba(30,35,41,.16);--blue: #2F5FD0;--blue-t: #EEF3FD;--violet: #6B4FC7;--violet-t: #F4F1FB;--green: #2E8B57;--green-t: #EEF7F1;--amber: #C27A12;--amber-t: #FBF5E9;--teal: #13777A;--teal-t: #EAF5F5;--rose: #B23A5F;--rose-t: #FBEFF3;--slate: #3A3F4A;--slate-t: #EFF1F5;--orange: #A84D16;--orange-t: #FBF0E8;--done: #2E8B57;--ready-bg: #E8EEFB;--ready-fg: #1E3A8A;--wip-bg: #FBEFD9;--wip-fg: #7A4A06;--wip: #E0A33A;--done-bg: #E3F2E8;--done-fg: #1D5E3A;--locked-bg: #EFEDE7;--locked-fg: #4D555E;--good: #1D5E3A;--good-t: #E3F2E8;--warn: #7A4A06;--warn-t: #FBEFD9;--bad: #A12B2B;--bad-t: #F9E4E2;--easy: #2E7D4F;--medium: #9A6208;--hard: #B13A2A;--s-not_started: var(--track);--s-learning: var(--accent);--s-practicing: var(--wip);--s-needs_review: var(--rose);--s-mastered: var(--green);--sans: "Atkinson Hyperlegible", system-ui, sans-serif;--display: "Space Grotesk", var(--sans);--mono: "IBM Plex Mono", ui-monospace, SFMono-Regular, Menlo, monospace;--r: 14px;color-scheme:light}:root[data-theme=dark]{--bg: #18191C;--side: #1E1F23;--side-b: #2B2D32;--surface: #222327;--border: #33353A;--line: #2C2E33;--text: #ECEAE4;--text2: #D2CFC8;--text3: #B5B2AA;--text4: #97948C;--accent: #86A8F7;--accent-hover: #AFC6FA;--on-accent: #0E1A33;--accent-t: #1E273D;--accent-b: #34466F;--row-on: #1F2638;--nav-on-bg: #25304C;--nav-on-fg: #D3DEFC;--hover: #2A2C31;--row-hover: #26282C;--chip: #2B2D32;--seg: #26272B;--seg-on: #3A3C42;--track: #2E3035;--input-b: #3D4046;--input-bg: #1A1B1E;--shadow: none;--overlay: rgba(0,0,0,.5);--pop-shadow: 0 16px 40px rgba(0,0,0,.45);--blue: #86A8F7;--blue-t: #1E273D;--violet: #B3A3F2;--violet-t: #272339;--green: #72C79A;--green-t: #1B2E24;--amber: #E8B666;--amber-t: #33291A;--teal: #4FC3E0;--teal-t: #182D36;--rose: #F09AB4;--rose-t: #34202A;--slate: #A9B6CA;--slate-t: #252A33;--orange: #F0A774;--orange-t: #35251B;--done: #72C79A;--ready-bg: #25304C;--ready-fg: #C8D6FB;--wip-bg: #3A2E1A;--wip-fg: #F2CD8A;--wip: #E8B666;--done-bg: #1D3528;--done-fg: #9CDBB7;--locked-bg: #2B2D32;--locked-fg: #B5B2AA;--good: #9CDBB7;--good-t: #1D3528;--warn: #F2CD8A;--warn-t: #3A2E1A;--bad: #F2A39B;--bad-t: #3B2220;--easy: #8FD3A8;--medium: #E8B666;--hard: #F2A39B;color-scheme:dark}*{box-sizing:border-box}.sr-only{position:absolute;width:1px;height:1px;margin:-1px;padding:0;border:0;overflow:hidden;clip:rect(0 0 0 0);white-space:nowrap}html,body{margin:0;background:var(--bg);color:var(--text);font:16px/1.55 var(--sans);-webkit-font-smoothing:antialiased}a{color:var(--accent);text-decoration:none}a:hover{color:var(--accent-hover);text-decoration:underline}:focus-visible{outline:2px solid var(--accent);outline-offset:2px;border-radius:4px}h1,h2{font-family:var(--display);font-weight:600}h1{font-size:34px;line-height:1.2;margin:0 0 6px;letter-spacing:-.02em}h2{font-size:20px;line-height:1.3;margin:0 0 12px}h3{font-size:16px;margin:0 0 6px}p{margin:0 0 10px}code,pre,.mono{font-family:var(--mono);font-size:14px}pre{background:var(--chip);padding:12px 14px;border-radius:10px;overflow:auto}hr{border:0;border-top:1px solid var(--line);margin:16px 0}.eyebrow{font-size:13px;text-transform:uppercase;letter-spacing:.06em;color:var(--text4);font-weight:700}.eyebrow.accent{color:var(--nav-on-fg)}.note{color:var(--text4);font-size:14px;margin-top:14px}.desc{font-size:15px;color:var(--text3)}.app{display:grid;grid-template-columns:220px 1fr;min-height:100vh}.side{position:sticky;top:0;height:100vh;overflow-y:auto;border-right:1px solid var(--side-b);background:var(--side);padding:18px 12px 16px;display:flex;flex-direction:column}.brand{display:flex;align-items:center;gap:10px;padding:2px 10px 16px;font-weight:700;font-size:18px}.brand .mark{flex:none}.navgroup{margin:14px 0 4px;padding:0 10px;font-size:12px;font-weight:700;text-transform:uppercase;letter-spacing:.06em;color:var(--text4)}.side a.nav{display:flex;align-items:center;min-height:40px;padding:8px 10px;border-radius:10px;color:var(--text2);font-size:15px}.side a.nav:hover{background:var(--hover);color:var(--text);text-decoration:none}.side a.nav.active{background:var(--nav-on-bg);color:var(--nav-on-fg);font-weight:700}.side .side-foot{margin-top:auto;padding:16px 2px 0}.side .side-foot button{width:100%;justify-content:flex-start;background:var(--surface)}.main{min-width:0;display:flex;flex-direction:column}.top{position:sticky;top:0;z-index:5;display:flex;gap:8px;align-items:center;padding:6px 48px;background:color-mix(in srgb,var(--bg) 92%,transparent);-webkit-backdrop-filter:blur(6px);backdrop-filter:blur(6px);border-bottom:1px solid var(--line)}.top button{min-height:36px;padding:4px 12px;font-size:14px}.top .search{justify-content:flex-start;flex:1;max-width:440px;min-width:0;overflow:hidden;text-align:left;color:var(--text4);background:var(--input-bg);border-color:var(--border)}.page{padding:40px 48px 72px;max-width:1080px;width:100%}.page-head{display:flex;justify-content:space-between;align-items:flex-start;gap:16px;margin-bottom:24px;flex-wrap:wrap}.page-head .sub{color:var(--text3);font-size:16px;max-width:70ch}.menu-btn{display:none}.card{background:var(--surface);border:1px solid var(--border);border-radius:var(--r);padding:20px 22px;box-shadow:var(--shadow);min-width:0;overflow-x:auto}.card+.card{margin-top:16px}.grid>.card,.split>.card,.split-wide>.card{margin-top:0}.card h2{display:flex;justify-content:space-between;align-items:baseline;gap:8px}.card h2 .aside{font-size:14px;font-weight:400;color:var(--text4)}.grid{display:grid;gap:16px}.g2{grid-template-columns:repeat(2,minmax(0,1fr))}.g3{grid-template-columns:repeat(3,minmax(0,1fr))}.g4{grid-template-columns:repeat(4,minmax(0,1fr))}.split{display:grid;grid-template-columns:minmax(0,1fr) 320px;gap:20px;align-items:start}.split-wide{display:grid;grid-template-columns:minmax(0,1.25fr) minmax(0,1fr);gap:20px;align-items:start}.stack>*+*{margin-top:16px}.row{display:flex;gap:8px;align-items:center;flex-wrap:wrap}.row.between{justify-content:space-between}.row.nowrap{flex-wrap:nowrap}.grow{flex:1;min-width:0}.muted{color:var(--text4)}.small{font-size:14px}.tight{margin:0}.ellipsis{overflow:hidden;text-overflow:ellipsis;white-space:nowrap}.callout{border-left:3px solid var(--accent);background:var(--accent-t);padding:12px 14px;border-radius:0 10px 10px 0}.callout.warn{border-color:var(--wip);background:var(--warn-t)}.callout.bad{border-color:var(--bad);background:var(--bad-t)}.footnote{border-top:1px dashed var(--input-b);padding:14px 0 0;color:var(--text3);font-size:14px;margin-top:24px}.next{background:var(--accent-t);border-color:var(--accent-b)}.next .title{font-size:22px;font-weight:700;margin:4px 0 6px;color:var(--text)}.next .why{color:var(--text3);font-size:15px}.next.row{gap:20px}.next.row .btn{flex:none}.next ul{margin:6px 0 14px;padding-left:20px;color:var(--text3)}button,.btn{font:inherit;font-size:15px;display:inline-flex;align-items:center;justify-content:center;gap:6px;min-height:44px;padding:8px 16px;border-radius:10px;border:1px solid var(--input-b);background:var(--surface);color:var(--text);cursor:pointer;white-space:nowrap}button:hover:not(:disabled),.btn:hover{background:var(--hover);color:var(--text);text-decoration:none}button:disabled{opacity:.5;cursor:not-allowed}.primary{background:var(--accent);border-color:var(--accent);color:var(--on-accent);font-weight:700}.primary:hover:not(:disabled),a.primary:hover{background:var(--accent-hover);border-color:var(--accent-hover);color:var(--on-accent)}.ghost{background:transparent;border-color:transparent;color:var(--text2)}.ghost:hover:not(:disabled){background:var(--hover)}.danger{color:var(--bad)}.sm{min-height:36px;padding:4px 12px;font-size:14px}@media(pointer:coarse){.sm,.top button{min-height:44px}}input,textarea,select{font:inherit;font-size:15px;color:var(--text);background:var(--input-bg);border:1px solid var(--input-b);border-radius:10px;padding:9px 12px;width:100%;min-height:44px}textarea{min-height:96px;resize:vertical;line-height:1.5}input[type=checkbox],input[type=radio]{width:auto;min-height:0;accent-color:var(--accent)}input[type=range]{padding:0;accent-color:var(--accent)}label.field{display:block}label.field>span{display:block;font-size:14px;font-weight:700;color:var(--text2);margin-bottom:6px}label.field .hint{font-weight:400;color:var(--text4)}.fields>*+*{margin-top:14px}.inline-fields{display:grid;grid-template-columns:repeat(auto-fit,minmax(150px,1fr));gap:12px}.saved{font-size:12px;color:var(--text4)}.pills{display:flex;flex-wrap:wrap;gap:8px}.pills button{border-radius:999px;background:var(--input-bg);border-color:var(--input-b);color:var(--text2)}.pills button.on{background:var(--accent);border-color:var(--accent);color:var(--on-accent);font-weight:700}.tabs,.seg{display:inline-flex;flex-wrap:wrap;gap:2px;max-width:100%;padding:3px;background:var(--seg);border-radius:12px;margin-bottom:0}.tabs{margin-bottom:20px}.seg a.btn{border:0;border-radius:9px;min-height:38px;padding:6px 14px;background:transparent;color:var(--text3)}.seg a.btn.on{background:var(--seg-on);color:var(--text);font-weight:700;box-shadow:var(--shadow)}.tabs button,.seg button{border:0;border-radius:9px;min-height:38px;padding:6px 14px;background:transparent;color:var(--text3)}.tabs button:hover:not(:disabled),.seg button:hover:not(:disabled){background:var(--hover);color:var(--text)}.tabs button.on,.seg button.on{background:var(--seg-on);color:var(--text);font-weight:700;box-shadow:var(--shadow)}@media(pointer:coarse){.seg a.btn{border:0;border-radius:9px;min-height:38px;padding:6px 14px;background:transparent;color:var(--text3)}.seg a.btn.on{background:var(--seg-on);color:var(--text);font-weight:700;box-shadow:var(--shadow)}.tabs button,.seg button{min-height:44px}}.pill{display:inline-flex;align-items:center;gap:6px;font-size:13px;padding:2px 10px;border-radius:999px;background:var(--chip);color:var(--text2);white-space:nowrap}.pill .dot{width:8px;height:8px;border-radius:50%;background:currentColor}.st-not_started{color:var(--text4)}.st-learning{color:var(--accent)}.st-practicing{color:var(--wip)}.st-needs_review{color:var(--rose)}.st-mastered{color:var(--green)}.chip{display:inline-flex;align-items:center;gap:5px;font-size:13px;font-weight:700;padding:2px 10px;border-radius:999px;white-space:nowrap}.chip.ready{background:var(--ready-bg);color:var(--ready-fg)}.chip.in_progress{background:var(--wip-bg);color:var(--wip-fg)}.chip.done{background:var(--done-bg);color:var(--done-fg)}.chip.locked{background:var(--locked-bg);color:var(--locked-fg)}a.chip{font-weight:400}a.chip:hover{text-decoration:underline;color:inherit}.chip.pre{background:var(--chip);color:var(--text2)}.chips{display:flex;flex-wrap:wrap;gap:6px}.diff-Easy{color:var(--easy)}.diff-Medium{color:var(--medium)}.diff-Hard{color:var(--hard)}.tag{display:inline-block;font-size:13px;padding:1px 8px;border-radius:6px;background:var(--chip);color:var(--text2)}.tag.x{cursor:pointer}.q-pass{color:var(--good)}.q-partial{color:var(--warn)}.q-fail{color:var(--bad)}.list{list-style:none;margin:0;padding:0}.list>li{display:flex;gap:12px;align-items:center;padding:10px 2px;border-top:1px solid var(--line);min-width:0}.list>li:first-child{border-top:0}.list>li .grow a,a.name{color:var(--text)}.list>li .grow a:hover,a.name:hover{color:var(--accent)}table{width:100%;border-collapse:collapse;font-size:15px}th{text-align:left;font-size:12px;font-weight:700;color:var(--text4);text-transform:uppercase;letter-spacing:.06em;padding:8px 10px;border-bottom:1px solid var(--border)}td{padding:12px 10px;border-bottom:1px solid var(--line);vertical-align:top}tr:last-child td{border-bottom:0}tbody tr:hover td{background:var(--row-hover)}tr.clickable{cursor:pointer}.tablewrap{overflow-x:auto;position:relative}.table-card{padding:6px 14px}td .tname{font-size:17px;font-weight:700;color:var(--text)}td .tname:hover{color:var(--accent)}tr.locked .tname{color:var(--text2)}.bar{display:flex;height:8px;border-radius:999px;overflow:hidden;background:var(--track)}.bar>span{display:block;height:100%}.bar-label{font-size:14px;color:var(--text3);margin-top:6px}.progress.inline{display:flex;align-items:center;gap:14px;flex-wrap:wrap}.progress.inline .bar{flex:0 1 380px;min-width:160px}.progress.inline .bar-label{margin:0}.progress.inline.wide .bar{flex:1 1 auto}.segbar{display:flex;height:8px;border-radius:999px;overflow:hidden;background:var(--track)}.segbar>span{display:block;height:100%}.legend{display:flex;flex-wrap:wrap;gap:4px 14px;font-size:13px;color:var(--text4);margin-top:8px;align-items:center}.legend i{display:inline-block;width:9px;height:9px;border-radius:2px;margin-right:5px}.num{font:500 24px var(--mono);letter-spacing:-.02em}.stat .label{font-size:14px;color:var(--text4)}.criteria{list-style:none;padding:0;margin:0}.criteria li{display:flex;gap:8px;padding:4px 0;font-size:15px}.criteria .ok{color:var(--good)}.criteria .no{color:var(--text4)}.steps{display:flex;gap:6px;align-items:center}.steps>i{flex:1;height:6px;border-radius:999px;background:var(--track)}.steps>i.on{background:var(--accent)}.steps.mini{width:100px}.steps.mini>i{height:4px}.date{font-size:14px;color:var(--text3);margin-bottom:4px}.hero{display:flex;gap:20px;align-items:center;flex-wrap:wrap;margin-bottom:24px;padding:20px 24px;border-radius:var(--r);background:var(--surface);border:1px solid var(--border);box-shadow:var(--shadow)}.hero h1{margin-bottom:4px}.hero .sub{color:var(--text3)}.hero-steps{flex-basis:100%;justify-content:flex-end}@media(max-width:700px){.hero svg{display:none}}.setup-grid{display:grid;grid-template-columns:minmax(0,1fr) minmax(0,1fr);gap:20px;align-items:start}.setup-grid>.card+.card{margin-top:0}.card.setup{padding:0;overflow:hidden}.setup .setup-head{padding:16px 22px;border-bottom:1px solid var(--line)}.setup .list>li{align-items:flex-start;padding:16px 22px;border-top:1px solid var(--line)}.setup .list>li:first-child{border-top:0}.setup .list>li.current{background:var(--row-on)}.setup .step-title{font-weight:700;font-size:17px}.setup .desc{font-size:14px}.setup-foot{padding:6px 12px;border-top:1px solid var(--line)}.stepnum{flex:none;width:28px;height:28px;border-radius:50%;display:grid;place-items:center;font-size:13px;font-weight:700;border:1.5px solid var(--input-b);color:var(--text3);background:var(--surface)}.stepnum.on{background:var(--accent);border-color:var(--accent);color:var(--on-accent)}.stepnum.done{background:var(--done-bg);border-color:var(--done-bg);color:var(--done-fg)}@media(max-width:1180px){.setup-grid{grid-template-columns:minmax(0,1fr)}}.path-card{padding:0;overflow:hidden}.path-card .ph{background:var(--pt);padding:18px 22px;position:relative}.path-card .ph>:not(.ph-motif){position:relative}.ph-motif{position:absolute;right:16px;top:12px;opacity:.55}.path-card .ph h2{max-width:calc(100% - 96px)}.page-head.banner{align-items:center;flex-wrap:nowrap}@media(max-width:600px){.ph-motif{display:none}.path-card .ph h2{max-width:none}}.path-card.goal{border-color:var(--accent)}.ppill{flex:none;width:8px;height:26px;border-radius:999px;background:var(--pc)}.path-card h2{gap:12px}.chip.goal{background:var(--accent);color:var(--on-accent)}.path-card .progress.inline .bar{flex:1 1 auto}.numcircle{flex:none;width:26px;height:26px;border-radius:50%;background:var(--chip);color:var(--text3);display:grid;place-items:center;font-size:13px}button.linkbtn{background:none;border:0;padding:0;min-height:44px;color:var(--accent);font-weight:700}button.linkbtn:hover:not(:disabled){background:none;color:var(--accent-hover);text-decoration:underline}.path-card .pb{padding:16px 22px 18px}.prow{display:flex;gap:14px;align-items:center;padding:12px 16px;border-radius:10px;background:var(--pt);color:var(--text)}.prow .ppill{height:30px}.prow:hover{text-decoration:none;color:var(--text);filter:brightness(.98)}.prow+.prow{margin-top:8px}.week{display:grid;grid-template-columns:repeat(7,minmax(0,1fr));gap:8px}.day{min-width:0}.day-head{display:flex;justify-content:space-between;align-items:baseline;font-weight:700;font-size:14px;padding:6px 4px;border-bottom:2px solid var(--border);margin-bottom:8px}.day.today .day-head{border-color:var(--accent);color:var(--accent)}.pitem{--pc: var(--input-b);--pt: var(--surface);background:var(--pt);border:1px solid var(--border);border-left:4px solid var(--pc);border-radius:10px;padding:8px 10px;margin-bottom:8px;font-size:14px}.pitem .ptitle{font-weight:700;overflow-wrap:anywhere}.pitem.completed .ptitle{text-decoration:line-through;color:var(--text3)}.pitem.skipped{opacity:.6}@media(max-width:1180px){.week{grid-template-columns:minmax(0,1fr)}.day-head{font-size:16px}}.hero-diagram{margin-bottom:8px}.diagram-edit{margin-bottom:16px}.diagram-edit summary{cursor:pointer;min-height:32px;display:inline-flex;align-items:center}.viz-log{margin:10px 0 0;padding-left:20px;color:var(--text3)}.heat-days{display:grid;grid-template-rows:repeat(7,17px);font-size:11px;color:var(--text4);line-height:14px}.ring{transition:stroke-dasharray .6s ease}.milestone{border:1px solid var(--border);border-radius:12px;padding:12px 14px;background:var(--surface)}.milestone.got{background:var(--done-bg);border-color:transparent}.milestone.got .small{color:var(--done-fg)!important}.cheer{position:fixed;top:22vh;left:50%;transform:translate(-50%);z-index:60;pointer-events:none;background:var(--surface);border-radius:50%;box-shadow:var(--pop-shadow);padding:10px;animation:cheer-out 1.6s ease forwards}.cheer circle{fill:var(--done-bg);stroke:var(--done);stroke-width:3}.cheer path{fill:none;stroke:var(--done-fg);stroke-width:5;stroke-linecap:round;stroke-linejoin:round;stroke-dasharray:40;stroke-dashoffset:0;animation:cheer-draw .45s ease-out both}@keyframes cheer-draw{0%{stroke-dashoffset:40}}@keyframes cheer-out{0%{opacity:0;transform:translate(-50%) scale(.8)}15%{opacity:1;transform:translate(-50%) scale(1)}80%{opacity:1}to{opacity:0}}.toast{max-width:min(560px,calc(100vw - 32px))}.map-card{padding:12px 0 0}.map-legend{padding:0 18px 10px;margin:0;border-bottom:1px solid var(--line)}.ppill-sm{display:inline-block;width:6px;height:16px;border-radius:999px;background:var(--pc)}.map-scroll{overflow:auto;max-height:72vh;padding:4px}.mnode{cursor:pointer}.mnode rect{fill:var(--surface);stroke:var(--input-b);stroke-width:1.2}.mnode text{fill:var(--text);font-family:var(--sans)}.mnode.locked rect{fill:var(--bg);stroke-dasharray:4 3}.mnode.locked text{fill:var(--text3)}.mnode.ready rect{stroke:var(--pc);stroke-width:2;filter:drop-shadow(0 0 5px color-mix(in srgb,var(--pc) 45%,transparent))}.mnode.in_progress rect{stroke:var(--pc);stroke-width:2;fill:var(--pt)}.mnode.done rect{stroke:var(--pc);stroke-width:2.5;fill:var(--pt)}.mnode:hover rect{stroke-width:2.5}.mnode:focus{outline:none}.mnode:focus-visible rect{stroke:var(--accent);stroke-width:3}.mnode:focus-visible{outline:2px solid var(--accent);outline-offset:2px}.cycle{display:flex;gap:0;border:1px solid var(--border);border-radius:12px;overflow:hidden;background:var(--surface)}.cycle button{flex:1;border:0;border-radius:0;justify-content:center;padding:8px 6px;background:var(--surface);color:var(--text4);flex-direction:column;gap:2px;min-width:0}.cycle button+button{border-left:1px solid var(--border)}.cycle button.on{background:var(--accent-t);color:var(--text);font-weight:700}.cycle .ev{font:12px var(--mono)}.cycle button:focus-visible{outline-offset:-4px}.method{display:flex;flex-wrap:wrap;gap:6px;align-items:center;font-size:14px;color:var(--text3)}.method b{background:var(--chip);color:var(--text2);border-radius:999px;padding:3px 12px}.empty{border:1px dashed var(--input-b);border-radius:12px;padding:20px;text-align:center;color:var(--text4)}.empty strong{display:block;color:var(--text);margin-bottom:4px}.err{color:var(--bad);background:var(--bad-t);border-radius:10px;padding:10px 12px}.loading{color:var(--text4);padding:16px 0}.skeleton{height:14px;border-radius:4px;background:linear-gradient(90deg,var(--chip),var(--border),var(--chip));background-size:200% 100%;animation:sk 1.2s infinite;margin:8px 0}@keyframes sk{to{background-position:-200% 0}}.toast{position:fixed;bottom:18px;left:50%;transform:translate(-50%);background:var(--text);color:var(--bg);padding:10px 16px;border-radius:10px;z-index:50;font-size:15px}.md{overflow-wrap:anywhere}.md>:first-child{margin-top:0}.md>:last-child{margin-bottom:0}.md h1,.md h2,.md h3{margin:16px 0 6px}.md h1{font-size:24px}.md ul,.md ol{padding-left:22px;margin:0 0 10px}.md blockquote{margin:0 0 10px;padding-left:12px;border-left:3px solid var(--input-b);color:var(--text3)}.md table{margin-bottom:10px}.drawer{position:fixed;top:0;right:0;height:100vh;width:min(500px,100vw);background:var(--surface);border-left:1px solid var(--border);z-index:20;display:flex;flex-direction:column;box-shadow:var(--pop-shadow)}.drawer header{padding:14px 16px;border-bottom:1px solid var(--border)}.drawer .msgs{flex:1;overflow-y:auto;padding:14px 16px}.drawer footer{border-top:1px solid var(--border);padding:12px 16px}.msg{margin-bottom:14px}.msg.user{background:var(--chip);border-radius:10px;padding:10px 12px}.msg .src{font-size:14px;color:var(--text4);border-top:1px dashed var(--border);margin-top:6px;padding-top:6px}.overlay{position:fixed;top:0;right:0;bottom:0;left:0;background:var(--overlay);z-index:30;display:flex;justify-content:center;align-items:flex-start;padding-top:12vh}.palette{width:min(640px,92vw);background:var(--surface);border:1px solid var(--border);border-radius:14px;box-shadow:var(--pop-shadow);overflow:hidden}.palette input{border:0;border-bottom:1px solid var(--border);border-radius:0;padding:14px 16px;font-size:17px}.palette ul{max-height:50vh;overflow-y:auto}.palette li{padding:10px 16px;cursor:pointer;display:flex;gap:8px;align-items:center}.palette li.sel{background:var(--row-on)}.viz{background:var(--chip);border-radius:12px;padding:14px;overflow-x:auto}.cells{display:flex;gap:3px;flex-wrap:wrap}.cell{min-width:36px;height:36px;display:grid;place-items:center;font:500 14px var(--mono);border:1px solid var(--input-b);border-radius:6px;background:var(--surface);position:relative;padding:0 6px}.cell.hl{border-color:var(--accent);background:var(--accent-t)}.cell.dim{opacity:.45}.cell.empty-slot{color:var(--text4);font-weight:400}.cell .idx{position:absolute;top:-16px;font:11px var(--mono);color:var(--text4)}.ptrs{display:flex;gap:3px;font:11.5px var(--mono);color:var(--accent);min-height:16px}.ptrs>span{min-width:36px;text-align:center;padding:0 6px}.vizrow+.vizrow{margin-top:14px}.vizlabel{font-size:12px;text-transform:uppercase;letter-spacing:.06em;color:var(--text4);margin-bottom:18px}.code-out{font:14px var(--mono);white-space:pre-wrap;background:var(--chip);border-radius:10px;padding:10px 12px;max-height:260px;overflow:auto;margin:0}.cm-editor{border:1px solid var(--input-b);border-radius:10px;font-size:14px;overflow:hidden}.cm-editor,.cm-editor .cm-gutters{background-color:var(--input-bg)!important}.cm-editor .cm-gutters{border-right:1px solid var(--line)!important;color:var(--text4)!important}.cm-editor:focus-within{outline:2px solid var(--accent)!important;outline-offset:2px}.mermaid-box{background:var(--surface);border:1px solid var(--border);border-radius:10px;padding:12px;overflow:auto;min-height:60px}.timer{font:500 15px var(--mono)}.kbd{font:12px var(--mono);border:1px solid var(--input-b);border-bottom-width:2px;border-radius:5px;padding:0 5px;color:var(--text4)}.split-nav{display:grid;grid-template-columns:240px minmax(0,1fr);gap:20px;align-items:start}.hide-desktop{display:none}@media(max-width:1180px){.split,.split-wide,.split-nav{grid-template-columns:minmax(0,1fr)}.split-nav>nav{display:none}.hide-desktop{display:inline-flex}.g4,.g3{grid-template-columns:repeat(2,minmax(0,1fr))}}@media(max-width:900px){.app{grid-template-columns:minmax(0,1fr)}.side{position:fixed;z-index:40;width:272px;transform:translate(-100%);visibility:hidden;transition:transform .18s,visibility .18s;box-shadow:var(--pop-shadow)}.side.open{transform:none;visibility:visible}.menu-btn{display:inline-flex}.top{padding:8px 16px}.page-head>*{flex-basis:100%}.page{padding:24px 16px 56px}h1{font-size:28px}.g2,.g3,.g4{grid-template-columns:minmax(0,1fr)}.top .kbd,.hide-sm{display:none}.cycle button{font-size:13px;padding:6px 2px}}@media(prefers-reduced-motion:reduce){*,*:before,*:after{transition:none!important;animation:none!important}}.study-mark{display:flex;flex-direction:column;gap:6px;align-items:flex-end}@media(max-width:700px){.study-mark{align-items:flex-start}}.hub-group+.hub-group{margin-top:18px}.hub-group .eyebrow{margin-bottom:2px}.hub-list>li.hub-item{align-items:flex-start}.hub-item input[type=checkbox]{margin-top:4px;width:18px;height:18px;flex:none;accent-color:var(--accent)}.hub-item .hub-title{font-weight:700;line-height:1.4}.hub-item .hub-title a{color:var(--text)}.hub-item .hub-title a:hover{color:var(--accent)}.hub-item.done .hub-title a{color:var(--text3);text-decoration:line-through;text-decoration-thickness:1px}.hub-item .why{color:var(--text2);margin-top:2px}.hub-item .ext{color:var(--text3);font-weight:400}.hub-actions{display:flex;gap:8px;align-items:center;flex-wrap:wrap;justify-content:flex-end;flex:none;max-width:45%}@media(max-width:600px){.hub-list>li.hub-item{flex-wrap:wrap}.hub-actions{max-width:none;width:100%;justify-content:flex-start;padding-left:30px}}.kind{display:inline-block;font-size:12px;font-weight:700;padding:0 7px;margin-right:8px;border-radius:6px;background:var(--chip);color:var(--text2);vertical-align:1px}.subject-card{display:block;color:var(--text);text-decoration:none;transition:border-color .15s}.subject-card:hover{border-color:var(--accent)}.subject-card .title{font-family:var(--display);font-weight:600;font-size:18px;margin-bottom:4px}.subject-card .desc{margin:0 0 10px}.subject-card .progress{margin-top:10px}.reader{max-width:72ch;font-size:17px;line-height:1.7;color:var(--text)}.reader img,.reader video{max-width:100%;height:auto}.reader pre{overflow-x:auto;background:var(--chip);padding:12px 14px;border-radius:8px;font-size:14px;line-height:1.5}.reader code{font-family:var(--mono);font-size:.9em}.reader table{display:block;overflow-x:auto}.reader h1,.reader h2,.reader h3{line-height:1.3;margin-top:1.6em}.reader blockquote{border-left:3px solid var(--border);margin-left:0;padding-left:14px;color:var(--text2)}.reader-text{white-space:pre-wrap;font-family:var(--mono);font-size:14px;line-height:1.6;max-width:90ch}.pdf-frame{width:100%;height:calc(100vh - 220px);min-height:520px;border:1px solid var(--border);border-radius:var(--r);background:var(--surface)}.dots{display:inline-flex;gap:3px;vertical-align:middle}.dots i{width:7px;height:7px;border-radius:50%;background:var(--track)}.dots i.on{background:var(--accent)}.outline{list-style:none;margin:0;padding:0}.outline li{display:flex;gap:10px;align-items:baseline;padding:5px 0;border-top:1px solid var(--line)}.outline li:first-child{border-top:0}.outline li.sub{padding-left:22px;font-size:14px;color:var(--text2)}.outline li>.mono:first-child{min-width:30px}.transcript{display:grid;grid-template-columns:minmax(0,1fr) minmax(0,1fr);gap:24px;align-items:start}.transcript .video-frame{position:sticky;top:72px;aspect-ratio:16 / 9;border-radius:var(--r);overflow:hidden;background:#000}.transcript .video-frame iframe{width:100%;height:100%;border:0}.transcript .reader{font-size:16px}.transcript .ts{font-family:var(--mono);font-size:13px;margin-right:6px}@media(max-width:900px){.transcript{grid-template-columns:minmax(0,1fr)}.transcript .video-frame{position:static}}.tag.warn{background:var(--bad);color:var(--on-accent)}.gh-btn{display:inline-flex;align-items:center;justify-content:center;gap:10px;width:100%}.inbox-list>li.inbox-item{align-items:flex-start;gap:14px}.inbox-item .thumb{flex:none;width:168px;aspect-ratio:16 / 9;border-radius:8px;overflow:hidden;background:var(--chip)}.inbox-item .thumb img{width:100%;height:100%;object-fit:cover;display:block}.inbox-item .hub-title{font-weight:700;color:var(--text);display:block;line-height:1.35}.inbox-actions{display:flex;flex-direction:column;gap:6px;flex:none}.clamp2{display:-webkit-box;-webkit-line-clamp:2;-webkit-box-orient:vertical;overflow:hidden;color:var(--text2);margin-top:4px}@media(max-width:700px){.inbox-list>li.inbox-item{flex-wrap:wrap}.inbox-item .thumb{width:100%}.inbox-actions{flex-direction:row;width:100%}}
