:root{--paper:#f8f9f3;--ink:#354e3e;--muted:#92a08c;--green:#567b60;--line:#e5eade;font-family:-apple-system,BlinkMacSystemFont,"Segoe UI","PingFang SC","Microsoft YaHei",sans-serif;color:var(--ink);background:var(--paper);font-size:14px;font-synthesis:none}*{box-sizing:border-box}html,body{margin:0;width:100%;height:100%;overflow:hidden;overscroll-behavior:none}button,input,select,textarea{font:inherit;color:inherit}button{border:0;background:none;cursor:pointer;-webkit-tap-highlight-color:transparent}button:focus-visible,[role=button]:focus-visible{outline:2px solid #9ab69a;outline-offset:3px}button:disabled{opacity:.45;cursor:default}h1,h2,h3,p{margin:0}h2{font-size:20px;font-weight:550}h3{font-size:13px;font-weight:550}[hidden]{display:none!important}.sr-only{position:absolute;width:1px;height:1px;padding:0;margin:-1px;overflow:hidden;clip-path:inset(50%);white-space:nowrap;border:0}.planner{height:100vh;height:100dvh;display:flex;flex-direction:column;width:100%;background:var(--paper)}.topbar{height:calc(64px + env(safe-area-inset-top));padding:env(safe-area-inset-top) 24px 0;flex-shrink:0;display:grid;grid-template-columns:1fr auto 1fr;align-items:center;position:relative}.top-leading{justify-self:start;width:auto;min-width:42px;display:flex;align-items:center;justify-content:center}.wordmark{font-size:15px;font-weight:550;letter-spacing:3px;color:#6d876e;white-space:nowrap}.topbar>.icon-button{justify-self:end;grid-column:3}.icon-button{height:40px;width:40px;border-radius:50%;display:inline-flex;align-items:center;justify-content:center;color:#80957c}.icon-button:hover{background:#edf1e7}.icon-button svg,.tool-button svg{width:21px;height:21px;stroke:currentColor;fill:none;stroke-width:1.5;stroke-linecap:round;stroke-linejoin:round}.icon-button svg circle{fill:var(--paper)}.locked-date{font-size:13px;letter-spacing:1.4px;font-variant-numeric:tabular-nums;color:#6c8468;padding:10px 12px;display:flex;align-items:center;gap:10px;line-height:1.5}.locked-date small{font-size:12px;letter-spacing:.8px;color:#9aab91}.timeline-viewport{flex:1;min-height:0;width:100%;position:relative;overflow:hidden;touch-action:none;user-select:none;-webkit-user-select:none}.timeline-viewport svg{display:block;width:100%;height:100%;overflow:hidden;touch-action:none}.timeline-viewport text{font-family:inherit;pointer-events:none}.scene-target{cursor:pointer}.scene-target:hover .duration-bar{filter:brightness(.98)}.scene-target:focus-visible{outline:none}.scene-target:focus-visible .duration-bar{stroke:#6c9674;stroke-width:2}.bottom-bar{height:calc(78px + env(safe-area-inset-bottom));padding:5px 24px calc(11px + env(safe-area-inset-bottom));flex-shrink:0;display:grid;grid-template-columns:1fr auto 1fr;align-items:center}.tool-button{justify-self:start;display:flex;flex-direction:column;align-items:center;justify-content:center;gap:6px;min-width:42px;min-height:48px;color:#92a18b;font-size:9px;letter-spacing:1px}.bottom-bar>.tool-button:last-child{justify-self:end}.add-button{width:46px;height:46px;display:flex;align-items:center;justify-content:center;background:#64836a;color:#fff;border-radius:16px;box-shadow:0 3px 10px #43634a10}.add-button:hover{background:#55765b}.add-button svg{width:23px;height:23px;fill:none;stroke:currentColor;stroke-width:1.6;stroke-linecap:round}.sheet{padding:0;border:1px solid #e2e9dc;border-radius:22px;width:min(480px,calc(100vw - 32px));max-height:88dvh;color:var(--ink);background:#fff;box-shadow:0 18px 70px #283e2924;overflow:hidden}.sheet::backdrop{background:#2c3d3060;backdrop-filter:blur(4px)}.sheet form{display:flex;flex-direction:column;max-height:88dvh}.sheet-heading{padding:24px 24px 18px;display:flex;justify-content:space-between;align-items:center;gap:10px;border-bottom:1px solid #edf1e8;flex-shrink:0}.sheet-heading .icon-button{font-size:23px;width:30px;height:30px}.sheet-body{overflow:auto;overscroll-behavior:contain;padding:22px 24px;display:flex;flex-direction:column;gap:19px}.sheet-body label{display:flex;flex-direction:column;gap:8px;font-size:11px;color:#72836a}input,select,textarea{background:#fafbf7;border:1px solid #e0e7d9;border-radius:10px;padding:11px 12px;width:100%;min-width:0;outline:none;font-size:13px}input:focus,select:focus,textarea:focus{border-color:#97b094;box-shadow:0 0 0 2px #edf3e9}input[type=checkbox],input[type=radio]{width:auto;accent-color:var(--green)}.field-label{display:block;font-size:11px;color:#72836a;margin-bottom:9px}.choice-buttons{display:flex;gap:8px}.choice-buttons label{flex:1;position:relative}.choice-buttons input,.color-options input{position:absolute;opacity:0}.choice-buttons span{padding:12px 5px;text-align:center;border:1px solid #e4eadf;border-radius:9px;font-size:10px;color:#9aa58f}.choice-buttons input:checked+span{border-color:#a2b99c;background:#f0f5ec;color:#6a8863}.choice-buttons input:focus-visible+span,.color-options input:focus-visible+span{outline:2px solid #9ebc96}.color-options{display:flex;gap:8px}.color-options label{position:relative;flex:1}.color-options span{border:1px solid transparent;text-align:center;padding:9px;border-radius:8px;font-size:10px}.color-options span.blue{color:#668697;background:#e7eff3}.color-options span.violet{color:#9a86ab;background:#f1ecf6}.color-options span.amber{color:#b09a64;background:#f6f1e4}.color-options input:checked+span{border-color:currentColor}.reminders-heading{display:flex;justify-content:space-between;align-items:center}.text-button{padding:6px 0;font-size:10px;color:#7a9472}.reminder-row{padding:12px;background:#f6f8f1;border-radius:12px;margin-bottom:10px}.reminder-controls{display:grid;grid-template-columns:minmax(0,1.45fr) minmax(0,1fr) 40px;gap:8px;align-items:center}.reminder-row select,.reminder-row input{min-width:0;width:100%;min-height:46px;padding:10px;border-radius:8px;font-size:16px;background:#fff}.reminder-controls [data-remove-reminder]{width:40px;height:44px;border-radius:8px;font-size:22px;color:#81947b}.reminder-duration{display:grid;grid-template-columns:minmax(84px,.8fr) minmax(0,1.4fr);gap:12px;margin-top:12px}.sheet-body .reminder-duration label{min-width:0;gap:6px;font-size:12px}.reminder-preview{margin-top:10px;line-height:1.7;color:#839578;font-size:11px}.helper{font-size:10px;color:#9ba68f;line-height:1.85}.sheet-footer{padding:16px 24px;border-top:1px solid #edf1e6;display:flex;justify-content:space-between;align-items:center;flex-shrink:0;background:#fff}.primary{padding:12px 20px;background:#638269;color:white;border-radius:10px;font-size:12px;white-space:nowrap}.primary:hover{background:#527459}.delete-button{font-size:10px;color:#c08d80;padding:9px 0}.form-error{color:#b87e71;font-size:11px;line-height:1.7}.two-fields{display:grid;grid-template-columns:1fr 1fr;gap:12px}.slot-row,.slot-grid-heading{display:grid;grid-template-columns:20px 1fr 83px 83px;gap:6px;align-items:center}.slot-row{margin-bottom:9px}.slot-row input{padding:10px 5px;font-size:10px}.slot-number{color:#a7b39b;font-size:10px}.slot-grid-heading{color:#a0ad93;font-size:9px;margin-bottom:9px}.settings-section{padding-top:18px;border-top:1px solid #e9eee2}.settings-section summary{cursor:pointer;font-size:12px;color:#809575}.settings-section p{margin:11px 0}.secondary{padding:9px 12px;font-size:10px;background:#eef3e7;border-radius:8px;color:#7a8f6e;margin-right:10px}.notice{font-size:10px;color:#ac9571;background:#f8f4ea;border-radius:9px;padding:10px 12px;line-height:1.8}.toast{position:fixed;bottom:calc(94px + env(safe-area-inset-bottom));left:50%;transform:translateX(-50%);background:#47664d;color:white;padding:12px 17px;border-radius:11px;z-index:100;width:max-content;max-width:90vw;font-size:11px;line-height:1.7;box-shadow:0 5px 25px #263f2c16;opacity:0;pointer-events:none;transition:opacity .18s;display:flex;align-items:center;gap:16px}.toast.visible{opacity:1;pointer-events:auto}.toast button{color:#d9eacb;font-size:11px;padding:0}
@media(min-width:761px){.topbar{height:76px;padding-left:38px;padding-right:38px}.bottom-bar{height:88px;padding-left:38px;padding-right:38px}.locked-date{font-size:14px}.wordmark{font-size:16px}.add-button{width:49px;height:49px}}
@media(max-width:600px){.sheet{position:fixed;top:auto;bottom:0;margin:0;width:100%;max-height:92dvh;border-radius:22px 22px 0 0;border:0}.sheet form{max-height:92dvh}.sheet-heading{padding:22px 21px 17px}.sheet-body{padding:20px 21px}.sheet-footer{padding:15px 21px calc(15px + env(safe-area-inset-bottom))}.sheet-heading h2{font-size:19px}.slot-row,.slot-grid-heading{grid-template-columns:16px 1fr 77px 77px;gap:5px}.slot-row input{font-size:10px;padding:10px 3px}.choice-buttons span{font-size:9px;padding:12px 3px}}
@media(prefers-reduced-motion:reduce){*{transition:none!important}}

/* The lock readout follows the center guide, below the weekday. */
.locked-date{position:absolute;left:50%;top:calc(var(--axis-y,50%) + 31px);transform:translateX(-50%);font-size:11px;letter-spacing:.8px;padding:4px 8px;gap:8px;line-height:18px;background:var(--paper);border-radius:6px;white-space:nowrap;z-index:2}.locked-date small{font-size:11px}.locked-date:hover{background:#edf2e8}

.locked-date{flex-direction:column;gap:0;padding:3px 8px}.locked-time{display:grid;grid-template-columns:1fr 6px 1fr;min-width:62px;letter-spacing:0;font-variant-numeric:tabular-nums}.locked-time>span:first-child{text-align:right}.locked-time>span:last-child{text-align:left}.locked-date .date-context{font-size:9px;line-height:13px;letter-spacing:0}.timeline-viewport text{font-variant-numeric:tabular-nums}

.school-entry{display:flex;align-items:center;justify-content:space-between;padding:15px 16px;background:#f0f5ec;border:1px solid #e1e9dc;border-radius:13px;text-align:left}.school-entry strong{font-size:13px;font-weight:550}.school-entry small{display:block;margin-top:6px;color:#8b9d81;font-size:10px}.school-entry>span:last-child{font-size:22px;color:#9bb08f}.school-step{display:flex;flex-direction:column;gap:18px}.step-label{display:block;font-size:9px;letter-spacing:2px;color:#9baa91;margin-bottom:7px}.school-existing{font-size:11px;line-height:1.9;white-space:pre-line;color:#7c9372;background:#f3f6ee;padding:12px 14px;border-radius:11px}.school-connect-card{display:flex;flex-direction:column;gap:12px;padding:16px;border:1px solid #e5ebdf;border-radius:13px}.school-connect-card .primary{align-self:flex-start}.school-connect-card a{font-size:10px;color:#76916b;text-decoration:none;align-self:flex-start;padding:5px 0}.school-sheet .check-row{flex-direction:row;align-items:flex-start;gap:11px;line-height:1.8;cursor:pointer;font-size:12px}.check-row input{flex-shrink:0;margin-top:4px}.study-question{margin:0;padding:16px 0;border:0;border-bottom:1px solid #e9eee4;display:flex;flex-direction:column;gap:14px;min-width:0}.study-question legend{font-size:13px;color:#5c7553;padding:0;margin-bottom:10px}.study-choices{display:flex;gap:24px}.period-label{font-size:10px;color:#809476}.school-step>.secondary{align-self:flex-start;font-size:11px}.school-sheet .form-error:empty{display:none}

.schedule-details{padding-top:16px}
.school-read-failures{padding-left:22px;margin-bottom:0}.school-read-failures li{white-space:pre-wrap;overflow-wrap:anywhere;padding:10px 0;border-top:1px solid #e4eadc;line-height:1.8}

.school-welcome{font-size:15px;line-height:1.8;color:#647e5c;margin:0}.school-sheet .sheet-body{overflow-x:hidden;min-width:0}.school-sheet .school-step{min-width:0}.school-sheet .school-connect-card .primary{align-self:stretch;min-height:48px;font-size:13px}.school-sheet input,.school-sheet select{max-width:100%;min-width:0}

/* School connection is an app screen, never a browser or a bottom sheet. */
dialog.school-sheet{position:fixed;inset:0;margin:0;width:100%;max-width:none;height:100%;height:100dvh;max-height:none;border:0;border-radius:0;background:var(--paper);box-shadow:none}
.school-sheet form{height:100%;max-height:none}.school-sheet .sheet-heading{padding-top:calc(20px + env(safe-area-inset-top));background:var(--paper)}.school-sheet .sheet-body{flex:1;min-height:0;width:100%;max-width:500px;margin:0 auto;padding:26px 24px 30px;scroll-padding:24px}.school-sheet .sheet-footer{background:var(--paper);padding-bottom:calc(16px + env(safe-area-inset-bottom));gap:12px}.school-sheet input,.school-sheet select{font-size:16px;min-height:48px}.school-sheet .helper{font-size:12px}.school-sheet .form-error{font-size:13px}.school-sheet .text-button{font-size:13px;min-height:44px}.school-sheet .primary{font-size:15px;min-height:50px}.school-sheet .sheet-body label{font-size:13px}.school-sheet .school-step{gap:18px}.school-sheet .slot-row input{font-size:12px}.school-brand{font-size:12px;color:#809477;letter-spacing:2px;margin:8px 0 20px}.school-sheet h1{font-size:30px;line-height:1.35;font-weight:600;letter-spacing:1px}.school-subtitle{font-size:14px;color:#819078;line-height:1.8;margin-top:-5px}.school-picker{font-size:12px;color:#7c9473}.school-picker summary{cursor:pointer;padding:4px 0;min-height:32px}.school-picker>label{margin-top:14px}.school-picker #customSchoolFields{margin-top:18px}.school-sheet .school-connect-card{padding:24px 20px;gap:18px;border-radius:20px;background:#fff}.school-password,.school-captcha{display:flex;gap:8px;align-items:center}.school-password{margin-top:-10px}.school-password input,.school-captcha input{flex:1;width:0}.school-password button{min-height:48px;padding:10px 12px;background:#edf3e7;border-radius:10px;color:#638269;font-size:13px}.school-captcha button{flex:none;width:108px;height:48px;border:1px solid #e4eadc;border-radius:10px;background:#f5f7f0;font-size:12px;padding:0}.school-captcha img{width:100%;height:100%;object-fit:contain}.school-captcha{margin-top:8px}.school-privacy{padding:0 4px}.school-auth .sheet-heading{display:none}.school-auth .sheet-body{padding-top:calc(34px + env(safe-area-inset-top))}.school-auth .sheet-footer>.helper{margin-left:auto}.school-auth #schoolNativeStatus:empty{display:none}.school-sheet [aria-busy=true] #schoolNativeStatus{color:#638269}.school-sheet [aria-busy=true] #schoolNativeStatus:before{content:'';display:inline-block;width:11px;height:11px;border:1.5px solid #d6e2ce;border-top-color:#638269;border-radius:50%;margin-right:8px;vertical-align:-1px;animation:school-spin .8s linear infinite}@keyframes school-spin{to{transform:rotate(360deg)}}@media(prefers-reduced-motion:reduce){.school-sheet [aria-busy=true] #schoolNativeStatus:before{animation:none}}

.course-meta{margin:0;padding:15px 16px;background:#f3f7ef;border:1px solid #e2e9dc;border-radius:12px;display:grid;gap:14px}.course-meta[hidden]{display:none}.course-meta>div{display:grid;grid-template-columns:5em minmax(0,1fr);gap:12px;align-items:start}.course-meta dt{font-size:12px;line-height:1.7;color:#7b8f72}.course-meta dd{margin:0;font-size:14px;line-height:1.6;color:#4f6850;overflow-wrap:anywhere;white-space:pre-wrap}

.homework-summary{font-size:13px;line-height:1.8;background:#f0f5ec;padding:13px 15px;border-radius:11px;color:#638269}.homework-actions{display:flex;flex-wrap:wrap;align-items:center;gap:18px}.homework-sheet .sheet-footer{gap:12px;flex-wrap:wrap}.homework-sheet .sheet-footer .primary{margin-left:auto}.homework-sheet .helper:empty,.homework-sheet .form-error:empty{display:none}.homework-sheet ul{margin:0;padding-left:18px;overflow-wrap:anywhere}.homework-sheet li+li{margin-top:10px}.homework-sheet pre{font:12px/1.8 ui-monospace,monospace;white-space:pre-wrap;overflow-wrap:anywhere;user-select:text;padding:12px;background:#f4f7f0;border-radius:10px;max-height:220px;overflow:auto}

.competition-sheet .sheet-footer{gap:12px;flex-wrap:wrap}.competition-sheet .sheet-footer .primary{margin-left:auto}.competition-sheet .helper:empty,.competition-sheet .form-error:empty{display:none}.competition-sheet ul{margin:0;padding-left:18px;overflow-wrap:anywhere}.competition-sheet li+li{margin-top:10px}#competitionUnknownList a,#competitionEventMeta a{color:#7b6294;text-decoration:underline;text-underline-offset:3px;overflow-wrap:anywhere}

.event-phase-section{padding:14px;background:#f3f5ef;border:1px solid #e2e7da;border-radius:12px}.event-phase-section h3{line-height:1.7;color:#657d5b}.event-phase-section .helper{margin-top:10px}.event-phase-list{display:flex;flex-direction:column;gap:7px;margin-top:10px}.event-phase-list button{display:flex;flex-direction:column;gap:5px;padding:10px 12px;text-align:left;border:1px solid #e4e9de;border-radius:8px;background:#fff;font-size:12px;line-height:1.6}.event-phase-list button[aria-current="step"]{border-color:#9aaf90;background:#edf3e7}.event-phase-list small{font-size:10px;color:#8c9b81}#eventAddStage{align-self:flex-start}

.category-filter-chip{grid-column:2;grid-row:1;max-width:42vw;padding:7px 10px;border:1px solid #dce6d5;border-radius:20px;background:#edf3e7;color:#728a68;font-size:10px;white-space:nowrap;text-overflow:ellipsis;overflow:hidden}.topbar>.icon-button{grid-row:1}.event-category-field{display:flex;align-items:flex-end;gap:14px}.event-category-field label{flex:1}.event-category-field .text-button{min-height:42px;white-space:nowrap}.category-rows{display:flex;flex-direction:column;gap:13px}.category-row{display:flex;gap:15px;align-items:flex-start}.category-row label{flex:1}.category-row small{font-size:10px;color:#9ba68f}.category-row .delete-button{min-height:42px;min-width:42px}.new-category{display:flex;align-items:flex-end;gap:12px}.new-category label{flex:1}.new-category .secondary{margin:0;min-height:42px}#categoryError:empty{display:none}

/* Download controls belong to the public web export only. */
.web-download-actions{grid-column:3;grid-row:1;justify-self:end;display:flex;align-items:center;gap:4px}.web-apk-shortcut{text-decoration:none;color:#64836a}.topbar .category-filter-chip{max-width:min(42vw,max(40px,calc(100vw - 264px)))}.web-download-card{padding:16px;border:1px solid #dce6d5;border-radius:14px;background:#f6f8f1}.web-download-card strong{font-size:14px;color:#526d55}.web-download-version{display:block;margin-top:5px;color:#72836a;font-size:11px}.web-download-card p{font-size:12px;line-height:1.8;margin:12px 0;color:#72836a}.web-download-card a{display:inline-flex;align-items:center;justify-content:center;text-decoration:none}.web-apk-shortcut:focus-visible,.web-download-card a:focus-visible{outline:2px solid #638269;outline-offset:3px}
