@font-face{font-family:MangoGrade Nunito Sans;font-style:normal;font-weight:200 1000;font-display:swap;src:url(/assets/fonts/nunito-sans-latin-wght-normal.b25b1daf33b52fa9.woff2) format("woff2")}@font-face{font-family:MangoGrade Nunito Sans;font-style:italic;font-weight:200 1000;font-display:swap;src:url(/assets/fonts/nunito-sans-latin-wght-italic.13755d26e4700a9d.woff2) format("woff2")}@font-face{font-family:MangoGrade Nunito;font-style:normal;font-weight:200 1000;font-display:swap;src:url(/assets/fonts/nunito-latin-wght-normal.24049eb07de61e14.woff2) format("woff2")}@font-face{font-family:MangoGrade Nunito;font-style:italic;font-weight:200 1000;font-display:swap;src:url(/assets/fonts/nunito-latin-wght-italic.16948738e75dcb7e.woff2) format("woff2")}:root{--palette-hue: 25;--palette-secondary-hue: 47;--palette-saturation: 82%;--logo-hue-shift: 0deg;--font-body: "MangoGrade Nunito Sans", "Avenir Next", "Segoe UI", ui-sans-serif, system-ui, sans-serif;--font-display: "MangoGrade Nunito", ui-rounded, "SF Pro Rounded", "Avenir Next", sans-serif;--ink: hsl(var(--palette-hue) 30% 17%);--muted: hsl(var(--palette-hue) 9% 45%);--paper: hsl(var(--palette-hue) 22% 99%);--cream: hsl(var(--palette-hue) 24% 96%);--line: hsl(var(--palette-hue) 15% 88%);--green: hsl(var(--palette-hue) var(--palette-saturation) 34%);--green-dark: hsl(var(--palette-hue) var(--palette-saturation) 24%);--lime: hsl(var(--palette-secondary-hue) 58% 65%);--lime-soft: hsl(var(--palette-secondary-hue) 55% 90%);--orange: hsl(var(--palette-secondary-hue) 76% 53%);--red: #bb5147;--white: #fff;--grade-a: #2f9b63;--grade-b: #477fd1;--grade-c: #c39a22;--grade-d: #df7c32;--grade-e: #cf4c50;--header-bg: hsla(var(--palette-hue) 22% 99% / .88);--card-bg: hsla(var(--palette-hue) 15% 100% / .93);--preview-card-bg: hsl(var(--palette-hue) 15% 100%);--input-bg: hsl(var(--palette-hue) 22% 100%);--table-head: hsl(var(--palette-hue) 22% 98%);--row-line: hsl(var(--palette-hue) 13% 93%);--tag-bg: hsl(var(--palette-secondary-hue) 34% 94%);--rail-note-bg: hsl(var(--palette-secondary-hue) 38% 89%);--simulated-bg: hsl(var(--palette-secondary-hue) 28% 99%);--bar-track: hsl(var(--palette-hue) 12% 94%);--hover-bg: hsla(var(--palette-hue) 15% 100% / .65);--callout-bg: hsl(var(--palette-secondary-hue) 43% 96%);--callout-line: hsl(var(--palette-secondary-hue) 39% 87%);--hero-bg: hsl(var(--palette-hue) 34% 17%);--hero-text: #fff;--button-text: #fff;--hero-muted: hsl(var(--palette-hue) 18% 80%);--meter-track: hsl(var(--palette-hue) 22% 31%);--toast-bg: var(--hero-bg);--toast-text: #fff;--shadow: 0 4px 12px -2px rgba(0, 0, 0, .08), 0 1px 3px rgba(0, 0, 0, .04);--radius: 22px}html[data-theme=dark]{color-scheme:dark;--ink: hsl(var(--palette-hue) 18% 93%);--muted: hsl(var(--palette-hue) 12% 69%);--paper: hsl(var(--palette-hue) 22% 8%);--cream: hsl(var(--palette-hue) 21% 13%);--line: hsl(var(--palette-hue) 15% 25%);--green: hsl(var(--palette-hue) var(--palette-saturation) 72%);--green-dark: hsl(var(--palette-hue) var(--palette-saturation) 81%);--lime: hsl(var(--palette-secondary-hue) 68% 75%);--lime-soft: hsl(var(--palette-secondary-hue) 28% 22%);--orange: hsl(var(--palette-secondary-hue) 75% 68%);--red: #f18d86;--white: hsl(var(--palette-hue) 18% 16%);--grade-a: #63d894;--grade-b: #79a9f5;--grade-c: #f1c95a;--grade-d: #f6a15c;--grade-e: #ff888b;--header-bg: hsla(var(--palette-hue) 22% 8% / .88);--card-bg: hsl(var(--palette-hue) 20% 15%);--preview-card-bg: var(--card-bg);--input-bg: hsl(var(--palette-hue) 24% 12%);--table-head: hsl(var(--palette-hue) 22% 12%);--row-line: hsl(var(--palette-hue) 16% 21%);--tag-bg: hsl(var(--palette-secondary-hue) 24% 23%);--rail-note-bg: hsl(var(--palette-secondary-hue) 23% 21%);--simulated-bg: hsl(var(--palette-secondary-hue) 21% 16%);--bar-track: hsl(var(--palette-hue) 19% 22%);--hover-bg: hsla(var(--palette-hue) 18% 95% / .06);--callout-bg: hsl(var(--palette-secondary-hue) 22% 20%);--callout-line: hsl(var(--palette-secondary-hue) 22% 31%);--hero-bg: hsl(var(--palette-hue) 32% 6%);--hero-text: hsl(var(--palette-hue) 20% 96%);--button-text: hsl(var(--palette-hue) 36% 12%);--hero-muted: hsl(var(--palette-hue) 20% 78%);--meter-track: hsl(var(--palette-hue) 23% 20%);--toast-bg: hsl(var(--palette-secondary-hue) 34% 93%);--toast-text: hsl(var(--palette-hue) 29% 11%);--shadow: 0 4px 12px -2px rgba(0, 0, 0, .45), 0 0 0 1px var(--line)}@media(prefers-color-scheme:dark){html:not([data-theme=light]){color-scheme:dark;--ink: hsl(var(--palette-hue) 18% 93%);--muted: hsl(var(--palette-hue) 12% 69%);--paper: hsl(var(--palette-hue) 22% 8%);--cream: hsl(var(--palette-hue) 21% 13%);--line: hsl(var(--palette-hue) 15% 25%);--green: hsl(var(--palette-hue) var(--palette-saturation) 72%);--green-dark: hsl(var(--palette-hue) var(--palette-saturation) 81%);--lime: hsl(var(--palette-secondary-hue) 68% 75%);--lime-soft: hsl(var(--palette-secondary-hue) 28% 22%);--orange: hsl(var(--palette-secondary-hue) 75% 68%);--red: #f18d86;--white: hsl(var(--palette-hue) 18% 16%);--grade-a: #63d894;--grade-b: #79a9f5;--grade-c: #f1c95a;--grade-d: #f6a15c;--grade-e: #ff888b;--header-bg: hsla(var(--palette-hue) 22% 8% / .88);--card-bg: hsl(var(--palette-hue) 20% 15%);--preview-card-bg: var(--card-bg);--input-bg: hsl(var(--palette-hue) 24% 12%);--table-head: hsl(var(--palette-hue) 22% 12%);--row-line: hsl(var(--palette-hue) 16% 21%);--tag-bg: hsl(var(--palette-secondary-hue) 24% 23%);--rail-note-bg: hsl(var(--palette-secondary-hue) 23% 21%);--simulated-bg: hsl(var(--palette-secondary-hue) 21% 16%);--bar-track: hsl(var(--palette-hue) 19% 22%);--hover-bg: hsla(var(--palette-hue) 18% 95% / .06);--callout-bg: hsl(var(--palette-secondary-hue) 22% 20%);--callout-line: hsl(var(--palette-secondary-hue) 22% 31%);--hero-bg: hsl(var(--palette-hue) 32% 6%);--hero-text: hsl(var(--palette-hue) 20% 96%);--button-text: hsl(var(--palette-hue) 36% 12%);--hero-muted: hsl(var(--palette-hue) 20% 78%);--meter-track: hsl(var(--palette-hue) 23% 20%);--toast-bg: hsl(var(--palette-secondary-hue) 34% 93%);--toast-text: hsl(var(--palette-hue) 29% 11%);--shadow: 0 4px 12px -2px rgba(0, 0, 0, .45), 0 0 0 1px var(--line)}}*{box-sizing:border-box}html{min-height:100%;color-scheme:light dark;-webkit-text-size-adjust:100%}html[data-theme=dark]{color-scheme:dark}html[data-theme=light]{color-scheme:light}body{margin:0;min-height:100vh;min-height:100dvh;overflow-x:hidden;color:var(--ink);background:var(--paper);font-family:var(--font-body);transition:background-color .3s ease,color .3s ease}button,input,select{font:inherit}button{color:inherit}.hidden{display:none!important}.sr-only{position:absolute!important;width:1px!important;height:1px!important;padding:0!important;margin:-1px!important;overflow:hidden!important;clip:rect(0,0,0,0)!important;white-space:nowrap!important;border:0!important}.grain{display:none}.site-header{height:calc(70px + env(safe-area-inset-top));padding:env(safe-area-inset-top) 11px 0;display:flex;align-items:center;justify-content:space-between;border-bottom:1px solid var(--line);background:var(--header-bg);backdrop-filter:blur(18px);position:sticky;top:0;z-index:10}.brand{display:flex;gap:4px;align-items:center;color:var(--ink);text-decoration:none;font-family:var(--font-display);font-weight:700;letter-spacing:-.055em;font-size:24px;line-height:1}.brand-mark{display:grid;place-items:center;width:48px;height:48px;flex:0 0 48px;transition:transform .25s ease}.brand:hover .brand-mark{transform:rotate(-4deg) scale(1.04)}.brand-mark img{width:100%;height:100%;object-fit:contain}html[data-palette]:not([data-palette=mango]) .brand-mark img{filter:hue-rotate(var(--logo-hue-shift))}.brand-word{color:var(--ink);font-weight:700;letter-spacing:-.03em}.brand-leaf{fill:#2b7a52;stroke:#195f3c;stroke-width:1.4;stroke-linecap:round;stroke-linejoin:round}.brand-rind{fill:#2b7a52;stroke:#195f3c;stroke-width:1.4}.brand-flesh{fill:#b7db74;stroke:#195f3c;stroke-width:1.1}.brand-core{fill:#195f3c}.brand-seeds ellipse{fill:#195f3c}.brand-shine{fill:none;stroke:#f9fff1;stroke-width:1.4;stroke-linecap:round;opacity:.78}.header-actions{display:flex;gap:0;align-items:center}.text-button,.icon-button{border:0;background:transparent;cursor:pointer}.text-button{font-weight:600;font-size:13px}.icon-button{width:38px;height:38px;border:1px solid var(--line);border-radius:11px;display:grid;place-items:center;background:var(--white)}.icon-button svg{width:18px;fill:none;stroke:currentColor;stroke-width:1.8}.icon-button.is-spinning{animation:spin 1s linear infinite;pointer-events:none}.header-actions .icon-button{border-color:transparent;background:transparent}.header-actions .icon-button:hover{color:var(--green)}.theme-picker{position:relative}.theme-menu{position:absolute;top:calc(100% + 9px);right:-8px;z-index:20;width:min(250px,calc(100vw - 24px));padding:8px;border:1px solid var(--line);border-radius:16px;background:var(--paper);box-shadow:0 16px 38px #0000002e}.theme-menu[hidden]{display:none}.theme-menu-title{display:block;padding:7px 10px 9px;color:var(--muted);font-size:11px;font-weight:800;letter-spacing:.04em;text-transform:uppercase}.theme-menu button{width:100%;min-height:54px;display:grid;grid-template-columns:32px minmax(0,1fr) 16px;align-items:center;gap:9px;padding:7px 9px;border:0;border-radius:10px;color:var(--ink);background:transparent;text-align:left;cursor:pointer}.theme-menu button:hover,.theme-menu button:focus-visible{background:var(--hover-bg)}.theme-menu button:focus-visible{outline:2px solid var(--green);outline-offset:-2px}.theme-menu button[aria-pressed=true]{background:var(--lime-soft)}.theme-menu-icon{width:30px;height:30px;display:grid;place-items:center;border-radius:9px;color:var(--green-dark);background:var(--cream);font-size:19px;line-height:1}.theme-menu-icon svg{width:18px;height:18px;fill:none;stroke:currentColor;stroke-width:1.8;stroke-linecap:round;stroke-linejoin:round}.theme-menu button strong,.theme-menu button small{display:block}.theme-menu button strong{font-size:12px;font-weight:800}.theme-menu button small{margin-top:2px;color:var(--muted);font-size:10px}.theme-menu-check{color:var(--green-dark);font-size:16px;font-weight:800;opacity:0}.theme-menu button[aria-pressed=true] .theme-menu-check{opacity:1}.outline-button.is-spinning{opacity:.7;pointer-events:none}@keyframes spin{0%{transform:rotate(0)}to{transform:rotate(360deg)}}.login-view{min-height:calc(100vh - 70px);min-height:calc(100dvh - 70px - env(safe-area-inset-top));display:grid;grid-template-columns:minmax(0,1fr) minmax(380px,440px);align-items:center;max-width:1120px;padding:64px 40px 88px;margin:auto;gap:80px;position:relative}.login-view:before,.login-view:after{display:none}.landing-mango-field{position:fixed;inset:calc(70px + env(safe-area-inset-top)) 0 0;z-index:0;overflow:hidden;pointer-events:none}.login-copy,.login-card-wrap{position:relative;z-index:1}.landing-mango{position:absolute;top:0;left:0;object-fit:contain;opacity:0;filter:hue-rotate(var(--logo-hue-shift));will-change:transform,opacity}.eyebrow{text-transform:uppercase;letter-spacing:.17em;color:var(--green);font-weight:700;font-size:11px}.course-meta{color:var(--green);font-weight:700;font-size:13px;margin:4px 0 2px}.course-meta:empty{display:none}.rail-term-badge{display:block;margin-top:3px;font-size:11px;color:var(--muted);font-weight:600}.palette-dialog-kicker{font-size:12px;color:var(--muted);margin:0 0 8px;font-weight:600}.login-copy h1{max-width:650px;margin:14px 0 18px;font-family:var(--font-display);font-size:clamp(44px,5vw,62px);font-weight:700;line-height:1.04;letter-spacing:-.045em}.login-copy h1 span{color:var(--green)}.login-copy h1 em{color:var(--green);font-style:italic}.login-copy{min-width:0}.login-copy>p{max-width:560px;margin:0;color:var(--muted);font-size:16px;line-height:1.65}.login-product-preview{max-width:540px;margin-top:34px}.login-preview-head,.login-preview-course,.login-preview-summary{display:flex;align-items:center;justify-content:space-between;gap:18px}.login-preview-head{padding-bottom:14px;border-bottom:1px solid var(--line);color:var(--muted);font-size:11px;font-weight:700;letter-spacing:.08em;text-transform:uppercase}.login-preview-head small{font-size:10px;font-weight:600;letter-spacing:0;text-transform:none}.login-preview-stack{height:236px;position:relative;perspective:900px;perspective-origin:50% 42%;transform-style:preserve-3d;cursor:pointer}.login-preview-slide{position:absolute;inset:0 62px auto;min-height:210px;display:flex;flex-direction:column;align-items:stretch;padding:20px 20px 16px;border:1px solid var(--line);border-radius:17px;color:var(--ink);background:var(--preview-card-bg);text-align:left;box-shadow:0 20px 44px -24px #00000080,0 6px 16px #00000014;transform-origin:50% 100%;cursor:pointer;transition:transform .64s cubic-bezier(.22,.75,.25,1),filter .64s cubic-bezier(.32,0,.5,1),box-shadow .64s cubic-bezier(.22,.75,.25,1)}.login-preview-slide.active{z-index:3;opacity:1;filter:none;transform:translateZ(0) rotate(0) scale(1)}.login-preview-slide.next{z-index:2;opacity:1;filter:saturate(.62) brightness(.78);transform:translate3d(50px,10px,-24px) rotate(4deg) scale(.96);cursor:pointer}.login-preview-slide.previous{z-index:1;opacity:1;filter:saturate(.42) brightness(.62);transform:translate3d(-50px,14px,-45px) rotate(-4deg) scale(.93);cursor:pointer}.login-product-preview.is-carousel{position:relative;z-index:5}.login-product-preview.is-carousel .login-preview-slide{z-index:var(--carousel-layer);filter:saturate(var(--carousel-saturation)) brightness(var(--carousel-brightness));transform:translate3d(var(--carousel-x),var(--carousel-y),var(--carousel-z)) rotateY(var(--carousel-rotation)) scale(var(--carousel-scale));transform-origin:50% 50%;transition-duration:1.2s;transition-timing-function:cubic-bezier(.2,.68,.2,1);cursor:pointer}.login-product-preview.is-carousel .login-preview-slide.active{pointer-events:none}@media(hover:hover){.login-product-preview:hover .login-preview-slide.active{transform:translate3d(0,-3px,0) rotate(0) scale(1)}.login-product-preview:hover .login-preview-slide.next{transform:translate3d(72px,12px,-24px) rotate(7deg) scale(.95)}.login-product-preview:hover .login-preview-slide.previous{transform:translate3d(-72px,16px,-45px) rotate(-7deg) scale(.92)}.login-product-preview .login-preview-slide.active:hover{transform:translate3d(0,-8px,0) rotate(0) scale(1);box-shadow:0 26px 52px -24px #00000094,0 9px 20px #00000017}.login-product-preview .login-preview-slide.next:hover{transform:translate3d(72px,5px,-24px) rotate(7deg) scale(.95);box-shadow:0 24px 48px -24px #0000008a,0 8px 18px #00000017}.login-product-preview .login-preview-slide.previous:hover{transform:translate3d(-72px,9px,-45px) rotate(-7deg) scale(.92);box-shadow:0 24px 48px -24px #00000080,0 8px 18px #00000014}.login-product-preview.is-carousel:hover .login-preview-slide{z-index:var(--carousel-layer);filter:saturate(var(--carousel-saturation)) brightness(var(--carousel-brightness));transform:translate3d(var(--carousel-x),var(--carousel-y),var(--carousel-z)) rotateY(var(--carousel-rotation)) scale(var(--carousel-scale));transform-origin:50% 50%;transition-duration:1.2s;transition-timing-function:cubic-bezier(.2,.68,.2,1);cursor:pointer}.login-product-preview.is-carousel:hover .login-preview-slide:hover{transform:translate3d(var(--carousel-x),calc(var(--carousel-y) - 5px),var(--carousel-z)) rotateY(var(--carousel-rotation)) scale(var(--carousel-scale));box-shadow:0 28px 56px -24px #0000009e,0 10px 22px #0000001a}}.login-product-preview.is-shuffling .login-preview-slide{transition:none}html[data-theme=light] .login-preview-slide{box-shadow:0 12px 28px -22px #1b273929,0 4px 12px #1b27390a}html[data-theme=light] .login-preview-slide.active{box-shadow:0 18px 38px -24px #1b273940,0 7px 18px #1b273914}html[data-theme=light] .login-preview-slide.next{filter:saturate(.8) brightness(.97)}html[data-theme=light] .login-preview-slide.previous{filter:saturate(.7) brightness(.94)}html[data-theme=light] .login-product-preview.is-carousel .login-preview-slide:not(.active),html[data-theme=light] .login-product-preview.is-carousel:hover .login-preview-slide:not(.active){filter:saturate(.8) brightness(.96)}html[data-theme=light] .login-product-preview.is-carousel .login-preview-slide.active{filter:none}@media(hover:hover){html[data-theme=light] .login-product-preview .login-preview-slide:hover{box-shadow:0 18px 34px -22px #1b273957,0 7px 17px #1b273917}}.login-preview-course{padding:18px 0 14px}.login-preview-course>div{min-width:0;display:flex;flex-direction:column;gap:3px}.login-preview-course strong{overflow:hidden;font-size:15px;text-overflow:ellipsis;white-space:nowrap}.login-preview-course small{color:var(--muted);font-size:12px}.login-preview-course>span{flex:0 0 auto;font-size:16px;font-weight:700}.login-preview-course>span b{margin-right:5px;font-family:var(--font-display);font-size:24px}.login-preview-meter{height:5px;overflow:hidden;border-radius:99px;background:var(--bar-track)}.login-preview-meter i{display:block;height:100%;border-radius:inherit;background:var(--grade-color,var(--grade-a));transition:width .65s cubic-bezier(.22,1,.36,1)}.login-preview-summary{padding-top:12px;color:var(--muted);font-size:12px}.login-preview-summary strong{color:var(--ink);font-size:12px}.login-preview-controls{display:none}.login-preview-dots{display:flex;align-items:center;justify-content:center;gap:7px}.login-preview-dots button{width:6px;height:6px;padding:0;border:0;border-radius:99px;background:var(--line);cursor:pointer;transition:width .22s ease,background-color .22s ease}.login-preview-dots button.active{width:18px;background:var(--green)}.trust-row{display:flex;gap:38px;margin-top:42px}.trust-row>div{display:grid;grid-template-columns:34px auto;grid-template-rows:auto auto;column-gap:10px;align-items:center;animation:mango-rise .65s cubic-bezier(.2,.75,.25,1) both}.trust-row>div:nth-child(2){animation-delay:.1s}.trust-icon{grid-row:1/3;width:32px;height:32px;border-radius:9px;background:var(--lime-soft);display:grid;place-items:center;color:var(--green)}.trust-row strong{font-size:13px}.trust-row small{color:var(--muted);font-size:12px;margin-top:2px}.login-card-wrap{position:relative}.fruit-doodle{position:absolute;color:var(--orange);font-size:48px;right:-25px;top:-38px;transform:rotate(12deg);animation:mango-bob 4.5s ease-in-out infinite}.login-card{position:relative;overflow:hidden;padding:34px;border:1px solid var(--line);border-radius:18px;background:var(--card-bg);box-shadow:0 4px 14px #0000000e}.login-card h2{margin:0 0 7px;font-family:var(--font-display);font-size:27px;letter-spacing:-.02em}.login-card>p:not(.microcopy){margin:0 0 26px;color:var(--muted);font-size:14px}.login-card label{display:block;font-size:12px;font-weight:700;margin:19px 0 8px}.remember-row{display:flex!important;align-items:center;gap:9px;margin:16px 0 0!important;cursor:pointer}.remember-row input{width:16px;height:16px;flex:0 0 16px;margin:0;accent-color:var(--green);cursor:pointer}.remember-row>span{color:var(--ink);font-size:12px;font-weight:600}.input-wrap{border:1px solid var(--line);border-radius:10px;height:52px;display:flex;align-items:center;padding:0 14px;gap:10px;background:var(--input-bg);transition:.2s}.input-wrap:focus-within{border-color:var(--green);box-shadow:0 0 0 3px #2b7a521a}.input-wrap>span{width:18px;height:18px;flex:0 0 18px;display:grid;place-items:center;color:#89a093}.input-wrap>span svg{width:18px;height:18px;fill:none;stroke:currentColor;stroke-width:1.8;stroke-linecap:round;stroke-linejoin:round}.input-wrap input{border:0;outline:0;background:transparent;flex:1;min-width:0}.input-wrap input:focus-visible{outline:none}.input-wrap input:-webkit-autofill,.input-wrap input:-webkit-autofill:hover,.input-wrap input:-webkit-autofill:focus{-webkit-box-shadow:none;box-shadow:none;background-color:transparent;-webkit-background-clip:text;background-clip:text;-webkit-text-fill-color:var(--ink);caret-color:var(--ink);transition:background-color 9999s ease-out}.input-wrap button{width:32px;height:32px;flex:0 0 32px;display:grid;place-items:center;padding:0;border:0;background:none;cursor:pointer;color:var(--green)}.input-wrap button svg{width:19px;height:19px;fill:none;stroke:currentColor;stroke-width:1.8;stroke-linecap:round;stroke-linejoin:round}.primary-button{width:100%;height:52px;border:0;border-radius:10px;color:var(--button-text);background:var(--green);margin-top:24px;padding:0 18px;display:flex;align-items:center;justify-content:space-between;font-weight:700;cursor:pointer;transition:background-color .18s ease,transform .18s ease,box-shadow .18s ease;box-shadow:0 1px 3px #00000014,0 1px 2px #0000000a}.primary-button:hover{background:var(--green-dark);transform:translateY(-1px);box-shadow:0 3px 8px -1px #0000001f,0 1px 3px #0000000f}.primary-button:disabled{opacity:.65;cursor:wait;transform:none;box-shadow:none}.district-picker{margin-top:10px}.district-picker-button{width:100%;min-height:52px;display:flex;align-items:center;justify-content:space-between;gap:12px;padding:8px 14px;border:1px solid var(--line);border-radius:10px;background:var(--input-bg);color:var(--ink);text-align:left;cursor:pointer}.district-picker-button>span:first-child{min-width:0;display:grid;gap:2px}.district-picker-button small{color:var(--muted);font-size:10px;font-weight:600}.district-picker-button strong{overflow:hidden;font-size:12px;font-weight:700;text-overflow:ellipsis;white-space:nowrap}.district-picker-button>span:last-child{color:var(--muted);font-size:18px;line-height:1}.district-picker-button:hover,.district-picker-button[aria-expanded=true]{border-color:var(--green)}.district-dialog-body{padding:16px 20px 20px}.district-dialog-body input{width:100%;height:42px;padding:0 12px;border:1px solid var(--line);border-radius:9px;background:var(--input-bg);color:var(--ink);font:inherit;font-size:13px}.district-results{margin:10px 2px 0;color:var(--muted);font-size:11px}.district-options{max-height:min(48dvh,350px);overflow-y:auto;margin-top:9px}.district-options button{width:100%;display:grid;gap:3px;padding:13px 12px;border:0;border-bottom:1px solid var(--row-line);border-radius:8px;background:transparent;color:var(--ink);font:inherit;font-size:13px;text-align:left;cursor:pointer}.district-option-title{display:flex;align-items:baseline;justify-content:space-between;gap:10px}.district-option-title b{flex:0 0 auto;color:var(--green);font-size:10px;font-weight:700}.district-options button small{color:var(--muted);font-size:11px}.district-options button:last-child{border-bottom:0}.district-options button[hidden],.district-empty[hidden]{display:none}.district-options button:hover,.district-options button:focus-visible,.district-options button[aria-pressed=true]{background:var(--hover-bg)}.district-empty{margin:10px;color:var(--muted);font-size:12px}.demo-button{width:100%;min-height:48px;margin-top:10px;padding:0 16px;border:1px solid var(--line);border-radius:10px;color:var(--ink);background:transparent;font-size:12px;font-weight:700;cursor:pointer}.demo-button:hover{border-color:var(--green);color:var(--green-dark);background:var(--hover-bg)}.install-hint{display:none;align-items:flex-start;gap:10px;margin:0 0 12px;padding:11px 12px;border:1px solid var(--callout-line);border-radius:10px;color:var(--muted);background:var(--callout-bg)}.install-hint.is-visible{display:flex}.install-hint-icon{display:grid;flex:0 0 25px;width:25px;height:25px;place-items:center;border-radius:8px;color:var(--green-dark);background:var(--lime-soft);font-weight:800}.install-hint p{min-width:0;display:flex;flex:1;flex-direction:column;gap:3px;margin:0;font-size:12px;line-height:1.45}.install-hint strong{color:var(--ink);font-size:13px}.install-hint-close{flex:0 0 28px;width:28px;height:28px;margin:-2px -3px 0 auto;padding:0;border:0;border-radius:8px;color:var(--muted);background:transparent;font-size:21px;line-height:1;cursor:pointer}.install-hint-close:hover{color:var(--ink);background:var(--hover-bg)}.microcopy{margin:15px 0 0;color:var(--muted);font-size:11px;line-height:1.5;text-align:left}.form-error{color:var(--red);font-size:12px;margin-top:12px;line-height:1.4;min-height:0}.service-notice{margin-top:14px;padding:12px 14px;border-radius:12px;border:1px solid var(--orange);background:color-mix(in srgb,var(--orange) 12%,var(--card-bg));color:var(--ink);font-size:12px;line-height:1.45;text-align:left}.service-notice strong{display:flex;align-items:center;gap:6px;color:var(--orange);font-size:12px;margin-bottom:4px}.service-notice p{margin:0;color:var(--muted);font-size:12px}.tool-maintenance-banner{display:flex;align-items:center;gap:16px;margin:12px 0 16px;padding:12px 18px;border:1px solid color-mix(in srgb,var(--orange) 35%,var(--line));border-radius:16px;background:color-mix(in srgb,var(--orange) 8%,var(--card-bg));box-shadow:0 4px 14px #0000000a}.tool-maintenance-banner .tool-maintenance-art{width:52px;height:52px;flex-shrink:0;filter:drop-shadow(0 2px 4px rgba(0,0,0,.08))}.tool-maintenance-copy{display:flex;flex-direction:column;gap:2px}.tool-maintenance-copy strong{font-size:13px;font-weight:800;color:var(--ink);letter-spacing:-.01em}.tool-maintenance-copy p{margin:0;font-size:12px;color:var(--muted);line-height:1.4}.app-view{display:grid;grid-template-columns:280px minmax(0,1fr);min-height:calc(100vh - 70px);min-height:calc(100dvh - 70px - env(safe-area-inset-top))}.course-rail{border-right:1px solid var(--line);background:var(--cream);padding:34px 20px;display:flex;flex-direction:column}.rail-heading{display:flex;align-items:center;justify-content:space-between;padding:0 6px 20px}.rail-heading h2{margin:5px 0 0;font-size:18px}.overview-nav{width:100%;display:grid;grid-template-columns:46px 1fr;gap:11px;align-items:center;margin:0 0 10px;padding:8px 13px;border:1px solid transparent;border-radius:14px;color:var(--muted);background:transparent;text-align:left;cursor:pointer;transition:color .16s ease,background-color .16s ease,border-color .16s ease}.overview-nav:hover,.overview-nav.active{color:var(--ink);background:var(--card-bg);border-color:var(--line)}.overview-nav-icon{width:46px;height:46px;display:grid;place-items:center;border-radius:13px;color:var(--green-dark);background:var(--lime-soft);font-size:20px}.overview-nav-icon svg{width:27px;height:27px;fill:none;stroke:currentColor;stroke-width:1.8;stroke-linecap:round;stroke-linejoin:round}.overview-nav strong,.overview-nav small{display:block}.overview-nav strong{font-size:12px}.overview-nav small{margin-top:3px;color:var(--muted);font-size:11px}.course-list{display:flex;flex-direction:column;gap:7px}.course-button{width:100%;min-width:0;text-align:left;border:1px solid transparent;background:transparent;border-radius:14px;padding:13px;display:grid;grid-template-columns:38px minmax(0,1fr) auto;gap:11px;align-items:center;cursor:pointer;transition:.18s}.course-button:hover{background:var(--hover-bg)}.course-button.active{background:var(--card-bg);border-color:var(--line);box-shadow:0 2px 8px #0000000d}.course-button>span{min-width:0;overflow:hidden}.course-period{color:var(--green-dark);font-size:12px;font-weight:700;text-align:center}.course-name{overflow:hidden}.course-grade{color:var(--ink);font-size:12px;font-weight:800;text-align:right;white-space:nowrap}.course-grade small{color:var(--muted);font-size:11px;font-weight:700}.course-icon{width:38px;height:38px;display:grid;place-items:center;border-radius:11px;color:var(--green-dark);background:var(--lime-soft);font-family:var(--font-display);font-weight:700}.course-button strong{display:block;font-size:12px;line-height:1.3;white-space:nowrap;overflow:hidden;text-overflow:ellipsis}.course-button small{display:block;color:var(--muted);font-size:11px;white-space:nowrap;overflow:hidden;text-overflow:ellipsis}.course-grade{min-width:0;max-width:4.2rem;display:flex;flex-direction:column;align-items:flex-end;overflow:hidden;text-align:right;white-space:nowrap;font-weight:700;font-size:13px;line-height:1}.course-grade strong{max-width:100%;overflow:hidden;text-overflow:ellipsis;font-size:14px;line-height:1}.course-grade small{max-width:100%;margin-top:4px;color:var(--muted);font-size:11px;font-weight:600}.rail-note{margin-top:auto;display:flex;gap:10px;padding:15px;border-radius:14px;background:var(--rail-note-bg);font-size:11px;line-height:1.55;color:var(--muted)}.rail-note p{margin:0}.rail-note strong{color:var(--ink)}.workspace{padding:20px clamp(20px,3.5vw,52px) 60px;max-width:1500px;width:100%;margin:0 auto;min-width:0}.overview-refresh-wrap{position:relative;display:flex;align-items:flex-end;flex:0 0 auto}.pass-outage-notice{position:absolute;right:0;bottom:calc(100% + 9px);z-index:30;width:min(238px,calc(100vw - 24px));display:grid;grid-template-columns:minmax(0,1fr) auto;align-items:center;gap:10px;margin:0;padding:10px;border:1px solid var(--line);border-radius:16px;color:var(--ink);background:var(--paper);box-shadow:0 16px 38px #0000002e}.pass-outage-notice:after{position:absolute;right:15px;bottom:-6px;width:10px;height:10px;border-right:1px solid var(--line);border-bottom:1px solid var(--line);background:var(--paper);content:"";transform:rotate(45deg)}.pass-outage-notice:not(.hidden){animation:palette-appear .24s cubic-bezier(.2,.75,.25,1) both}.pass-outage-notice-copy{min-width:0;display:grid;gap:3px}.pass-outage-notice-copy strong{color:var(--ink);font-size:12px;font-weight:800}.pass-outage-notice-copy p{margin:0;color:var(--muted);font-size:11px;line-height:1.4}.pass-outage-notice-action{min-height:36px;padding:0 13px;border:0;border-radius:10px;color:var(--button-text);background:var(--green);font:inherit;font-size:11px;font-weight:800;cursor:pointer;transition:background-color .16s ease,transform .16s ease}.pass-outage-notice-action:hover{background:var(--green-dark);transform:translateY(-1px)}.pass-outage-notice-action:focus-visible{outline:2px solid var(--green);outline-offset:2px}.overview-view{animation:mango-rise .6s cubic-bezier(.2,.75,.25,1) both}.overview-hero{display:flex;align-items:flex-end;justify-content:space-between;gap:20px;padding:0 0 18px}.overview-heading h1{margin:4px 0 0;font-family:var(--font-display);font-size:clamp(26px,3.5vw,34px);letter-spacing:-.03em;color:var(--ink)}.overview-mobile-copy{display:none}.overview-controls{display:flex;align-items:flex-end;gap:10px;flex-shrink:0}.view-toggle{height:40px;display:inline-flex;align-items:center;gap:2px;padding:3px;border:1px solid var(--line);border-radius:11px;background:var(--cream)}.view-toggle-button{width:36px;height:32px;display:grid;place-items:center;padding:0;border:0;border-radius:8px;color:var(--muted);background:transparent;cursor:pointer;transition:color .16s ease,background-color .16s ease,box-shadow .16s ease}.view-toggle-button svg{width:17px;height:17px;fill:none;stroke:currentColor;stroke-width:1.7;stroke-linecap:round;stroke-linejoin:round}.view-toggle-button:hover{color:var(--ink)}.view-toggle-button.active{color:var(--green-dark);background:var(--card-bg);box-shadow:0 1px 3px #00000014}.term-control{display:flex;flex-direction:column;gap:7px;min-width:178px}.term-control>span{color:var(--muted);font-size:11px;font-weight:800;letter-spacing:.1em;text-transform:uppercase}.term-control select{width:100%;height:40px;padding:0 30px 0 12px;border:1px solid var(--line);border-radius:10px;color:var(--ink);background:var(--card-bg);outline:0;font-size:11px;font-weight:700}.term-control select:focus{border-color:var(--green);box-shadow:0 0 0 3px #2b7a521a}.overview-panel{margin-top:0}.overview-class-panel{border:0;background:transparent;overflow:visible}.overview-class-panel .overview-class-list{margin-top:0}.overview-cards{display:grid;grid-template-columns:repeat(3,minmax(0,1fr));gap:14px}.grade-course-card{position:relative;min-width:0;min-height:210px;display:flex;flex-direction:column;align-items:stretch;padding:20px 20px 16px;border:1px solid var(--line);border-radius:17px;color:var(--ink);background:var(--card-bg);text-align:left;box-shadow:0 2px 6px #0000000a;cursor:pointer;transition:transform .18s ease,border-color .18s ease,box-shadow .18s ease,background-color .18s ease}.grade-course-card:hover{transform:translateY(-2px);border-color:color-mix(in srgb,var(--green) 40%,var(--line));box-shadow:0 8px 18px -4px #00000014}.grade-course-card.current-class{border-color:var(--line);box-shadow:0 0 0 1px color-mix(in srgb,var(--green) 30%,transparent),0 0 20px color-mix(in srgb,var(--green) 30%,transparent)}.grade-course-card:focus-visible,.view-toggle-button:focus-visible{outline:3px solid color-mix(in srgb,var(--green) 50%,transparent);outline-offset:2px}.grade-course-card-head{display:flex;align-items:center;min-width:0;padding-right:32px}.grade-course-card-heading{min-width:0}.grade-course-card-period{position:absolute;top:20px;right:19px;color:var(--muted);font-size:18px;font-weight:800;line-height:1}.grade-course-card-title{display:-webkit-box;max-height:2.5em;overflow:hidden;color:var(--ink);font-family:var(--font-display);font-size:14px;font-weight:800;line-height:1.25;text-overflow:ellipsis;-webkit-box-orient:vertical;-webkit-line-clamp:2}.grade-course-card-heading .grade-course-card-teacher{display:flex;align-items:center;flex-wrap:wrap;gap:6px;margin-top:5px}.grade-card-countdown{height:20px;padding:0 7px}.grade-course-card-grade{flex:1;min-height:98px;display:flex;flex-direction:column;align-items:center;justify-content:center;gap:5px;text-align:center}.grade-course-card-grade strong{font-family:var(--font-display);font-size:48px;line-height:.95}.grade-course-card-grade>small{color:var(--muted);font-size:20px;font-weight:750;font-variant-numeric:tabular-nums}.overview-semester-tag{display:inline-flex;align-items:baseline;gap:5px;margin-top:0;color:var(--muted);font-size:11px;font-weight:700;line-height:1.1}.overview-semester-tag>span{font-size:11px}.overview-semester-tag strong{font-family:var(--font-display);font-size:14px;color:var(--ink)}.overview-semester-tag small{font-size:9px;text-transform:uppercase;letter-spacing:.04em;opacity:.55}.grade-course-card-footer{display:none}.grade-course-card-teacher{min-width:0;overflow:hidden;color:var(--muted);font-size:11px;text-overflow:ellipsis;white-space:nowrap}.grade-course-card-actions{position:absolute;right:18px;bottom:15px;left:18px;display:flex;align-items:center;justify-content:center}.grade-course-card-open{position:absolute;right:0;color:var(--muted);font-size:18px;font-weight:400;line-height:1}.overview-table td:first-child{min-width:280px}.overview-course{display:flex;align-items:center;gap:11px;min-width:0}.overview-course>span:last-child{min-width:0}.overview-course strong{display:block;max-width:290px;overflow:hidden;text-overflow:ellipsis;white-space:nowrap}.overview-course strong{font-size:14px;font-weight:650}.overview-course small{display:block;margin-top:3px;color:var(--muted);font-size:11px;white-space:nowrap;overflow:hidden;text-overflow:ellipsis}.overview-grade{display:inline-flex;align-items:baseline;gap:6px;min-width:72px;white-space:nowrap}.overview-grade strong{font-size:15px}.overview-grade small{color:var(--muted);font-size:11px}.overview-grade-col{display:flex;flex-direction:column;align-items:flex-start;gap:3px}.overview-grade-col .overview-semester-tag{flex-wrap:nowrap;margin-top:2px}.overview-grade-col .overview-grade strong{font-size:22px}.overview-grade-col .overview-grade small{font-size:14px}.overview-grade-col .overview-semester-tag>span{font-size:10px}.overview-grade-col .overview-semester-tag strong{font-size:12px}.overview-ungraded{color:var(--muted);font-weight:700}.overview-ungraded.has-ungraded{color:var(--orange)}.overview-table td:last-child{text-align:right}.overview-open{width:40px;height:40px;display:inline-grid;place-items:center;margin-left:auto;border:0;border-radius:10px;padding:0;color:var(--muted);background:transparent}.overview-open svg{width:20px;height:20px;fill:none;stroke:currentColor;stroke-width:1.8;stroke-linecap:round;stroke-linejoin:round}.detail-view{animation:mango-rise .45s cubic-bezier(.2,.75,.25,1) both}.course-header{display:block}.course-header-main{width:100%;min-width:0}.course-header-controls{width:100%;display:flex;align-items:center;justify-content:space-between;gap:12px}.course-header-controls .detail-refresh-button{align-self:center;flex:0 0 40px}.course-header-controls .detail-back-button{width:auto;min-width:0;height:40px;min-height:40px;display:inline-flex;align-items:center;padding:0 12px;color:var(--muted);font-size:11px;white-space:nowrap}.course-header-controls .detail-back-button:hover,.course-header-controls .detail-refresh-button:hover{border-color:var(--green);color:var(--green-dark);background:var(--hover-bg)}.course-actions{display:flex;gap:9px;flex-wrap:wrap;justify-content:flex-end}.course-actions .detail-refresh-button{min-height:40px;white-space:nowrap}.course-actions .detail-refresh-button:hover{border-color:var(--green);color:var(--green-dark);background:var(--hover-bg)}.course-header h1{font-family:var(--font-display);font-size:38px;margin:8px 0 5px;letter-spacing:-.03em}.course-header p{color:var(--muted);margin:0;font-size:13px}.outline-button{border:1px solid var(--line);border-radius:11px;background:var(--card-bg);padding:10px 14px;font-size:11px;font-weight:700;cursor:pointer}.overview-refresh-button{align-self:end;width:40px;height:40px;padding:0;color:var(--muted);font-size:15px;font-weight:400;line-height:1}.overview-control-icon{align-self:end;width:40px;height:40px;display:grid;flex:0 0 40px;place-items:center;padding:0;color:var(--muted)}.overview-control-icon:hover{color:var(--green-dark);background:var(--lime-soft)}.overview-control-icon svg{width:19px;height:19px;fill:none;stroke:currentColor;stroke-width:1.8;stroke-linecap:round;stroke-linejoin:round}.mobile-courses{display:inline-flex;min-height:36px;align-items:center;border:0;padding:0;background:transparent;color:var(--green);font-weight:700;font-size:12px;cursor:pointer}.grade-summary{display:flex;align-items:flex-start;gap:14px;flex-wrap:wrap;margin:12px 0 14px}.grade-summary .current-card,.grade-summary .semester-card{flex:1 1 0;max-width:none;min-width:0;min-height:112px;padding:15px 19px;gap:12px}.grade-summary [data-breakdown-card]{cursor:pointer}.grade-summary .semester-card{display:flex;border-color:transparent;background:var(--table-head)}.metric-breakdown{display:flex;flex-direction:column;gap:9px;min-width:0;color:var(--muted);font-size:10px}.metric-breakdown .category-breakdown-item{width:100%;display:flex;flex-direction:column;gap:5px}.category-breakdown-item>span{display:flex;align-items:center;justify-content:space-between;gap:7px}.metric-breakdown b{color:inherit;font-size:inherit;font-weight:750}.metric-breakdown em{overflow:hidden;color:inherit;font-size:inherit;font-style:normal;text-align:right;text-overflow:ellipsis;white-space:nowrap}.category-breakdown-item>i{width:100%;height:4px;display:block;border-radius:999px;background:var(--bar-track);overflow:hidden}.category-breakdown-item>i>u{height:100%;display:block;border-radius:inherit;background:var(--grade-color,var(--green));text-decoration:none}.hero-metric .metric-breakdown{color:var(--hero-muted)}.hero-metric .category-breakdown-item>i{background:var(--meter-track)}.mobile-semester-inline{display:none}.course-semester-tag{font-size:10px;font-weight:600;color:var(--muted)}.metric-card{min-height:147px;border:1px solid var(--line);background:var(--card-bg);border-radius:18px;padding:20px;display:flex;flex-direction:column;justify-content:space-between;box-shadow:0 2px 6px #0000000a}.hero-metric{background:var(--hero-bg);color:var(--hero-text);border-color:var(--hero-bg)}.current-card .meter{background:var(--bar-track)}.meter i{background:var(--grade-color)!important}.metric-label{font-size:11px;text-transform:uppercase;letter-spacing:.1em;font-weight:700;color:var(--muted)}.hero-metric .metric-label{color:var(--hero-muted)}.grade-lockup{display:flex;align-items:baseline;gap:10px}.grade-lockup strong{font-family:var(--font-display);font-size:48px;color:var(--lime);line-height:.9}.grade-lockup span{font-size:18px;font-weight:600}.grade-lockup .grade-change{color:var(--muted);font-size:10px;font-weight:700;white-space:nowrap}.grade-lockup .grade-change.positive{color:var(--grade-a)}.grade-lockup .grade-change.negative{color:var(--grade-e)}.grade-letter{font-weight:800}.grade-number{color:var(--grade-color, var(--ink))}.grade-none{--grade-color: var(--muted);color:var(--muted)!important}.grade-a{--grade-color: var(--grade-a);color:var(--grade-color)!important}.grade-b{--grade-color: var(--grade-b);color:var(--grade-color)!important}.grade-c{--grade-color: var(--grade-c);color:var(--grade-color)!important}.grade-d{--grade-color: var(--grade-d);color:var(--grade-color)!important}.grade-e{--grade-color: var(--grade-e);color:var(--grade-color)!important}.grade-lockup .grade-number{font-size:18px}.delta{font-size:11px;color:var(--hero-muted)}.delta.positive{color:#bce484}.delta.negative{color:#f4a397}.meter{height:4px;border-radius:10px;background:var(--meter-track);overflow:hidden;margin-top:10px}.meter i{display:block;height:100%;background:var(--lime);width:0;border-radius:10px;transition:width .75s cubic-bezier(.22,1,.36,1)}.semester-meter{background:var(--bar-track)}.semester-meter i{background:var(--green);transition:width 1.05s cubic-bezier(.34,1.35,.64,1)}.breakdown-toggle{width:100%;min-height:40px;display:flex;align-items:center;justify-content:space-between;gap:10px;padding:7px 0;border:0;border-top:1px solid var(--line);color:var(--muted);background:transparent;font-size:10px;font-weight:800;letter-spacing:.04em;text-align:left;text-transform:uppercase;cursor:pointer}.breakdown-toggle:hover{color:var(--ink)}.breakdown-toggle:focus-visible{outline:3px solid color-mix(in srgb,var(--green) 48%,transparent);outline-offset:2px}.breakdown-toggle [data-breakdown-icon]{display:inline-grid;width:22px;height:22px;place-items:center;border:1px solid currentColor;border-radius:50%;font-size:15px;font-weight:500;line-height:1}.metric-breakdown[hidden]{display:none}.section-tabs{display:flex;align-items:center;gap:22px;border-bottom:1px solid var(--line)}.section-tabs>button:not(.add-button){background:transparent;border:0;border-bottom:2px solid transparent;padding:14px 0;color:var(--muted);font-size:12px;font-weight:700;cursor:pointer;transition:color .16s ease,border-color .16s ease}.section-tabs>button.active{color:var(--green);border-bottom-color:var(--green)}.section-tabs>span{flex:1}.add-button{flex:0 0 auto;margin-left:auto;border:0;border-bottom:2px solid transparent;background:transparent;color:var(--green-dark);font-size:12px;font-weight:700;padding:14px 0;cursor:pointer}.panel{margin-top:22px;border:1px solid var(--line);background:var(--card-bg);border-radius:18px;overflow:hidden}.table-toolbar{min-height:78px;padding:18px 20px;display:flex;align-items:center;justify-content:space-between;gap:25px;border-bottom:1px solid var(--line)}.table-toolbar h3,.table-toolbar h2{margin:0 0 4px;font-size:14px;font-weight:700}.table-toolbar p{margin:0;color:var(--muted);font-size:11px}.table-scroll{overflow-x:auto}table{width:100%;border-collapse:collapse;font-size:11px}th{color:var(--muted);text-align:left;font-size:11px;letter-spacing:.08em;text-transform:uppercase;padding:12px 18px;background:var(--table-head)}td{border-top:1px solid var(--row-line);padding:14px 18px;vertical-align:middle}td:first-child{font-weight:600;min-width:230px}.desktop-only,th.desktop-only{display:table-cell}.col-date,th.col-date,td.col-date{width:70px;min-width:50px;font-weight:400;color:var(--muted)}.col-assignment{min-width:170px;font-weight:600}.col-score{width:110px}.col-category{width:120px}.col-result{width:90px}.col-actions{width:40px;text-align:center}.score-inputs{display:flex;align-items:center;gap:5px}.score-inputs input{width:55px;height:31px;text-align:right;color:var(--ink);background:var(--input-bg);border:1px solid var(--line);border-radius:7px;outline:0;font-size:11px}.score-inputs input:focus{border-color:var(--green)}.score-inputs input.score-earned-input.grade-a{color:var(--grade-a);font-weight:700}.score-inputs input.score-earned-input.grade-b{color:var(--grade-b);font-weight:700}.score-inputs input.score-earned-input.grade-c{color:var(--grade-c);font-weight:700}.score-inputs input.score-earned-input.grade-d{color:var(--grade-d);font-weight:700}.score-inputs input.score-earned-input.grade-e{color:var(--grade-e);font-weight:700}.score-inputs input.score-earned-input.grade-none{color:var(--muted)}.score-inputs input::-webkit-outer-spin-button,.score-inputs input::-webkit-inner-spin-button{-webkit-appearance:none;margin:0}.score-inputs input[type=number]{-moz-appearance:textfield}.assignment-name-input,.assignment-category-input{width:100%;min-width:0;height:33px;padding:6px 8px;color:var(--ink);background:var(--input-bg);border:1px solid var(--line);border-radius:7px;outline:0;font-size:11px}.assignment-name-input{min-width:170px}.assignment-category-input{min-width:145px}.assignment-name-input:focus,.assignment-category-input:focus{border-color:var(--green);box-shadow:0 0 0 2px #2b7a521a}.result-pill{min-width:64px;display:inline-flex;align-items:baseline;justify-content:center;gap:5px;text-align:center;font-weight:700}.result-percent{color:inherit;font-size:14px;font-weight:700}.result-grade{color:inherit;font-size:16px}.result-status{color:var(--muted);font-size:14px;font-weight:700;white-space:nowrap}.simulated-row{background:var(--simulated-bg)}.delete-assignment-button{display:inline-flex;align-items:center;justify-content:center;width:26px;height:26px;padding:0;border:0;border-radius:6px;background:transparent;color:var(--muted);cursor:pointer;transition:all .15s ease;vertical-align:middle}.delete-assignment-button:hover{color:var(--red);background:color-mix(in srgb,var(--red) 12%,var(--card-bg))}.delete-assignment-button svg{width:15px;height:15px}.assignment-ungraded-label{display:inline-block;margin:4px 0 0 7px;padding:3px 7px;border:1px solid var(--line);border-radius:99px;color:var(--muted);background:var(--tag-bg);font-size:11px;font-weight:800;letter-spacing:.04em;text-transform:uppercase;white-space:nowrap}.assignment-ungraded-label.label-excused{color:#2563eb;background:#2563eb1a;border-color:#2563eb4d}.assignment-ungraded-label.label-not-graded,.assignment-ungraded-label.label-no-composite{color:var(--muted);background:var(--tag-bg);border-color:var(--line)}.result-status.status-excused{color:#2563eb;font-weight:800;text-transform:uppercase;letter-spacing:.04em}tr.is-excused{opacity:.65;background:#94a3b80d}tr.is-excused .score-inputs{text-decoration:line-through;opacity:.7}.simulated-row .assignment-ungraded-label{margin-left:0}.empty-state{text-align:center;padding:60px 20px;color:var(--muted)}.empty-state span{font-size:28px;color:var(--green)}.empty-state h3{color:var(--ink);margin-bottom:5px}.empty-state p{font-size:12px}.category-list{padding:0 20px}.category-row{display:grid;grid-template-columns:minmax(150px,.7fr) minmax(240px,3fr) 90px;gap:20px;align-items:center;padding:20px 0;border-bottom:1px solid var(--line);font-size:14px}.category-row:last-child{border:0}.category-row small{font-size:12px}.category-name{min-width:0;overflow-wrap:anywhere}.category-grade-summary{min-width:0;display:flex;flex-direction:column;gap:6px;color:var(--muted)}.category-grade-line{display:flex;align-items:baseline;gap:5px;color:var(--muted);white-space:nowrap}.category-grade-line strong{color:var(--ink);font-size:inherit}.category-bar{width:100%;height:7px;border-radius:999px;background:var(--bar-track);overflow:hidden}.category-bar i{display:block;height:100%;border-radius:inherit;background:var(--grade-color,var(--green))}.category-name-input{width:min(100%,240px);min-height:36px;padding:6px 8px;border:1px solid var(--line);border-radius:8px;color:var(--ink);background:var(--input-bg);font-size:14px;font-weight:700}.category-row input{width:64px;color:var(--ink);background:var(--input-bg);border:1px solid var(--line);border-radius:8px;padding:7px;text-align:right}.weight-total{color:var(--green)}.weight-total.invalid{color:var(--red)}.category-toolbar-actions{display:flex;align-items:center;gap:12px}.category-toolbar-actions .add-category-button{font-size:11px;white-space:nowrap}.toast{position:fixed;right:24px;bottom:calc(24px + env(safe-area-inset-bottom));z-index:70;background:var(--toast-bg);color:var(--toast-text);padding:13px 17px;border-radius:11px;font-size:12px;box-shadow:0 10px 24px -4px #00000029,0 3px 8px -2px #00000014}@keyframes mango-rise{0%{opacity:0;transform:translateY(18px)}to{opacity:1;transform:translateY(0)}}@keyframes mango-drift{0%{transform:rotate(20deg) translateZ(0)}to{transform:rotate(28deg) translate3d(-20px,-18px,0)}}@keyframes mango-orbit{0%{transform:translateZ(0) rotate(-12deg)}to{transform:translate3d(24px,18px,0) rotate(12deg)}}@keyframes mango-bob{0%,to{transform:rotate(12deg) translateY(0)}50%{transform:rotate(20deg) translateY(-8px)}}@media(max-width:1000px){.login-view{gap:50px}.app-view{grid-template-columns:240px minmax(0,1fr)}}@media(max-width:760px){.site-header{height:calc(60px + env(safe-area-inset-top));padding:env(safe-area-inset-top) 12px 0}.landing-mango-field{top:calc(60px + env(safe-area-inset-top))}.brand{font-size:19px}.brand-mark{width:36px;height:36px;flex-basis:36px}.header-actions{gap:0}.icon-button{width:44px;height:44px}.text-button{min-height:44px;padding:0 4px}.login-view{min-height:calc(100vh - 60px - env(safe-area-inset-top));min-height:calc(100dvh - 60px - env(safe-area-inset-top));display:grid;grid-template-columns:minmax(0,1fr);align-items:stretch;max-width:560px;padding:12px 16px calc(44px + env(safe-area-inset-bottom));gap:16px}.login-copy,.login-card-wrap{display:contents}.login-copy h1,.login-copy>p,.login-card,.install-hint,.login-product-preview{position:relative;z-index:1}.login-card{order:1}.install-hint{order:2;margin:4px 0 0}.login-copy h1{order:3;font-size:clamp(26px,6.5vw,34px);margin:20px 0 0}.login-copy>p{margin:0;font-size:13px;line-height:1.65}.login-copy>p{order:4}.login-product-preview{order:5;width:100%;margin:8px auto 0}.login-preview-stack{height:222px}.login-preview-slide{right:34px;left:34px;min-height:198px;padding:20px 20px 16px;border-radius:17px}.login-preview-slide.next{transform:translate3d(28px,10px,-24px) rotate(3.5deg) scale(.96)}.login-preview-slide.previous{transform:translate3d(-28px,10px,-45px) rotate(-3.5deg) scale(.96)}.login-preview-controls{margin:2px 34px 0}.login-preview-course{padding:15px 0 12px}.login-preview-course strong{font-size:13px}.login-preview-summary{font-size:11px}.trust-row{display:grid;grid-template-columns:repeat(2,minmax(0,1fr));gap:8px;margin-top:15px}.trust-row>div{grid-template-columns:26px minmax(0,1fr);gap:8px;padding:8px;border:1px solid var(--line);border-radius:12px;background:var(--card-bg)}.trust-icon{width:26px;height:26px}.trust-row strong{font-size:12px}.trust-row small{font-size:11px}.login-card-wrap{width:100%}.fruit-doodle{display:none}.login-card{padding:24px 18px;border-radius:16px}.login-card h2{font-size:25px}.login-card>p:not(.microcopy){margin-bottom:20px;font-size:13px}.demo-button{min-height:44px;padding:0 12px}.login-policy-links{min-height:40px;align-items:center;flex-wrap:wrap;font-size:11px}.microcopy{margin:10px 0 0}.app-view{display:block;min-height:calc(100vh - 60px - env(safe-area-inset-top));min-height:calc(100dvh - 60px - env(safe-area-inset-top))}.course-rail{display:none;position:fixed;z-index:20;inset:calc(60px + env(safe-area-inset-top)) 0 0;overflow-y:auto;padding-bottom:env(safe-area-inset-bottom)}.course-rail.open{display:flex}.workspace{padding:18px 16px calc(48px + env(safe-area-inset-bottom))}.overview-hero{display:flex;flex-direction:column;align-items:stretch;gap:18px;padding-top:0;width:100%}.overview-heading{width:100%}.overview-heading .overview-desktop-copy{display:none}.overview-heading .overview-mobile-copy{display:inline}.overview-controls{display:flex;flex-wrap:wrap;align-items:flex-end;width:100%;max-width:100%;gap:8px}.view-toggle{height:42px;flex-shrink:0}.view-toggle-button{width:36px;height:36px}.term-control{flex:1 1 140px;min-width:0;max-width:100%}.term-control select{width:100%;min-width:0;height:42px;font-size:13px}.overview-controls .outline-button{min-height:42px}.overview-refresh-button{width:42px;height:42px;min-height:42px!important}.overview-controls #overviewRefreshButton{flex:0 0 42px;width:42px;font-size:15px;justify-content:center}.overview-cards{grid-template-columns:minmax(0,1fr);gap:11px}.grade-course-card{min-height:198px}.overview-panel .table-toolbar{align-items:flex-start}.overview-table thead{display:none}.overview-table,.overview-table tbody,.overview-table tr,.overview-table td{display:block;width:100%}.overview-table tr{padding:17px 18px;border-top:1px solid var(--row-line)}.overview-table tr:first-child{border-top:0}.overview-table td{display:flex;align-items:center;justify-content:space-between;gap:15px;min-width:0!important;padding:6px 0;border:0;text-align:right}.overview-table td:before{content:attr(data-label);color:var(--muted);font-size:11px;font-weight:800;letter-spacing:.08em;text-transform:uppercase}.overview-table td:first-child{display:block;padding:0 0 9px;text-align:left}.overview-table td:first-child:before,.overview-table td:last-child:before{display:none}.overview-table td:last-child{justify-content:flex-start;padding-top:11px}.overview-table td:last-child .overview-open{width:100%;text-align:center}.overview-course strong{max-width:calc(100vw - 120px)}.overview-course .course-icon{flex:0 0 38px}.desktop-only{display:none!important}.detail-view .table-scroll{overflow-x:auto;-webkit-overflow-scrolling:touch}.detail-view table:not(.overview-table){display:table;width:100%;border-collapse:collapse}.detail-view table:not(.overview-table) thead{display:table-header-group}.detail-view table:not(.overview-table) tbody{display:table-row-group}.detail-view table:not(.overview-table) tr{display:table-row;padding:0;border:0}.detail-view table:not(.overview-table) th{display:table-cell;padding:10px 8px;font-size:11px;font-weight:800;letter-spacing:.08em;text-transform:uppercase;color:var(--muted);border-bottom:1px solid var(--line);background:var(--table-head)}.detail-view table:not(.overview-table) td{display:table-cell;padding:10px 8px;border-top:1px solid var(--row-line);vertical-align:middle;text-align:left}.detail-view table:not(.overview-table) td:before{display:none!important}.detail-view table:not(.overview-table) .col-date{width:44px;min-width:40px;font-size:11px;color:var(--muted);white-space:nowrap}.detail-view table:not(.overview-table) .col-assignment{min-width:120px;font-size:12px;font-weight:600;color:var(--ink);line-height:1.35}.detail-view table:not(.overview-table) .col-assignment .assignment-name-input{width:100%;min-width:0;height:34px;font-size:12px}.detail-view table:not(.overview-table) .col-score{width:95px;text-align:center}.detail-view table:not(.overview-table) .col-category{width:70px;text-align:right}.detail-view table:not(.overview-table) .col-category .category-tag{max-width:72px;padding:3px 6px;font-size:11px;font-weight:700;border-radius:7px;overflow:hidden;text-overflow:ellipsis;white-space:nowrap;display:inline-block;vertical-align:middle}.detail-view table:not(.overview-table) .col-category .assignment-category-input{height:34px;max-width:75px;font-size:11px}.detail-view table:not(.overview-table) .score-inputs{display:inline-flex;align-items:center;justify-content:center;gap:4px}.detail-view table:not(.overview-table) .score-inputs input{width:38px;height:34px;font-size:13px;text-align:center;border-radius:7px;padding:2px 0}.detail-view table:not(.overview-table) .score-inputs span{font-size:11px;color:var(--muted)}.course-header{align-items:flex-start;gap:8px}.course-header>div:first-child{flex:1;min-width:0}.course-header-controls .detail-refresh-button{flex-basis:42px}.course-header-controls .detail-back-button{width:auto;min-width:0;height:42px;min-height:42px;font-size:12px}.course-actions{flex:0 0 auto;gap:6px}.course-actions .outline-button{min-height:44px}.course-header h1{font-size:clamp(25px,7vw,30px);overflow-wrap:anywhere}.mobile-courses{display:inline-flex;min-height:40px;align-items:center;border:0;padding:0;background:transparent;color:var(--green);font-weight:700;font-size:12px}.grade-summary{position:static;background:var(--paper);padding:6px 0 8px;margin:0 0 10px}.grade-summary .current-card,.grade-summary .semester-card{flex:1 0 100%;width:100%;min-height:0;padding:8px 14px 10px;border-radius:13px;display:flex;flex-direction:column;gap:6px;box-shadow:0 4px 12px -2px #0000001f,0 1px 3px #0000000d}.grade-summary .current-card .metric-label,.grade-summary .semester-card .metric-label{font-size:11px;font-weight:700;letter-spacing:.08em}.grade-summary .current-card .grade-lockup{display:flex;align-items:baseline;justify-content:flex-start;gap:8px}.grade-summary .semester-card{display:flex}.grade-summary .semester-card .grade-lockup{justify-content:flex-start;gap:8px}.mobile-semester-inline{display:none;align-items:baseline;gap:4px;padding:2px 7px;border-radius:6px;background:var(--lime-soft);font-size:11px;font-weight:700;color:var(--muted)}.mobile-semester-inline strong{font-size:13px!important;color:var(--grade-color, var(--lime))}.mobile-semester-inline span{font-size:11px!important;font-weight:600!important}.grade-summary .current-card .grade-lockup strong,.grade-summary .semester-card .grade-lockup strong{font-size:26px;line-height:1}.grade-summary .current-card .grade-lockup span,.grade-summary .semester-card .grade-lockup span{font-size:16px;font-weight:700}.grade-summary .current-card .grade-lockup .grade-change{font-size:9px}.grade-summary .current-card .delta{font-size:11px;margin:0}.grade-summary .current-card .meter,.grade-summary .semester-card .meter{height:3px;border-radius:99px;margin-top:2px}.section-tabs{position:static;gap:12px;overflow-x:auto;background:var(--paper);padding-top:4px}.section-tabs>button:not(.add-button){min-height:44px;padding:11px 0}.section-tabs>span{display:block;min-width:0}.add-button{min-height:44px;padding:11px 0;white-space:nowrap}.detail-view .panel{margin-top:18px}.table-toolbar p{display:none}#categoriesPanel .table-toolbar p{display:block;margin-top:4px;font-size:11px;line-height:1.45}th,td{padding:12px 10px}.category-list{padding:0 16px}.category-row{grid-template-columns:minmax(0,1fr) auto;column-gap:14px;row-gap:14px;padding:20px 0}.category-name{grid-column:1;grid-row:1}.category-name strong{font-size:15px;line-height:1.35}.category-grade-summary{grid-column:1 / -1;grid-row:2;gap:8px}.category-grade-line{gap:6px;font-size:13px}.category-bar{height:6px}.category-row>label{grid-column:2;grid-row:1;display:inline-flex;align-items:center;justify-content:flex-end;gap:5px;color:var(--muted);white-space:nowrap}.category-row input{min-height:44px;width:58px;padding:7px 8px;font-size:16px}.outline-button{min-height:44px}}@media(max-width:460px){.site-header{padding-right:14px;padding-left:14px}.brand{font-size:17px}.brand-mark{width:32px;height:32px;flex-basis:32px}.header-actions{gap:0}.icon-button{width:38px;height:38px}.text-button{font-size:11px}.metric-card{min-height:112px;padding:15px}.section-tabs>button{white-space:nowrap}.table-toolbar{align-items:flex-start;flex-direction:column;gap:12px}.outline-button{font-size:0}.outline-button:first-letter{font-size:15px}.course-actions .detail-refresh-button{font-size:11px}.course-actions .outline-button{padding:10px 11px}.overview-controls{display:flex;flex-wrap:wrap;align-items:flex-end;width:100%;gap:8px}.term-control{flex:1 1 120px;min-width:0}.overview-controls #overviewRefreshButton{flex:0 0 42px;width:42px;font-size:15px;justify-content:center}.overview-table tr{padding-left:14px;padding-right:14px}}@media(prefers-reduced-motion:reduce){*,*:before,*:after{animation-duration:.01ms!important;animation-iteration-count:1!important;transition-duration:.01ms!important;scroll-behavior:auto!important}.landing-mango-field{display:none}}.palette-button svg{width:19px;height:19px;fill:none;stroke:currentColor;stroke-width:1.6;stroke-linecap:round;stroke-linejoin:round}.palette-button svg circle{fill:var(--orange);stroke:none}.palette-button svg circle:nth-of-type(2){fill:var(--grade-b)}.palette-button svg circle:nth-of-type(3){fill:var(--lime)}.palette-button svg circle:nth-of-type(4){fill:var(--grade-e)}.palette-dialog{width:min(640px,calc(100vw - 32px));max-width:none;max-height:min(92dvh,780px);padding:0;border:1px solid var(--line);border-radius:20px;color:var(--ink);background:var(--paper);box-shadow:0 8px 16px -4px #00000024,0 2px 6px -1px #00000014;overflow:auto}.palette-dialog::backdrop{background:#00000073;backdrop-filter:blur(4px)}.palette-dialog[open]{animation:palette-appear .24s cubic-bezier(.2,.75,.25,1) both}.palette-dialog-card{padding:clamp(20px,4vw,34px)}.palette-dialog-card>.palette-dialog-kicker{font-size:12px;color:var(--muted);margin:0 0 8px;font-weight:600}.palette-dialog h2{margin:0 0 6px;font-family:var(--font-display);font-size:clamp(23px,4vw,31px);letter-spacing:-.03em}.palette-dialog-card>p:not(.palette-dialog-kicker){max-width:470px;margin:0 0 19px;color:var(--muted);font-size:12px;line-height:1.55}.palette-grid{display:grid;grid-template-columns:repeat(3,minmax(0,1fr));gap:9px}.palette-option{min-width:0;padding:8px;border:1px solid var(--line);border-radius:14px;color:var(--ink);background:var(--card-bg);text-align:left;cursor:pointer;transition:transform .16s ease,border-color .16s ease,box-shadow .16s ease}.palette-option:hover{transform:translateY(-2px);border-color:color-mix(in srgb,var(--preview-accent) 55%,var(--line))}.palette-option:focus-visible{outline:3px solid color-mix(in srgb,var(--preview-accent) 42%,transparent);outline-offset:2px}.palette-option.selected{border-color:var(--preview-accent);box-shadow:inset 0 0 0 1.5px var(--preview-accent),0 2px 6px #00000014}.palette-preview{height:55px;display:grid;grid-template-columns:12px minmax(0,1fr) 20px;align-items:stretch;gap:4px;padding:5px;border:1px solid var(--preview-line);border-radius:9px;background:var(--preview-surface);overflow:hidden}.palette-preview-rail{display:flex;flex-direction:column;gap:4px;padding:4px 3px;border-radius:4px;background:var(--preview-soft)}.palette-preview-rail i{height:3px;border-radius:3px;background:var(--preview-accent);opacity:.65}.palette-preview-page{min-width:0;display:flex;flex-direction:column;gap:3px}.palette-preview-header{height:5px;width:62%;border-radius:3px;background:var(--preview-accent)}.palette-preview-metric{display:grid;grid-template-columns:1fr 1fr;gap:3px;height:15px}.palette-preview-metric b:first-child{border-radius:3px;background:var(--preview-accent)}.palette-preview-metric b:last-child{border:1px solid var(--preview-line);border-radius:3px;background:color-mix(in srgb,var(--preview-soft) 58%,white)}.palette-preview-rows{display:flex;flex-direction:column;gap:2px}.palette-preview-rows b{height:2px;border-radius:2px;background:var(--preview-line)}.palette-preview-grade{align-self:center;display:grid;place-items:center;width:19px;height:19px;border-radius:6px;color:#fff;background:var(--preview-accent);font-size:11px;font-weight:900}.palette-option-name{display:block;margin:7px 2px 1px;overflow:hidden;font-size:11px;font-weight:750;text-overflow:ellipsis;white-space:nowrap}.palette-dialog-footer{display:flex;align-items:center;justify-content:space-between;gap:12px;margin-top:18px}.palette-dismiss,.palette-confirm{min-height:44px;border:0;border-radius:12px;padding:0 16px;cursor:pointer;font-size:11px;font-weight:800}.palette-dismiss{color:var(--muted);background:transparent}.palette-dismiss:hover{color:var(--ink);background:var(--cream)}.palette-confirm{min-width:150px;color:var(--button-text);background:var(--green);box-shadow:0 1px 3px #00000014,0 1px 2px #0000000a}.palette-confirm:hover{background:var(--green-dark);box-shadow:0 3px 8px -1px #0000001f}@keyframes palette-appear{0%{opacity:0;transform:translateY(9px) scale(.985)}to{opacity:1;transform:translateY(0) scale(1)}}@media(prefers-reduced-motion:reduce){.pass-outage-notice:not(.hidden){animation:none}}@media(max-width:760px){.palette-dialog{width:calc(100vw - 20px);max-height:calc(100dvh - env(safe-area-inset-top) - env(safe-area-inset-bottom) - 16px);border-radius:20px}.palette-dialog-card{padding:21px 15px calc(17px + env(safe-area-inset-bottom))}.palette-dialog-card>p{margin-bottom:14px;font-size:12px}.palette-grid{gap:6px}.palette-option{padding:6px;border-radius:11px}.palette-preview{height:46px;grid-template-columns:9px minmax(0,1fr) 17px;gap:3px;padding:4px}.palette-preview-grade{width:17px;height:17px;font-size:11px}.palette-option-name{margin-top:6px;font-size:11px}.palette-dialog-footer{margin-top:13px}}@media(max-width:350px){.palette-preview{height:40px}.palette-option{padding:5px}.palette-option-name{font-size:11px}}.skip-link{position:fixed;top:8px;left:8px;z-index:100;padding:10px 14px;border-radius:9px;color:var(--button-text);background:var(--green);transform:translateY(-150%)}.skip-link:focus{transform:translateY(0)}button:focus-visible,a:focus-visible,input:focus-visible,select:focus-visible{outline:3px solid color-mix(in srgb,var(--green) 48%,transparent);outline-offset:2px}.student-tool-nav{display:flex;flex-direction:column;gap:5px;margin-top:22px;padding-top:18px;border-top:1px solid var(--line)}.rail-section-label{margin:0 8px 6px;color:var(--muted);font-size:10px;font-weight:800;letter-spacing:.11em;text-transform:uppercase}.student-tool-nav button{min-height:44px;display:flex;align-items:center;gap:11px;padding:0 12px;border:1px solid transparent;border-radius:12px;color:var(--muted);background:transparent;cursor:pointer;font-size:12px;font-weight:750;text-align:left;transition:color .16s ease,background-color .16s ease,border-color .16s ease}.student-tool-nav button:hover,.student-tool-nav button.active{border-color:var(--line);color:var(--ink);background:var(--card-bg)}.student-tool-nav svg,.mobile-app-nav svg,.document-icon svg,.document-search svg{width:19px;height:19px;fill:none;stroke:currentColor;stroke-width:1.7;stroke-linecap:round;stroke-linejoin:round}@media(min-width:761px){.course-rail{padding:24px 16px}.rail-heading{padding:0 5px 14px}.overview-nav{margin-bottom:6px;padding:6px 11px}.course-list{gap:3px}.course-button{padding:9px 11px}.student-tool-nav{gap:4px;margin-top:14px;padding-top:12px}.rail-section-label{margin-bottom:4px}.student-tool-nav button{min-height:40px}}.mobile-app-nav{display:none}.overview-semester-tag{flex-wrap:wrap;justify-content:center;max-width:100%}.overview-semester-tag>span{white-space:nowrap}.overview-semester-tag>small{width:auto;color:var(--muted);font-size:11px;font-weight:800;letter-spacing:.04em;text-align:left;text-transform:uppercase}.grade-course-card .overview-semester-tag>span{font-size:12px}.grade-course-card .overview-semester-tag strong{font-size:16px;font-variant-numeric:tabular-nums}.course-semester-tag{overflow:hidden;text-overflow:ellipsis}.tool-view{animation:mango-rise .4s cubic-bezier(.2,.75,.25,1) both}.tool-header{display:flex;align-items:flex-end;justify-content:space-between;gap:24px;padding:0}.tool-header .overview-refresh-button{flex:0 0 40px;min-width:40px}.tool-header h1{margin:4px 0 0;font-family:var(--font-display);font-size:clamp(26px,3.5vw,34px);letter-spacing:-.03em}.tool-header p{max-width:610px;margin:0;color:var(--muted);font-size:12px;line-height:1.5}.tool-controls{display:flex;align-items:flex-end;justify-content:space-between;gap:16px;margin:18px 0 0}.tool-controls>.overview-refresh-button{flex:0 0 44px;width:44px;min-width:44px;height:44px;margin-left:auto;padding:0}#scheduleView #scheduleTermControl{flex:0 1 178px;min-width:130px;margin:0}#scheduleView #scheduleTermSelect{height:44px}.schedule-tool-actions{display:flex;align-items:center;gap:9px;max-width:100%;margin-left:auto}.schedule-tool-actions .overview-refresh-button{width:44px;min-width:44px;height:44px;padding:0}.schedule-hall-pass-trigger{flex:0 0 auto;height:44px;padding:0 17px;color:var(--muted);font-family:inherit;font-size:11px;font-weight:800;white-space:nowrap}.schedule-hall-pass-dialog{width:min(520px,calc(100vw - 28px));max-height:min(78dvh,620px);padding:0;border:1px solid var(--line);border-radius:18px;color:var(--ink);background:var(--paper);box-shadow:0 20px 60px #00000047;overflow-y:auto}.schedule-hall-pass-dialog[open]{animation:mango-rise .3s cubic-bezier(.2,.75,.25,1) both}.schedule-hall-pass-dialog::backdrop{background:#0000007a;backdrop-filter:blur(3px)}.schedule-hall-pass{background:var(--paper)}.schedule-hall-pass>header{display:flex;align-items:center;justify-content:space-between;gap:16px;padding:18px 20px;border-bottom:1px solid var(--line);background:var(--card-bg)}.schedule-hall-pass>header h2{margin:0;font-size:16px}.schedule-hall-pass-actions{display:flex;gap:8px}.schedule-hall-pass-actions .overview-refresh-button,.hall-pass-close{width:32px;min-width:32px;height:32px;min-height:32px!important;padding:0;border:0;border-radius:9px;color:var(--muted);background:transparent;box-shadow:none;font-size:22px;line-height:1}.schedule-hall-pass-actions .overview-refresh-button:hover,.hall-pass-close:hover{color:var(--ink);background:var(--hover-bg)}.hall-pass-content{display:grid;gap:20px;padding:20px}.hall-pass-current-card,.hall-pass-request-card{min-width:0}.hall-pass-current-card+.hall-pass-request-card{padding-top:20px;border-top:1px solid var(--line)}.hall-pass-card-heading{display:flex;align-items:flex-start;justify-content:space-between;gap:12px;margin-bottom:13px}.hall-pass-card-heading h3,.hall-pass-request-heading h3{margin:3px 0 0;color:var(--ink);font-family:var(--font-display);font-size:19px;letter-spacing:-.025em}.hall-pass-list{display:grid;gap:10px}.hall-pass-live-card{min-width:0;display:grid;grid-template-columns:46px minmax(0,1fr) auto;align-items:center;gap:13px;padding:14px;border:1px solid var(--line);border-radius:16px;background:color-mix(in srgb,var(--lime-soft) 34%,var(--card-bg))}.hall-pass-live-card.is-syncing{border-style:dashed}.hall-pass-card-symbol{width:44px;height:44px;display:grid;place-items:center;border-radius:14px;color:var(--green-dark);background:var(--lime-soft)}.hall-pass-card-symbol svg{width:22px;height:22px;fill:none;stroke:currentColor;stroke-linecap:round;stroke-linejoin:round;stroke-width:1.7}.hall-pass-card-copy{min-width:0;display:grid;justify-items:start;gap:5px}.hall-pass-card-copy strong{max-width:100%;color:var(--ink);font-size:16px;overflow-wrap:anywhere}.hall-pass-card-copy p,.hall-pass-card-copy small{margin:0;color:var(--muted);font-size:12px;line-height:1.45}.hall-pass-card-copy small{font-size:11px}.hall-pass-status-chip{min-height:24px;display:inline-flex;align-items:center;gap:6px;padding:3px 9px;border-radius:999px;color:var(--green-dark);background:var(--lime-soft);font-size:10px;font-weight:850;letter-spacing:.025em}.hall-pass-status-chip i{width:7px;height:7px;border-radius:50%;background:currentColor}.hall-pass-status-chip.status-pending,.hall-pass-status-chip.status-queued,.hall-pass-status-chip.status-waiting{color:color-mix(in srgb,var(--orange) 72%,var(--ink));background:var(--callout-bg)}.hall-pass-live-card .outline-button{min-height:44px;white-space:nowrap;font-size:12px}.hall-pass-live-card .outline-button:first-letter{font-size:inherit}.hall-pass-sync-spinner{width:22px;height:22px;border:2px solid var(--line);border-top-color:var(--green);border-radius:50%;animation:hall-pass-spin .8s linear infinite}@keyframes hall-pass-spin{to{transform:rotate(360deg)}}@media(prefers-reduced-motion:reduce){.hall-pass-sync-spinner{animation:none}}.hall-pass-request-heading{margin-bottom:16px}.hall-pass-form{display:grid;grid-template-columns:minmax(0,1fr);gap:14px}.hall-pass-form label{min-width:0;display:grid;gap:7px;color:var(--ink);font-size:12px;font-weight:800}.hall-pass-form select,.hall-pass-form input:not([type=range]){width:100%;height:48px;padding:0 13px;border:1px solid var(--line);border-radius:12px;color:var(--ink);background:var(--paper);font:inherit}.hall-pass-form select,.hall-pass-form select option{font-weight:500}.hall-pass-duration{display:grid;grid-template-columns:minmax(0,1fr) 68px;align-items:center;gap:14px}.hall-pass-duration input[type=range]{width:100%;min-width:0;accent-color:var(--green);cursor:pointer}.hall-pass-duration input[name=hallPassMinutes]{text-align:center;font-variant-numeric:tabular-nums}.hall-pass-form .primary-button{grid-column:1 / -1;justify-content:center;min-height:48px;margin:0;border-radius:13px;font-size:13px}.hall-pass-feedback{margin:0;padding:12px 14px;border:1px solid color-mix(in srgb,var(--green) 30%,var(--line));border-radius:13px;color:var(--ink);background:var(--lime-soft);font-size:13px;line-height:1.5}#scheduleView .tool-controls>.schedule-tool-actions{margin-left:auto}#scheduleView .tool-controls{flex-wrap:wrap}.segmented-control{display:inline-flex;min-height:44px;padding:4px;border:1px solid var(--line);border-radius:12px;background:var(--cream)}.segmented-control button{min-height:34px;padding:0 14px;border:0;border-radius:8px;color:var(--muted);background:transparent;cursor:pointer;font-size:11px;font-weight:800;transition:color .16s ease,background-color .16s ease,box-shadow .16s ease}.segmented-control button.active{color:var(--green-dark);background:var(--card-bg);box-shadow:0 1px 3px #00000014}.tool-content{margin-top:18px}#attendanceContent.tool-content{margin-top:0}.summary-grid{display:grid;grid-template-columns:repeat(4,minmax(0,1fr));gap:12px}.summary-grid article{min-height:112px;display:flex;flex-direction:column;justify-content:space-between;padding:16px;border:1px solid var(--line);border-radius:16px;background:var(--card-bg)}.summary-grid span{color:var(--muted);font-size:11px;font-weight:750}.summary-grid strong{color:var(--green-dark);font-family:var(--font-display);font-size:34px}.tool-list,.schedule-list,.document-list{margin-top:14px;border:1px solid var(--line);border-radius:17px;background:var(--card-bg);overflow:hidden}.attendance-row,.schedule-row,.document-row{min-height:76px;display:grid;align-items:center;gap:16px;padding:13px 17px;border-top:1px solid var(--row-line)}.attendance-row:first-child,.schedule-row:first-child,.document-row:first-child{border-top:0}.attendance-row{grid-template-columns:92px minmax(0,1fr)}.event-date{display:flex;flex-direction:column;gap:4px}.event-date strong,.attendance-row>div:last-child>strong,.schedule-main strong,.document-row strong{font-size:12px}.event-date small,.attendance-row p,.schedule-main p,.schedule-main small,.document-row p{margin:3px 0 0;color:var(--muted);font-size:11px;line-height:1.4}.schedule-row{grid-template-columns:58px minmax(0,1fr) minmax(90px,auto)}.schedule-list{display:grid;gap:10px;padding:0;border:0;background:transparent;overflow:visible}.schedule-row,.schedule-row:first-child{border:1px solid var(--line);border-radius:14px;background:var(--cream);transition:border-color .28s ease,box-shadow .28s ease}.schedule-row.current-class{border-color:var(--line);box-shadow:0 0 0 1px color-mix(in srgb,var(--green) 30%,transparent),0 0 20px color-mix(in srgb,var(--green) 30%,transparent)}.schedule-row.no-time{grid-template-columns:58px minmax(0,1fr)}.overview-class-row{grid-template-columns:58px minmax(0,1fr) auto auto}.overview-class-row{cursor:pointer}.overview-class-row .schedule-main strong{font-size:15px;font-weight:650}.overview-class-grade{display:flex;flex-direction:column;align-items:flex-end;gap:0}.overview-class-grade .overview-grade-col{align-items:flex-end}.overview-class-grade .overview-semester-tag{justify-content:flex-end}.overview-class-grade{text-align:right}.overview-class-grade .overview-grade strong{font-size:26px}.overview-class-grade .overview-grade small{font-size:15px}.overview-class-grade .overview-semester-tag{margin-top:0;gap:4px;flex-wrap:nowrap}.overview-class-grade .overview-semester-tag>span{order:1}.overview-class-grade .overview-semester-tag>strong{order:2}.overview-class-semester-line{display:inline-flex;align-items:center;justify-content:flex-end;gap:6px}.overview-class-actions{display:inline-flex;align-items:center;justify-content:flex-end;gap:7px}.overview-class-row .overview-open{margin-left:0}.schedule-countdown{display:inline-flex;align-items:center;flex:0 0 auto;height:22px;padding:0 9px;border-radius:999px;color:var(--muted);background:color-mix(in srgb,var(--muted) 12%,var(--card-bg));font-size:10px;font-weight:800;line-height:1;white-space:nowrap}.schedule-countdown.is-soon{color:var(--orange);background:color-mix(in srgb,var(--orange) 15%,var(--card-bg))}.schedule-countdown.is-urgent{color:var(--red);background:color-mix(in srgb,var(--red) 15%,var(--card-bg))}.schedule-countdown[hidden]{display:none}.grade-card-countdown,.schedule-time>.schedule-countdown{opacity:0;visibility:hidden;transition:opacity .28s ease,visibility .28s ease,background-color .28s ease,color .28s ease}.grade-card-countdown.is-visible,.schedule-time>.schedule-countdown.is-visible{opacity:1;visibility:visible}@media(prefers-reduced-motion:reduce){.grade-course-card,.schedule-row,.grade-card-countdown,.schedule-time>.schedule-countdown{transition-duration:0s}}.period-badge{width:40px;height:40px;display:grid;place-items:center;border-radius:11px;color:var(--green-dark);background:var(--lime-soft);font-family:var(--font-display);font-weight:850}.schedule-time{display:flex;align-items:center;justify-content:flex-end;gap:9px;text-align:right}.schedule-time-range{display:flex;flex-direction:column;align-items:flex-end;gap:3px;white-space:nowrap}.schedule-time strong{font-size:11px}.schedule-time small{color:var(--muted);font-size:10px}.document-search{width:min(100%,390px);height:44px;display:flex;align-items:center;gap:10px;padding:0 13px;border:1px solid var(--line);border-radius:12px;color:var(--muted);background:var(--card-bg)}.document-search input{flex:1;min-width:0;border:0;outline:0;color:var(--ink);background:transparent;font-size:13px}.document-tabs{max-width:100%;overflow-x:auto;white-space:nowrap}.document-tabs button{flex:0 0 auto}.document-tabs+.document-list,.document-tabs+.tool-state{margin-top:18px}.document-list{background:var(--cream)}.document-row{grid-template-columns:42px minmax(0,1fr) auto}.document-icon{width:40px;height:40px;display:grid;place-items:center;border-radius:12px;color:var(--green-dark);background:var(--lime-soft)}.document-actions{display:flex;align-items:center;gap:6px}.document-actions button{width:40px;height:40px;display:grid;place-items:center;border:0;border-radius:10px;color:var(--muted);background:transparent;cursor:pointer}.document-actions button svg{width:18px;height:18px;fill:none;stroke:currentColor;stroke-width:1.8;stroke-linecap:round;stroke-linejoin:round}.document-actions button:hover{color:var(--green-dark);background:var(--hover-bg)}.document-row button:disabled{color:var(--muted);background:transparent;cursor:not-allowed;opacity:.45}.tool-state{min-height:240px;display:flex;flex-direction:column;align-items:center;justify-content:center;padding:32px;border:1px solid var(--line);border-radius:17px;color:var(--muted);background:var(--card-bg);text-align:center}.tool-state-icon{width:44px;height:44px;display:grid;place-items:center;margin-bottom:12px;border-radius:14px;color:var(--green-dark);background:var(--lime-soft);font-family:var(--font-display);font-size:22px;font-weight:850}.tool-state-icon.is-alert{color:var(--orange)}.tool-state-icon svg{width:25px;height:25px;stroke:currentColor;stroke-width:1.8;stroke-linecap:round;stroke-linejoin:round}.tool-state h2{margin:0 0 6px;color:var(--ink);font-size:16px}.tool-state p{max-width:440px;margin:0;font-size:12px;line-height:1.5}.loading-state{flex-direction:row;gap:7px}.loading-state i{width:9px;height:9px;border-radius:50%;background:var(--green);animation:loading-pulse 1s ease-in-out infinite alternate}.loading-state i:nth-child(2){animation-delay:.18s}.loading-state i:nth-child(3){animation-delay:.36s}.loading-state p{margin-left:6px}@keyframes loading-pulse{to{opacity:.25;transform:translateY(-3px)}}.gpa-dialog{width:min(820px,calc(100vw - 32px));max-width:none;max-height:min(90dvh,820px);padding:0;border:1px solid var(--line);border-radius:22px;color:var(--ink);background:var(--paper);box-shadow:0 24px 70px #0000004d;overflow:auto}.gpa-dialog::backdrop{background:#0000007a;backdrop-filter:blur(4px)}.gpa-dialog[open]{animation:mango-rise .26s cubic-bezier(.2,.75,.25,1) both}.gpa-dialog-card{padding:20px}.gpa-dialog-handle{display:none}.gpa-dialog-card>header{display:flex;align-items:center;justify-content:space-between;gap:20px}.gpa-dialog-card>header h2{margin:0;font-family:var(--font-display);font-size:24px;letter-spacing:-.03em}.gpa-dialog-card>header button{width:40px;height:40px;display:grid;flex:0 0 40px;place-items:center;padding:0;border:0;border-radius:12px;color:var(--muted);background:var(--cream);cursor:pointer;font-size:25px;line-height:1}.gpa-dialog-card>header button:hover{color:var(--ink);background:var(--hover-bg)}.gpa-dialog-content{margin-top:16px}.gpa-summary{padding:18px;border:1px solid var(--line);border-radius:16px;background:var(--cream)}.gpa-score{display:grid;grid-template-columns:1fr auto;align-items:baseline;gap:2px 12px}.gpa-score span{align-self:end;color:var(--ink);font-family:var(--font-display);font-size:17px;font-weight:750;letter-spacing:-.02em}.gpa-score strong{grid-row:1;grid-column:2;color:var(--green-dark);font-family:var(--font-display);font-size:40px;font-weight:750;letter-spacing:-.05em;line-height:1}.gpa-score:has(small) strong{grid-row:1 / 3}.gpa-score small{align-self:start;color:var(--muted);font-size:10px;font-weight:650}.gpa-periods{display:grid;grid-template-columns:repeat(2,minmax(0,1fr));gap:8px;margin-top:16px}.gpa-period{display:flex;align-items:center;justify-content:space-between;gap:10px;min-height:48px;padding:9px 12px;border:1px solid var(--line);border-radius:12px;background:var(--card-bg)}.gpa-period span{color:var(--muted);font-size:11px;font-weight:750}.gpa-period strong{color:var(--ink);font-family:var(--font-display);font-size:20px;letter-spacing:-.035em}.gpa-composition-note{margin:8px 2px 0;color:var(--muted);font-size:10px;font-weight:600}.gpa-course-panel{margin-top:14px;border:1px solid var(--line);border-radius:16px;background:var(--card-bg);overflow:hidden}.gpa-course-heading{display:flex;align-items:baseline;justify-content:space-between;gap:12px;padding:12px 18px;border-bottom:1px solid var(--row-line)}.gpa-course-heading strong{font-size:12px}.gpa-course-list{display:grid}.gpa-course-row{min-height:68px;display:grid;grid-template-columns:minmax(0,1fr) 86px minmax(168px,192px) 64px;align-items:center;gap:16px;padding:11px 18px;border-top:1px solid var(--row-line)}.gpa-course-row:first-child{border-top:0}.gpa-course-main{min-width:0}.gpa-course-main strong{display:block;overflow:hidden;font-size:13px;text-overflow:ellipsis;white-space:nowrap}.gpa-course-main p{margin:4px 0 0;color:var(--muted);font-size:10px}.gpa-course-grade{display:flex;align-items:baseline;justify-content:flex-end;gap:5px}.gpa-course-grade strong{font-family:var(--font-display);font-size:22px}.gpa-course-grade span{color:var(--muted);font-size:10px}.gpa-course-weighting{position:relative;min-width:0;border:1px solid var(--line);border-radius:11px;background:var(--cream);transition:border-color .16s ease,box-shadow .16s ease,background .16s ease}.gpa-course-weighting:hover{border-color:var(--green);background:var(--hover-bg)}.gpa-course-weighting:focus-within{border-color:var(--green);box-shadow:0 0 0 3px color-mix(in srgb,var(--green) 16%,transparent)}.gpa-course-weighting svg{position:absolute;top:50%;right:10px;width:15px;height:15px;fill:none;stroke:var(--green-dark);stroke-width:2;stroke-linecap:round;stroke-linejoin:round;pointer-events:none;transform:translateY(-50%)}.gpa-course-level{width:100%;height:42px;min-width:0;padding:0 28px 0 12px;appearance:none;border:0;border-radius:inherit;color:var(--ink);background:transparent;font:inherit;font-size:12px;font-weight:700;cursor:pointer}.gpa-course-level option{color:var(--ink);background-color:var(--card-bg);font-size:13px}.gpa-course-level option:checked{color:var(--ink);background-color:var(--lime-soft)}.gpa-course-level:focus-visible{outline:0}.gpa-course-points{min-height:42px;display:flex;flex-direction:column;align-items:center;justify-content:center;gap:2px;padding:4px;border:1px solid var(--line);border-radius:10px;background:var(--cream)}.gpa-course-points small{color:var(--muted);font-size:9px;font-weight:700}.gpa-course-points strong{font-family:var(--font-display);font-size:14px}.gpa-course-empty{padding:18px 16px;color:var(--muted);font-size:12px;line-height:1.5}.work-in-progress-state{padding:48px 24px;min-height:280px}.construction-illustration{margin-bottom:18px;display:inline-flex;animation:cat-bob 3.2s ease-in-out infinite alternate}.construction-illustration svg{display:block;filter:drop-shadow(0 8px 16px rgba(0,0,0,.08))}@keyframes cat-bob{0%{transform:translateY(0)}to{transform:translateY(-6px)}}.attendance-controls{margin-bottom:18px}.attendance-shell,.attendance-summary,.attendance-record{border:1px solid var(--line);border-radius:16px;background:var(--card-bg);overflow:hidden;box-shadow:0 3px 10px #00000009}.attendance-shell{position:relative}.attendance-month-nav{display:flex;align-items:center;justify-content:space-between;padding:12px 15px;border-bottom:1px solid var(--line);background:var(--cream)}.attendance-month-nav strong{font-family:var(--font-display);font-size:16px}.attendance-icon-button{width:32px;height:32px;border:0;border-radius:8px;color:var(--muted);background:transparent;cursor:pointer;font-size:26px;line-height:1}.attendance-icon-button:hover{background:var(--line);color:var(--ink)}.attendance-icon-button:disabled{cursor:not-allowed;opacity:.3}.attendance-weekdays,.attendance-calendar{display:grid;grid-template-columns:repeat(7,minmax(0,1fr))}.attendance-weekdays{background:var(--cream)}.attendance-weekdays span{padding:9px 3px;color:var(--muted);font-size:9px;font-weight:850;letter-spacing:.06em;text-align:center;text-transform:uppercase}.attendance-calendar{background:var(--card-bg)}.attendance-calendar.is-changing-month{animation:attendance-month-fade .25s ease-out both}.attendance-calendar-previous{position:absolute;right:0;left:0;z-index:2;pointer-events:none;animation:attendance-month-fade-out .25s ease-out both}@keyframes attendance-month-fade{0%{opacity:0}to{opacity:1}}@keyframes attendance-month-fade-out{0%{opacity:1}to{opacity:0}}.attendance-day{min-width:0;height:80px;padding:6px;border-top:1px solid var(--row-line);border-right:1px solid var(--row-line);background:var(--cream);overflow:hidden}.attendance-day.has-unexcused{background:var(--card-bg)}.attendance-day.has-school-closure{background-image:repeating-linear-gradient(135deg,transparent 0 8px,color-mix(in srgb,var(--muted) 11%,transparent) 8px 10px)}.attendance-day-number{display:inline-flex;align-items:center;min-height:22px;color:var(--ink);font-size:10px;font-weight:400}.attendance-day-number.today{width:24px;justify-content:center;border-radius:50%;color:var(--button-text);background:var(--green);font-weight:700}.attendance-day-number.outside{color:color-mix(in srgb,var(--muted) 45%,transparent)}.attendance-closure-label{display:-webkit-box;overflow:hidden;color:var(--muted);font-size:9px;font-weight:700;line-height:1.2;overflow-wrap:anywhere;-webkit-box-orient:vertical;-webkit-line-clamp:2}.attendance-dots{display:flex;flex-wrap:wrap;gap:3px;margin-top:4px}.attendance-dots i,.attendance-legend i{width:8px;height:8px;display:inline-block;flex:0 0 auto;border-radius:50%;background:var(--dot-color);opacity:var(--dot-opacity, 1)}.attendance-day small{display:block;max-width:100%;margin-top:3px;overflow:hidden;color:var(--muted);font-size:8px;font-weight:400;line-height:1.2;text-overflow:ellipsis;white-space:nowrap}.attendance-day.has-events{cursor:pointer;transition:filter .16s ease}.attendance-day.has-events:hover{filter:brightness(1.06)}.attendance-day.has-events:focus-visible{position:relative;z-index:1;outline:2px solid var(--green);outline-offset:-2px}.attendance-day-dialog{width:min(520px,calc(100vw - 28px));max-height:min(78dvh,620px);padding:0;border:1px solid var(--line);border-radius:18px;color:var(--ink);background:var(--paper);box-shadow:0 20px 60px #00000047;overflow:hidden}.attendance-day-dialog[open]{animation:mango-rise .3s cubic-bezier(.2,.75,.25,1) both}.attendance-day-dialog::backdrop{background:#0000007a;backdrop-filter:blur(3px)}.attendance-day-dialog-head{display:flex;align-items:center;justify-content:space-between;gap:16px;padding:18px 20px;border-bottom:1px solid var(--line);background:var(--card-bg)}.attendance-day-dialog-head h2{margin:0;font-size:16px}.attendance-day-dialog-head button{width:32px;height:32px;padding:0;border:0;border-radius:9px;color:var(--muted);background:transparent;font-size:24px;font-weight:400;line-height:1;cursor:pointer}.attendance-day-dialog-head button:hover{color:var(--ink);background:var(--hover-bg)}.attendance-day-dialog-events{max-height:calc(min(78dvh,620px) - 70px);padding:0 10px;overflow-y:auto}.attendance-day-dialog-events article{display:grid;grid-template-columns:8px minmax(0,1fr) auto;align-items:center;gap:12px;padding:23px 11px;border-bottom:1px solid var(--row-line)}.attendance-day-dialog-events article:last-child{border-bottom:0}.attendance-day-dialog-events article>i{width:8px;height:8px;border-radius:50%;background:var(--event-color)}.attendance-day-dialog-events .attendance-closure-detail>i{border-radius:2px;background:repeating-linear-gradient(135deg,var(--muted) 0 2px,var(--line) 2px 4px)}.attendance-day-dialog-events strong{display:block;font-size:12px}.attendance-day-dialog-events p,.attendance-day-dialog-events small{display:block;margin:3px 0 0;color:var(--muted);font-size:10px;font-weight:400}.attendance-day-dialog-events article>span{color:var(--muted);font-size:10px;white-space:nowrap}.attendance-legend{display:flex;flex-wrap:wrap;gap:14px;padding:11px 15px;border-top:1px solid var(--line);background:var(--cream);color:var(--muted);font-size:10px}.attendance-legend span{display:inline-flex;align-items:center;gap:5px}.attendance-legend .attendance-closure-swatch{border-radius:2px;background:repeating-linear-gradient(135deg,var(--muted) 0 2px,var(--line) 2px 4px)}.attendance-legend .attendance-makeup-note{margin-left:auto}.attendance-summary{border:0;background:transparent;box-shadow:none;overflow:visible}.attendance-quarters{max-width:100%;margin-bottom:13px}.attendance-year-picker{display:inline-flex;align-items:center;gap:9px;margin-bottom:13px;color:var(--muted);font-size:11px;font-weight:750}.attendance-year-picker select{min-height:38px;padding:0 10px;border:1px solid var(--line);border-radius:9px;color:var(--ink);background:var(--card-bg)}.attendance-empty{margin:0;padding:17px;color:var(--muted);font-size:11px}.attendance-affected{display:flex;align-items:center;gap:13px;padding:17px;border:1px solid var(--line);border-radius:15px;background:var(--cream)}.attendance-affected strong{color:var(--muted);font-family:var(--font-display);font-size:32px}.attendance-affected span{color:var(--muted);font-size:11px;font-weight:750}.attendance-category-list,.attendance-table-wrap{margin-top:13px;border:1px solid var(--line);border-radius:15px;background:var(--cream);overflow:hidden}.attendance-category-list>div{display:flex;align-items:center;justify-content:space-between;gap:10px;padding:13px 17px;border-top:1px solid var(--row-line)}.attendance-category-list>div:first-child{border-top:0}.attendance-category-list span{display:flex;align-items:center;gap:10px;color:var(--muted);font-size:12px;font-weight:750}.attendance-category-list b{width:24px;font-family:var(--font-display);font-size:20px;font-weight:500;text-align:right}.attendance-category-list small{display:flex;gap:10px;font-size:10px;font-weight:400}.attendance-table-wrap{overflow-x:auto}.attendance-table{width:100%;min-width:590px;border-collapse:collapse;color:var(--muted);background:var(--cream);font-size:10px;text-align:left}.attendance-table thead,.attendance-table tbody,.attendance-table tr,.attendance-table th,.attendance-table td{background:transparent}.attendance-table th{padding:11px 13px;color:var(--muted);font-size:9px;letter-spacing:.04em;text-transform:uppercase;white-space:nowrap}.attendance-table tbody tr{border-top:1px solid var(--row-line)}.attendance-table tbody th{font-weight:400}.attendance-table tbody tr.alt{background:transparent}.attendance-table td{padding:11px 13px;vertical-align:top}.attendance-table td span{display:block;white-space:nowrap}.excused{color:var(--green);font-style:normal}.unexcused{color:#ef4444;font-style:normal}.attendance-history{display:grid;gap:13px}.attendance-record{overflow:hidden;background:var(--cream)}.attendance-record header{display:flex;align-items:center;justify-content:space-between;gap:15px;padding:13px 16px;border-bottom:1px solid var(--line);background:var(--card-bg)}.attendance-record header strong{color:var(--ink);font-size:12px}.attendance-record-table{display:grid;grid-template-columns:60px minmax(140px,1.3fr) minmax(130px,1fr) minmax(95px,.8fr) minmax(90px,.7fr);min-width:590px}.attendance-record-table+.attendance-record-table{border-top:1px solid var(--line)}.attendance-record-table span{min-width:0;padding:11px 13px;border-right:1px solid var(--row-line)}.attendance-record-table small{display:block;margin-bottom:5px;color:var(--muted);font-size:9px;font-weight:800;letter-spacing:.04em;text-transform:uppercase}.attendance-record-table b{display:block;overflow:hidden;color:var(--muted);font-size:11px;font-weight:400;text-overflow:ellipsis;white-space:nowrap}.attendance-record-table em{display:block;overflow:hidden;margin-top:3px;color:var(--muted);font-size:10px;font-style:normal;text-overflow:ellipsis;white-space:nowrap}.attendance-record-table span:last-child{border-right:0}@media(max-width:760px){.attendance-day{height:56px;padding:4px}.attendance-closure-label{font-size:8px;line-height:1;white-space:normal}.attendance-day.has-school-closure .attendance-dots{margin-top:2px}.attendance-day small{font-size:7px}.attendance-record{overflow-x:auto}.attendance-record header{min-width:590px}.attendance-quarters{display:flex;width:100%}.attendance-quarters button{flex:1;min-width:0;padding:0 5px;font-size:10px}}@media(max-width:760px){.workspace{padding-bottom:calc(104px + env(safe-area-inset-bottom))}.overview-refresh-wrap{margin-left:auto}.mobile-app-nav{position:fixed;bottom:calc(10px + env(safe-area-inset-bottom));left:50%;z-index:50;isolation:isolate;width:min(calc(100% - 24px),430px);display:grid;grid-template-columns:repeat(4,minmax(0,1fr));padding:6px;transform:translate(-50%);border:1px solid color-mix(in srgb,var(--ink) 11%,transparent);border-radius:999px;background:color-mix(in srgb,var(--cream) 34%,transparent);-webkit-backdrop-filter:blur(4px) saturate(120%);backdrop-filter:blur(4px) saturate(120%);box-shadow:inset 0 0 0 1px #ffffff14,0 6px 20px #0000001f}.mobile-app-nav:before{content:"";position:absolute;inset:-1px;z-index:0;border:1px solid transparent;border-radius:inherit;background:linear-gradient(125deg,rgba(255,255,255,.25),transparent 28%,transparent 72%,rgba(255,255,255,.15)) border-box;-webkit-mask:linear-gradient(#000 0 0) padding-box,linear-gradient(#000 0 0);-webkit-mask-composite:xor;mask:linear-gradient(#000 0 0) padding-box,linear-gradient(#000 0 0);mask-composite:exclude;pointer-events:none}.mobile-app-nav button{position:relative;z-index:1;min-width:0;min-height:58px;display:flex;flex-direction:column;align-items:center;justify-content:center;gap:3px;border:0;border-radius:999px;color:var(--muted);background:transparent;cursor:pointer;font-size:10px;font-weight:650;line-height:1;transition:color .16s ease,background-color .16s ease,box-shadow .16s ease}.mobile-app-nav button.active{color:var(--green-dark);background:color-mix(in srgb,var(--lime-soft) 54%,transparent);box-shadow:0 2px 8px #0000000f}.mobile-app-nav svg{width:21px;height:21px}html[data-theme=dark] .mobile-app-nav{border-color:#ffffff21;background:color-mix(in srgb,var(--cream) 52%,transparent);box-shadow:inset 0 0 0 1px #ffffff0a,0 6px 20px #00000047}@media(prefers-color-scheme:dark){html:not([data-theme=light]) .mobile-app-nav{border-color:#ffffff21;background:color-mix(in srgb,var(--cream) 52%,transparent);box-shadow:inset 0 0 0 1px #ffffff0a,0 6px 20px #00000047}}.toast{bottom:calc(90px + env(safe-area-inset-bottom))}.schedule-hall-pass>header{gap:10px}.hall-pass-content{gap:18px;padding:18px}.hall-pass-live-card{grid-template-columns:40px minmax(0,1fr);gap:10px;padding:12px}.hall-pass-card-symbol{width:38px;height:38px;border-radius:12px}.hall-pass-live-card .outline-button{grid-column:2;justify-self:start;min-height:44px}.hall-pass-form{gap:12px}.hall-pass-form select,.hall-pass-form input:not([type=range]){height:46px;padding:0 10px;font-size:13px}.hall-pass-form .primary-button{min-height:48px}.section-tabs{scrollbar-width:none}.section-tabs::-webkit-scrollbar{display:none}.tool-header{align-items:flex-start;gap:12px;padding-top:0}.tool-header .outline-button{flex:0 0 auto;min-width:44px;padding:0 11px;font-size:11px}.tool-header .overview-refresh-button{flex-basis:42px;width:42px;min-width:42px;height:42px;padding:0;font-size:15px}.summary-grid{grid-template-columns:repeat(2,minmax(0,1fr));gap:9px}.summary-grid article{min-height:94px;padding:14px}.attendance-row{grid-template-columns:76px minmax(0,1fr);gap:12px;padding:13px}.schedule-row,.schedule-row.no-time{grid-template-columns:50px minmax(0,1fr);gap:12px;padding:13px}.schedule-time{grid-column:2;justify-content:flex-start}.schedule-time-range{align-items:flex-start}.schedule-row:not(.no-time){grid-template-columns:50px minmax(0,1fr) auto}.schedule-row:not(.no-time) .schedule-time{grid-column:auto;justify-content:flex-end}.schedule-row:not(.no-time) .schedule-time-range{align-items:flex-end}.schedule-row.overview-class-row{grid-template-columns:50px minmax(0,1fr) auto 40px;gap:8px}.overview-class-row .overview-class-grade{grid-column:3}.overview-class-row .overview-open{grid-column:4}.overview-class-row .overview-class-grade{justify-self:end;align-items:flex-end}.overview-class-row .overview-class-semester-line{min-width:0;flex-direction:column;align-items:flex-end;gap:4px}.overview-class-row .overview-class-semester-line .overview-semester-tag{order:1}.overview-class-row .schedule-main{min-width:0}.document-row{grid-template-columns:40px minmax(0,1fr) auto;gap:11px;padding:12px}.document-actions button{width:38px;height:38px}#scheduleView.is-full-schedule #scheduleTermControl{width:100%;min-width:0}#scheduleView .tool-content{height:auto;min-height:0;margin-top:18px}#scheduleView.is-full-schedule .tool-controls:has(#scheduleTermControl:not(.hidden))+.tool-content{margin-top:10px}#scheduleView #scheduleContent .schedule-list{height:auto;min-height:0;margin-top:0;align-content:start}#scheduleView.is-full-schedule #scheduleContent .schedule-row{min-height:76px}.tool-controls{align-items:center;flex-flow:row wrap;gap:10px}#attendanceView .attendance-controls{margin-top:18px;margin-bottom:18px}#attendanceView .attendance-controls+.attendance-shell,#attendanceView .attendance-controls+.attendance-history,#attendanceView .attendance-controls+.attendance-summary,#attendanceView .attendance-controls+.tool-state{margin-top:0}#scheduleView .tool-controls{display:grid;grid-template-columns:minmax(0,1fr) auto;align-items:center;column-gap:8px;row-gap:12px}#scheduleView .tool-controls>.segmented-control{grid-column:1;grid-row:1;align-self:center;justify-self:start;min-width:0}#scheduleView .tool-controls>.segmented-control button{padding-inline:8px;white-space:nowrap}#scheduleView #scheduleTermControl{grid-column:1 / -1;grid-row:2;width:100%;max-width:none}#scheduleView .schedule-tool-actions{grid-column:2;grid-row:1;gap:6px;margin-left:0}#scheduleView .schedule-tool-actions .overview-refresh-button{width:40px;min-width:40px}#scheduleView .schedule-hall-pass-trigger{padding-inline:10px;font-family:inherit;font-size:11px;font-weight:800;line-height:normal;letter-spacing:normal;white-space:nowrap}#scheduleView .schedule-hall-pass-trigger:first-letter{font-size:11px}.document-search{flex:1 1 220px;width:auto}.overview-control-icon{width:42px;height:42px;flex-basis:42px}.gpa-summary{padding:14px}.gpa-course-row{grid-template-columns:minmax(0,1fr) 64px;column-gap:12px;row-gap:10px;padding:13px 14px}.gpa-course-grade{justify-content:flex-end}.gpa-course-weighting{grid-column:1;grid-row:2}.gpa-course-level{height:44px}.gpa-course-points{min-height:44px;grid-column:2;grid-row:2;width:64px}}@media(max-width:370px){.workspace{padding-right:10px;padding-left:10px}.mobile-app-nav{padding-right:4px;padding-left:4px}.mobile-app-nav button{font-size:8px}}#assignmentsPanel .table-scroll{overflow:visible}#assignmentsPanel table,#assignmentsPanel tbody{width:100%;display:block}#assignmentsPanel tr{width:100%;min-height:84px;display:grid;grid-template-columns:54px minmax(0,1fr) auto 34px;align-items:center;gap:14px;padding:17px 18px;border-top:1px solid var(--row-line)}#assignmentsPanel tr:first-child{border-top:0}#assignmentsPanel td,#assignmentsPanel td:first-child{width:auto;min-width:0;padding:0;border:0}#assignmentsPanel .col-category{width:54px;text-align:left}#assignmentsPanel .assignment-category-input{width:48px;min-width:48px;height:48px;padding:0 4px;border:1px solid var(--line);border-radius:12px;color:var(--green-dark);background:var(--lime-soft);font-size:12px;font-weight:800;text-align:center;text-align-last:center;cursor:pointer}#assignmentsPanel .col-assignment{min-width:0}#assignmentsPanel .assignment-title{display:flex;align-items:center;flex-wrap:wrap;gap:7px;color:var(--ink);font-size:15px;font-weight:650;line-height:1.35}#assignmentsPanel .assignment-name-input{width:100%;min-width:0;height:38px;font-size:14px}#assignmentsPanel .assignment-ungraded-label{margin:0}#assignmentsPanel .assignment-meta{min-height:24px;display:flex;align-items:center;flex-wrap:wrap;gap:10px;margin-top:1px;color:var(--muted);font-size:13px;font-weight:500}.assignment-comment-button{min-height:34px;display:inline-flex;align-items:center;gap:5px;padding:0 9px;border:1px solid var(--callout-line);border-radius:999px;color:var(--green-dark);background:var(--callout-bg);cursor:pointer;font-size:10px;font-weight:800;white-space:nowrap}.assignment-comment-button:hover{border-color:var(--green);background:var(--lime-soft)}.assignment-comment-button svg{width:14px;height:14px;fill:none;stroke:currentColor;stroke-width:1.8;stroke-linecap:round;stroke-linejoin:round}#assignmentsPanel .assignment-meta>i:not(.mobile-result-separator){width:1px;height:18px;flex:0 0 1px;background:var(--line)}#assignmentsPanel .mobile-result-separator{display:none}#assignmentsPanel .score-inputs{display:inline-flex;align-items:center;gap:2px}#assignmentsPanel .score-inputs .score-separator{color:var(--muted)!important}#assignmentsPanel .score-editor{display:inline-flex;align-items:center}#assignmentsPanel .score-value{width:var(--score-width,44px);min-width:44px;height:36px;min-height:36px;padding:3px 4px;border:1px solid var(--line);border-radius:7px;color:var(--ink);background:var(--input-bg);font-size:14px;font-weight:500;line-height:1.4;cursor:text}#assignmentsPanel .score-value:hover{border-color:var(--green);background:var(--hover-bg)}#assignmentsPanel .score-value:focus-visible{outline:2px solid var(--green);outline-offset:2px}#assignmentsPanel .score-value.score-earned-input.grade-a{color:var(--grade-a);font-weight:700}#assignmentsPanel .score-value.score-earned-input.grade-b{color:var(--grade-b);font-weight:700}#assignmentsPanel .score-value.score-earned-input.grade-c{color:var(--grade-c);font-weight:700}#assignmentsPanel .score-value.score-earned-input.grade-d{color:var(--grade-d);font-weight:700}#assignmentsPanel .score-value.score-earned-input.grade-e{color:var(--grade-e);font-weight:700}#assignmentsPanel .score-value.score-earned-input.grade-none{color:var(--muted)}#assignmentsPanel .score-inputs.grade-none,#assignmentsPanel .score-inputs.grade-none .score-value,#assignmentsPanel .score-inputs.grade-none small{color:color-mix(in srgb,var(--muted) 72%,transparent)!important}#assignmentsPanel .score-inputs input{width:var(--score-width,44px);height:36px;padding:3px 4px;border-color:transparent;background:transparent;font-size:14px;text-align:center;cursor:text}#assignmentsPanel .score-inputs input:focus{border-color:var(--green);background:var(--input-bg);box-shadow:0 0 0 2px color-mix(in srgb,var(--green) 14%,transparent)}#assignmentsPanel .score-inputs small{color:var(--muted);font-size:12px}#assignmentsPanel .col-result{min-width:78px;text-align:right}#assignmentsPanel .mobile-assignment-result{display:none}#assignmentsPanel .col-actions{width:34px;text-align:center}#assignmentsPanel .delete-assignment-button{width:34px;height:34px;display:inline-grid;place-items:center}#assignmentsPanel .delete-assignment-label{display:none}@media(max-width:760px){#assignmentsPanel .assignment-ungraded-label.label-not-graded{display:none}#assignmentsPanel tr{min-height:0;grid-template-columns:44px minmax(0,1fr);grid-template-rows:auto auto;column-gap:10px;row-gap:8px;padding:12px 24px 12px 12px}#assignmentsPanel .col-category{width:44px}#assignmentsPanel .assignment-category-input{width:42px;min-width:42px;height:42px;border-radius:11px}#assignmentsPanel .col-category{grid-column:1;grid-row:1}#assignmentsPanel .col-assignment{display:contents}#assignmentsPanel .assignment-title{grid-column:2;grid-row:1;display:flex;overflow:visible;overflow-wrap:anywhere;-webkit-line-clamp:unset}#assignmentsPanel .assignment-meta{grid-column:1 / -1;grid-row:2;width:100%;min-width:0;flex-wrap:wrap;overflow:visible}#assignmentsPanel .assignment-meta::-webkit-scrollbar{display:none}#assignmentsPanel tr{position:relative;overflow:hidden;touch-action:pan-y;--swipe-offset: 0px}#assignmentsPanel tr:after{content:"‹‹";position:absolute;top:50%;right:9px;color:var(--muted);font-size:19px;font-weight:400;letter-spacing:-1px;line-height:1;pointer-events:none;opacity:.62;transform:translateY(-50%);transition:opacity .16s ease}#assignmentsPanel .col-category,#assignmentsPanel .assignment-title,#assignmentsPanel .assignment-meta{transition:transform .22s cubic-bezier(.2,.75,.25,1)}#assignmentsPanel .col-category,#assignmentsPanel .assignment-title,#assignmentsPanel .assignment-meta{transform:translate3d(var(--swipe-offset),0,0)}#assignmentsPanel .col-actions{position:absolute;top:0;right:0;bottom:0;width:82px;display:flex;align-items:stretch;justify-content:stretch;transform:translate3d(calc(100% + var(--swipe-offset)),0,0);transition:transform .22s cubic-bezier(.2,.75,.25,1)}#assignmentsPanel .delete-assignment-button{width:100%;height:100%;border-radius:0;color:#fff;background:#ef4444}#assignmentsPanel .delete-assignment-button:hover,#assignmentsPanel .delete-assignment-button:active{color:#fff;background:#dc2626}#assignmentsPanel .delete-assignment-button svg{display:none}#assignmentsPanel .delete-assignment-label{display:inline;font-size:12px;font-weight:800}#assignmentsPanel tr.is-swiping .col-category,#assignmentsPanel tr.is-swiping .assignment-title,#assignmentsPanel tr.is-swiping .assignment-meta,#assignmentsPanel tr.is-swiping .col-actions{transition:none}#assignmentsPanel tr.has-swipe-offset:after{opacity:0}#assignmentsPanel .col-result{display:none}#assignmentsPanel .mobile-assignment-result{display:inline-flex;min-width:0;margin-left:2px}#assignmentsPanel .mobile-assignment-result .result-percent{font-size:12px}#assignmentsPanel .mobile-assignment-result .result-grade,#assignmentsPanel .mobile-assignment-result .result-status,#assignmentsPanel .assignment-title{font-size:14px}#assignmentsPanel .assignment-meta{min-height:30px;gap:8px;font-size:13px}.assignment-comment-button{min-height:40px;padding:0 10px}#assignmentsPanel .assignment-meta>i:not(.mobile-result-separator){flex-basis:100%;height:0;background:none}#assignmentsPanel .assignment-meta>span:first-child{white-space:nowrap}#assignmentsPanel .assignment-meta .score-inputs{flex-shrink:0}#assignmentsPanel .assignment-meta .mobile-result-separator{display:block;width:1px;height:18px;flex:0 0 1px;background:var(--line)}#assignmentsPanel .score-value{height:34px;min-height:34px}#assignmentsPanel .score-inputs input{width:var(--score-width,44px);height:34px;font-size:14px}}.teacher-comment-dialog{width:min(540px,calc(100vw - 28px));max-height:min(80dvh,620px);padding:0;border:1px solid var(--line);border-radius:22px;color:var(--ink);background:var(--paper);box-shadow:0 24px 70px #0000004d;overflow:hidden}.teacher-comment-dialog::backdrop{background:#0000007a;backdrop-filter:blur(4px)}.teacher-comment-dialog[open]{animation:mango-rise .26s cubic-bezier(.2,.75,.25,1) both}.teacher-comment-sheet{padding:23px}.teacher-comment-handle{display:none}.teacher-comment-sheet header{display:flex;align-items:flex-start;justify-content:space-between;gap:18px}.teacher-comment-sheet h2{margin:5px 0 0;font-family:var(--font-display);font-size:24px;letter-spacing:-.03em}.teacher-comment-sheet header button{width:40px;height:40px;display:grid;flex:0 0 40px;place-items:center;padding:0;border:0;border-radius:12px;color:var(--muted);background:var(--cream);cursor:pointer;font-size:25px;line-height:1}.teacher-comment-sheet header button:hover{color:var(--ink);background:var(--hover-bg)}.teacher-comment-assignment{margin:22px 0 0;color:var(--ink);font-size:14px;font-weight:800}.teacher-comment-meta{margin:4px 0 0;color:var(--muted);font-size:11px}.teacher-comment-body{margin-top:17px;padding:18px;border:1px solid var(--callout-line);border-radius:15px;background:var(--callout-bg);font-size:14px;line-height:1.65;white-space:pre-wrap;overflow-wrap:anywhere}@media(max-width:760px){.gpa-dialog{width:100%;max-width:none;max-height:88dvh;margin:auto 0 0;border-right:0;border-bottom:0;border-left:0;border-radius:24px 24px 0 0}.gpa-dialog[open]{animation-name:teacher-sheet-rise}.gpa-dialog-card{padding:10px 14px calc(22px + env(safe-area-inset-bottom))}.gpa-dialog-handle{width:42px;height:5px;display:block;margin:0 auto 13px;border-radius:999px;background:var(--line)}.gpa-dialog-card>header{padding:0 4px}.gpa-dialog-card>header h2{font-size:24px}.gpa-dialog-content{margin-top:18px}.teacher-comment-dialog{width:100%;max-width:none;max-height:78dvh;margin:auto 0 0;border-right:0;border-bottom:0;border-left:0;border-radius:24px 24px 0 0}.teacher-comment-dialog[open]{animation-name:teacher-sheet-rise}.teacher-comment-sheet{padding:10px 18px calc(24px + env(safe-area-inset-bottom))}.teacher-comment-handle{width:42px;height:5px;display:block;margin:0 auto 13px;border-radius:999px;background:var(--line)}.teacher-comment-body{max-height:40dvh;overflow-y:auto}}@keyframes teacher-sheet-rise{0%{opacity:0;transform:translateY(32px)}to{opacity:1;transform:translateY(0)}}.trajectory-wrapper{margin-top:28px;border:1px solid var(--line);border-radius:18px;background:var(--paper);box-shadow:var(--shadow-sm);overflow:hidden;transition:border-color .2s ease,box-shadow .2s ease}.trajectory-wrapper:hover{border-color:var(--line-strong, var(--line))}.trajectory-toggle-btn{width:100%;display:flex;align-items:center;justify-content:space-between;gap:14px;padding:16px 20px;background:transparent;border:none;font-family:inherit;color:inherit;cursor:pointer;text-align:left;transition:background .15s ease}.trajectory-toggle-btn:hover{background:var(--hover-bg, rgba(0,0,0,.02))}.trajectory-toggle-left{display:flex;align-items:center;gap:14px}.trajectory-toggle-icon{font-size:20px;line-height:1;width:32px;height:32px;display:grid;place-items:center;border-radius:10px;background:var(--cream, rgba(0,0,0,.04))}.trajectory-toggle-left strong{display:block;font-size:14px;font-weight:700;color:var(--ink);letter-spacing:-.01em}.trajectory-toggle-left small{display:block;font-size:12px;color:var(--muted);margin-top:2px}.trajectory-toggle-badge{font-size:12px;font-weight:700;padding:5px 12px;border-radius:999px;background:var(--cream);color:var(--ink);border:1px solid var(--line);transition:all .2s ease}.trajectory-toggle-btn[aria-expanded=true] .trajectory-toggle-badge{background:var(--ink);color:var(--paper)}.trajectory-container{padding:0 20px 24px;border-top:1px solid var(--line);animation:trajectory-expand .25s cubic-bezier(.2,.75,.25,1) both}@keyframes trajectory-expand{0%{opacity:0;transform:translateY(-8px)}to{opacity:1;transform:translateY(0)}}.trajectory-empty{padding:32px 16px;text-align:center;color:var(--muted)}.trajectory-empty-icon{font-size:28px;display:block;margin-bottom:8px}.trajectory-header{display:flex;align-items:center;justify-content:space-between;gap:12px;padding:10px 14px;margin:14px 0 10px;background:var(--cream, rgba(0, 0, 0, .03));border:1px solid var(--line);border-radius:12px}.trajectory-header-left{display:flex;align-items:center;gap:10px;flex-wrap:wrap}.trajectory-status-badge{font-size:14px;font-weight:800;padding:3px 9px;border-radius:8px;letter-spacing:-.01em;display:inline-flex;align-items:center}.trajectory-header-meta{font-size:12px;color:var(--muted);font-weight:500}.trajectory-header-meta b{font-weight:700}.trajectory-range-label{font-size:11px;color:var(--muted);font-weight:600}@media(max-width:520px){.trajectory-header{flex-direction:column;align-items:flex-start;gap:6px}}.trend-up{color:#22c55e!important}.trend-down{color:#ef4444!important}.trend-flat{color:var(--muted)!important}.trajectory-chart-wrap{position:relative;width:100%;height:230px;margin:12px 0 8px;background:var(--card-bg, transparent);border-radius:12px}.grade-trajectory-svg{width:100%;height:100%;overflow:visible}.trajectory-point-group{cursor:pointer;outline:none}.trajectory-hit-target{pointer-events:all;cursor:pointer}.trajectory-focus-ring{opacity:0;pointer-events:none;transition:opacity .15s ease,r .15s ease}.trajectory-point-group:hover .trajectory-focus-ring,.trajectory-point-group:focus .trajectory-focus-ring{opacity:.65;r:9}.trajectory-point-group.is-selected .trajectory-focus-ring{opacity:1;r:9.5;stroke-width:2.5}.trajectory-dot{pointer-events:none;transition:fill .15s ease}.trajectory-detail-card{margin-top:14px;padding:14px 16px;background:var(--cream, rgba(0, 0, 0, .03));border:1px solid var(--line);border-radius:12px;display:flex;flex-direction:column;gap:8px;transition:background .15s ease,border-color .15s ease}.trajectory-detail-header{display:flex;align-items:flex-start;justify-content:space-between;gap:12px}.trajectory-detail-date{font-size:11px;color:var(--muted);font-weight:600;text-transform:uppercase;letter-spacing:.04em}.trajectory-detail-title{margin:3px 0 0;font-size:14px;font-weight:700;color:var(--ink)}.trajectory-detail-grade{text-align:right;display:flex;flex-direction:column;align-items:flex-end;flex-shrink:0}.trajectory-detail-grade strong{font-size:16px;font-weight:800;line-height:1.1}.trajectory-detail-grade small{font-size:11px;font-weight:600;margin-top:2px}.trajectory-detail-meta{display:flex;flex-wrap:wrap;gap:14px;font-size:12px;color:var(--muted);padding-top:8px;border-top:1px solid var(--line)}.trajectory-detail-meta b{color:var(--ink)}.trajectory-detail-notes{font-size:12px;padding:8px 10px;border-radius:8px;background:var(--card-bg, rgba(0, 0, 0, .02));border:1px solid var(--line);color:var(--ink)}.site-footer{position:relative;z-index:1;display:flex;align-items:center;justify-content:space-between;gap:14px 24px;padding:16px max(5vw,20px) calc(16px + env(safe-area-inset-bottom));border-top:1px solid var(--line);color:var(--muted);background:var(--paper);font-size:11px}.site-footer p{margin:0}.site-footer nav{display:flex;flex-wrap:wrap;gap:16px}.site-footer a{color:var(--muted);font-weight:700;text-decoration:none}.site-footer a:hover{color:var(--green)}.login-policy-links{display:flex;justify-content:center;gap:14px;margin-top:9px;font-size:11px}.login-policy-links a{color:var(--muted);font-weight:700;text-decoration:none}.login-policy-links a:hover{color:var(--green);text-decoration:underline}@media(max-width:600px){.site-footer{align-items:flex-start;flex-direction:column}.site-footer nav{gap:12px}.login-policy-links a{display:inline-flex;min-height:40px;align-items:center;padding:0 4px}}
