.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-rule{border-bottom:1px solid var(--rule);align-items:center;gap:12px;margin-bottom:24px;padding-bottom:8px;display:flex}.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-hand);color:var(--ink-faint);margin-left:-4px;font-size:18px}.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-heading);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}.dash-footer{text-align:center;padding:24px 0}.footer-note{font-family:var(--font-hand);color:var(--ink-faint);font-size:17px}@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)}.sp{padding-top:40px;animation:.3s both fadeUp}.sp-header{margin-bottom:32px}.sp-emoji{margin-bottom:8px;font-size:32px;line-height:1}.sp-header h1{letter-spacing:-.02em;color:var(--ink);margin-bottom:14px;font-size:34px;font-weight:400}.sp-progress{align-items:center;gap:12px;display:flex}.sp-bar{background:var(--rule);border-radius:2px;flex:1;max-width:280px;height:4px;overflow:hidden}.sp-bar-fill{border-radius:inherit;background:var(--sage);height:100%;transition:width .4s}.sp-pct{font-family:var(--font-heading);color:var(--ink);font-size:18px}.sp-tally{color:var(--ink-faint);font-size:13px}.sp-add{gap:8px;max-width:520px;margin-bottom:32px;display:flex}.sp-add input{border:1px solid var(--rule);color:var(--ink);background:0 0;border-bottom-width:2px;border-radius:0;outline:none;flex:1;padding:10px 14px;font-size:14px;transition:border-color .15s}.sp-add input::placeholder{color:var(--ink-faint);font-style:italic}.sp-add input:focus{border-bottom-color:var(--ink)}.sp-add-btn{border:1px solid var(--ink);background:var(--ink);color:var(--paper);cursor:pointer;padding:10px 20px;font-size:13px;font-weight:600;transition:opacity .12s}.sp-add-btn:hover{opacity:.8}.sp-add-btn:focus-visible{outline:2px solid var(--rust);outline-offset:2px}.chapter-list{max-width:640px}.ch-header{border-bottom:2px solid var(--ink);align-items:center;margin-bottom:0;padding:0 0 6px;display:flex}.ch-header-label{text-transform:uppercase;letter-spacing:.1em;color:var(--ink-faint);font-size:10px;font-weight:600}.ch-header-right{margin-left:auto}.ch-row{border-bottom:1px solid var(--rule-light);align-items:center;gap:10px;padding:12px 0;transition:background-color .1s;display:flex}.ch-row:last-child{border-bottom-color:var(--rule)}.ch-row:hover{background:var(--paper-deep);margin:0 -8px;padding-left:8px;padding-right:8px}.ch-num{font-family:var(--font-heading);color:var(--ink-faint);text-align:right;min-width:24px;font-size:15px}.ch-check{border:1.5px solid var(--rule);color:#fff;cursor:pointer;background:0 0;border-radius:3px;flex-shrink:0;justify-content:center;align-items:center;width:18px;height:18px;transition:background-color .12s,border-color .12s;display:flex}.ch-check:hover{border-color:var(--sage)}.ch-row.done .ch-check{background:var(--sage);border-color:var(--sage)}.ch-name{color:var(--ink);word-break:break-word;flex:1;font-size:14px}.ch-row.done .ch-name{text-decoration:line-through;-webkit-text-decoration-color:var(--ink-faint);text-decoration-color:var(--ink-faint);color:var(--ink-faint)}.ch-edit-input{border:none;border-bottom:2px solid var(--rust);min-width:0;color:var(--ink);background:0 0;outline:none;flex:1;padding:4px 8px;font-size:14px}.ch-actions{flex-shrink:0;gap:2px;display:flex}.ch-action-btn{cursor:pointer;width:24px;height:24px;color:var(--ink-faint);background:0 0;border:none;border-radius:3px;justify-content:center;align-items:center;font-size:13px;transition:background-color .1s,color .1s;display:flex}.ch-action-btn:hover{background:var(--paper-deep);color:var(--ink)}.ch-action-btn.save{color:var(--sage)}.ch-action-btn.save:hover{background:var(--sage-soft);color:var(--sage-dark)}.ch-action-btn.danger:hover{color:var(--rust);background:#fcecea}[data-theme=dark] .ch-action-btn.danger:hover{background:#e075581f}.ch-action-btn.hover-show{opacity:0;transition:opacity .1s,background-color .1s,color .1s}.ch-row:hover .ch-action-btn.hover-show{opacity:1}.sp-empty{text-align:center;border:1px dashed var(--rule);margin-top:8px;padding:64px 24px}.sp-empty-big{font-family:var(--font-heading);color:var(--ink);margin-bottom:10px;font-size:22px}.sp-empty-small{color:var(--ink-faint);font-size:13px;line-height:1.7}@media (width<=640px){.sp{padding-top:24px}.sp-header h1{font-size:26px}.sp-add{flex-direction:column;max-width:100%}.sp-add-btn{width:100%}.chapter-list,.sp-bar{max-width:100%}}[data-theme=dark] .sp-add input{border-color:var(--rule);color:var(--ink)}[data-theme=dark] .sp-add input:focus{border-bottom-color:var(--ink)}[data-theme=dark] .sp-add-btn{background:var(--ink);color:var(--paper);border-color:var(--ink)}[data-theme=dark] .ch-row:hover{background:var(--paper-deep)}[data-theme=dark] .ch-edit-input{color:var(--ink);border-bottom-color:var(--rust)}[data-theme=dark] .ch-action-btn:hover{background:var(--rule)}[data-theme=dark] .sp-empty{border-color:var(--rule)}.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}}.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:"Instrument Serif", Georgia, serif;--font-body:"Inter", system-ui, sans-serif;--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}
