:root{--bg:#f6f5ef;--card:#fff;--line:#dde3d9;--text:#243b35;--muted:#68786f;--green:#244f45;--brand-ink:#244f45;--brand-hover:#326558;--on-brand:#fff;--pill:#e4eadf;--pill-ink:#244f45;--callout:#eff3e9;--avatar-a:#e8eee2;--avatar-b:#f6e9d9;--badge-bg:#edf2e8;--badge-ink:#48613e;--warn-bg:#fff0de;--warn-ink:#8a501b;--help-bg:#fff1dc;--help-line:#bf762b;--foot-bg:#eceee5;--foot-ink:#5e705d;--orange:#ba582d;--count-bg:#ba582d;--count-ink:#fff;--danger:#9b3e33;--field:#fff;--field-line:#cbd5c7;--check-bg:#f1f2ed;--check-ink:#a4aca1;--check-done-bg:#dce9d5;--check-done-ink:#345d33;--soft:#f1f3ed;--soft-warm:#f3f6ed;--pair-bg:#eef3e8;--rowline:#eff0ea;--hover:#edf3e9;--shadow:#243b3503;--backdrop:#182e2566;--stage:#1c2723;--stage-ink:#e9efe8;--stage-line:#33443c;color-scheme:light;font-family:ui-sans-serif,-apple-system,BlinkMacSystemFont,"Segoe UI",sans-serif;color:var(--text);background:var(--bg);font-synthesis:none}
:root[data-theme=dark]{--bg:#141b18;--card:#1c2723;--line:#2c3a34;--text:#e9efe8;--muted:#95a59b;--green:#3f7d69;--brand-ink:#8fc9b1;--brand-hover:#4b8f79;--on-brand:#f4faf4;--pill:#2f3f38;--pill-ink:#d7e8db;--callout:#22302a;--avatar-a:#2b3a33;--avatar-b:#3a3025;--badge-bg:#26332c;--badge-ink:#a9c9ac;--warn-bg:#3a2e1e;--warn-ink:#e0b077;--help-bg:#33281a;--help-line:#c8853a;--foot-bg:#1e2724;--foot-ink:#9fb0a4;--orange:#e08a52;--count-bg:#e08a52;--count-ink:#23180f;--danger:#f0958a;--field:#1a2320;--field-line:#38473f;--check-bg:#232e29;--check-ink:#96a89c;--check-done-bg:#2c4433;--check-done-ink:#a8d0a6;--soft:#212c27;--soft-warm:#212c27;--pair-bg:#22302a;--rowline:#26312c;--hover:#26332c;--shadow:#0000;--backdrop:#050807cc;color-scheme:dark}
*{box-sizing:border-box}body{margin:0}button,input,select{font:inherit}button{cursor:pointer;min-height:44px;border:1px solid var(--line);border-radius:12px;background:var(--card);color:var(--brand-ink);padding:10px 17px;font-weight:650}button:hover{background:var(--hover)}button:disabled{opacity:.6;cursor:wait}button:focus-visible,a:focus-visible,input:focus-visible,select:focus-visible{outline:3px solid #b77139;outline-offset:3px}header{max-width:1220px;margin:auto;display:flex;justify-content:space-between;align-items:center;padding:25px 32px;border-bottom:1px solid var(--line)}.brand{display:flex;align-items:center;gap:10px;font-size:26px;font-weight:750;letter-spacing:-1px;text-decoration:none;color:var(--brand-ink)}.brand-icon{display:grid;place-items:center;background:var(--green);color:var(--on-brand);width:38px;height:38px;border-radius:12px;font-family:Georgia,serif;font-style:italic}.private{font-size:10px;letter-spacing:2px;font-weight:650;margin-left:7px;color:var(--muted)}main{max-width:1220px;margin:auto;padding:36px 32px 64px}.eyebrow{font-size:11px;font-weight:750;letter-spacing:2px;color:var(--muted);margin:0 0 12px}h1{font-size:clamp(32px,5vw,48px);line-height:1.12;letter-spacing:-1.7px;font-weight:650;margin:0 0 15px}h2{font-size:24px;letter-spacing:-.6px;margin:0 0 12px}h3{margin:0;font-size:18px}.muted{color:var(--muted);line-height:1.6}.fine{font-size:12px;color:var(--muted);line-height:1.6}.heading{display:flex;align-items:center;justify-content:space-between;gap:16px;margin-bottom:30px}.toolbar{display:flex;gap:9px;flex-wrap:wrap}.primary{background:var(--green);border-color:var(--green);color:var(--on-brand)}.primary:hover{background:var(--brand-hover)}.quiet{background:transparent}.tabs{display:flex;gap:6px;border-bottom:1px solid var(--line);margin:0 0 26px;padding-bottom:12px;overflow:auto}.tabs button{white-space:nowrap;border:none;background:transparent;color:var(--muted)}.tabs button[aria-selected=true]{background:var(--pill);color:var(--pill-ink)}.grid{display:grid;grid-template-columns:1fr 1fr;gap:22px}.card{background:var(--card);border:1px solid var(--line);border-radius:22px;padding:26px;box-shadow:0 5px 24px var(--shadow)}.card-top{display:flex;gap:13px;align-items:center;margin-bottom:20px}.avatar{width:48px;height:48px;display:grid;place-items:center;background:var(--avatar-a);border-radius:16px;font-size:23px;font-weight:650;color:var(--text)}.card:nth-child(even) .avatar{background:var(--avatar-b)}.card-top .actions{margin-left:auto}.badge{display:inline-block;border-radius:6px;padding:5px 8px;background:var(--badge-bg);color:var(--badge-ink);font-size:11px;font-weight:650}.badge.warn{background:var(--warn-bg);color:var(--warn-ink)}.callout{background:var(--callout);border-radius:15px;padding:18px;margin-bottom:18px}.callout h3{font-size:21px;line-height:1.4}.callout p{margin:6px 0 0}.task{display:flex;align-items:center;gap:12px;padding:13px 0;border-bottom:1px solid var(--rowline)}.task:last-child{border:0}.check{display:grid;place-items:center;flex:0 0 24px;height:24px;border-radius:50%;background:var(--check-bg);color:var(--check-ink);font-size:12px}.check.done{background:var(--check-done-bg);color:var(--check-done-ink)}.task time{margin-left:auto;color:var(--muted);font-size:13px;font-variant-numeric:tabular-nums}.task span:nth-child(2){font-size:14px}.section-label{margin:20px 0 3px;font-size:11px;letter-spacing:1.4px;color:var(--muted);text-transform:uppercase}.footnote{display:flex;gap:8px;align-items:flex-start;border-radius:14px;background:var(--foot-bg);padding:17px 20px;margin-top:25px;font-size:13px;line-height:1.6;color:var(--foot-ink)}.login{max-width:510px;margin:35px auto;padding:40px}.login form{margin-top:27px}.login .primary{width:100%;display:flex;justify-content:space-between;margin-top:20px}label{display:block;font-size:13px;font-weight:650;margin:0 0 17px}input,select{display:block;width:100%;padding:12px;border:1px solid var(--field-line);border-radius:10px;margin-top:7px;background:var(--field);color:var(--text);min-height:44px}.field-grid{display:grid;grid-template-columns:1fr 1fr;gap:0 16px}dialog{border:1px solid var(--line);border-radius:22px;width:min(620px,calc(100% - 28px));max-height:90vh;padding:28px;color:var(--text);background:var(--card)}dialog::backdrop{background:var(--backdrop);backdrop-filter:blur(4px)}.days{display:flex;flex-wrap:wrap;gap:6px;margin:8px 0 20px}.days label{display:flex;gap:6px;align-items:center;margin:0;background:var(--soft);border-radius:8px;padding:8px}.days input{width:18px;min-height:18px;margin:0}.form-actions{display:flex;justify-content:flex-end;gap:10px;margin-top:22px}.pair-code{font-family:monospace;font-size:32px;font-weight:750;letter-spacing:4px;background:var(--pair-bg);padding:20px;text-align:center;border-radius:12px}.exception{display:flex;align-items:center;gap:10px;padding:10px 0;font-size:13px}.exception button{margin-left:auto}.stats{display:flex;gap:24px;margin:20px 0}.stat strong{display:block;font-size:35px;font-weight:650}.stat span{font-size:12px;color:var(--muted)}.support-row{padding:13px 0;border-bottom:1px solid var(--line);font-size:13px;line-height:1.6;overflow-wrap:anywhere}.support-row strong{display:block}.danger{color:var(--danger)}#message{position:fixed;bottom:22px;left:50%;transform:translateX(-50%);background:var(--green);color:var(--on-brand);border-radius:12px;padding:14px 20px;max-width:calc(100% - 28px);z-index:9;box-shadow:0 8px 35px #0002}#message:empty{display:none}.empty{text-align:center;padding:55px 25px}.empty p{max-width:430px;margin:15px auto 23px}.help{background:var(--help-bg);border-left:3px solid var(--help-line);padding:12px;margin:12px 0;border-radius:5px;font-size:14px}.review-days{display:flex;gap:7px;margin-top:12px}.review-day{flex:1;background:var(--soft);text-align:center;border-radius:9px;padding:11px 3px;font-size:12px}.review-day strong{display:block;margin-top:8px}.inline-error{color:var(--danger);line-height:1.5}.wide{grid-column:1/-1}fieldset{border:0;padding:0;margin:0}legend{font-size:13px;font-weight:650}.sr-only{position:absolute;width:1px;height:1px;overflow:hidden;clip:rect(0,0,0,0)}[hidden]{display:none!important}@media(max-width:700px){header{padding:20px}.private{display:none}main{padding:27px 18px 50px}.heading{align-items:flex-start;flex-direction:column}.grid{grid-template-columns:1fr}.card{padding:21px;border-radius:18px}.login{padding:27px;margin:10px auto}.toolbar{width:100%}.toolbar button{flex:1}.field-grid{grid-template-columns:1fr}.pair-code{font-size:25px;letter-spacing:2px}dialog{padding:22px}.card-top{flex-wrap:wrap}h1{letter-spacing:-1px}}

@media(max-width:700px){.tabs{display:grid;grid-template-columns:1fr 1fr;overflow:visible;gap:4px}.tabs button{text-align:center;padding:10px 8px}}

.homework-photo{display:block;width:100%;max-height:360px;object-fit:contain;border-radius:12px;margin:12px 0;background:var(--soft)}

.toggle{display:flex;align-items:center;gap:10px;min-height:44px}.toggle input[type=checkbox]{display:inline-block;width:20px;height:20px;min-height:20px;margin:0;padding:0;flex:0 0 20px}.grid>.card{min-width:0}

.homework-overview{margin:20px 0;padding:16px;background:var(--soft-warm);border-radius:14px}
.homework-page{margin:12px 0}
.homework-page figcaption{font-weight:600;margin-top:6px}
.homework-waiting{padding:10px 0;border-bottom:1px solid var(--line)}
.homework-waiting:last-child{border:0}
summary{cursor:pointer;min-height:44px;padding:12px 0}

/* Needs-you-now triage strip */
.ico{display:block;flex:0 0 auto}.ico.small{width:12px;height:12px}
.triage{margin:0 0 26px;display:flex;flex-direction:column;gap:10px}
.triage>.eyebrow{margin:0}
.triage-row{display:flex;align-items:center;gap:14px;width:100%;text-align:left;background:var(--card);border:1px solid var(--line);border-radius:18px;padding:14px 16px;min-height:44px;font:inherit;color:var(--text);box-shadow:0 5px 24px var(--shadow)}
.triage-row.tappable{cursor:pointer}
.triage-row.tappable:hover{background:var(--hover)}
.triage-row:nth-child(even) .avatar{background:var(--avatar-b)}
.triage-avatar{position:relative;flex:0 0 48px}
.ico-badge{position:absolute;right:-7px;bottom:-7px;width:20px;height:20px;display:grid;place-items:center;border-radius:7px;background:var(--badge-bg);color:var(--badge-ink);border:2px solid var(--card)}
.ico-badge.help,.ico-badge.departure{background:var(--warn-bg);color:var(--warn-ink)}
.ico-badge.phone{background:var(--callout);color:var(--brand-ink)}
.triage-text{display:flex;flex-direction:column;gap:3px;min-width:0;flex:1}
.triage-text strong{font-weight:650;line-height:1.35}
.triage-detail{font-size:13px;color:var(--text);line-height:1.5;overflow-wrap:anywhere}
.triage-action{flex:0 0 auto;margin-left:auto}
.triage-chevron{flex:0 0 auto;margin-left:auto;color:var(--muted)}
.allclear{background:var(--callout);border-radius:22px;padding:26px;margin:0 0 26px}
.allclear h2{margin:0 0 8px}
.allclear .eyebrow{color:var(--muted)}
.child-details>.child-summary{display:flex;align-items:center;gap:14px;list-style:none;padding:4px 0}
.child-summary::-webkit-details-marker{display:none}
.child-summary-text{display:flex;flex-direction:column;gap:3px;min-width:0;flex:1}
.child-summary time{color:var(--muted);font-size:13px;font-variant-numeric:tabular-nums}
.child-summary .triage-chevron{margin-left:0;transition:transform .15s}
.child-details[open] .child-summary .triage-chevron{transform:rotate(90deg)}
.child-body{margin-top:16px}

/* Appearance control */
.segmented{display:flex;gap:8px;flex-wrap:wrap;margin-top:6px}
.segment{display:flex;align-items:center;gap:8px;margin:0;min-height:44px;padding:10px 16px;border:1px solid var(--line);border-radius:12px;background:var(--card);cursor:pointer}
.segment.on{background:var(--pill);color:var(--pill-ink);border-color:var(--pill)}
.segment input{width:18px;height:18px;min-height:18px;margin:0;flex:0 0 18px}

/* One-thumb homework review sheet */
dialog.sheet{width:100%;max-width:100%;height:100%;max-height:100%;margin:0;padding:0;border:0;border-radius:0;background:var(--stage);color:var(--stage-ink)}
#review-sheet-body{display:flex;flex-direction:column;height:100%}
.sheet-head{display:flex;align-items:center;gap:12px;padding:10px 12px;background:var(--stage);color:var(--stage-ink);border-bottom:1px solid var(--stage-line)}
.sheet-close{background:transparent;border-color:var(--stage-line);color:var(--stage-ink);min-width:44px;padding:9px}
.sheet-close:hover{background:#ffffff14}
.sheet-title{margin:0;font-weight:650;font-size:15px;overflow:hidden;text-overflow:ellipsis;white-space:nowrap}
.sheet-stage{position:relative;flex:1;min-height:0;overflow:hidden;background:var(--stage);touch-action:pan-y}
.sheet-track{display:flex;height:100%;transition:transform .18s ease-out}
.sheet-slide{flex:0 0 100%;height:100%;display:grid;place-items:center;padding:8px}
.sheet-img{max-width:100%;max-height:100%;object-fit:contain;transition:transform .18s ease-out;user-select:none;-webkit-user-drag:none}
.sheet-img.zoomed{transform:scale(1.9)}
.sheet-edge{position:absolute;top:50%;transform:translateY(-50%);min-width:48px;min-height:48px;padding:11px;border-radius:50%;background:#0d1512b3;border-color:var(--stage-line);color:var(--stage-ink)}
.sheet-edge:hover{background:#0d1512e6}
.sheet-edge.prev{left:8px}.sheet-edge.next{right:8px}
.sheet-dots{position:absolute;left:50%;transform:translateX(-50%);bottom:8px;display:flex;justify-content:center;gap:2px;background:#0d1512b3;border-radius:22px;padding:0 4px}
.sheet-dot{min-width:44px;min-height:44px;padding:0;border:0;background:transparent;display:grid;place-items:center}
.sheet-dot:hover{background:transparent}
.sheet-dot span{display:block;width:9px;height:9px;border-radius:50%;background:#ffffff8c}
.sheet-dot.on span{background:var(--stage-ink);width:11px;height:11px}
.sheet-empty{height:100%;display:grid;place-items:center;text-align:center;padding:24px;color:var(--stage-ink)}
.sheet-empty .fine{color:#b9c8bf}
.sheet-meta{background:var(--card);color:var(--text);padding:14px 18px 0}
.sheet-caption{margin:0 0 6px;font-weight:650}
.sheet-foot{background:var(--card);color:var(--text);padding:12px 18px calc(16px + env(safe-area-inset-bottom));display:flex;flex-direction:column;gap:10px;border-top:1px solid var(--line)}
.sheet-foot .eyebrow,.sheet-foot .fine{margin:0}
.sheet-note{margin:0}
.sheet-note input{margin-top:0}
.sheet-decide{display:flex;flex-direction:column;gap:10px;width:100%}
.sheet-primary,.sheet-secondary{width:100%;min-height:56px;justify-content:center}
.sheet-secondary{background:transparent;border:1px solid var(--green);color:var(--brand-ink)}
.sheet-confirm{flex:1;display:flex;flex-direction:column;justify-content:center;gap:10px;background:var(--card);color:var(--text);padding:26px 18px}
.sheet-confirm h2{margin:0;line-height:1.3}
/* The sheet is designed for a phone held in one hand. On a wide screen keep the
   reading column and the thumb-zone controls a sane width instead of stretching
   them edge to edge, and sit the two decisions side by side. */
@media(min-width:701px){
  .sheet-meta>*,.sheet-foot>*,.sheet-confirm>*{max-width:560px;margin-left:auto;margin-right:auto;width:100%}
  .sheet-foot{align-items:center}
  .sheet-decide{flex-direction:row;gap:10px;max-width:560px;width:100%}
  .sheet-decide .sheet-primary{flex:3}
  .sheet-decide .sheet-secondary{flex:2}
  .sheet-dots{bottom:10px}
}
.chips{display:flex;gap:8px;flex-wrap:wrap}
.chip{min-height:44px;border-radius:999px;padding:10px 16px}
.chip.on{background:var(--pill);color:var(--pill-ink);border-color:var(--pill)}
.chip:disabled{cursor:not-allowed}
.inline-error:empty{display:none}

/* Bottom thumb navigation, phones only */
.bottom-tabs{display:none}
.review-cta{display:none}
@media(max-width:700px){
  .bottom-tabs{display:flex;position:fixed;left:0;right:0;bottom:0;z-index:6;background:var(--card);border-top:1px solid var(--line);padding:6px 4px calc(6px + env(safe-area-inset-bottom))}
  .bottom-tabs button{flex:1;min-width:0;border:0;background:transparent;color:var(--muted);display:flex;flex-direction:column;align-items:center;gap:3px;padding:4px 2px;min-height:52px;font-weight:650}
  .bottom-tabs button:hover{background:transparent}
  .bottom-icon{position:relative;display:grid;place-items:center;width:52px;height:30px;border-radius:999px}
  .bottom-tabs button[aria-selected=true]{color:var(--pill-ink)}
  .bottom-tabs button[aria-selected=true] .bottom-icon{background:var(--pill)}
  .bottom-label{font-size:11px;line-height:1.2;letter-spacing:0}
  .bottom-count{position:absolute;top:-3px;right:2px;min-width:17px;height:17px;padding:0 4px;border-radius:999px;background:var(--count-bg);color:var(--count-ink);font-size:10px;line-height:17px;text-align:center;font-weight:750}
  .review-cta{display:block;position:fixed;left:0;right:0;bottom:calc(70px + env(safe-area-inset-bottom));z-index:6;padding:0 18px}
  .review-cta button{width:100%;min-height:52px;justify-content:center;box-shadow:0 8px 28px #0000002e}
  .tabs{display:none}
  main{padding-bottom:calc(92px + env(safe-area-inset-bottom))}
  body.has-cta main{padding-bottom:calc(156px + env(safe-area-inset-bottom))}
  #message{bottom:calc(84px + env(safe-area-inset-bottom))}
  body.has-cta #message{bottom:calc(140px + env(safe-area-inset-bottom))}
  .triage-row{padding:13px 14px;gap:12px}
  .triage-action{margin-left:0}
}

/* The school week: one line per weekday, on the Routines card and in the editor */
.week-list{margin:6px 0 4px}
.week-row{display:flex;align-items:center;gap:12px;padding:11px 0;border-bottom:1px solid var(--rowline)}
.week-row:last-child{border:0}
.week-day{flex:0 0 42px;font-size:11px;font-weight:750;letter-spacing:1.2px;color:var(--muted)}
.week-day.quiet-day{color:var(--check-ink);line-height:1.5}
.week-range{flex:0 0 auto;min-width:104px;font-size:14px;font-weight:650;font-variant-numeric:tabular-nums}
.week-load{flex:1;min-width:0;display:flex;flex-direction:column;gap:5px}
.week-load .fine{line-height:1.3}
.lesson-bar{display:block;height:5px;border-radius:3px;background:var(--rowline)}
.lesson-bar>span{display:block;height:5px;border-radius:3px;background:var(--green);width:0}
.lesson-bar>span[data-heavy]{background:var(--orange)}
.week-summary{margin:16px 0}
.week-summary p{margin:0;font-size:14px;line-height:1.55}
.week-summary .fine{margin-top:7px}

.week-editor{display:flex;flex-direction:column;gap:8px;margin:8px 0 4px}
.day-row{display:flex;align-items:center;gap:12px;width:100%;min-height:60px;padding:10px 14px;border-radius:14px;text-align:left;color:var(--text);font-weight:400}
.day-row[aria-expanded=true]{border-color:var(--field-line)}
.day-chip{flex:0 0 46px;text-align:center;border-radius:8px;padding:7px 0;font-size:11px;font-weight:750;letter-spacing:1.2px;background:var(--pill);color:var(--pill-ink)}
.day-row.off .day-chip{background:var(--soft);color:var(--muted)}
.day-row.off .day-text strong{color:var(--muted)}
.day-text{flex:1;min-width:0;display:flex;flex-direction:column;gap:3px}
.day-text strong{font-size:15px;font-weight:650;font-variant-numeric:tabular-nums}
.day-text .fine{line-height:1.4}
.day-row .triage-chevron{transition:transform .15s}
.day-row .triage-chevron.open{transform:rotate(90deg)}
.day-panel{background:var(--soft);border-radius:14px;padding:15px 14px;margin-top:6px}
.day-panel label{margin-bottom:12px}
.day-panel .field-grid{gap:0 12px}
.lesson-legend{display:block;font-size:13px;font-weight:650;margin-bottom:7px}
.stepper{display:flex;align-items:center;gap:10px}
.stepper button{flex:0 0 44px;min-width:44px;padding:10px 0;text-align:center;font-size:17px}
.stepper span{flex:1;text-align:center;font-size:16px;font-weight:650;font-variant-numeric:tabular-nums}
.day-derived{background:var(--callout);border-radius:10px;padding:11px 12px;margin:14px 0}
.day-actions{display:flex;gap:8px;flex-wrap:wrap}
.day-actions button{flex:1;min-width:130px;text-align:center;font-size:13px}
textarea{display:block;width:100%;padding:12px;border:1px solid var(--field-line);border-radius:10px;margin-top:7px;background:var(--field);color:var(--text);font:inherit;font-variant-numeric:tabular-nums;resize:vertical}
textarea:focus-visible{outline:3px solid #b77139;outline-offset:3px}
@media(max-width:700px){.week-row{flex-wrap:wrap}.week-range{min-width:0}}

.pair-link{font-family:ui-monospace,SFMono-Regular,Menlo,monospace;font-size:13px;word-break:break-all;user-select:all}
