.dash{padding-top:48px;animation:.3s both fadeUp}@keyframes fadeUp{0%{opacity:0;transform:translateY(8px)}to{opacity:1;transform:translateY(0)}}.dash-header{margin-bottom:48px}.dash-header h1{letter-spacing:-.02em;color:var(--ink);margin-bottom:8px;font-size:38px;font-weight:400}.dash-summary{color:var(--ink-faint);max-width:460px;font-size:15px}.section-label{font-family:var(--font-body);text-transform:uppercase;letter-spacing:.08em;color:var(--ink-faint);font-size:11px;font-weight:600}.section-count{font-family:var(--font-mono);color:var(--ink-faint);margin-left:-4px;font-size:14px}.subject-grid{grid-template-columns:repeat(2,1fr);gap:16px;margin-bottom:32px;display:grid}.subject-wrapper{position:relative}.subject-link{color:inherit;text-decoration:none;display:block}.subject-link:focus-visible{outline:2px solid var(--rust);outline-offset:2px;border-radius:4px}.subject-card{background:var(--paper);border:1px solid var(--rule);border-left:4px solid var(--rule);cursor:pointer;flex-direction:column;min-height:120px;padding:20px 20px 16px;transition:border-color .15s,background-color .15s;display:flex}.subject-card:hover{border-color:var(--rule);background:var(--paper-deep)}.card-emoji{margin-bottom:10px;font-size:24px;line-height:1}.card-title{font-family:var(--font-heading);color:var(--ink);letter-spacing:-.01em;margin-bottom:4px;font-size:20px;font-weight:400}.card-meta{color:var(--ink-faint);margin-bottom:14px;font-size:12px}.card-bottom{align-items:center;gap:12px;margin-top:auto;display:flex}.card-bar{background:var(--rule);border-radius:2px;flex:1;height:3px;overflow:hidden}.card-bar-fill{border-radius:inherit;height:100%;transition:width .4s}.card-pct{font-size:13px;font-family:var(--font-mono);color:var(--ink-light);text-align:right;min-width:32px}.subject-controls{z-index:5;opacity:0;gap:4px;transition:opacity .12s;display:flex;position:absolute;top:10px;right:10px}.subject-wrapper:hover .subject-controls{opacity:1}.ctrl-btn{border:1px solid var(--rule);background:var(--paper);cursor:pointer;width:26px;height:26px;color:var(--ink-faint);border-radius:4px;justify-content:center;align-items:center;font-size:12px;transition:background-color .12s,color .12s;display:flex}.ctrl-btn:hover{background:var(--paper-deep);color:var(--ink)}.ctrl-btn.danger:hover{color:var(--rust);background:#fcecea}[data-theme=dark] .ctrl-btn{background:var(--paper-deep);border-color:var(--rule)}[data-theme=dark] .ctrl-btn:hover{background:var(--rule);color:var(--ink)}[data-theme=dark] .ctrl-btn.danger:hover{color:var(--rust);background:#e0755826}.add-card{border:1px dashed var(--rule);cursor:pointer;background:0 0;flex-direction:column;justify-content:center;align-items:center;gap:6px;min-height:120px;padding:20px;transition:border-color .15s,background-color .15s;display:flex}.add-card:hover{border-color:var(--ink-faint);background:var(--paper-deep)}.add-card:focus-visible{outline:2px solid var(--rust);outline-offset:2px}.add-card-plus{color:var(--ink-faint);font-size:24px;font-weight:300;line-height:1}.add-card-label{color:var(--ink-faint);font-size:12px;font-weight:500}@media (width<=640px){.dash{padding-top:28px}.dash-header h1{font-size:28px}.dash-header{margin-bottom:32px}.subject-grid{grid-template-columns:1fr}}@media (width>=800px){.subject-grid{grid-template-columns:repeat(3,1fr)}}[data-theme=dark] .subject-card{background:var(--paper-deep);border-color:var(--rule)}[data-theme=dark] .subject-card:hover{background:var(--rule)}[data-theme=dark] .add-card:hover{background:var(--paper-deep);border-color:var(--ink-faint)}[data-theme=dark] .card-bar{background:var(--rule)}.chapter-page{padding-top:32px;animation:.25s fadeUp}.breadcrumb{color:var(--ink-faint);align-items:center;gap:6px;margin-bottom:28px;font-size:12px;display:flex}.crumb-link{color:var(--ink-faint);text-decoration:none;transition:color .15s}.crumb-link:hover{color:var(--ink)}.crumb-sep{opacity:.4;font-size:14px}.crumb-current{color:var(--ink-light);font-weight:500}.header{margin-bottom:40px}.chapter-label{font-family:var(--font-mono);letter-spacing:.08em;color:var(--ink-faint);text-transform:uppercase;margin-bottom:6px;font-size:11px}.title-row{justify-content:space-between;align-items:flex-start;gap:16px;margin-bottom:16px;display:flex}.title-row h1{letter-spacing:-.02em;color:var(--ink);font-size:42px;font-weight:600;line-height:1.1;font-family:var(--font-heading)}.done-toggle{border:1.5px solid var(--rule);color:var(--ink-faint);font-size:12px;font-family:var(--font-mono);cursor:pointer;background:0 0;border-radius:2px;flex-shrink:0;margin-top:8px;padding:7px 16px;transition:all .15s}.done-toggle:hover{border-color:var(--sage);color:var(--sage)}.done-toggle.done{background:var(--sage-soft);border-color:var(--sage);color:var(--sage-dark)}.progress{align-items:center;gap:12px;display:flex}.bar{background:var(--rule);border-radius:2px;flex:1;max-width:320px;height:4px;overflow:hidden}.bar-fill{background:var(--ochre);border-radius:2px;height:100%;transition:width .4s}.pct{font-family:var(--font-mono);color:var(--ink);font-size:15px}.tally{color:var(--ink-faint);font-size:12px}.section-rule{border-bottom:2px solid var(--ink);align-items:center;gap:10px;margin-bottom:0;padding-bottom:6px;display:flex}.section-label{text-transform:uppercase;letter-spacing:.1em;color:var(--ink-faint);font-size:10px;font-weight:600;font-family:var(--font-mono)}.section-count{font-family:var(--font-mono);color:var(--ink-faint);font-size:12px}.empty{text-align:center;border:1px dashed var(--rule);margin-top:8px;padding:56px 24px}.empty-big{font-family:var(--font-heading);color:var(--ink);margin-bottom:8px;font-size:24px}.empty-small{color:var(--ink-faint);font-size:13px;line-height:1.7}.concept-list{max-width:680px}.concept{border-bottom:1px solid var(--rule-light);align-items:flex-start;gap:12px;padding:14px 0;transition:background-color .1s;display:flex}.concept:last-child{border-bottom-color:var(--rule)}.concept:hover{background:var(--paper-deep);margin:0 -10px;padding-left:10px;padding-right:10px}.concept-check{border:1.5px solid var(--rule);color:#fff;cursor:pointer;background:0 0;border-radius:3px;justify-content:center;align-items:center;width:18px;height:18px;margin-top:2px;transition:all .12s;display:flex}.concept-check:hover{border-color:var(--ochre)}.concept.done .concept-check{background:var(--ochre);border-color:var(--ochre)}.concept-body{flex:1}.name-btn{cursor:pointer;text-align:left;background:0 0;border:0;align-items:center;gap:6px;padding:0;display:inline-flex}.concept-name{color:var(--ink);font-size:15px;font-weight:500;font-family:var(--font-body)}.concept-name.done{text-decoration:line-through;-webkit-text-decoration-color:var(--ink-faint);text-decoration-color:var(--ink-faint);color:var(--ink-faint)}.arrow{color:var(--ink-faint);font-size:18px;line-height:1;transition:transform .18s;display:inline-block}.arrow.open{transform:rotate(90deg)}.no-desc{color:var(--ink-faint);cursor:pointer;margin-top:3px;font-size:11px;font-style:italic;transition:color .12s;display:block}.no-desc:hover{color:var(--ochre)}.desc-block{margin-top:8px;animation:.15s fadeDown}.desc-text{color:var(--ink-light);background:var(--ochre-soft);border-left:3px solid var(--ochre);white-space:pre-wrap;font-size:13px;line-height:1.7;font-family:var(--font-body);padding:10px 14px}.edit-form{flex-direction:column;gap:8px;width:100%;display:flex}.edit-name{border:none;border-bottom:2px solid var(--rust);color:var(--ink);font-size:15px;font-weight:500;font-family:var(--font-body);background:0 0;outline:none;width:100%;padding:5px 8px}.edit-desc{border:1px solid var(--rule);background:var(--paper-deep);color:var(--ink);resize:vertical;font-size:13px;font-family:var(--font-body);outline:none;padding:10px 12px;line-height:1.6;transition:border-color .15s}.edit-desc:focus{border-color:var(--ochre)}.edit-desc::placeholder{color:var(--ink-faint);font-style:italic}.edit-btns{gap:8px;display:flex}.save-btn,.cancel-btn{cursor:pointer;font-size:12px;font-weight:600;font-family:var(--font-mono);border:1.5px solid #0000;padding:6px 18px;transition:opacity .12s}.save-btn{background:var(--ink);color:var(--paper);border-color:var(--ink)}.save-btn:hover{opacity:.8}.cancel-btn{color:var(--ink-light);border-color:var(--rule);background:0 0}.cancel-btn:hover{background:var(--paper-deep)}.concept-actions{flex-shrink:0;gap:2px;margin-top:2px;display:flex}.act{cursor:pointer;width:24px;height:24px;color:var(--ink-faint);background:0 0;border:0;border-radius:3px;justify-content:center;align-items:center;font-size:13px;transition:all .1s;display:flex}.act:hover{background:var(--paper-deep);color:var(--ink)}.act.danger:hover{color:var(--rust);background:#fcecea}.hover-fade{opacity:0;transition:all .1s}.concept:hover .hover-fade{opacity:1}.add{gap:8px;max-width:520px;margin-top:20px;display:flex}.add-input{border:1px solid var(--rule);color:var(--ink);font-size:14px;font-family:var(--font-body);background:0 0;border-bottom-width:2px;border-radius:0;outline:none;flex:1;padding:10px 14px;transition:border-color .15s}.add-input::placeholder{color:var(--ink-faint);font-style:italic}.add-input:focus{border-bottom-color:var(--ink)}.add-btn{border:1.5px solid var(--ochre);color:var(--ochre);font-size:13px;font-weight:600;font-family:var(--font-mono);cursor:pointer;background:0 0;padding:10px 22px;transition:background-color .12s}.add-btn:hover{background:var(--ochre-soft)}.notfound{text-align:center;padding-top:80px}.notfound-title{font-family:var(--font-heading);color:var(--ink);margin-bottom:16px;font-size:28px}.back-link{color:var(--ink-faint);font-size:13px;text-decoration:none;transition:color .15s}.back-link:hover{color:var(--ink)}@media (width<=640px){.chapter-page{padding-top:20px}.title-row{flex-direction:column}.title-row h1{font-size:30px}.concept-list,.bar{max-width:100%}.add{flex-direction:column;max-width:100%}.add-btn{width:100%}}[data-theme=dark] .done-toggle{border-color:var(--rule);color:var(--ink-faint)}[data-theme=dark] .done-toggle.done{background:var(--sage-soft);border-color:var(--sage);color:var(--sage)}[data-theme=dark] .concept:hover{background:var(--paper-deep)}[data-theme=dark] .desc-text{background:var(--ochre-soft);border-left-color:var(--ochre)}[data-theme=dark] .edit-desc{background:var(--paper-deep);color:var(--ink);border-color:var(--rule)}[data-theme=dark] .edit-name{color:var(--ink)}[data-theme=dark] .act:hover{background:var(--rule)}[data-theme=dark] .act.danger:hover{color:var(--rust);background:#3a1d1a}[data-theme=dark] .add-input{color:var(--ink);border-color:var(--rule)}[data-theme=dark] .save-btn{background:var(--ink);color:var(--paper)}[data-theme=dark] .cancel-btn{color:var(--ink-light);border-color:var(--rule)}[data-theme=dark] .cancel-btn:hover{background:var(--paper-deep)}.loading-screen{z-index:9999;background:var(--paper);justify-content:center;align-items:center;transition:background-color .3s;display:flex;position:fixed;inset:0}.loading-content{text-align:center;width:min(320px,85%)}.loading-content h1{font-family:var(--font-heading);color:var(--ink);letter-spacing:-.02em;margin-bottom:20px;font-size:36px;font-weight:400}.loading-line{background:var(--rule);width:100%;height:2px;margin-bottom:14px;overflow:hidden}.loading-line-fill{background:var(--ink);width:40%;height:100%;animation:1.6s ease-in-out infinite loadSlide}.loading-sub{font-family:var(--font-hand);color:var(--ink-faint);font-size:16px}@keyframes loadSlide{0%{transform:translate(-150%)}to{transform:translate(400%)}}@media (width<=600px){.loading-content h1{font-size:28px}}.wg-overlay{z-index:9998;background:var(--paper);justify-content:center;align-items:center;padding:24px;display:flex;position:fixed;inset:0}.wg-card{width:100%;max-width:480px;animation:.25s both wgFadeIn}@keyframes wgFadeIn{0%{opacity:0;transform:translateY(10px)}to{opacity:1;transform:translateY(0)}}.wg-slide{flex-direction:column;min-height:280px;display:flex}.wg-slide-num{font-family:var(--font-mono);color:var(--ink-faint);letter-spacing:.04em;margin-bottom:16px;font-size:11px}.wg-slide h2{font-family:var(--font-heading);color:var(--ink);letter-spacing:-.02em;margin-bottom:12px;font-size:30px;font-weight:600;line-height:1.2}.wg-desc{color:var(--ink-light);max-width:420px;margin-bottom:20px;font-size:15px;line-height:1.6}.wg-note{color:var(--ink-faint);margin-top:auto;padding-top:12px;font-size:12px}.wg-name-input{border:1px solid var(--rule);color:var(--ink);font-size:16px;font-family:var(--font-body);background:0 0;border-bottom-width:2px;border-radius:0;outline:none;width:100%;max-width:320px;padding:12px 16px;transition:border-color .15s}.wg-name-input:focus{border-bottom-color:var(--ink)}.wg-name-input::placeholder{color:var(--ink-faint);font-style:italic}.wg-example{border:1px solid var(--rule);background:var(--paper-deep);flex-direction:column;gap:6px;margin-bottom:12px;padding:14px 16px;display:flex}.wg-example-item{color:var(--ink);padding:4px 0;font-size:14px}.wg-example-tree{gap:2px}.wg-tree-subject{color:var(--ink);font-size:14px;font-weight:600}.wg-tree-chapter{color:var(--ink-light);padding-left:12px;font-size:13px}.wg-tree-concept{color:var(--ink-faint);font-size:12px;font-family:var(--font-mono);padding-left:28px}.wg-nav{border-top:1px solid var(--rule);justify-content:space-between;align-items:center;margin-top:32px;padding-top:20px;display:flex}.wg-btn{cursor:pointer;font-size:13px;font-weight:600;font-family:var(--font-body);border:1.5px solid #0000;padding:9px 24px;transition:opacity .12s,background-color .12s}.wg-btn-back{color:var(--ink-faint);border-color:var(--rule);background:0 0}.wg-btn-back:hover{color:var(--ink);background:var(--paper-deep)}.wg-btn-next{background:var(--ink);color:var(--paper);border-color:var(--ink)}.wg-btn-next:hover{opacity:.85}.wg-btn-next:disabled{opacity:.3;cursor:not-allowed}.wg-btn-go{background:var(--sage);color:#fff;border-color:var(--sage)}.wg-btn-go:hover{opacity:.85}.wg-dots{justify-content:center;gap:8px;margin-top:24px;display:flex}.wg-dot{background:var(--rule);border-radius:50%;width:6px;height:6px;transition:background-color .2s}.wg-dot.active{background:var(--ink)}@media (width<=640px){.wg-slide h2{font-size:24px}.wg-desc{font-size:14px}.wg-card{max-width:100%}}[data-theme=dark] .wg-name-input{color:var(--ink);border-color:var(--rule)}[data-theme=dark] .wg-name-input:focus{border-bottom-color:var(--ink)}[data-theme=dark] .wg-example{background:var(--paper-deep);border-color:var(--rule)}[data-theme=dark] .wg-btn-back{border-color:var(--rule)}[data-theme=dark] .wg-btn-back:hover{background:var(--paper-deep)}.topbar{border-bottom:1px solid var(--rule);background:var(--paper);z-index:100;transition:background-color .3s,border-color .2s;position:sticky;top:0}.topbar-inner{justify-content:space-between;align-items:center;max-width:860px;margin:0 auto;padding:14px 32px;display:flex}.topbar-logo{color:var(--ink);align-items:center;gap:10px;text-decoration:none;display:flex}.logo-mark{background:var(--ink);width:30px;height:30px;color:var(--paper);font-family:var(--font-heading);letter-spacing:-.02em;border-radius:6px;justify-content:center;align-items:center;font-size:14px;font-weight:400;transition:background-color .2s;display:inline-flex}.logo-name{font-family:var(--font-heading);letter-spacing:-.02em;color:var(--ink);font-size:20px}.topbar-actions{align-items:center;gap:16px;display:flex}.topbar-home{color:var(--ink-faint);font-size:13px;transition:color .15s}.topbar-home:hover{color:var(--ink)}.theme-toggle{border:1px solid var(--rule);width:32px;height:32px;color:var(--ink-light);background:0 0;border-radius:50%;justify-content:center;align-items:center;font-size:16px;line-height:1;transition:border-color .15s,color .15s;display:flex}.theme-toggle:hover{border-color:var(--ink-faint);color:var(--ink)}@media (width<=640px){.topbar-inner{padding:12px 16px}.logo-name{font-size:17px}}.app-shell{background:var(--paper);flex-direction:column;min-height:100vh;display:flex}.main-content{flex:1;width:100%;max-width:860px;margin:0 auto;padding:0 32px 60px;overflow-y:auto}@media (width<=640px){.main-content{padding:0 16px 40px}}:root{--paper:#faf8f4;--paper-deep:#f3f0e8;--ink:#2c2825;--ink-light:#6b6560;--ink-faint:#a8a29a;--rule:#e6e0d6;--rule-light:#efebe4;--rust:#c2553a;--rust-soft:#f5e6e1;--sage:#4a8b5c;--sage-soft:#e3f0e7;--sage-dark:#3a7048;--ochre:#d4920b;--ochre-soft:#fdf4dc;--font-heading:"Outfit", system-ui, sans-serif;--font-body:"Nunito Sans", system-ui, sans-serif;--font-mono:"Space Mono", monospace;--font-hand:"Caveat", cursive}[data-theme=dark]{--paper:#1a1918;--paper-deep:#222120;--ink:#e8e4dc;--ink-light:#9a958e;--ink-faint:#5a5650;--rule:#333130;--rule-light:#2a2928;--rust:#e07558;--rust-soft:#e075581f;--sage:#6bbf80;--sage-soft:#6bbf801a;--sage-dark:#6bbf80;--ochre:#f0b740;--ochre-soft:#f0b7401a}*,:before,:after{box-sizing:border-box;margin:0;padding:0}html{-webkit-font-smoothing:antialiased}body{font-family:var(--font-body);color:var(--ink-light);background:var(--paper);font-size:14px;line-height:1.55;transition:background-color .3s,color .2s}#root{width:100%;min-height:100vh}h1,h2,h3{font-family:var(--font-heading);color:var(--ink);font-weight:400;line-height:1.2}button{font-family:var(--font-body);cursor:pointer}input{font-family:var(--font-body)}a{color:inherit;text-decoration:none}::-webkit-scrollbar{width:5px}::-webkit-scrollbar-track{background:0 0}::-webkit-scrollbar-thumb{background:var(--rule);border-radius:99px}
