:root{--ink:#19353d;--muted:#657a7e;--teal:#197c79;--teal-soft:#e9f4ef;--nav:#173d47;--paper:#f6f7f3;--line:#dfe6e2;--white:#fff;--orange:#a85e32;--sand:#fbf0df;--red:#a64242;--blue:#5279a1;--radius:18px;font-family:Inter,-apple-system,BlinkMacSystemFont,"Segoe UI",sans-serif;color:var(--ink);background:var(--paper);font-size:15px;line-height:1.5}*{box-sizing:border-box}body{margin:0}button,input,select,textarea{font:inherit}button,a,input,select,textarea{touch-action:manipulation}button{cursor:pointer;border:0;background:transparent;color:inherit}button:disabled{cursor:not-allowed;opacity:.45}button:focus-visible,a:focus-visible,input:focus-visible,select:focus-visible,textarea:focus-visible{outline:3px solid #edb76d;outline-offset:3px}a{color:var(--teal)}h1,h2,h3,p{margin-top:0}h1{font-size:clamp(29px,3vw,40px);letter-spacing:-1.5px;line-height:1.16;margin-bottom:10px}h2{font-size:21px;letter-spacing:-.5px;margin-bottom:12px}h3{font-size:16px;margin-bottom:8px}small{font-size:12px}.muted{color:var(--muted)}.eyebrow{font-size:10px;font-weight:800;letter-spacing:1.7px}.shell{display:grid;grid-template-columns:232px minmax(0,1fr);min-height:100vh}.sidebar{position:sticky;top:0;height:100vh;background:var(--nav);color:#d8e9e7;padding:30px 18px;display:flex;flex-direction:column}.brand{display:flex;align-items:center;gap:11px;color:white;text-decoration:none;font-size:21px;font-weight:700;letter-spacing:-.5px;padding:0 8px;margin-bottom:43px}.brand-icon{font-family:Georgia,serif;display:flex;align-items:center;justify-content:center;width:40px;height:43px;border-radius:12px;background:#e9c689;color:#244c50;font-size:30px;font-style:italic;letter-spacing:-8px;padding-right:7px}.brand-icon span{font-size:20px;transform:translateY(4px)}.brand small{display:block;font-size:8px;letter-spacing:1.5px;font-weight:500;color:#a5c1c1;margin-top:2px}nav{display:grid;gap:6px}nav button{display:flex;gap:12px;text-align:left;align-items:center;width:100%;padding:13px 12px;border-radius:10px;font-size:18px;color:#c0d4d4}nav button span{font-size:13px;font-weight:550}nav button.active{background:#315962;color:#fff}nav button:hover{background:#274e58}nav i{margin-left:auto;font-size:10px;font-style:normal;background:#e8c789;color:#173d47;border-radius:12px;padding:0 5px}nav i:empty{display:none}.sidebar-bottom{margin-top:auto;border-top:1px solid #3b6067;padding:25px 10px 0;font-size:12px;color:#aec6c6}.sidebar-bottom strong{display:block;color:#e5eeeb;font-size:14px;margin:10px 0}.breathing-dot{width:9px;height:9px;border-radius:50%;background:#d2bd8f;box-shadow:0 0 0 5px #31565d}.sidebar-bottom p{line-height:1.6}.light{color:#d7e7e4!important}main{min-width:0;padding:0 42px}.topbar{min-height:100px;display:flex;align-items:center;justify-content:space-between;gap:15px;border-bottom:1px solid var(--line);margin-bottom:30px}#clock{font-size:12px;color:var(--muted);margin-top:5px}.sync-pill{font-size:10px;letter-spacing:.6px;font-weight:700;background:var(--sand);color:#89592d;padding:10px 14px;border-radius:30px;max-width:280px;text-align:center}.sync-pill.online{background:var(--teal-soft);color:var(--teal)}.page-head{display:flex;justify-content:space-between;align-items:flex-start;gap:20px;margin-bottom:24px}.page-head p{color:var(--muted);font-size:14px;margin-bottom:0}.page-head .eyebrow{color:var(--teal);display:block;margin-bottom:12px}.date-nav{display:flex;align-items:center;gap:5px}.date-nav input{width:142px;padding:9px;border:1px solid var(--line);border-radius:9px;background:white;font-size:12px}.date-nav button{border:1px solid var(--line);background:white;border-radius:9px;width:33px;height:37px}.btn,.quiet{display:inline-flex;align-items:center;justify-content:center;gap:8px;border-radius:9px;padding:10px 15px;font-size:12px;font-weight:700;text-decoration:none;min-height:40px}.btn{background:var(--teal);color:white}.btn:hover{background:#126560}.btn.secondary{background:white;border:1px solid var(--line);color:var(--ink)}.btn.danger{background:#a64242}.quiet{color:var(--teal);padding:8px 10px}.row{display:flex;align-items:center;gap:10px;flex-wrap:wrap}.between{justify-content:space-between}.stats{display:grid;grid-template-columns:repeat(4,minmax(0,1fr));gap:13px;margin-bottom:22px}.stat{padding:16px 18px;border:1px solid var(--line);background:#fff;border-radius:12px}.stat .label{font-size:10px;letter-spacing:.8px;text-transform:uppercase;color:var(--muted)}.stat strong{display:block;font-size:25px;letter-spacing:-.7px;margin-top:4px}.stat small{color:var(--muted);font-size:11px}.columns{display:grid;grid-template-columns:minmax(0,1.7fr) minmax(260px,1fr);gap:22px;align-items:start}.stack{display:grid;gap:18px}.panel{background:white;border:1px solid var(--line);border-radius:var(--radius);padding:24px;min-width:0}.focus{background:var(--nav);color:#fff;border-color:var(--nav);position:relative;overflow:hidden}.focus .eyebrow{color:#adcac6}.focus h2{font-size:25px;line-height:1.25;max-width:640px;margin-top:17px;margin-bottom:13px}.focus p{color:#c2d7d5;font-size:13px}.focus .btn{background:#e6c88d;color:#24474c}.focus .quiet{color:#d6e8e4}.focus .meta{color:#c2d7d5}.focus time{font-variant-numeric:tabular-nums;font-size:36px;letter-spacing:2px;font-weight:300}.meta{font-size:11px;color:var(--muted);display:flex;gap:8px;flex-wrap:wrap;align-items:center}.badge{display:inline-flex;align-items:center;padding:3px 8px;border-radius:6px;background:#f0f4f1;font-size:10px;font-weight:650;letter-spacing:.1px;color:var(--muted)}.badge.teal{background:var(--teal-soft);color:var(--teal)}.badge.amber{background:var(--sand);color:var(--orange)}.badge.red{background:#fbecec;color:var(--red)}.callout{padding:14px 16px;border-radius:11px;background:var(--sand);color:#825c32;font-size:12px;border:1px solid #eedfc9;margin-bottom:20px}.callout.info{background:#eef4f4;border-color:#dbe7e6;color:#46676c}.callout strong{font-weight:750}.timeline-header{margin-bottom:13px}.timeline{display:grid}.timeline-row{display:grid;grid-template-columns:87px 20px minmax(0,1fr) auto;gap:11px;position:relative;padding:15px 0;border-top:1px solid #edf0ed;align-items:start}.timeline-row .time{font-size:12px;font-weight:650;padding-top:2px;font-variant-numeric:tabular-nums}.timeline-row .time small{display:block;color:var(--muted);font-size:10px;font-weight:400}.timeline-row .dot{width:9px;height:9px;margin:7px auto 0;border:2px solid var(--teal);border-radius:3px}.timeline-row.fixed .dot{border-color:#819397;background:#819397}.timeline-row.protected .dot{border-color:#bdc7c5;border-radius:50%}.timeline-row.done .dot{background:var(--teal)}.timeline-row h3{font-size:13px;line-height:1.4;margin-bottom:5px;font-weight:650}.timeline-row p{font-size:11px;color:var(--muted);margin:4px 0 0}.timeline-row .task-link{display:block;text-align:left;padding:0;width:100%}.timeline-row.done h3{text-decoration:line-through;color:#6b8481}.check{border:1.5px solid #a6bfba;width:27px;height:27px;min-width:27px;border-radius:8px;display:flex;align-items:center;justify-content:center;color:white;font-size:14px;margin-top:2px}.check.checked{background:var(--teal);border-color:var(--teal)}.lock{font-size:10px;color:#8c9b9c;min-width:26px;text-align:center;margin-top:6px}.divider{border-top:1px solid var(--line);margin:18px 0}.exam-list{display:grid;gap:16px}.exam{display:flex;gap:13px;align-items:center}.date-tile{display:flex;flex-direction:column;align-items:center;justify-content:center;min-width:44px;height:48px;background:#f2f4f0;border-radius:9px;font-size:18px;font-weight:650}.date-tile span{font-size:9px;color:var(--muted);font-weight:600;letter-spacing:.7px}.exam strong{display:block;font-size:12px}.exam small{color:var(--muted);font-size:11px}.progress-track{height:6px;border-radius:6px;background:#e9efeb;overflow:hidden;margin:12px 0}.progress-track span{display:block;height:100%;background:var(--teal);border-radius:6px}.subtle-list{margin:0;padding-left:17px;font-size:12px;color:var(--muted)}.subtle-list li{padding:4px 0}.empty{padding:25px;text-align:center;color:var(--muted);font-size:13px}.week-grid{display:grid;grid-template-columns:repeat(7,minmax(135px,1fr));gap:9px;overflow-x:auto;padding-bottom:12px}.day-col{background:#edf1ed;border:1px solid var(--line);border-radius:12px;padding:9px;min-width:135px}.day-col.today{border-color:#72a69e}.day-title{font-size:11px;display:flex;justify-content:space-between;padding:3px 2px 10px;font-weight:600}.day-title strong{font-size:22px}.day-summary{font-size:10px;color:var(--muted);margin-bottom:10px}.mini-event{background:white;border-left:3px solid var(--teal);border-radius:5px;padding:8px;margin-bottom:7px;text-align:left;display:block;width:100%;font-size:10px;line-height:1.35;overflow-wrap:anywhere}.mini-event.fixed{background:#e0e8e7;border-color:#819397}.mini-event.reserve{border-color:#c89856}.mini-event.done{opacity:.6;text-decoration:line-through}.mini-event time{font-size:9px;font-weight:700;display:block;margin-bottom:4px}.mini-event span{display:block;color:#6c8384;font-size:9px;margin-top:4px}.assignment-grid,.settings-grid{display:grid;grid-template-columns:repeat(2,minmax(0,1fr));gap:18px}.assignment h3{font-size:18px}.assignment dl{font-size:12px;display:grid;grid-template-columns:95px 1fr;gap:9px;margin:16px 0}.assignment dt{color:var(--muted)}.assignment dd{margin:0}.task-list-item{display:flex;gap:10px;padding:10px 0;border-top:1px solid #edf0ed;align-items:flex-start}.task-list-item .text{flex:1;min-width:0;font-size:12px;text-align:left;padding:3px 0}.task-list-item .text small{display:block;color:var(--muted);margin-top:3px}.controls{display:flex;gap:10px;flex-wrap:wrap;margin:16px 0}.controls input{flex:1;min-width:160px}.controls input,.controls select,.field input,.field select,.field textarea{border:1px solid #cfdbd7;background:white;border-radius:8px;padding:10px 12px;color:var(--ink);width:100%;min-height:42px;font-size:13px}.controls select{width:auto}.field{display:block;font-size:12px;font-weight:600;margin-bottom:14px}.field input,.field select,.field textarea{display:block;margin-top:6px}.field small{display:block;color:var(--muted);font-weight:400;margin-top:5px}.field textarea{min-height:95px;resize:vertical}.field-row{display:grid;grid-template-columns:1fr 1fr;gap:12px}.coverage-row{display:grid;grid-template-columns:65px minmax(0,1fr) 130px 100px;gap:16px;align-items:center;padding:15px 0;border-top:1px solid var(--line)}.coverage-row strong{font-size:12px}.coverage-row .name{font-size:13px}.coverage-row .name small{display:block;color:var(--muted);font-size:10px}.coverage-row .progress-track{margin:7px 0}.coverage-row .count{font-size:10px;color:var(--muted)}details summary{cursor:pointer;font-size:12px;font-weight:650;color:var(--teal);padding:8px 0}details>div{padding:12px 0}.score-table{width:100%;border-collapse:collapse;font-size:12px}.score-table th,.score-table td{text-align:left;padding:10px 5px;border-bottom:1px solid var(--line)}.score-table th{font-size:10px;color:var(--muted);font-weight:600}.recovery-item{border-bottom:1px solid var(--line);padding:14px 0;display:flex;align-items:flex-start;gap:12px}.recovery-item>div{flex:1}.recovery-item h3{font-size:13px;margin-bottom:5px}.recovery-item p{font-size:11px;color:var(--muted);margin:0}.danger-text{color:var(--red)}.settings-grid .panel p{font-size:12px;color:var(--muted)}.wide{grid-column:1/-1}dialog{border:1px solid var(--line);border-radius:20px;padding:27px;max-width:620px;width:calc(100% - 30px);max-height:90vh;overflow:auto;box-shadow:0 25px 100px #123c4230;color:var(--ink)}dialog::backdrop{background:#102a34a6;backdrop-filter:blur(3px)}.modal-top{display:flex;justify-content:space-between;gap:15px;margin-bottom:14px}.modal-top h2{margin:0;font-size:21px;line-height:1.3}.close{font-size:24px;line-height:1;width:30px;height:30px;flex-shrink:0}.modal-instruction{background:#f2f5f0;border-radius:10px;padding:15px;font-size:13px;line-height:1.65;margin:16px 0}.modal-actions{display:flex;gap:9px;flex-wrap:wrap;margin-top:16px}.micro{font-size:11px;color:var(--muted)}#toast{position:fixed;bottom:25px;left:50%;transform:translateX(-50%);background:#173d47;color:white;padding:13px 20px;border-radius:10px;box-shadow:0 8px 30px #102a3440;font-size:12px;max-width:90vw;z-index:99;display:none}#toast.show{display:block}footer{font-size:10px;color:#83928f;padding:35px 0 24px;border-top:1px solid var(--line);margin-top:35px}.welcome{max-width:800px;margin:40px auto}.welcome h1{max-width:600px}.welcome .panel{margin-top:20px}.history-row{font-size:11px;border-bottom:1px solid var(--line);padding:9px 0;overflow-wrap:anywhere}.printing-only{display:none}@media(min-width:1600px){main{padding:0 65px}.columns{grid-template-columns:minmax(0,2fr) minmax(320px,1fr)}}@media(max-width:1150px){.shell{grid-template-columns:190px minmax(0,1fr)}.sidebar{padding:24px 12px}.brand{font-size:17px;gap:8px}.brand-icon{width:34px}.brand small{font-size:7px}main{padding:0 25px}.columns{grid-template-columns:minmax(0,1fr) 270px;gap:15px}.panel{padding:20px}.stat{padding:13px}.stats{gap:8px}}@media(max-width:930px){.columns{grid-template-columns:1fr}.columns>.stack:last-child{grid-template-columns:1fr 1fr}.columns>.stack:last-child>.panel:first-child{grid-column:1/-1}.page-head{flex-wrap:wrap}.assignment-grid,.settings-grid{grid-template-columns:1fr}.wide{grid-column:auto}.stats{grid-template-columns:repeat(2,minmax(0,1fr))}.coverage-row{grid-template-columns:55px minmax(0,1fr) 100px}.coverage-row>.btn{grid-column:2/4;justify-self:start}.topbar{min-height:90px}}@media(max-width:680px){.shell{display:block}.sidebar{position:sticky;height:auto;top:0;z-index:20;padding:10px 13px 0;box-shadow:0 2px 10px #183d4710}.brand{font-size:18px;margin:0 0 8px;padding:0}.brand-icon{height:29px;width:29px;font-size:23px;border-radius:8px}.brand-icon span{font-size:16px}.brand small{display:none}.sidebar nav{display:flex;overflow-x:auto;gap:4px;margin:0 -13px;padding:0 10px 8px;scrollbar-width:none}.sidebar nav button{white-space:nowrap;min-width:max-content;width:auto;padding:8px 10px;font-size:13px;gap:5px}.sidebar nav button span{font-size:11px}.sidebar-bottom{display:none}main{padding:0 16px}.topbar{margin-bottom:22px;min-height:78px}.topbar .eyebrow{font-size:8px;letter-spacing:1px}#clock{font-size:10px}.sync-pill{font-size:8px;padding:8px 9px;max-width:145px}.page-head{margin-bottom:20px;gap:15px}.page-head .eyebrow{font-size:9px;margin-bottom:8px}.page-head p{font-size:12px}h1{font-size:30px}.stats{gap:9px;margin-bottom:16px}.stat{padding:13px 14px}.stat strong{font-size:22px}.stat .label{font-size:9px}.stat small{font-size:10px}.panel{padding:18px;border-radius:14px}.focus h2{font-size:22px}.columns>.stack:last-child{display:grid;grid-template-columns:1fr}.columns>.stack:last-child>.panel:first-child{grid-column:auto}.timeline-row{grid-template-columns:62px 13px minmax(0,1fr) 25px;gap:7px;padding:14px 0}.timeline-row .time{font-size:10px}.timeline-row .time small{font-size:9px}.timeline-row h3{font-size:12px}.timeline-row .meta{font-size:9px;gap:5px}.badge{font-size:9px;padding:2px 5px}.timeline-row .dot{width:7px;height:7px}.check{width:24px;height:24px;min-width:24px}.field-row{grid-template-columns:1fr}.coverage-row{gap:9px;grid-template-columns:47px minmax(0,1fr) 80px}.coverage-row .name{font-size:11px}.coverage-row strong{font-size:10px}.date-nav input{font-size:11px}.week-grid{margin-right:-16px;padding-right:16px}.assignment dl{grid-template-columns:75px 1fr;font-size:11px}.btn,.quiet{font-size:11px}.modal-top h2{font-size:19px}dialog{padding:20px}.settings-grid .row{align-items:stretch}.settings-grid .row>.btn{flex:1}.empty{padding:18px}.score-table{font-size:10px}footer{font-size:9px}.recovery-item{flex-wrap:wrap}.recovery-item .btn{margin-left:0}}@media print{.sidebar,.topbar,.btn,.quiet,.check,footer,.callout,.controls{display:none!important}.shell{display:block}main{padding:0}.panel{break-inside:avoid;border-color:#aaa;box-shadow:none}.columns{display:block}.focus{background:#fff;color:#000}.focus p,.focus .meta{color:#222}.printing-only{display:block}.week-grid{display:block;overflow:visible}.day-col{margin-bottom:15px}.mini-event{break-inside:avoid}.page-head{margin-top:15px}body{background:white}}

[hidden]{display:none!important}

.mini-event.marker{background:#fbf0df;border-color:#bb8b50}.timeline-row.marker .dot{border-color:#bb8b50;background:#f4d9ad;border-radius:50%}
