:root{--ink:#30293a;--muted:#675b70;--purple:#513365;--line:#ded6e3;--paper:#faf8f5;--teaching1:#c6b9d7;--exams1:#6d5f91;--teaching2:#e1eacb;--exams2:#586f3b;--extra:#a95517;font-family:Inter,"Segoe UI",Arial,sans-serif;color:var(--ink);background:var(--paper);font-synthesis:none}
*{box-sizing:border-box}body{margin:0}button,input,textarea,select{font:inherit}button{cursor:pointer;border:0}button:disabled{cursor:not-allowed;color:#756a7f;background:#f2eef4;box-shadow:none}button,a,input,textarea,select{-webkit-tap-highlight-color:transparent}a{color:inherit}button,input,select,textarea{border-radius:8px}button:focus-visible,a:focus-visible,input:focus-visible,select:focus-visible,textarea:focus-visible,[tabindex="-1"]:focus-visible{outline:3px solid #385ea6;outline-offset:3px}[hidden]{display:none!important}.icon{width:20px;height:20px;display:block;fill:none;stroke:currentColor;stroke-width:1.8;stroke-linecap:round;stroke-linejoin:round;flex:none}[data-icon]{display:inline-flex;align-items:center;justify-content:center}.topbar{min-height:76px;border-bottom:1px solid var(--line);background:#fff;display:flex;align-items:center;justify-content:space-between;padding:14px 4vw;gap:16px}.brand{display:flex;align-items:center;gap:12px;text-decoration:none;font-size:21px;font-weight:750;letter-spacing:-.5px}.brand-light{font-weight:400;font-size:16px;color:var(--muted);letter-spacing:0}.brand-icon{background:var(--purple);border-radius:10px;color:#fff;width:38px;height:38px;display:grid;place-items:center}.brand-icon .icon{width:25px;height:25px}.top-actions{display:flex;align-items:center;gap:20px}.academic-pill{font-size:11px;letter-spacing:1px;font-weight:650;border:1px solid #b8aabd;border-radius:30px;padding:9px 12px;color:#65516f;white-space:nowrap}.quiet{background:transparent;color:var(--purple);padding:10px 12px;font-weight:600;font-size:13px;display:inline-flex;align-items:center;justify-content:center;gap:8px;min-height:44px}.quiet:hover{background:#eee7f2}.primary{background:var(--purple);color:#fff;padding:12px 18px;font-size:14px;font-weight:600;display:inline-flex;align-items:center;justify-content:center;gap:9px;min-height:44px;white-space:nowrap}.primary:hover{background:#69477e}.primary:disabled{color:#fff;background:#756080}main{max-width:1700px;margin:auto;padding:34px 4vw 0}.intro{display:flex;align-items:center;justify-content:space-between;gap:24px;margin-bottom:28px}.eyebrow{font-size:11px;letter-spacing:1.2px;color:#6f577c;font-weight:700;margin:0 0 12px}h1{font-size:clamp(27px,2.8vw,38px);letter-spacing:-1px;line-height:1.2;margin:0;font-weight:650}h1 em{font-family:Georgia,"Times New Roman",serif;font-style:normal;font-weight:400;color:var(--purple);display:block;font-size:.8em;margin-top:7px;letter-spacing:-.4px}.workspace{display:grid;grid-template-columns:minmax(0,1fr) 280px;gap:24px;align-items:start}.calendar-area{background:#fff;border:1px solid var(--line);border-radius:13px;box-shadow:0 6px 24px #39224706;min-width:0}.toolbar{display:flex;justify-content:space-between;align-items:center;padding:14px 20px;border-bottom:1px solid var(--line);gap:12px}.view-tabs{display:flex;align-items:center;gap:3px;background:#f2eef5;padding:4px;border-radius:9px}.view-tabs button{font-size:12px;font-weight:600;color:#65536f;min-height:40px;padding:9px 11px;background:transparent;white-space:nowrap}.view-tabs button[aria-pressed=true]{background:var(--purple);color:#fff}.view-tabs button:hover:not([aria-pressed=true]){background:#e3d9eb}.view-tabs span{font-size:11px;margin-left:4px;background:#e5dcec;color:#513365;padding:1px 5px;border-radius:5px}.view-tabs button[aria-pressed=true] span{background:#fff;color:#513365}.toolbar-actions{display:flex;align-items:center;gap:4px}.icon-button{width:44px;height:44px;min-width:44px;display:inline-flex;align-items:center;justify-content:center;padding:0;color:#5e456c;background:transparent;border-radius:8px}.icon-button:hover{background:#f0eaf4}.filters{display:grid;grid-template-columns:minmax(120px,.7fr) minmax(170px,1.3fr) auto;align-items:end;gap:12px;padding:18px 20px 0}.filters label{font-size:12px;font-weight:600;color:var(--muted);display:flex;flex-direction:column;gap:7px;min-width:0}.filters select{width:100%;min-width:0}.filters .quiet{font-size:12px}#filters-panel>summary{display:none}.calendar-grid{padding:24px 20px;display:grid;grid-template-columns:repeat(3,minmax(0,1fr));gap:26px 22px}.month{min-width:0}.month-header{display:flex;align-items:baseline;justify-content:space-between;gap:6px;margin-bottom:8px}.month-name{font-size:14px;font-weight:700;text-transform:capitalize;color:#513365;padding:4px 0;min-height:32px;background:transparent;text-align:left;text-decoration:underline;text-decoration-thickness:1px;text-underline-offset:4px}.month-name:hover{color:#784c8d}.month-year{font-size:12px;color:var(--muted)}.month.green .month-name{color:#48602e}.month.red .month-name{color:#974918}.weekdays,.days{display:grid;grid-template-columns:repeat(7,minmax(0,1fr));gap:3px}.weekdays{margin-bottom:5px}.weekdays span{text-align:center;font-size:11px;font-weight:600;color:#6d5f77;padding:4px 0}.weekdays span:last-child{color:#9d4438}.day{position:relative;aspect-ratio:1.15;min-height:28px;display:flex;align-items:center;justify-content:center;background:#f7f5f9;color:#51445b;border-radius:4px;padding:0;font-size:12px;font-weight:500;border:1px solid transparent;isolation:isolate}.day:hover{border-color:#755c85;box-shadow:0 1px 5px #51336520}.day.weekend{background:#fff;color:#6f6576}.day.sunday{color:#9d4438}.day.teaching1,.swatch.teaching1,.event-dot.teaching1{background:var(--teaching1);color:#432d55}.day.exams1,.swatch.exams1,.event-dot.exams1{background:var(--exams1);color:#fff}.day.teaching2,.swatch.teaching2,.event-dot.teaching2{background:var(--teaching2);color:#42502a}.day.exams2,.swatch.exams2,.event-dot.exams2{background:var(--exams2);color:#fff}.day.extra,.swatch.extra,.event-dot.extra{background:var(--extra);color:#fff}.day.holiday{background:#fff4ef;color:#993e30;border-color:#b36758;font-weight:750}.day.local{font-weight:800;text-decoration:underline;text-decoration-style:dotted;text-underline-offset:3px}.day.inauguration{background:#656958;color:#fff}.day.today:after{content:"";position:absolute;bottom:3px;height:4px;width:4px;background:currentColor;border-radius:50%}.day.selected{outline:2px solid #483054;outline-offset:1px;z-index:1}.day.selected:focus-visible{outline:3px solid #385ea6;outline-offset:2px}.day .note-marker{position:absolute;right:2px;top:2px;width:5px;height:5px;background:#8d4712;box-shadow:0 0 0 1px #fff;border-radius:50%}.day .bracket{position:absolute;inset:-2px auto -2px 0;border-left:2px solid #355c48;border-top:2px solid #355c48;border-bottom:2px solid #355c48;width:5px;border-radius:3px 0 0 3px;pointer-events:none}.day .bracket.end{left:auto;right:0;transform:rotate(180deg)}.day .day-note-preview{display:none}.legend{border-top:1px solid var(--line);padding:18px 20px 8px;display:flex;flex-wrap:wrap;gap:12px 18px}.legend>span{display:flex;align-items:center;gap:8px;font-size:11px;line-height:1.5;color:#62536d}.swatch{width:12px;height:12px;border:1px solid #85718e;border-radius:3px;display:inline-block;flex-shrink:0}.defense-sample{font-style:normal;font-weight:750;color:#355c48;font-size:14px}.holiday-sample{font-style:normal;font-weight:700;color:#993e30}.local-sample{font-style:normal;font-weight:800;text-decoration:underline dotted}.calendar-help{font-size:12px;line-height:1.6;color:#665372;margin:10px 20px 20px}.sidebar{display:flex;flex-direction:column;gap:20px;min-width:0;scroll-margin-top:20px}.day-card{background:#fff;border:1px solid var(--line);border-radius:13px;padding:22px}.side-heading{display:flex;align-items:center;justify-content:space-between;gap:8px}.side-heading .eyebrow{font-size:10px;letter-spacing:1px;margin:0}.weekday-tag{font-size:11px;color:#624871;background:#eee7f3;padding:5px 7px;border-radius:4px}.big-day{font-family:Georgia,"Times New Roman",serif;color:var(--purple);font-size:64px;line-height:1;margin:18px 0 9px;letter-spacing:-3px}.day-card h2{font-size:14px;font-weight:600;color:#65526e;margin:0 0 18px;line-height:1.5}.day-events{display:flex;flex-direction:column;gap:10px}.event{display:flex;align-items:flex-start;gap:9px;font-size:12px;line-height:1.6;color:#62536d}.event-dot{width:9px;height:9px;display:inline-block;border-radius:2px;flex-shrink:0;margin-top:5px;background:#7d6a89;border:1px solid #76627e}.event-dot.holiday{background:#a4493c}.event-dot.local{background:#80673d}.event-dot.defense{background:#355c48}.divider{height:1px;background:var(--line);margin:20px 0}.side-heading h3{font-size:14px;margin:0;font-weight:650}.count-pill{background:#eee7f3;border-radius:20px;font-size:12px;min-width:23px;text-align:center;padding:3px 6px;color:#5a426e}.empty-notes{padding:22px 0;text-align:left}.empty-notes p{font-size:12px;color:#6b5a77;line-height:1.7;margin:0}.empty-notes .empty-title{color:#554260;font-weight:600;margin-bottom:5px}.outline{background:#fff;color:#634575;border:1px solid #9b81ab;width:100%;padding:11px 9px;font-size:12px;min-height:44px;display:flex;align-items:center;justify-content:center;gap:7px}.outline:hover{background:#f3edf8}.sync-status{text-align:left;font-size:12px;line-height:1.6;color:#665471;margin:14px 0 0;min-height:20px}.upcoming-card{padding:22px;background:#f0ebf3;border:1px solid #d8cce1;border-radius:13px}.upcoming-card h2{font-size:16px;font-weight:650;color:#513365;margin:0 0 18px}.upcoming-item{display:flex;align-items:flex-start;gap:12px;margin-top:16px}.upcoming-date{min-width:40px;text-align:center;border-right:1px solid #bca9c8;padding-right:10px}.upcoming-date b{display:block;font-size:20px;color:#604274;font-weight:600}.upcoming-date span{display:block;color:#6d517c;font-size:10px;text-transform:uppercase;margin-top:3px}.upcoming-item p{font-size:12px;color:#65506f;line-height:1.6;margin:1px 0 0}.month-nav{display:flex;justify-content:center;align-items:center;gap:18px;padding:22px 16px 0}.month-nav h2{font-family:Georgia,serif;font-size:27px;font-weight:400;margin:0;min-width:190px;text-align:center}.month-nav h2::first-letter{text-transform:uppercase}.calendar-grid.single{grid-template-columns:1fr;gap:0}.single .month-header{display:none}.single .day{min-height:96px;aspect-ratio:auto;flex-direction:column;align-items:flex-start;justify-content:flex-start;padding:10px;font-size:15px}.single .days,.single .weekdays{gap:6px}.single .weekdays span{font-size:12px}.single .day .day-note-preview{display:block;font-size:11px;line-height:1.5;margin-top:8px;font-weight:500;max-width:100%;overflow:hidden;white-space:nowrap;text-overflow:ellipsis}.single .day .note-marker{width:6px;height:6px;right:6px;top:6px}.single .day.today:after{bottom:auto;right:8px;top:20px}.notes-tools{display:flex;align-items:center;gap:12px;flex-wrap:wrap;margin-bottom:20px}.notes-tools h2{font-size:20px;margin:0 auto 0 0}.notes-tools input{max-width:100%;width:220px}.all-notes{padding:24px 20px;min-height:400px}.note-item{width:100%;text-align:left;background:#f5f0f8;padding:13px;border-left:3px solid #9675ae;margin:10px 0;border-radius:5px;min-height:44px}.note-item:hover{background:#e9dff1}.note-item strong{display:block;font-size:13px;color:#4f355e;overflow-wrap:anywhere;line-height:1.5}.note-item p{font-size:12px;color:#675172;margin:6px 0 0;line-height:1.6;white-space:pre-wrap;overflow-wrap:anywhere}.note-item small{display:block;font-size:11px;color:#6b5279;margin-top:8px;line-height:1.6}.note-item.done strong{text-decoration:line-through}.all-notes .note-item strong{font-size:15px}.all-notes .note-item p{font-size:13px}footer{padding:24px 0;display:flex;justify-content:space-between;gap:18px;font-size:11px;line-height:1.7;color:#685b70}footer a{color:#62416f;text-underline-offset:3px}dialog{border:1px solid var(--line);border-radius:15px;padding:26px;width:min(500px,calc(100% - 32px));max-height:calc(100dvh - 32px);overflow:auto;box-shadow:0 25px 90px #30203635;color:var(--ink);overscroll-behavior:contain}dialog::backdrop{background:#2d183e77;backdrop-filter:blur(2px)}.dialog-heading{display:flex;align-items:flex-start;justify-content:space-between;margin-bottom:15px;gap:12px}.dialog-heading h2,dialog>h2{font-family:Georgia,serif;font-size:27px;font-weight:400;margin:4px 0 0;color:var(--purple);line-height:1.25}.dialog-heading .icon-button{margin:-4px -8px 0 0;flex:none}dialog>p{font-size:14px;line-height:1.7}form>label{display:flex;flex-direction:column;gap:8px;margin:18px 0;color:#5d456a;font-size:13px;font-weight:600}input:not([type=checkbox]):not([type=radio]):not([type=hidden]):not([type=file]),textarea,select{border:1px solid #9e88ac;padding:10px 11px;background:#fff;color:#493153;width:100%;min-height:44px;font-size:14px}textarea{resize:vertical;line-height:1.6;min-height:110px}input::placeholder,textarea::placeholder{color:#77637f;opacity:1}input[type=checkbox],input[type=radio]{width:18px;height:18px;min-width:18px;min-height:0;padding:0;margin:0;accent-color:var(--purple);flex:0 0 18px}input[aria-invalid=true]{border-color:#a1352c}.form-row{display:flex;gap:18px;align-items:end}.form-row>label{width:50%;display:flex;flex-direction:column;gap:8px;font-size:13px;font-weight:600;color:#5d456a;min-width:0}.form-row .check-label{flex-direction:row;align-items:center;min-height:44px;gap:10px;cursor:pointer}.form-actions{display:flex;justify-content:flex-end;gap:12px;align-items:center;margin-top:20px;flex-wrap:wrap}.form-actions .danger{margin-right:auto}.form-actions .primary{min-width:165px}.danger{background:#fff0ed;color:#96362a;font-size:13px;min-height:44px;padding:11px 13px;font-weight:600}.danger:hover{background:#f7d5ce}.muted,.field-help{color:#675172;font-size:12px;line-height:1.7}.field-help{margin:7px 0 0}.field-help:empty{display:none}.form-error{font-size:13px;color:#a03124;line-height:1.6;white-space:pre-wrap}.form-error:empty{display:none}.full{width:100%}.toast{position:fixed;bottom:max(20px,env(safe-area-inset-bottom));left:50%;transform:translateX(-50%);z-index:50;background:#513365;color:#fff;border:1px solid #76558b;box-shadow:0 8px 25px #38204725;border-radius:9px;padding:13px 20px;font-size:13px;max-width:calc(100% - 32px);line-height:1.5}.skip{position:fixed;top:-100px;background:var(--purple);color:#fff;padding:15px;z-index:100}.skip:focus{top:10px}.sr-only{position:absolute;clip:rect(0,0,0,0);height:1px;width:1px;overflow:hidden}.mobile-only{display:none}
@media(min-width:1500px){.workspace{grid-template-columns:minmax(0,1fr) 300px}.day{min-height:36px;font-size:14px}.month-name{font-size:16px}.calendar-grid{gap:30px}.legend>span{font-size:12px}}
@media(max-width:1179px){.calendar-grid{grid-template-columns:repeat(2,minmax(0,1fr));gap:24px}.toolbar{padding:12px}.view-tabs button{padding:9px;font-size:12px}.filters{grid-template-columns:minmax(100px,.7fr) minmax(140px,1.3fr)}.filters .quiet{grid-column:1/-1;justify-self:start}.day{font-size:13px}.single .day{min-height:88px}.notes-tools input{width:100%}}
@media(max-width:900px){.workspace{grid-template-columns:minmax(0,1fr)}.sidebar{display:grid;grid-template-columns:1fr 1fr;align-items:start}.calendar-grid{grid-template-columns:repeat(2,minmax(0,1fr));gap:28px}.day{min-height:34px}.single .day{min-height:94px}.filters{grid-template-columns:minmax(150px,.7fr) minmax(200px,1.3fr) auto}.filters .quiet{grid-column:auto}.intro .primary{font-size:13px}.brand-light{font-size:15px}}
@media(max-width:650px){.topbar{padding:12px 16px;min-height:68px}.brand{font-size:19px;gap:9px}.brand-light{font-size:13px}.brand-icon{width:34px;height:34px}.academic-pill{display:none}.top-actions{gap:0}.top-actions .quiet{font-size:12px;padding:8px}.top-actions .icon{display:none}main{padding:24px 16px 0}.intro{display:block;margin-bottom:22px}.intro h1{font-size:29px;letter-spacing:-.8px}.eyebrow{font-size:10px}.intro .primary{margin-top:20px;width:100%;font-size:14px}.toolbar{padding:10px;flex-wrap:nowrap;gap:5px}.view-tabs{width:auto;justify-content:space-between;gap:0}.view-tabs button{flex:1;min-height:44px;font-size:12px;padding:8px 6px}.toolbar-actions{width:auto;justify-content:space-between;gap:0}.toolbar-actions .quiet{padding:10px 7px}.toolbar-actions .icon-button{width:40px;min-width:40px}#filters-panel>summary{display:list-item;padding:13px 12px;font-size:12px;color:#5e456c;min-height:44px;cursor:pointer;border-bottom:1px solid var(--line)}#filters-summary{font-weight:400;color:#675172;display:block;margin-top:5px;line-height:1.5}#filters-panel .filters{padding-bottom:12px}.toolbar-actions .icon-button{display:inline-flex}.filters{grid-template-columns:1fr;padding:14px 12px 0;gap:12px}.filters label{font-size:12px}.filters .quiet{grid-column:1;justify-self:start}.calendar-grid{grid-template-columns:1fr;padding:20px 10px;gap:28px}.month-header{margin-bottom:10px}.month-name{font-size:17px;min-height:44px}.month-year{font-size:13px}.day{min-height:44px;font-size:15px;aspect-ratio:1}.weekdays span{font-size:12px}.single .day{min-height:66px;font-size:15px;padding:7px 4px;aspect-ratio:auto}.single .days,.single .weekdays{gap:3px}.single .day .day-note-preview{font-size:10px;white-space:normal;overflow:hidden;max-height:30px;overflow-wrap:anywhere;margin-top:8px}.single .day.today:after{top:25px;right:6px}.month-nav{gap:8px;padding:20px 10px 0}.month-nav h2{font-size:23px;min-width:0;flex:1}.legend{padding:18px 12px 8px;gap:12px}.legend>span{font-size:11px}.calendar-help{font-size:12px;margin:10px 12px 18px}.sidebar{display:flex;width:100%;gap:16px}.day-card,.upcoming-card{padding:22px}.day-card h2{font-size:15px}.big-day{font-size:56px}.upcoming-card #upcoming{display:grid;grid-template-columns:1fr;gap:14px}.upcoming-item{margin:0}.mobile-only{display:inline-flex;margin-top:10px}.notes-tools{gap:14px}.notes-tools input{width:100%}.all-notes{min-height:260px;padding:22px 16px}.notes-tools #export{width:100%;justify-content:flex-start}footer{font-size:11px;flex-direction:column;gap:8px;padding-bottom:calc(20px + env(safe-area-inset-bottom))}dialog{padding:22px 20px;padding-bottom:calc(22px + env(safe-area-inset-bottom));width:calc(100% - 24px);max-height:calc(100dvh - 24px)}.dialog-heading h2,dialog>h2{font-size:25px}input:not([type=checkbox]):not([type=radio]):not([type=hidden]):not([type=file]),textarea,select{font-size:16px}.form-actions{gap:10px}.form-actions .danger{margin-right:0}.form-actions .primary{min-width:0;flex:1}.form-row{gap:14px}.note-item{padding:13px}.event{font-size:13px}.sync-status{font-size:12px}}
@media(prefers-reduced-motion:reduce){*{scroll-behavior:auto!important}}
@media print{@page{size:A4 landscape;margin:8mm}body{background:white}main{padding:10px;max-width:none}.topbar,.intro .primary,.toolbar,#filters-panel,.filters,.sidebar,.calendar-help,dialog,.toast,.month-nav,footer,.all-notes{display:none!important}.intro{margin-bottom:15px}.intro h1{font-size:25px}.intro h1 em{display:inline;font-size:1em;margin-left:8px}.intro .eyebrow{font-size:10px}.workspace{display:block}.calendar-area{border:0;box-shadow:none}.calendar-grid,.calendar-grid.single{padding:0;grid-template-columns:repeat(4,minmax(0,1fr));gap:14px 20px}.month{break-inside:avoid}.month-header,.single .month-header{display:flex}.month-name{font-size:13px;min-height:0;text-decoration:none;padding:0}.month-year{font-size:10px}.day,.single .day{min-height:18px;aspect-ratio:auto;height:20px;font-size:10px;align-items:center;justify-content:center;padding:0;print-color-adjust:exact;-webkit-print-color-adjust:exact}.single .day .day-note-preview{display:none}.weekdays span{font-size:9px;padding:2px}.legend{margin-top:15px;padding:12px 0 0}.legend>span{font-size:9px}.day.selected{outline:none}}
