:root{color-scheme:light;--bg:#f5f6fa;--surface:#fff;--surface-soft:#f8f9fc;--ink:#20232c;--muted:#737986;--faint:#a1a6b1;--line:#e9ebf1;--blue:#0075ed;--blue-soft:#e9f2ff;--green:#29865b;--glass:rgba(255,255,255,.64);--glass-edge:rgba(255,255,255,.9);--shadow:0 4px 24px #1b356408;--radius:24px;--a:#4f7fdb;--abg:#edf3ff;--b:#9872d6;--bbg:#f4effc;--c:#b87936;--cbg:#fcf3e7;--d:#348c81;--dbg:#eaf6f3;font-family:-apple-system,BlinkMacSystemFont,"SF Pro Text","Helvetica Neue","PingFang SC",sans-serif;font-synthesis:none;-webkit-font-smoothing:antialiased;color:var(--ink);background:var(--bg)}
*{box-sizing:border-box}body{margin:0;background:radial-gradient(ellipse at 0 5%,#deebfb70 0,transparent 42%),radial-gradient(ellipse at 100% 0,#ede7fa70 0,transparent 42%),var(--bg);min-height:100vh}button,input,select,textarea{font:inherit}button,a,input,select,textarea{-webkit-tap-highlight-color:transparent}button{cursor:pointer}a{color:inherit}button,.button{display:inline-flex;align-items:center;justify-content:center;gap:8px;min-height:44px;padding:10px 17px;background:var(--surface);color:var(--ink);border:1px solid var(--line);border-radius:14px;font-size:13px;font-weight:600;text-decoration:none;transition:background .18s,transform .18s,box-shadow .18s}button:hover,.button:hover{background:var(--surface-soft);box-shadow:0 3px 12px #22375508}button:active,.button:active{transform:scale(.975)}button:disabled{opacity:.5;cursor:wait}button.primary,.button.primary{background:var(--blue);color:#fff;border-color:transparent;box-shadow:0 4px 10px #0075ed16}button.primary:hover,.button.primary:hover{background:#0068d4}button:focus-visible,a:focus-visible,input:focus-visible,textarea:focus-visible,select:focus-visible,summary:focus-visible{outline:3px solid #007aff75;outline-offset:4px}main:focus{outline:none}svg{display:block;fill:none;stroke:currentColor;stroke-width:1.7;stroke-linecap:round;stroke-linejoin:round}.icon{width:19px;height:19px;flex-shrink:0}.icon-button{width:44px;padding:10px;flex-shrink:0}.text-button{background:transparent;border:0;color:var(--blue);padding:6px 0;min-height:44px;font-size:12px;box-shadow:none!important}.text-button:hover{background:transparent;text-decoration:underline}.text-link{display:inline-flex;min-height:44px;align-items:center;color:var(--blue);text-decoration:none;font-size:12px}.glass{background:var(--glass);border:1px solid var(--glass-edge);box-shadow:inset 0 1px 0 #ffffff70,0 8px 28px #264b7110;backdrop-filter:blur(28px) saturate(160%);-webkit-backdrop-filter:blur(28px) saturate(160%)}
.shell{max-width:1600px;min-height:100vh;margin:0 auto;display:grid;grid-template-columns:232px minmax(0,1fr);gap:4px;padding:16px}.sidebar{border-radius:25px;position:sticky;top:16px;height:calc(100dvh - 32px);padding:30px 17px 22px;display:flex;flex-direction:column}.brand{display:flex;align-items:center;gap:11px;text-decoration:none;font-weight:700;letter-spacing:-.5px;font-size:18px;padding:0 7px}.brand small{display:block;font-size:10px;font-weight:500;color:var(--muted);letter-spacing:.3px;margin-top:5px}.mark{height:41px;width:41px;flex-shrink:0;display:grid;place-items:center;color:white;border-radius:13px;background:linear-gradient(145deg,#67b7ff,#0877ef);box-shadow:inset 0 1px 1px #ffffff75,0 5px 10px #0075ed19}.mark svg{width:25px;height:25px;stroke-width:1.6}.schoolyear{font-size:10px;letter-spacing:.8px;color:var(--muted);margin:42px 15px 14px}nav{display:grid;gap:7px}nav a{display:flex;align-items:center;gap:13px;min-height:47px;padding:12px 16px;font-size:13px;font-weight:500;text-decoration:none;color:var(--muted);border-radius:14px;transition:background .18s}nav a svg{height:21px;width:21px}nav a:hover{background:#007aff08}nav a.active{color:var(--blue);background:rgba(255,255,255,.85);font-weight:650;box-shadow:0 2px 8px #1a3e6a0a,inset 0 1px 0 #fff}.sidefoot{margin-top:auto;padding:18px 10px 0;display:grid;gap:20px}.sidefoot>small{font-size:9px;color:var(--faint)}.school-badge{font-size:10px;font-weight:600;line-height:1.6}.school-badge small{display:block;color:var(--muted);font-size:9px;font-weight:400;margin:3px 0 0 13px}.school-dot{width:5px;height:5px;background:#66a8fa;border-radius:50%;display:inline-block;margin-right:8px;vertical-align:2px}main{min-width:0;padding:0 clamp(24px,3.3vw,54px) 12px}.topbar{height:65px;border-bottom:1px solid var(--line);display:flex;align-items:center;justify-content:space-between;font-size:11px;color:var(--muted)}.topbar-title{display:flex;gap:12px;align-items:center}.topbar-title>span:first-child{color:#c7cbd4}.topbar-title>span:last-child{color:var(--ink)}.connection{display:flex;align-items:center;gap:6px;font-size:10px}.connection:before{content:'';height:5px;width:5px;border-radius:50%;background:var(--green)}
.heading{display:flex;justify-content:space-between;align-items:center;gap:20px;margin:33px 0 24px}.eyebrow{font-size:9px;font-weight:650;letter-spacing:1.7px;color:var(--muted)}h1{font-size:36px;letter-spacing:-1.3px;font-weight:750;line-height:1.25;margin:8px 0 0}h2{font-size:17px;letter-spacing:-.4px;line-height:1.4;margin:0 0 12px;font-weight:650}h3{font-size:15px;margin:0 0 8px;line-height:1.5;font-weight:600}p{line-height:1.8}.sub{color:var(--muted);font-size:12px;margin:10px 0 0;line-height:1.7}.row{display:flex;align-items:center;gap:10px;flex-wrap:wrap}.between{justify-content:space-between}.datecontrol{display:flex;align-items:center;gap:2px;border-radius:100px;padding:3px}.datecontrol .icon-button{border:0;background:transparent;width:34px;padding:9px;min-height:36px}.datecontrol .icon-button:first-child svg{transform:rotate(180deg)}.datecontrol .icon{width:15px;height:15px}.datecontrol input{border:0;background:transparent;border-radius:6px;font-size:11px;font-weight:550;margin:0;width:118px;min-height:34px;padding:6px;color:var(--ink)}.datecontrol input::-webkit-calendar-picker-indicator{opacity:.45;cursor:pointer}.datecontrol .today-button{background:var(--surface);min-height:34px;padding:6px 14px;border-radius:100px;font-size:11px;box-shadow:0 2px 5px #17294207}.day-strip{display:grid;grid-template-columns:repeat(7,1fr);gap:8px;margin:0 0 23px}.day-chip{min-width:0;display:flex;flex-direction:column;gap:6px;border:1px solid transparent;border-radius:18px;background:transparent;padding:10px 5px;font-weight:500;box-shadow:none!important}.day-chip>span:first-child{font-size:10px;color:var(--muted)}.day-chip strong{font-size:21px;font-weight:600;line-height:1.4;letter-spacing:-.4px}.day-chip.selected{background:var(--surface);border-color:var(--line);box-shadow:var(--shadow)!important}.day-chip.is-today strong{background:var(--blue);color:#fff;border-radius:50%;width:34px;height:34px;display:grid;place-items:center}.day-chip strong{height:34px;display:grid;place-items:center}.day-indicator{font-size:9px;color:var(--faint);line-height:1.5}.day-indicator.has-class{color:var(--blue)}
.hero{display:grid;grid-template-columns:minmax(0,1fr) auto;gap:24px;border-radius:var(--radius);padding:28px 32px;background:linear-gradient(120deg,var(--surface) 35%,var(--blue-soft));border:1px solid var(--surface);box-shadow:var(--shadow);position:relative;overflow:hidden;min-height:213px}.focus-copy{min-width:0}.focus-eyebrow{display:flex;align-items:center;gap:7px;font-size:10px;font-weight:600;color:var(--blue)}.status-dot{width:6px;height:6px;border-radius:50%;background:currentColor}.hero.live .status-dot{box-shadow:0 0 0 4px #007aff10}.hero h2{font-size:29px;font-weight:700;letter-spacing:-.8px;margin:14px 0 7px;line-height:1.35;overflow-wrap:anywhere}.focus-meta{font-size:11px;color:var(--muted);margin:0}.meta-divider{color:var(--faint);margin:0 3px}.focus-location{display:flex;align-items:center;flex-wrap:wrap;gap:5px;color:var(--muted);font-size:12px;margin:12px 0 2px;overflow-wrap:anywhere}.focus-location .icon{color:var(--blue);width:15px;height:15px}.focus-note{display:flex;gap:8px;align-items:flex-start;margin:12px 0 4px;font-size:11px;line-height:1.7;color:var(--muted)}.focus-note span{display:-webkit-box;-webkit-line-clamp:2;-webkit-box-orient:vertical;overflow:hidden;overflow-wrap:anywhere}.focus-note .icon{width:14px;height:14px;margin-top:3px}.focus-metric{align-self:center;text-align:right;display:grid;gap:7px;color:var(--muted);font-size:10px;min-width:108px}.focus-metric>strong{color:var(--blue);font-size:57px;letter-spacing:-2px;line-height:1.1;font-weight:600;font-variant-numeric:tabular-nums}.focus-metric>strong small{font-size:12px;letter-spacing:0;margin-left:7px;font-weight:500}.focus-metric .clock-value{font-size:43px;letter-spacing:-1.6px}.focus-symbol{height:88px;width:88px;display:grid;place-items:center;border-radius:50%;color:#6c9de2;background:#ffffff65;box-shadow:inset 0 1px 0 #ffffffa0;border:1px solid #ffffff85}.focus-symbol svg{width:41px;height:41px;stroke-width:1.2}.next-day-link{display:flex;justify-content:space-between;gap:20px;border:0;background:transparent;text-align:left;padding:13px 0 0;box-shadow:none!important;margin-top:6px}.next-day-link:hover{background:transparent;color:var(--blue)}.next-day-link small{display:block;font-size:10px;color:var(--muted);font-weight:400;line-height:1.6}.next-day-link strong{display:block;font-size:12px;font-weight:550;margin-top:3px}.next-day-link .icon{width:16px;height:16px;color:var(--blue)}.hero .text-button{margin-top:5px}.notice{border:1px solid #e9d9b4;background:#fff9eb;padding:15px 18px;border-radius:16px;color:#8b671f;font-size:12px;line-height:1.8;margin-top:18px}.notice a{font-weight:600}.error{border:1px solid #efc0bc;background:#fff1ee;border-radius:14px;padding:16px;color:#a83b32;font-size:13px}
.dashboard{display:grid;grid-template-columns:minmax(0,1.7fr) minmax(245px,1fr);align-items:start;gap:26px;margin-top:30px}.sectionhead{display:flex;align-items:center;justify-content:space-between;gap:10px;margin-bottom:17px}.sectionhead h2{margin:0}.sectionhead small{font-size:10px;color:var(--muted)}.tag{display:inline-flex;align-items:center;background:var(--surface-soft);border:1px solid var(--line);padding:5px 8px;border-radius:7px;font-size:10px;line-height:1.3;color:var(--muted)}.day-progress{font-size:10px;color:var(--muted);margin:-2px 0 17px}.progress-track{background:var(--line);height:3px;border-radius:5px;overflow:hidden;margin-top:10px}.progress-track>span{display:block;height:100%;background:#7aabf2;border-radius:5px;transition:width .25s}.timeline{display:grid;gap:9px}.period{display:grid;grid-template-columns:54px 37px minmax(0,1fr) 15px;align-items:center;gap:13px;text-align:left;padding:17px 16px;border:1px solid var(--line);border-radius:19px;min-height:88px;width:100%;background:var(--surface);box-shadow:0 2px 8px #17375f02;font-weight:400}.period:hover{border-color:#a0c7f7;background:var(--surface);box-shadow:0 4px 14px #16375a08}.period .time{font-size:14px;font-weight:600;font-variant-numeric:tabular-nums;letter-spacing:-.2px;line-height:1.5;color:var(--ink)}.period .time small{display:block;color:var(--muted);font-size:10px;font-weight:400;margin-top:3px;letter-spacing:0}.course-symbol{height:37px;width:37px;border-radius:12px;display:grid;place-items:center;font-size:15px;font-weight:600;flex-shrink:0}.block-A{--block:var(--a);--block-bg:var(--abg)}.block-B{--block:var(--b);--block-bg:var(--bbg)}.block-C{--block:var(--c);--block-bg:var(--cbg)}.block-D{--block:var(--d);--block-bg:var(--dbg)}.course-symbol{color:var(--block,var(--muted));background:var(--block-bg,var(--surface-soft))}.period-copy{display:block;min-width:0}.period-title{display:flex;align-items:center;flex-wrap:wrap;gap:7px;font-size:14px;font-weight:600;line-height:1.6;overflow-wrap:anywhere}.period-meta{display:block;font-size:10px;color:var(--muted);line-height:1.6;margin-top:3px;overflow-wrap:anywhere}.period-note{font-size:10px;color:var(--muted);white-space:nowrap;overflow:hidden;text-overflow:ellipsis;display:block;margin-top:4px}.period-end{color:var(--faint)}.period-end svg{width:14px;height:14px;stroke-width:1.7}.period.current{border-color:#7eb2f3;box-shadow:0 0 0 2px #007aff08;background:linear-gradient(105deg,var(--surface),var(--blue-soft))}.period.current .period-title{color:var(--blue)}.live-label{font-size:8px;font-weight:500;border-radius:5px;padding:1px 5px;background:var(--blue-soft);color:var(--blue)}.completed .period-copy,.completed .course-symbol{opacity:.62}.completed .period-end{color:#78a78e}.period.break{background:transparent;border:0;box-shadow:none;padding:7px 16px;min-height:57px;grid-template-columns:54px 37px 1fr;font-size:10px;color:var(--muted)}.period.break .time{font-size:10px;font-weight:400;color:var(--muted)}.period.break .time small{font-size:9px}.break-line{width:1px;height:30px;background:var(--line);justify-self:center}.period.break .period-copy>span{display:block;font-weight:500;line-height:1.8}.period.break .period-copy small{font-size:9px;color:var(--faint);line-height:1.6}.period.active-break{color:var(--blue)}.schedule-hint{font-size:10px;color:var(--muted);margin:16px 0 7px;text-align:center}.schedule-bottom{border-top:1px solid var(--line);margin-top:18px;padding-top:8px;display:flex;align-items:center;justify-content:space-between;gap:10px;color:var(--muted);font-size:9px}.schedule-bottom>span{display:flex;align-items:center;gap:5px}.schedule-bottom>span svg{width:12px;height:12px;color:var(--green)}.schedule-bottom .text-button{font-size:10px}.schedule-bottom .text-button .icon{height:12px;width:12px}.card{background:var(--surface);border:1px solid var(--line);border-radius:22px;padding:23px;margin-bottom:17px;min-width:0;box-shadow:0 3px 14px #24395b02}.card p{font-size:12px;line-height:1.8;color:var(--muted);margin:7px 0 14px}.card.tint{background:var(--surface-soft)}.small{font-size:11px;line-height:1.8;color:var(--muted)}a.small{color:var(--blue);text-decoration:none}.square-icon{width:34px;height:34px;border-radius:11px;background:var(--blue-soft);color:var(--blue);display:grid;place-items:center}.square-icon .icon{height:19px;width:19px}.setup-card h2{margin:0;font-size:16px}.setup-card .button{width:100%;font-size:12px;margin-top:3px}.event{display:flex;gap:10px;align-items:flex-start;padding:10px 0;border-bottom:1px solid var(--line);font-size:12px;line-height:1.7}.event:last-of-type{border-bottom:0}.event strong{font-weight:500}.event small{display:block;font-size:10px;color:var(--muted);margin-top:3px}.event-dot{width:5px;height:5px;flex-shrink:0;background:var(--b);border-radius:50%;margin-top:7px}.quiet-empty{padding:2px 0;color:var(--faint)!important}.coverage{font-size:9px;color:var(--muted);line-height:1.8;padding:0 5px}.empty{border:1px solid var(--line);border-radius:22px;background:var(--surface);padding:35px 24px;text-align:center}.empty-icon{margin:0 auto 18px;width:50px;height:50px;border-radius:17px;display:grid;place-items:center;background:var(--blue-soft);color:var(--blue)}.empty-icon svg{width:27px;height:27px;stroke-width:1.4}.empty h3{font-size:17px}.empty p{font-size:12px;color:var(--muted)}.empty .row{justify-content:center;margin-top:18px}
.week-overview{display:flex;gap:23px;flex-wrap:wrap;margin:27px 0;color:var(--muted);font-size:11px}.week-overview>span{display:flex;gap:7px;align-items:center}.week-overview svg{height:16px;width:16px;color:var(--blue)}.week{display:grid;gap:12px}.weekday{display:grid;grid-template-columns:56px minmax(0,1fr);gap:22px;padding:21px 23px;border:1px solid var(--line);background:var(--surface);border-radius:22px}.week-date{display:flex;flex-direction:column;align-items:center;gap:5px;align-self:center}.week-date>span{font-size:10px;color:var(--muted)}.week-date strong{font-size:29px;line-height:1.4;letter-spacing:-.7px;font-weight:600}.week-date small{font-size:9px;color:var(--muted)}.today-row{border-color:#b3cef6}.today-row .week-date strong{color:var(--blue)}.today-row .week-date small{color:var(--blue)}.week-content{min-width:0}.minicourses{display:grid;grid-template-columns:repeat(4,minmax(0,1fr));gap:9px}.mini{display:block;text-align:left;border:0;border-radius:12px;background:var(--block-bg);padding:12px;min-width:0;min-height:76px}.mini:hover{background:var(--block-bg);box-shadow:0 3px 10px #26405c0e;transform:translateY(-1px)}.mini>span{font-size:11px;font-weight:500;display:flex;align-items:baseline;gap:7px;overflow-wrap:anywhere;line-height:1.6}.mini b{color:var(--block);font-size:11px}.mini small{font-size:9px;color:var(--muted);display:flex;align-items:center;margin-top:7px;font-weight:400;line-height:1.5}.mini .icon{width:11px;height:11px;display:inline-block}.week-meta{display:flex;justify-content:space-between;gap:10px;align-items:center;margin-top:7px;color:var(--muted);font-size:9px}.week-meta .text-button{font-size:10px;min-height:30px}.week-meta .icon{width:12px;height:12px}.closed-day{background:transparent;border-style:dashed}.closed-day .week-content h3{font-size:12px;margin:0}.closed-day .week-content p{font-size:10px;color:var(--muted);margin:5px 0 0}.closed-day .icon-button{background:transparent;border:0;color:var(--muted)}
label{display:block;font-size:12px;line-height:1.8;color:var(--muted);margin-bottom:14px}input,textarea,select{display:block;width:100%;max-width:100%;min-height:44px;margin-top:5px;border:1px solid var(--line);border-radius:11px;background:var(--surface-soft);padding:10px 12px;font-size:16px;color:var(--ink);font-weight:400}input::placeholder,textarea::placeholder{color:var(--faint);font-size:13px}textarea{resize:vertical;min-height:85px;line-height:1.6}input[type=checkbox]{width:19px;height:19px;min-height:19px;margin:3px 0 0;flex-shrink:0;accent-color:var(--blue)}input[type=file]{font-size:12px}.formgrid{display:grid;grid-template-columns:1fr 1fr;gap:16px}.check{display:flex;gap:10px;align-items:flex-start;font-size:13px;color:var(--ink)}.coursegrid{display:grid;grid-template-columns:1fr 1fr;gap:17px}.coursecard{padding:23px;border:1px solid var(--line);background:var(--surface);border-radius:22px;min-width:0}.coursecard-heading{display:flex;gap:12px;align-items:center;margin-bottom:20px}.coursecard-heading h3{font-size:14px;margin:0}.coursecard-heading h3 small{display:block;font-size:10px;font-weight:400;color:var(--muted);margin-top:3px}.coursecard label:last-child{margin-bottom:0}.editor-toolbar{display:flex;justify-content:space-between;align-items:center;gap:22px;margin-bottom:23px}.editor-toolbar>label{margin:0;max-width:320px;width:100%}.segmented{display:flex;align-items:center;border-radius:12px;padding:4px;background:#e7eaf0;gap:2px;flex-shrink:0}.segmented button{border:0;min-height:34px;min-width:55px;padding:6px 16px;border-radius:9px;background:transparent;color:var(--muted);font-size:12px}.segmented button[aria-pressed=true]{background:var(--surface);color:var(--ink);box-shadow:0 2px 5px #1b304715}.savebar{position:sticky;bottom:20px;z-index:4;display:flex;align-items:center;justify-content:space-between;gap:14px;padding:14px 18px;border-radius:20px;margin:22px 0 0}.savebar small{font-size:11px;color:var(--muted);line-height:1.6}.savebar .primary{min-width:130px}.savebar .primary svg{width:16px;height:16px}.settingsgrid{display:grid;grid-template-columns:1fr 1fr;gap:20px}.settingsgrid .card{margin:0}.settings-row{display:flex;align-items:center;justify-content:space-between;gap:20px;border-top:1px solid var(--line);padding:16px 0;margin:0;color:var(--ink)}.settings-row:last-child{padding-bottom:0}.settings-row strong{font-size:13px;font-weight:500}.settings-row p,.settings-row small{display:block;font-size:11px;color:var(--muted);margin:3px 0 0;line-height:1.8}.settings-row select{width:130px;font-size:13px;flex-shrink:0;margin:0}.settings-row input[role=switch]{appearance:none;-webkit-appearance:none;width:43px;height:26px;min-height:26px;border-radius:20px;padding:0;background:#d5d9e0;border:0;position:relative;cursor:pointer;transition:background .2s;margin:0}.settings-row input[role=switch]:checked{background:#34b778}.settings-row input[role=switch]:after{content:'';position:absolute;left:3px;top:3px;width:20px;height:20px;background:white;border-radius:50%;box-shadow:0 1px 4px #0002;transition:transform .2s}.settings-row input[role=switch]:checked:after{transform:translateX(17px)}details{padding:21px 23px;border:1px solid var(--line);border-radius:20px;background:var(--surface);margin:17px 0}summary{min-height:28px;cursor:pointer;font-size:13px;font-weight:600;line-height:1.8}details[open] summary{margin-bottom:20px}.mapping{display:grid;grid-template-columns:1fr 1fr;gap:12px}.mapping input{letter-spacing:3px}.steps{padding-left:22px;font-size:12px;line-height:1.9;color:var(--muted)}.steps li{margin-bottom:10px}.sources a{display:block;color:var(--blue);font-size:12px;margin:18px 0;overflow-wrap:anywhere}.spacer{margin-top:23px}.smallbtn{font-size:11px;min-height:44px}.full{grid-column:1/-1}.planstatus{font-size:12px;color:var(--muted);margin-top:14px}.news-controls{display:grid;grid-template-columns:1fr 180px;gap:18px;margin:23px 0 8px}.announcement{padding:23px;background:var(--surface);border:1px solid var(--line);border-radius:22px;margin-bottom:15px;min-width:0}.announcement time{font-size:10px;color:var(--muted);font-variant-numeric:tabular-nums}.announcement h3{font-size:16px;line-height:1.7;margin:16px 0 10px;overflow-wrap:anywhere}.announcement-body{white-space:pre-wrap;font-size:14px;line-height:1.9;overflow-wrap:anywhere}.announcement-details{border:0;padding:0;margin:14px 0 0;border-radius:0;background:transparent}.announcement-details summary{font-size:12px;color:var(--blue);font-weight:500;min-height:38px}.announcement-details[open] summary{margin-bottom:15px}.announcement-link{display:block;overflow-wrap:anywhere;color:var(--blue);font-size:12px;margin-top:12px}.announcement.compact{padding:16px 0 8px;border:0;border-top:1px solid var(--line);border-radius:0;background:transparent;margin:0}.announcement.compact h3{font-size:12px;line-height:1.6;margin:10px 0 5px;display:-webkit-box;-webkit-line-clamp:2;-webkit-box-orient:vertical;overflow:hidden}.announcement.compact time{font-size:9px}.announcement.compact .tag{font-size:8px;padding:4px 6px;background:var(--blue-soft);border:0;color:var(--blue)}.announcement.compact .announcement-summary{display:-webkit-box;-webkit-line-clamp:2;-webkit-box-orient:vertical;overflow:hidden;font-size:10px;line-height:1.7;margin:4px 0 8px;overflow-wrap:anywhere}.announcement.compact a.small{font-size:9px;display:inline-flex;align-items:center;min-height:32px}.news-meta{overflow-wrap:anywhere}.dashside .news-meta{font-size:9px;margin:-5px 0 12px;color:var(--faint);line-height:1.6}footer{display:flex;justify-content:space-between;gap:18px;flex-wrap:wrap;border-top:1px solid var(--line);padding-top:20px;margin:34px 0 10px;font-size:9px;color:var(--faint);line-height:1.8}footer a{display:inline-block;margin-left:12px;color:var(--muted);text-decoration:none}#toast{position:fixed;left:50%;bottom:32px;transform:translateX(-50%);background:#252b3aef;color:white;border:1px solid #ffffff20;border-radius:16px;padding:14px 22px;max-width:90vw;width:max-content;backdrop-filter:blur(15px);-webkit-backdrop-filter:blur(15px);display:none;z-index:20;font-size:13px;line-height:1.6;box-shadow:0 8px 30px #0002}#toast.show{display:block}dialog{padding:27px;border:1px solid var(--line);border-radius:27px;background:var(--surface);color:var(--ink);box-shadow:0 24px 80px #132b4e30;width:min(520px,calc(100% - 32px));max-height:calc(100dvh - 36px);overflow:auto}dialog::backdrop{background:#17243745;backdrop-filter:blur(7px);-webkit-backdrop-filter:blur(7px)}.dialog-heading{display:flex;justify-content:space-between;align-items:flex-start;gap:13px;margin-bottom:25px}.dialog-heading .row{flex-wrap:nowrap;align-items:flex-start;min-width:0}.dialog-heading h2{font-size:21px;overflow-wrap:anywhere;margin:0}.dialog-heading p{font-size:11px;color:var(--muted);margin:4px 0 0}.dialog-heading .icon-button{background:var(--surface-soft);border:0;border-radius:50%;width:34px;min-height:34px;padding:8px}.dialog-actions{display:flex;justify-content:flex-end;gap:10px;margin-top:23px}.dialog-actions .primary{min-width:112px}.skip-link{position:fixed;top:-100px;left:20px;z-index:30;background:var(--surface);padding:14px}.skip-link:focus{top:10px}[hidden]{display:none!important}
@media(min-width:1450px){.dashboard{gap:30px}.hero{padding:33px 37px}.period{padding:20px}.heading{margin-top:38px}.day-strip{gap:13px}}
@media(max-width:1150px){.shell{grid-template-columns:200px minmax(0,1fr);padding:12px}.sidebar{top:12px;height:calc(100dvh - 24px);padding:25px 12px}.brand{font-size:16px;gap:9px}.mark{height:35px;width:35px}.brand small{font-size:9px}.schoolyear{margin-left:12px}nav a{padding:12px;gap:10px}main{padding:0 25px 10px}.dashboard{grid-template-columns:minmax(0,1.65fr) minmax(220px,1fr);gap:19px}.period{grid-template-columns:46px 32px minmax(0,1fr) 12px;gap:10px;padding:15px 12px}.course-symbol{width:32px;height:34px;border-radius:10px}.period-title{font-size:13px}.period .time{font-size:13px}.card{padding:20px}.hero{padding:27px}.hero h2{font-size:27px}.heading{gap:14px}.datecontrol input{width:110px}.minicourses{grid-template-columns:repeat(2,minmax(0,1fr))}.settingsgrid{grid-template-columns:1fr}}
@media(max-width:940px) and (min-width:701px){.shell{grid-template-columns:178px minmax(0,1fr)}.sidebar{padding:24px 10px}.brand{font-size:14px;padding:0 5px;gap:7px}.brand small{font-size:8px}.mark{width:31px;height:33px;border-radius:10px}.mark svg{width:22px;height:22px}.sidefoot{padding:15px 5px}.school-badge{font-size:9px}.school-badge small{font-size:8px}.dashboard{grid-template-columns:1fr}.dashside{display:grid;grid-template-columns:1fr 1fr;gap:17px}.dashside .card{margin:0}.dashside #home-announcements,.dashside .coverage{grid-column:1/-1}.heading{align-items:flex-start;flex-wrap:wrap}.datecontrol{margin-top:5px}.coursegrid{grid-template-columns:1fr}.hero h2{font-size:25px}.focus-metric{min-width:90px}.hero{padding:24px}.focus-metric>strong{font-size:45px}.focus-metric .clock-value{font-size:36px}.editor-toolbar{flex-wrap:wrap}.weekday{gap:16px;padding:20px}.formgrid{gap:12px}}
@media(max-width:700px){.shell{display:block;padding:0}.sidebar{position:static;height:auto;background:transparent;backdrop-filter:none;-webkit-backdrop-filter:none;box-shadow:none;border:0;padding:22px 22px 0;border-radius:0}.brand{padding:0;font-size:16px;gap:9px}.mark{height:32px;width:32px;border-radius:10px}.mark svg{width:21px;height:21px}.brand small{font-size:9px;margin-top:3px}.schoolyear,.sidefoot{display:none}nav{position:fixed;left:16px;right:16px;bottom:calc(12px + env(safe-area-inset-bottom));display:grid;grid-template-columns:repeat(5,1fr);align-items:center;gap:3px;padding:5px;z-index:10;background:var(--glass);backdrop-filter:blur(30px) saturate(170%);-webkit-backdrop-filter:blur(30px) saturate(170%);border:1px solid var(--glass-edge);border-radius:27px;box-shadow:inset 0 1px 0 #ffffff80,0 8px 34px #2a44601c}nav a{display:flex;flex-direction:column;align-items:center;gap:4px;padding:9px 2px;min-width:0;min-height:53px;font-size:9px;border-radius:21px;color:var(--muted);line-height:1.2}nav a svg{width:22px;height:22px;stroke-width:1.65}nav a.active{background:#007aff0d;box-shadow:inset 0 1px 0 #ffffff75;color:var(--blue)}main{padding:0 22px calc(110px + env(safe-area-inset-bottom));max-width:600px;margin:auto}.topbar{height:0;border:0;position:relative}.topbar-title{display:none}.connection{position:absolute;right:0;top:-25px;font-size:9px}.heading{margin:29px 0 21px;flex-wrap:wrap;align-items:flex-start;gap:19px}.eyebrow{font-size:8px;letter-spacing:1.4px}h1{font-size:33px;letter-spacing:-1.1px;margin-top:6px}.sub{font-size:11px;margin-top:8px}.heading>.datecontrol{width:100%;justify-content:space-between;border-radius:16px;padding:4px;box-shadow:inset 0 1px 0 #ffffff75,0 3px 12px #264b7105}.datecontrol input{font-size:12px;flex:1;max-width:170px;text-align:center;margin:0 auto;min-height:36px}.datecontrol .icon-button{min-height:36px;width:36px}.datecontrol .today-button{min-height:36px;padding:7px 16px;border-radius:12px}.day-strip{margin:0 -5px 18px;gap:4px}.day-chip{border-radius:15px;padding:8px 2px;gap:3px}.day-chip strong{font-size:18px;width:31px;height:31px}.day-chip.is-today strong{width:31px;height:31px}.day-chip>span:first-child{font-size:9px}.day-indicator{font-size:8px}.hero{border-radius:22px;padding:22px;gap:16px;min-height:202px}.focus-eyebrow{font-size:9px}.hero h2{font-size:25px;letter-spacing:-.7px;margin:13px 0 7px}.focus-meta{font-size:10px;line-height:1.8}.focus-metric{min-width:70px;font-size:9px;gap:5px}.focus-metric>strong{font-size:42px;letter-spacing:-1.7px}.focus-metric>strong small{font-size:10px;letter-spacing:0;margin-left:4px}.focus-metric .clock-value{font-size:29px;letter-spacing:-1px}.focus-location{font-size:11px;gap:4px;margin-top:9px}.focus-symbol{width:62px;height:62px}.focus-symbol svg{width:31px;height:31px}.hero:has(.next-day-link){grid-template-columns:1fr 55px;gap:8px}.hero:has(.next-day-link) .focus-metric{min-width:0;align-self:start;margin-top:23px}.hero:has(.next-day-link) .focus-symbol{width:50px;height:50px}.hero:has(.next-day-link) .focus-symbol svg{width:27px;height:27px}.next-day-link{gap:10px;min-height:50px}.next-day-link small{font-size:9px}.next-day-link strong{font-size:11px}.next-day-link .icon{width:14px;height:14px}.hero .text-button{font-size:11px}.focus-note{font-size:10px}.notice{font-size:11px;padding:14px;margin-top:16px}.dashboard{grid-template-columns:1fr;gap:27px;margin-top:27px}.sectionhead{margin-bottom:17px}.sectionhead h2{font-size:17px}.day-progress{font-size:9px;margin-bottom:16px}.period{grid-template-columns:48px 35px minmax(0,1fr) 13px;gap:11px;padding:16px 14px;min-height:86px;border-radius:17px}.period .time{font-size:13px}.period .time small{font-size:10px}.course-symbol{width:35px;height:36px;border-radius:11px;font-size:14px}.period-title{font-size:14px;gap:5px}.period-meta{font-size:10px;line-height:1.6}.period.break{grid-template-columns:48px 35px minmax(0,1fr);gap:11px;padding:6px 14px;min-height:53px}.timeline{gap:8px}.period.break .time{font-size:10px}.period.break .period-copy small{font-size:9px}.card{padding:21px;border-radius:21px;margin-bottom:17px}.card p{font-size:12px}.dashside{display:block}.setup-card .sectionhead{margin-bottom:13px}.setup-card .button{margin-top:3px}.coverage{font-size:9px}.week-overview{gap:11px 18px;font-size:10px;margin:20px 0}.week-overview svg{height:14px;width:14px}.weekday{grid-template-columns:37px minmax(0,1fr);padding:18px 14px;gap:15px;border-radius:20px}.week-date strong{font-size:25px}.week-date>span{font-size:9px}.minicourses{grid-template-columns:repeat(2,minmax(0,1fr));gap:8px}.mini{padding:10px;min-height:68px}.mini>span{font-size:10px;gap:5px}.mini small{font-size:9px}.week-meta{align-items:flex-start;font-size:8px;margin-top:9px;gap:7px;line-height:1.8}.week-meta .text-button{font-size:9px;min-height:28px;flex-shrink:0;padding:3px 0}.week-meta .icon{width:11px;height:11px}.closed-day .week-content h3{font-size:11px}.closed-day .week-content p{font-size:9px}.closed-day .week-content .row{flex-wrap:nowrap;gap:5px}.coursegrid{grid-template-columns:1fr;gap:16px}.coursecard{padding:21px}.editor-toolbar{flex-wrap:wrap;gap:18px}.editor-toolbar>label{max-width:none}.segmented{width:100%}.segmented button{flex:1;min-height:36px}.savebar{bottom:calc(91px + env(safe-area-inset-bottom));padding:12px 14px;margin-top:20px;border-radius:18px}.savebar small{font-size:10px}.savebar .primary{min-width:112px;padding:10px 14px;font-size:12px}.formgrid{gap:12px}.settingsgrid{display:block}.settingsgrid .card{margin-bottom:17px}.settings-row{gap:12px}.settings-row select{width:116px;font-size:12px}.settings-row strong{font-size:12px}.settings-row p,.settings-row small{font-size:10px}.steps{font-size:12px}.news-controls{grid-template-columns:minmax(0,1fr) 110px;gap:12px;margin-top:20px}.news-controls select{font-size:13px}.announcement{padding:21px}.announcement h3{font-size:15px}.announcement-body{font-size:13px}.announcement time{font-size:9px}.announcement.compact h3{font-size:13px}.announcement.compact .announcement-summary{font-size:11px}.announcement.compact a.small{font-size:10px}.announcement.compact time{font-size:10px}.dashside .news-meta{font-size:10px}.announcement .row{gap:8px}details{padding:20px}.mapping{gap:10px}footer{margin-top:30px;display:grid;gap:5px;font-size:9px}footer a{margin-left:0;display:block;margin-top:4px}#toast{bottom:calc(100px + env(safe-area-inset-bottom));font-size:12px;padding:13px 17px}dialog{border-radius:26px;padding:22px;width:calc(100% - 24px);max-height:calc(100dvh - 40px)}.dialog-heading{margin-bottom:21px}.dialog-heading h2{font-size:20px}.dialog-heading p{font-size:10px}.dialog-heading .course-symbol{width:34px;height:35px}}
@media(max-width:360px){main{padding-left:16px;padding-right:16px}.sidebar{padding-left:16px;padding-right:16px}.hero{padding:20px;gap:12px}.hero h2{font-size:22px}.focus-metric>strong{font-size:37px}.focus-metric .clock-value{font-size:27px}.focus-metric{min-width:62px}.period{grid-template-columns:43px 30px minmax(0,1fr) 10px;gap:8px;padding:14px 11px}.period-title{font-size:13px}.period .course-symbol{width:30px;height:32px}.period-meta{font-size:9px}.period.break{grid-template-columns:43px 30px minmax(0,1fr);gap:8px;padding-left:11px;padding-right:11px}.weekday{grid-template-columns:30px minmax(0,1fr);gap:11px;padding:15px 11px}.mini{padding:9px}.week-meta{flex-wrap:wrap}.datecontrol input{font-size:11px}.coursecard .formgrid{gap:9px}nav{left:12px;right:12px}.settings-row{flex-wrap:wrap}.settings-row.check{flex-wrap:nowrap}}
:root[data-theme=dark]{color-scheme:dark;--bg:#13151a;--surface:#202329;--surface-soft:#272b33;--ink:#eceef3;--muted:#a1a7b4;--faint:#858c99;--line:#343841;--blue:#68aeff;--blue-soft:#20324d;--green:#6dc19b;--glass:rgba(37,41,50,.78);--glass-edge:#ffffff12;--shadow:0 4px 24px #0001;--a:#8baeff;--abg:#27344d;--b:#c6a3ff;--bbg:#382d49;--c:#e6b378;--cbg:#423728;--d:#7ac7b9;--dbg:#263d3a}
:root[data-theme=dark] body{background:radial-gradient(ellipse at 0 0,#1a294255,transparent 45%),var(--bg)}:root[data-theme=dark] .hero{border-color:var(--line)}:root[data-theme=dark] .glass,:root[data-theme=dark] nav{box-shadow:inset 0 1px 0 #ffffff08,0 8px 28px #0001}:root[data-theme=dark] nav a.active{background:#ffffff0b;box-shadow:inset 0 1px 0 #ffffff0a}:root[data-theme=dark] .focus-symbol{background:#ffffff06;border-color:#ffffff0a;box-shadow:none}:root[data-theme=dark] .segmented{background:#15181d}:root[data-theme=dark] .notice{background:#322c20;border-color:#55462e;color:#e7c88b}:root[data-theme=dark] .error{background:#392925;border-color:#6d3c33;color:#f4ae9c}:root[data-theme=dark] .primary{background:#0a76e4;color:#fff}:root[data-theme=dark] .datecontrol{box-shadow:none}
@media(prefers-color-scheme:dark){:root:not([data-theme=light]){color-scheme:dark;--bg:#13151a;--surface:#202329;--surface-soft:#272b33;--ink:#eceef3;--muted:#a1a7b4;--faint:#858c99;--line:#343841;--blue:#68aeff;--blue-soft:#20324d;--green:#6dc19b;--glass:rgba(37,41,50,.78);--glass-edge:#ffffff12;--shadow:0 4px 24px #0001;--a:#8baeff;--abg:#27344d;--b:#c6a3ff;--bbg:#382d49;--c:#e6b378;--cbg:#423728;--d:#7ac7b9;--dbg:#263d3a}:root:not([data-theme=light]) body{background:radial-gradient(ellipse at 0 0,#1a294255,transparent 45%),var(--bg)}:root:not([data-theme=light]) .hero{border-color:var(--line)}:root:not([data-theme=light]) .glass,:root:not([data-theme=light]) nav{box-shadow:inset 0 1px 0 #ffffff08,0 8px 28px #0001}:root:not([data-theme=light]) nav a.active{background:#ffffff0b;box-shadow:inset 0 1px 0 #ffffff0a}:root:not([data-theme=light]) .focus-symbol{background:#ffffff06;border-color:#ffffff0a;box-shadow:none}:root:not([data-theme=light]) .segmented{background:#15181d}:root:not([data-theme=light]) .notice{background:#322c20;border-color:#55462e;color:#e7c88b}:root:not([data-theme=light]) .error{background:#392925;border-color:#6d3c33;color:#f4ae9c}:root:not([data-theme=light]) .primary{background:#0a76e4;color:#fff}:root:not([data-theme=light]) .datecontrol{box-shadow:none}}
.solid-material .glass,.solid-material nav{background:var(--surface);backdrop-filter:none;-webkit-backdrop-filter:none;border-color:var(--line)}
@supports not (backdrop-filter:blur(20px)){.glass,nav{background:var(--surface)}}
@media(prefers-reduced-transparency:reduce){.glass,nav{background:var(--surface);backdrop-filter:none;-webkit-backdrop-filter:none}dialog::backdrop{backdrop-filter:none;-webkit-backdrop-filter:none}}
@media(prefers-reduced-motion:reduce){*,*::before,*::after{animation:none!important;transition:none!important;scroll-behavior:auto!important}}
@media(prefers-contrast:more){:root{--muted:#4b5160;--faint:#555d6e;--line:#b9c1cf}.glass,nav{background:var(--surface)}.completed .period-copy,.completed .course-symbol{opacity:1}.period{border-width:2px}}
@media print{.sidebar,.topbar,.datecontrol,.savebar,.coverage,.text-button,footer{display:none!important}.shell{display:block;padding:0}main{padding:0}.hero,.card,.period,.weekday{box-shadow:none;break-inside:avoid}.dashboard{grid-template-columns:1fr}.dashside{display:none}body{background:white}.hero{min-height:0}}
/* Keep form controls and completed classes readable on compact screens. */
.formgrid{grid-template-columns:repeat(2,minmax(0,1fr))}.formgrid>label,input,select,textarea{min-width:0}.completed .period-copy,.completed .course-symbol{opacity:1}.completed .period-title{color:var(--muted)}
.datecontrol [data-action=prev] svg{transform:rotate(180deg)}
@media(max-width:700px){.sub{font-size:12px}.focus-meta{font-size:11px}.period-title{font-size:15px}.period-meta,.period-note{font-size:11px}.period.break .period-copy>span{font-size:11px}.period.break .period-copy small{font-size:10px}.formgrid{grid-template-columns:1fr}.coursecard .formgrid,#quick-course-form .formgrid{grid-template-columns:repeat(2,minmax(0,1fr))}}
@media(max-width:360px){.period-title{font-size:14px}.period-meta{font-size:10px}}
@media(prefers-contrast:more){:root[data-theme=dark]{--muted:#ced2dc;--faint:#c1c7d3;--line:#68707e}}
@media(prefers-contrast:more) and (prefers-color-scheme:dark){:root:not([data-theme=light]){--muted:#ced2dc;--faint:#c1c7d3;--line:#68707e}}
