:root{--bg: #f4f6f9;--surface: #fff;--ink: #1b2430;--muted: #657084;--line: #e3e7ee;--side: #1e2a44;--accent: #3b5bdb;--accent-soft: #e8edff;--done: #2b9a66;--missed: #e0573c;--warn: #fff4e0;--head: "Bricolage Grotesque", "Segoe UI", system-ui, sans-serif;--body: "Figtree", "Segoe UI", system-ui, sans-serif}*{box-sizing:border-box}body{margin:0;background:var(--bg);color:var(--ink);font:16px/1.55 var(--body)}h1,h2,h3,h4{font-family:var(--head);line-height:1.2;margin:0 0 .5rem}h1{font-size:2rem}h2{font-size:1.25rem}h3{font-size:1.05rem}h4{font-size:.95rem;margin:0 0 .25rem}a{color:var(--accent)}p{margin:.4rem 0}.muted{color:var(--muted);font-size:.92rem}.pad{padding:2rem}.error{color:#b3261e}:focus-visible{outline:3px solid var(--accent);outline-offset:2px}.shell{display:grid;grid-template-columns:220px 1fr;min-height:100vh}aside{background:var(--side);color:#dfe5f5;padding:1.5rem 1rem;display:flex;flex-direction:column;gap:1.5rem;position:sticky;top:0;height:100vh}.brand{font:700 1.5rem var(--head);color:#fff;padding:0 .5rem}nav{display:flex;flex-direction:column;gap:.25rem}.nav{color:#c4cde6;text-decoration:none;padding:.55rem .75rem;border-radius:8px}.nav:hover{background:#ffffff14}.nav.active{background:var(--accent);color:#fff;font-weight:600}.who{margin-top:auto;display:flex;flex-direction:column;gap:.25rem;padding:0 .5rem;font-size:.9rem}.linkish{background:none;border:0;color:inherit;padding:0;text-align:left;cursor:pointer;text-decoration:underline;font:inherit}main{min-width:0}.page{max-width:980px;padding:2rem;margin:0 auto}.card{background:var(--surface);border:1px solid var(--line);border-radius:12px;padding:1.25rem;margin-bottom:1rem}.empty{text-align:left;max-width:520px}.btn{display:inline-block;background:var(--accent);color:#fff;border:0;border-radius:8px;padding:.6rem 1.1rem;font:600 .95rem var(--body);cursor:pointer;text-decoration:none}.btn:hover{filter:brightness(1.08)}.btn:disabled{opacity:.55;cursor:not-allowed}.btn.ghost{background:var(--surface);color:var(--accent);border:1px solid var(--accent)}.row{display:flex;gap:.6rem;align-items:center;flex-wrap:wrap}.between{justify-content:space-between}input{font:inherit;padding:.55rem .7rem;border:1px solid #c9d0dd;border-radius:8px;background:#fff}label{display:flex;flex-direction:column;gap:.25rem;font-weight:500;margin-bottom:.8rem}.form{max-width:420px}.banner{background:var(--warn);border:1px solid #f0d7a7;border-radius:10px;padding:.7rem 1rem;margin:.8rem 0}.login{min-height:100vh;display:grid;grid-template-columns:1fr 1fr;align-items:center;gap:3rem;padding:3rem;max-width:1000px;margin:0 auto}.login-copy h1{font-size:3.2rem;color:var(--accent)}.login-copy p{font-size:1.15rem;max-width:30ch}.login-form{display:flex;flex-direction:column;margin:0}.login-form .linkish{margin-top:.8rem;color:var(--accent)}.hero{display:flex;justify-content:space-between;align-items:flex-end;gap:2rem;flex-wrap:wrap;margin-bottom:1rem}.hero h1{font-size:2.6rem;margin:0}.of{color:var(--muted);font-weight:600;font-size:1.5rem}.bar-wrap{min-width:260px;font-size:.9rem;color:var(--muted)}.bar{height:10px;background:var(--line);border-radius:99px;overflow:hidden;margin-bottom:.3rem}.bar div{height:100%;background:var(--done)}.strip{display:flex;flex-wrap:wrap;gap:4px;margin:1rem 0 .4rem}.cell{width:16px;height:16px;border-radius:4px;background:var(--line);display:inline-block}.cell.done{background:var(--done)}.cell.missed{background:var(--missed)}.cell.off{background:transparent;border:1px dashed var(--line)}.cell.today{background:var(--accent-soft);box-shadow:0 0 0 2px var(--accent)}.cell.rev{border-radius:50%}.legend{display:flex;gap:1rem;flex-wrap:wrap;margin-bottom:1.5rem}.legend .cell{width:11px;height:11px;margin-right:4px;vertical-align:-1px}.cols{display:grid;grid-template-columns:1.4fr 1fr;gap:1rem;align-items:start}.stats{display:flex;justify-content:space-between;gap:1rem}.stats div{display:flex;flex-direction:column}.stats strong{font:700 1.6rem var(--head)}.stats span{color:var(--muted);font-size:.85rem}.task{display:flex;gap:.75rem;align-items:flex-start;padding:.6rem 0;border-top:1px solid var(--line)}.task:first-of-type{border-top:0}.task input{width:20px;height:20px;margin-top:3px;accent-color:var(--done)}.task-main{display:flex;flex-direction:column}.task.done .task-main a{text-decoration:line-through;color:var(--muted)}.task.overdue .task-main span{color:var(--missed)}.week{background:var(--surface);border:1px solid var(--line);border-radius:12px;padding:.8rem 1.2rem;margin-bottom:.7rem}.week summary{font:600 1.05rem var(--head);cursor:pointer}.day{padding:.7rem 0 .2rem}.day.today h4{color:var(--accent)}.subject{margin-bottom:2rem}.topics{display:grid;grid-template-columns:repeat(auto-fill,minmax(230px,1fr));gap:.8rem;margin-top:.8rem}.topic{display:flex;flex-direction:column;gap:.25rem;text-decoration:none;color:var(--ink);margin:0}.topic:hover{border-color:var(--accent)}.tabs{display:flex;gap:.3rem;margin:1rem 0;border-bottom:1px solid var(--line)}.tab{background:none;border:0;padding:.6rem 1rem;font:600 .95rem var(--body);color:var(--muted);cursor:pointer;border-bottom:3px solid transparent}.tab.on{color:var(--accent);border-color:var(--accent)}.prose{max-width:70ch}.prose h2{font-size:1.3rem}.prose h2+p{margin-top:0}.prose pre{background:#f0f3f8;padding:.8rem;border-radius:8px;overflow-x:auto;font-size:.9rem}.prose code{background:#f0f3f8;padding:.1rem .3rem;border-radius:4px}.prose pre code{background:none;padding:0}.prose table{border-collapse:collapse;width:100%;font-size:.92rem;display:block;overflow-x:auto}.prose th,.prose td{border:1px solid var(--line);padding:.35rem .6rem;text-align:left}.prose li{margin:.15rem 0}.q{margin-bottom:1.4rem}.qtext{font-weight:600}.qn{color:var(--muted)}.opts{display:grid;gap:.4rem}.opt{text-align:left;background:#fff;border:1px solid #c9d0dd;border-radius:8px;padding:.6rem .8rem;font:inherit;cursor:pointer}.opt:hover:not(:disabled){border-color:var(--accent)}.opt.picked{border-color:var(--accent);background:var(--accent-soft)}.opt.right{border-color:var(--done);background:#e6f6ee}.opt.wrong{border-color:var(--missed);background:#fdeae5}.opt:disabled{cursor:default}.why{font-size:.92rem;color:var(--muted)}.score{display:flex;gap:1rem;align-items:baseline;background:var(--accent-soft);padding:.8rem 1rem;border-radius:10px;margin-bottom:1.2rem}.score strong{font:700 1.6rem var(--head)}.chat{display:flex;flex-direction:column;gap:.7rem}.bubble{padding:.6rem .9rem;border-radius:12px;max-width:85%}.bubble.user{align-self:flex-end;background:var(--accent);color:#fff}.bubble.ai{align-self:flex-start;background:#f0f3f8}.bubble p:first-child{margin-top:0}.bubble p:last-child{margin-bottom:0}.chat .row input{flex:1;min-width:0}@media (max-width: 800px){.shell{grid-template-columns:1fr}aside{position:static;height:auto;flex-direction:row;flex-wrap:wrap;align-items:center;padding:.8rem;gap:.8rem}nav{flex-direction:row;flex-wrap:wrap}.who{margin:0 0 0 auto;flex-direction:row;gap:.8rem}.page{padding:1.2rem}.cols{grid-template-columns:1fr}.login{grid-template-columns:1fr;padding:1.5rem;gap:1.5rem}.login-copy h1{font-size:2.4rem}}@media (prefers-reduced-motion: reduce){*{transition:none!important;animation:none!important}}
