:root{--ink: #0b0a09;--surface: #121212;--surface-raised: #18181b;--surface-inset: #202023;--fg: #ffffff;--fg-70: rgba(255, 255, 255, .66);--fg-45: rgba(255, 255, 255, .45);--fg-12: rgba(255, 255, 255, .14);--fg-08: rgba(255, 255, 255, .08);--orange: #ff7a1a;--orange-dark: #e0640a;--orange-light: #ffa64d;--gold: #ffb648;--mint: #34d399;--sky: #7dd3fc;--accent-text: rgb(246, 138, 30);--danger: #ff8a8a;--display: "Space Grotesk", -apple-system, BlinkMacSystemFont, sans-serif;--body: "Manrope", -apple-system, BlinkMacSystemFont, sans-serif;--mono: "IBM Plex Mono", ui-monospace, Menlo, monospace;--card-highlight: inset 0 1px 0 rgba(255, 255, 255, .06);--hour-h: 60px;color-scheme:dark}*{box-sizing:border-box}html,body,#root{height:100%;margin:0}body{background:var(--surface);color:var(--fg);font-family:var(--body);font-size:15px;letter-spacing:.1px;-webkit-font-smoothing:antialiased;overflow:hidden}body:before{content:"";position:fixed;top:0;right:0;bottom:0;left:0;z-index:40;pointer-events:none;opacity:.035;mix-blend-mode:overlay;background-image:url("data:image/svg+xml,%3Csvg xmlns='http://www.w3.org/2000/svg' width='160' height='160'%3E%3Cfilter id='n'%3E%3CfeTurbulence type='fractalNoise' baseFrequency='0.85' numOctaves='2' stitchTiles='stitch'/%3E%3C/filter%3E%3Crect width='100%25' height='100%25' filter='url(%23n)'/%3E%3C/svg%3E")}a{color:inherit;text-decoration:none}button{font-family:inherit;cursor:pointer}::selection{background:var(--orange);color:var(--ink)}:focus-visible{outline:2px solid var(--accent-text);outline-offset:2px;border-radius:4px}svg{display:block}.app{display:grid;grid-template-columns:264px 1fr;height:100vh}.sidebar{background:var(--surface-raised);border-right:1px solid var(--fg-08);display:flex;flex-direction:column;padding:20px 16px 14px;overflow-y:auto;min-width:0}.brand{display:flex;align-items:center;font-family:var(--display);font-weight:700;font-size:1.05rem;padding:2px 6px;margin-bottom:20px}.brand .heart,.topbar__brand .heart{color:var(--orange);font-size:.78em;margin:0 .05em}.mini-cal__head{display:flex;align-items:center;justify-content:space-between;padding:0 4px;margin-bottom:12px}.mini-cal__title{font-family:var(--mono);font-size:.78rem;color:var(--fg-70);letter-spacing:.03em}.mini-cal__nav{display:flex;gap:2px}.icon-btn-sm{display:flex;align-items:center;justify-content:center;width:24px;height:24px;border-radius:7px;background:none;border:none;color:var(--fg-45);font-size:.9rem;transition:background .15s ease,color .15s ease}.icon-btn-sm:hover{background:var(--fg-08);color:var(--fg)}.mini-cal__grid{display:grid;grid-template-columns:repeat(7,1fr);gap:3px;margin-bottom:18px}.mini-cal__dow{text-align:center;font-family:var(--mono);font-size:.62rem;color:var(--fg-45);padding-bottom:4px}.mini-cal__cell{aspect-ratio:1;display:flex;align-items:center;justify-content:center;font-size:.74rem;font-variant-numeric:tabular-nums;color:var(--fg-70);border-radius:7px;background:none;border:none;transition:background .15s ease,color .15s ease}.mini-cal__cell:hover{background:var(--fg-08);color:var(--fg)}.mini-cal__cell.is-today{color:var(--accent-text);font-weight:700}.mini-cal__cell.is-selected{background:var(--orange);color:var(--ink);font-weight:700}.mini-cal__cell.is-selected:hover{background:var(--orange)}.side-tabs{display:flex;gap:4px;background:var(--fg-08);border-radius:10px;padding:3px;margin-bottom:14px}.side-tabs button{flex:1;border:none;background:none;color:var(--fg-45);font-family:var(--body);font-weight:600;font-size:.78rem;padding:7px 0;border-radius:8px;transition:background .15s ease,color .15s ease}.side-tabs button.active{background:var(--surface-inset);color:var(--fg);box-shadow:var(--card-highlight)}.side-search{display:flex;align-items:center;gap:8px;background:var(--fg-08);border:1px solid var(--fg-12);border-radius:10px;padding:8px 10px;color:var(--fg-45);font-size:.82rem;margin-bottom:20px;transition:border-color .2s ease}.side-search:focus-within{border-color:var(--orange)}.side-search input{flex:1;background:none;border:none;outline:none;color:var(--fg);font-family:var(--body);font-size:.82rem}.side-search input::placeholder{color:var(--fg-45)}.side-search kbd{font-family:var(--mono);font-size:.68rem;color:var(--fg-45);border:1px solid var(--fg-12);border-radius:4px;padding:1px 5px;flex-shrink:0}.todo-add{margin-top:6px;padding:0 4px}.todo-add input{width:100%;background:var(--fg-08);border:1px solid var(--fg-12);border-radius:8px;padding:7px 10px;color:var(--fg);font-family:var(--body);font-size:.82rem;transition:border-color .2s ease}.todo-add input:focus{outline:none;border-color:var(--orange)}.todo-add input::placeholder{color:var(--fg-45)}.side-section{margin-bottom:22px}.side-section__head{display:flex;align-items:center;justify-content:space-between;padding:0 2px;margin-bottom:8px}.side-section__label{font-family:var(--mono);font-size:.68rem;letter-spacing:.08em;text-transform:uppercase;color:var(--fg-45)}.cal-row{display:flex;align-items:center;gap:10px;padding:6px 4px;border-radius:8px;transition:background .15s ease}.cal-row:hover{background:var(--fg-08)}.cal-check{-webkit-appearance:none;-moz-appearance:none;appearance:none;width:16px;height:16px;border-radius:5px;border:1.5px solid var(--fg-12);flex-shrink:0;display:grid;place-content:center;background:none;transition:background .15s ease,border-color .15s ease}.cal-check:after{content:"";width:9px;height:9px;border-radius:3px;background:var(--check-color, var(--orange));transform:scale(0);transition:transform .12s ease}.cal-check:checked{border-color:var(--check-color, var(--orange))}.cal-check:checked:after{transform:scale(1)}.cal-row__name{font-size:.85rem;font-weight:500}.cal-row__meta{font-size:.72rem;color:var(--fg-45)}.promo-card{background:linear-gradient(160deg,var(--surface-inset),var(--surface-raised));border:1px solid var(--fg-08);border-radius:14px;padding:18px 16px;text-align:center;box-shadow:var(--card-highlight);position:relative;margin-bottom:16px}.promo-card__close{position:absolute;top:8px;right:8px;width:20px;height:20px;border-radius:100px;background:none;border:none;color:var(--fg-45);display:flex;align-items:center;justify-content:center;font-size:.8rem}.promo-card__close:hover{background:var(--fg-08);color:var(--fg)}.promo-card__icon{font-size:1.6rem;margin-bottom:6px}.promo-card__title{font-family:var(--display);font-weight:700;font-size:.92rem;margin:0 0 6px}.promo-card__body{font-size:.76rem;color:var(--fg-70);line-height:1.4;margin:0 0 14px}.promo-card__cta{width:100%;background:var(--orange);color:var(--ink);border:none;border-radius:9px;padding:9px 0;font-weight:700;font-size:.8rem;transition:background .15s ease,transform .1s ease}.promo-card__cta:hover{background:var(--orange-light)}.promo-card__cta:active{transform:scale(.97)}.sidebar-foot{margin-top:auto;border-top:1px solid var(--fg-08);padding-top:12px;display:flex;align-items:center;gap:10px}.sidebar-foot__avatar{width:34px;height:34px;border-radius:100px;background:linear-gradient(160deg,var(--orange-light),var(--orange-dark));display:flex;align-items:center;justify-content:center;font-family:var(--display);font-weight:700;color:var(--ink);flex-shrink:0}.sidebar-foot__name{font-size:.84rem;font-weight:600}.sidebar-foot__email{font-size:.68rem;color:var(--fg-45);font-family:var(--mono)}.main{display:flex;flex-direction:column;min-width:0;height:100vh}.topbar{display:flex;align-items:center;gap:14px;padding:14px 24px;border-bottom:1px solid var(--fg-08);flex-shrink:0}.icon-btn{display:flex;align-items:center;justify-content:center;width:34px;height:34px;border-radius:100px;background:var(--fg-08);border:none;color:var(--fg-70);font-size:1rem;transition:background .15s ease,color .15s ease}.icon-btn:hover{background:#ff7a1a24;color:var(--accent-text)}.view-switch{display:flex;align-items:center;gap:2px;background:var(--fg-08);border-radius:100px;padding:3px}.view-switch button{border:none;background:none;color:var(--fg-45);font-weight:600;font-size:.8rem;padding:7px 14px;border-radius:100px;transition:background .15s ease,color .15s ease}.view-switch button.active{background:var(--orange);color:var(--ink)}.topbar__brand{margin:0 auto;display:flex;align-items:center;gap:8px;font-family:var(--display);font-weight:700;font-size:1.02rem;color:var(--fg-70)}.topbar__brand-sub{color:var(--fg-45);font-family:var(--body);font-weight:600;font-size:.9rem}.create-btn{display:flex;align-items:center;gap:8px;background:var(--orange);color:var(--ink);border:none;border-radius:100px;padding:9px 16px;font-weight:700;font-size:.84rem;transition:background .15s ease,transform .1s ease}.create-btn:hover{background:var(--orange-light)}.create-btn:active{transform:scale(.97)}.bell-wrap{position:relative}.bell-badge{position:absolute;top:-3px;right:-3px;background:var(--danger);color:var(--ink);font-family:var(--mono);font-size:.6rem;font-weight:700;min-width:15px;height:15px;padding:0 3px;border-radius:100px;display:flex;align-items:center;justify-content:center;border:2px solid var(--surface)}.topbar__avatar{width:34px;height:34px;border-radius:100px;background:var(--orange);color:var(--ink);font-family:var(--display);font-weight:700;display:flex;align-items:center;justify-content:center;font-size:.85rem}.date-header{display:flex;align-items:center;gap:14px;padding:18px 24px 14px;flex-shrink:0}.date-header__dot{width:8px;height:8px;border-radius:100px;background:var(--orange);box-shadow:0 0 0 4px #ff7a1a2e}.date-header__title{font-family:var(--display);font-weight:700;font-size:1.5rem;letter-spacing:-.01em}.date-header__title .year{color:var(--accent-text)}.date-header__nav{margin-left:auto;display:flex;align-items:center;gap:4px}.today-btn{background:var(--fg-08);border:1px solid var(--fg-12);color:var(--fg);font-weight:600;font-size:.82rem;padding:8px 16px;border-radius:100px;transition:background .15s ease,border-color .15s ease}.today-btn:hover{background:#ff7a1a1f;border-color:#ff7a1a4d;color:var(--accent-text)}.view-body{flex:1;min-height:0;display:flex;flex-direction:column;padding:0 24px 20px}.grid-wrap{flex:1;min-height:0;display:flex;flex-direction:column}.grid-head{display:grid;grid-template-columns:52px repeat(var(--cols),1fr);border-bottom:1px solid var(--fg-08);flex-shrink:0}.day-col-head{text-align:center;padding:4px 6px 12px;border-left:1px solid var(--fg-08)}.day-col-head__dow{font-family:var(--mono);font-size:.68rem;letter-spacing:.06em;color:var(--fg-45);margin-bottom:4px}.day-col-head__num{font-family:var(--display);font-weight:700;font-size:1.2rem;font-variant-numeric:tabular-nums}.day-col-head.is-today .day-col-head__dow,.day-col-head.is-today .day-col-head__num{color:var(--accent-text)}.allday-row{display:grid;grid-template-columns:52px repeat(var(--cols),1fr);border-bottom:1px solid var(--fg-08);flex-shrink:0}.allday-row__label{font-family:var(--mono);font-size:.6rem;color:var(--fg-45);display:flex;align-items:center;justify-content:center}.allday-cell{border-left:1px solid var(--fg-08);padding:5px;display:flex;flex-direction:column;gap:4px;min-width:0}.chip{display:flex;align-items:center;gap:5px;width:100%;padding:4px 8px;border-radius:7px;font-size:.68rem;font-weight:600;font-family:inherit;border:none;white-space:nowrap;overflow:hidden;text-overflow:ellipsis;transition:opacity .2s ease,filter .12s ease}button.chip{cursor:pointer}button.chip:hover{filter:brightness(1.2)}.chip--personal{background:#34d39924;color:var(--mint)}.chip--bday{background:#ffb64829;color:var(--gold)}.chip--devlog{background:#ff7a1a24;color:var(--accent-text)}.chip--course{background:color-mix(in srgb,var(--course-color) 16%,transparent);color:var(--course-color)}.chip--course.is-done{opacity:.55;text-decoration:line-through}.chip.is-dimmed{opacity:.15;pointer-events:none}.grid-scroll{flex:1;overflow-y:auto;position:relative}.hour-grid{display:grid;grid-template-columns:52px repeat(var(--cols),1fr);height:calc(var(--hour-h) * 24);position:relative}.hour-gutter{grid-column:1;position:relative}.hour-label{position:absolute;left:0;right:8px;font-family:var(--mono);font-size:.66rem;color:var(--fg-45);text-align:right;transform:translateY(-7px)}.day-track{position:relative;border-left:1px solid var(--fg-08);background-image:repeating-linear-gradient(to bottom,transparent 0,transparent calc(var(--hour-h) - 1px),var(--fg-08) calc(var(--hour-h) - 1px),var(--fg-08) var(--hour-h))}.day-track:hover{background-color:#ffffff04}.event-block{position:absolute;left:3px;right:3px;border-radius:7px;padding:5px 8px;font-size:.72rem;font-weight:600;font-family:inherit;line-height:1.25;overflow:hidden;border:1px solid transparent;box-shadow:var(--card-highlight);text-align:left;cursor:default;transition:filter .12s ease}button.event-block{cursor:pointer}button.event-block:hover{filter:brightness(1.15)}.event-block--personal{background:#34d39929;color:var(--mint);border-color:#34d39947}.event-block--bday{background:#ffb6482e;color:var(--gold);border-color:#ffb6484d}.event-block--devlog{background:#ff7a1a29;color:var(--accent-text);border-color:#ff7a1a4d}.event-block--course{background:color-mix(in srgb,var(--course-color) 18%,transparent);color:var(--course-color);border-color:color-mix(in srgb,var(--course-color) 30%,transparent)}.event-block.is-dimmed{opacity:.12;pointer-events:none}.event-block__time{display:block;font-family:var(--mono);font-size:.6rem;opacity:.75;margin-top:2px}.now-line{position:absolute;left:0;right:0;height:2px;background:var(--orange);z-index:2}.now-line:before{content:"";position:absolute;left:-5px;top:50%;transform:translateY(-50%);width:10px;height:10px;border-radius:100px;background:var(--orange);box-shadow:0 0 0 4px #ff7a1a38}.agenda{flex:1;overflow-y:auto;padding-top:8px}.agenda__group{margin-bottom:22px}.agenda__group-head{display:flex;align-items:baseline;gap:10px;padding:6px 4px;border-bottom:1px solid var(--fg-08);margin-bottom:8px;font-family:var(--display);font-weight:700;font-size:.95rem}.agenda__group-head.is-today{color:var(--accent-text)}.agenda__group-date{font-family:var(--mono);font-weight:400;font-size:.72rem;color:var(--fg-45)}.agenda__row{display:flex;align-items:center;gap:12px;width:100%;padding:10px 8px;border-radius:9px;border:none;background:none;font-family:inherit;text-align:left;transition:background .15s ease,opacity .2s ease}button.agenda__row{cursor:pointer}.agenda__row:hover{background:var(--fg-08)}.agenda__row.is-dimmed{opacity:.25;pointer-events:none}.agenda__row.is-done .agenda__title{opacity:.55;text-decoration:line-through}.agenda__dot{width:8px;height:8px;border-radius:100px;flex-shrink:0}.agenda__dot--personal{background:var(--mint)}.agenda__dot--bday{background:var(--gold)}.agenda__dot--devlog{background:var(--accent-text)}.agenda__time{font-family:var(--mono);font-size:.72rem;color:var(--fg-45);width:84px;flex-shrink:0}.agenda__title{font-size:.88rem;font-weight:500}.agenda__empty{color:var(--fg-45);font-size:.85rem;padding:8px}.sidebar::-webkit-scrollbar,.grid-scroll::-webkit-scrollbar,.agenda::-webkit-scrollbar{width:8px}.sidebar::-webkit-scrollbar-thumb,.grid-scroll::-webkit-scrollbar-thumb,.agenda::-webkit-scrollbar-thumb{background:var(--fg-12);border-radius:100px}.sidebar::-webkit-scrollbar-track,.grid-scroll::-webkit-scrollbar-track,.agenda::-webkit-scrollbar-track{background:transparent}.modal-overlay{position:fixed;top:0;right:0;bottom:0;left:0;background:#0000008c;-webkit-backdrop-filter:blur(2px);backdrop-filter:blur(2px);display:flex;align-items:center;justify-content:center;z-index:100;padding:20px}.modal-card{background:var(--surface-raised);border:1px solid var(--fg-08);border-radius:16px;padding:24px;width:min(420px,100%);box-shadow:var(--card-highlight),0 32px 64px -24px #00000080}.modal-head{display:flex;align-items:center;justify-content:space-between;margin-bottom:18px}.modal-title{font-family:var(--display);font-weight:700;font-size:1.15rem}.modal-close{background:var(--fg-08)}.modal-field{display:flex;flex-direction:column;gap:6px;margin-bottom:16px}.modal-label{font-family:var(--mono);font-size:.68rem;letter-spacing:.06em;text-transform:uppercase;color:var(--fg-45)}.modal-input{background:var(--fg-08);border:1px solid var(--fg-12);border-radius:9px;padding:9px 12px;color:var(--fg);font-family:var(--body);font-size:.9rem;color-scheme:dark}.modal-input:focus{outline:none;border-color:var(--orange)}.modal-row{display:flex;gap:12px}.modal-row>.modal-field{flex:1}.modal-cal-picker{display:flex;gap:8px;flex-wrap:wrap}.modal-cal-pill{display:flex;align-items:center;gap:6px;padding:7px 12px;border-radius:100px;border:1px solid var(--fg-12);background:var(--fg-08);color:var(--fg-70);font-size:.82rem;font-weight:600;transition:background .15s ease,border-color .15s ease,color .15s ease}.modal-cal-dot{width:8px;height:8px;border-radius:100px;flex-shrink:0}.modal-allday{display:flex;align-items:center;gap:10px;margin-bottom:16px;font-size:.85rem;font-weight:500}.modal-error{color:var(--danger);font-size:.8rem;margin:-6px 0 14px}.modal-days-picker{display:flex;gap:6px}.modal-day-pill{width:34px;height:34px;border-radius:100px;border:1px solid var(--fg-12);background:var(--fg-08);color:var(--fg-70);font-family:var(--mono);font-size:.72rem;font-weight:700;transition:background .15s ease,border-color .15s ease,color .15s ease}.modal-day-pill:hover{background:var(--fg-12)}.modal-day-pill.active{background:var(--orange);border-color:var(--orange);color:var(--ink)}.modal-actions{display:flex;gap:10px;margin-top:4px}.modal-delete{flex:none;margin-right:auto;background:none;border:1px solid rgba(229,72,77,.3);color:var(--danger);border-radius:100px;padding:11px 16px;font-weight:600;font-size:.86rem;transition:background .15s ease}.modal-delete:hover{background:#e5484d1f}.modal-cancel{flex:1;background:none;border:1px solid var(--fg-12);color:var(--fg-70);border-radius:100px;padding:11px 0;font-weight:600;font-size:.86rem;transition:background .15s ease,color .15s ease}.modal-cancel:hover{background:var(--fg-08);color:var(--fg)}.modal-submit{flex:1.4;background:var(--orange);color:var(--ink);border:none;border-radius:100px;padding:11px 0;font-weight:700;font-size:.86rem;transition:background .15s ease,transform .1s ease}.modal-submit:hover{background:var(--orange-light)}.modal-submit:active{transform:scale(.98)}.notif-overlay{position:fixed;top:0;right:0;bottom:0;left:0;z-index:90}.notif-panel{position:fixed;top:0;right:0;bottom:0;width:min(380px,92vw);background:var(--surface-raised);border-left:1px solid var(--fg-08);box-shadow:-24px 0 48px -24px #00000080;display:flex;flex-direction:column;z-index:91;animation:notif-in .22s cubic-bezier(.16,1,.3,1)}@keyframes notif-in{0%{transform:translate(24px);opacity:0}to{transform:none;opacity:1}}.notif-head{display:flex;align-items:center;justify-content:space-between;padding:20px 20px 16px;border-bottom:1px solid var(--fg-08);flex-shrink:0}.notif-title{font-family:var(--display);font-weight:700;font-size:1.1rem;display:flex;align-items:center;gap:8px}.notif-count{font-family:var(--mono);font-size:.68rem;color:var(--accent-text);background:#ff7a1a24;padding:2px 8px;border-radius:100px}.notif-list{flex:1;overflow-y:auto;padding:8px 12px}.notif-item{display:flex;align-items:flex-start;gap:12px;padding:12px 8px;border-radius:10px;transition:background .15s ease}.notif-item:hover{background:var(--fg-08)}.notif-avatar{width:38px;height:38px;border-radius:100px;display:flex;align-items:center;justify-content:center;font-family:var(--display);font-weight:700;font-size:.8rem;color:var(--ink);flex-shrink:0}.notif-body{flex:1;min-width:0}.notif-text{font-size:.86rem;line-height:1.4}.notif-text strong{font-weight:700}.notif-time{font-family:var(--mono);font-size:.68rem;color:var(--fg-45);margin-top:3px}.notif-cta{flex-shrink:0;background:var(--fg-08);border:1px solid var(--fg-12);color:var(--fg);font-weight:600;font-size:.76rem;padding:7px 12px;border-radius:100px;transition:background .15s ease,color .15s ease,border-color .15s ease}.notif-cta:hover{background:#ff7a1a24;border-color:#ff7a1a4d;color:var(--accent-text)}.notif-cta.is-done{background:none;border-color:var(--fg-12);color:var(--fg-45);cursor:default}.notif-panel::-webkit-scrollbar,.notif-list::-webkit-scrollbar{width:8px}.notif-list::-webkit-scrollbar-thumb{background:var(--fg-12);border-radius:100px}.notif-list::-webkit-scrollbar-track{background:transparent}@media (max-width: 480px){.notif-panel{width:100%}}.courses-view{display:flex;flex-direction:column;flex:1;min-height:0}.courses-header{display:flex;align-items:center;justify-content:space-between;padding:4px 0 20px;flex-shrink:0}.courses-title{font-family:var(--display);font-weight:700;font-size:1.4rem;margin:0}.courses-header__title{display:flex;align-items:center;gap:12px}.gpa-badge{font-family:var(--mono);font-size:.76rem;font-weight:600;color:var(--accent-text);background:#ff7a1a1f;border:1px solid rgba(255,122,26,.25);padding:4px 10px;border-radius:100px}.courses-body{flex:1;min-height:0;display:grid;grid-template-columns:280px 1fr;gap:20px}.course-list{display:flex;flex-direction:column;gap:8px;overflow-y:auto;padding-right:4px}.course-card{display:flex;background:var(--surface-raised);border:1px solid var(--fg-08);border-radius:12px;transition:background .15s ease,border-color .15s ease;overflow:hidden}.course-card:hover{background:var(--surface-inset)}.course-card.active{border-color:var(--course-color);background:color-mix(in srgb,var(--course-color) 10%,var(--surface-raised))}.course-card__select{flex:1;min-width:0;display:flex;align-items:center;gap:10px;padding:12px 14px;background:none;border:none;color:inherit;font:inherit;text-align:left;cursor:pointer}.course-card__dot{width:10px;height:10px;border-radius:100px;background:var(--course-color);flex-shrink:0}.course-card__info{flex:1;min-width:0;display:flex;flex-direction:column;gap:2px}.course-card__name{font-size:.92rem;font-weight:700}.course-card__meta{font-size:.72rem;color:var(--fg-45);white-space:nowrap;overflow:hidden;text-overflow:ellipsis}.course-card__count{font-family:var(--mono);font-size:.7rem;color:var(--fg-45);background:var(--fg-08);padding:3px 8px;border-radius:100px;flex-shrink:0}.assignments-panel{background:var(--surface-raised);border:1px solid var(--fg-08);border-radius:12px;padding:20px;overflow-y:auto;display:flex;flex-direction:column;min-height:0}.assignments-panel__head{display:flex;align-items:flex-start;justify-content:space-between;margin-bottom:18px;flex-shrink:0;gap:12px}.assignments-panel__course{font-family:var(--display);font-weight:700;font-size:1.1rem}.assignments-panel__meta{font-size:.78rem;color:var(--fg-45);margin-top:4px}.assignments-panel__grade{color:var(--fg-70);font-weight:700}.assignments-panel__actions{display:flex;align-items:center;gap:8px;flex-shrink:0}.icon-btn-sm--danger:hover{background:#e5484d1f;color:var(--danger)}.add-assignment-btn{display:flex;align-items:center;gap:6px;width:auto;padding:8px 14px;flex:none}.assignment-list{display:flex;flex-direction:column;gap:6px}.assignment-row{display:flex;align-items:flex-start;gap:12px;padding:12px 8px;border-radius:10px;transition:background .15s ease}.assignment-row:hover{background:var(--fg-08)}.assignment-row .cal-check{margin-top:2px}.assignment-row__body{flex:1;min-width:0;display:flex;flex-direction:column;gap:3px;background:none;border:none;padding:0;color:inherit;font:inherit;text-align:left;cursor:pointer}.assignment-row__title{font-size:.9rem;font-weight:600}.assignment-row.is-done .assignment-row__title{opacity:.55;text-decoration:line-through}.assignment-row__desc{font-size:.78rem;color:var(--fg-45);line-height:1.4}.assignment-row__due{display:flex;flex-direction:column;align-items:flex-end;gap:3px;flex-shrink:0}.assignment-row__date{font-family:var(--mono);font-size:.74rem;color:var(--fg-45)}.assignment-row__date.is-overdue{color:var(--danger)}.assignment-row__points{font-family:var(--mono);font-size:.68rem;color:var(--fg-45)}.assignment-row__link{align-self:center;flex-shrink:0}.course-color-swatch{width:28px;height:28px;border-radius:100px;border:2px solid transparent;outline:2px solid transparent;outline-offset:2px;transition:outline-color .15s ease,transform .1s ease}.course-color-swatch:hover{transform:scale(1.08)}.course-color-swatch[data-active=true]{outline-color:currentColor;border-color:var(--surface-raised)}.modal-title-sub{font-weight:500;color:var(--fg-45);font-size:.9rem}.modal-textarea{resize:vertical;font-family:var(--body);min-height:64px}@media (max-width: 720px){.courses-body{grid-template-columns:1fr}}.today-view{flex:1;min-height:0;overflow-y:auto;padding-bottom:4px}.today-hero{margin-bottom:28px}.today-hero__eyebrow{font-family:var(--mono);font-size:.8rem;color:var(--accent-text);margin:0 0 6px}.today-hero__title{font-family:var(--display);font-weight:700;font-size:1.8rem;margin:0 0 18px;letter-spacing:-.01em}.today-stats{display:flex;gap:12px}.today-stat{display:flex;flex-direction:column;gap:2px;background:var(--surface-raised);border:1px solid var(--fg-08);border-radius:12px;padding:12px 18px;min-width:96px}.today-stat__value{font-family:var(--display);font-weight:700;font-size:1.5rem;font-variant-numeric:tabular-nums}.today-stat__label{font-family:var(--mono);font-size:.68rem;color:var(--fg-45);text-transform:uppercase;letter-spacing:.04em}.today-columns{display:grid;grid-template-columns:1fr 1fr;gap:24px}.today-col__title{font-family:var(--display);font-weight:700;font-size:.95rem;margin:0 0 12px;color:var(--fg-70)}@media (max-width: 860px){.today-columns{grid-template-columns:1fr}}.undo-toast{position:fixed;bottom:28px;left:50%;transform:translate(-50%);display:flex;align-items:center;gap:14px;background:var(--surface-inset);border:1px solid var(--fg-12);border-radius:100px;padding:12px 12px 12px 18px;box-shadow:var(--card-highlight),0 24px 48px -16px #00000080;font-size:.86rem;z-index:95;animation:undo-in .2s cubic-bezier(.16,1,.3,1)}@keyframes undo-in{0%{transform:translate(-50%,12px);opacity:0}to{transform:translate(-50%);opacity:1}}.undo-toast__action{background:none;border:none;color:var(--accent-text);font-weight:700;font-size:.86rem}.undo-toast__close{display:flex;align-items:center;justify-content:center;width:24px;height:24px;border-radius:100px;background:none;border:none;color:var(--fg-45)}.undo-toast__close:hover{background:var(--fg-08);color:var(--fg)}[draggable=true]{cursor:grab}[draggable=true]:active{cursor:grabbing}.day-track,.allday-cell{transition:background-color .12s ease}@media (prefers-reduced-motion: reduce){*{transition:none!important;animation:none!important}}@media (max-width: 920px){.app{grid-template-columns:1fr}.sidebar{display:none}}
