:root{--ink:#16231c;--ink-soft:#5c6b62;--ink-faint:#647168;--paper:#f5f7f6;--surface:#fff;--line:#e4e2db;--green:#1f4a38;--green-tint:#e5efe9;--red:#a32d2d;--red-tint:#fcebeb;--amber:#854f0b;--amber-tint:#fbf0dc;--blue:#2e4ba8;--radius:14px;--shadow:0 12px 32px #16231c14;--mono:ui-monospace, Menlo, monospace}*{box-sizing:border-box}html,body{background:var(--paper);color:var(--ink);-webkit-font-smoothing:antialiased;margin:0;font-family:-apple-system,BlinkMacSystemFont,Segoe UI,Roboto,sans-serif;font-size:16px;line-height:1.55}body{min-height:100vh}main{max-width:540px;margin:0 auto;padding:34px 18px 48px}.appbar{border-bottom:1px solid var(--line);background:#ffffffeb;justify-content:space-between;align-items:center;gap:16px;min-height:68px;padding:12px max(18px,50vw - 270px);display:flex}.brand{align-items:center;gap:10px;display:flex}.brand__mark{background:var(--green);color:#fff;letter-spacing:.04em;border-radius:11px;place-items:center;width:38px;height:38px;font-size:12px;font-weight:800;display:grid;box-shadow:0 6px 16px #1f4a382e}.brand strong,.brand small{line-height:1.25;display:block}.brand strong{font-size:14px}.brand small{color:var(--ink-soft);letter-spacing:.04em;text-transform:uppercase;font-size:11px;font-weight:600}.secure{color:var(--green);font-size:12px;font-weight:700}.secure span{margin-right:4px;font-size:8px}.app-footer{border-top:1px solid var(--line);max-width:540px;color:var(--ink-faint);text-align:center;margin:12px auto 0;padding:20px 18px 28px;font-size:11px}h1{letter-spacing:-.025em;margin:0 0 10px;font-size:clamp(24px,6vw,32px);font-weight:720;line-height:1.18}h2{margin:20px 0 8px;font-size:17px;font-weight:500}p{margin:0 0 12px}.muted{color:var(--ink-soft);font-size:14px}.intro{color:var(--ink-soft);margin-bottom:22px;font-size:15px}.mono{font-family:var(--mono);font-size:13px}.error{color:var(--red)}.ok{color:var(--green)}.row,.prefs>li,.days>li{border-bottom:1px solid var(--line);align-items:center;gap:10px;padding:14px 0;display:flex}.row:last-child,.prefs>li:last-child,.days>li:last-child{border-bottom:none}.row strong,.prefs>li strong,.days>li strong{font-size:17px;font-weight:600}.row span,.prefs>li span,.days>li span{color:var(--ink-soft);font-size:13px}ul{margin:0;padding:0;list-style:none}.setting-scope{gap:7px;margin:18px 0 22px;font-size:13px;display:grid}.setting-scope select{border:1px solid var(--line);background:var(--surface);min-height:48px;color:var(--ink);font:inherit;border-radius:10px;padding:0 12px}.preference{border-bottom:1px solid var(--line);justify-content:space-between;align-items:center;gap:14px;padding:16px 0;display:flex}.preference strong,.preference span{display:block}.preference strong{font-size:16px}.preference span{color:var(--ink-soft);margin-top:3px;font-size:12px}.toggle{min-width:58px;min-height:42px;color:var(--ink-soft);background:#e8ebe9;border-radius:21px;margin:0}.toggle--on{background:var(--green);color:#fff}.preference--settings{align-items:flex-start}.preference-copy{flex:1;min-width:190px}.preference-controls{flex-wrap:wrap;justify-content:flex-end;align-items:end;gap:10px;display:flex}.preference-controls label{color:var(--ink-soft);gap:4px;font-size:11px;display:grid}.preference-controls select,.preference-controls input{border:1px solid var(--line);min-height:42px;color:var(--ink);font:inherit;background:#fff;border-radius:9px;padding:0 10px}@media (max-width:720px){.preference--settings{display:grid}.preference-controls{justify-content:flex-start}}.school-logo{object-fit:contain;width:64px;height:64px;margin-bottom:12px}.school-identity{align-items:center;gap:12px;margin-bottom:16px;display:flex}.school-identity .school-logo{width:48px;height:48px;margin:0}.school-identity strong,.school-identity small{line-height:1.3;display:block}.school-identity small{color:var(--ink-soft);margin-top:2px;font-size:11px}.child{border:1px solid var(--line);border-radius:var(--radius);background:var(--surface);box-shadow:var(--shadow);margin-bottom:12px;padding:18px}.child__head{justify-content:space-between;align-items:flex-start;gap:12px;display:flex}.child__head a,.child__head .muted{display:block}.child__detail{margin:14px 0 0}.inbox{margin-top:34px}.inbox__head{justify-content:space-between;align-items:baseline;display:flex}.inbox__head h2{margin:0 0 12px;font-size:20px;font-weight:700}.inbox__head span{color:var(--ink-soft);font-size:12px}.message{border:1px solid var(--line);border-radius:var(--radius);background:var(--surface);box-shadow:var(--shadow);margin-bottom:12px;padding:17px}.message--unread{border-left:4px solid var(--blue)}.message__meta{color:var(--ink-soft);text-transform:uppercase;justify-content:space-between;gap:12px;font-size:11px;font-weight:700;display:flex}.message h3{margin:8px 0 5px;font-size:17px}.message p{color:var(--ink-soft);white-space:pre-wrap;font-size:14px}.message__ack{border-top:1px solid var(--line);padding-top:12px}.message__ack small,.message__ack strong{margin-bottom:8px;font-size:12px;display:block}.message__ack strong{color:var(--green)}.message__ack button{margin:0}.message__files{gap:6px;margin:10px 0;display:grid}.message__files button{text-align:left;overflow-wrap:anywhere;min-height:42px;margin:0;padding:9px 12px;font-size:13px}.academic-card{border:1px solid var(--line);border-radius:var(--radius);background:var(--surface);box-shadow:var(--shadow);margin-bottom:12px;padding:17px}.academic-card h3{margin:8px 0 5px;font-size:17px}.academic-card p{color:var(--ink-soft);white-space:pre-wrap;font-size:14px}.src{font-family:var(--mono);border-radius:3px;margin-right:6px;padding:1px 5px;font-size:11px}.sd{background:var(--green-tint);color:var(--green)}.st{color:var(--ink-soft);background:#edeae2}.pill{font-family:var(--mono);color:var(--ink-soft);white-space:nowrap;background:#f1efe8;border-radius:4px;padding:3px 9px;font-size:11px}.pill--present{background:var(--green-tint);color:var(--green)}.pill--absent{background:var(--red-tint);color:var(--red)}.pill--late{background:var(--amber-tint);color:var(--amber)}.eyebrow{font-family:var(--mono);letter-spacing:.07em;color:var(--green);text-transform:uppercase;font-size:11px;font-weight:750}.progress{color:var(--ink-faint);font-family:var(--mono);letter-spacing:.04em;text-transform:uppercase;align-items:center;gap:12px;margin-bottom:24px;font-size:11px;font-weight:700;display:flex}.progress__track{background:var(--line);border-radius:99px;flex:1;height:5px;overflow:hidden}.progress__track>span{border-radius:inherit;background:var(--green);height:100%;display:block}.card{border:1px solid var(--line);border-radius:var(--radius);background:var(--surface);box-shadow:var(--shadow);align-items:center;gap:14px;margin:20px 0 24px;padding:18px;display:flex}.student-mark{background:var(--green-tint);width:48px;height:48px;color:var(--green);border-radius:50%;flex:0 0 48px;place-items:center;font-size:14px;font-weight:800;display:grid}.student-copy,.student-copy strong,.student-copy .muted{display:block}.student-copy strong{font-size:18px;line-height:1.35}.student-copy .muted{margin-top:2px}.privacy-note{border-left:3px solid var(--green);background:var(--green-tint);color:var(--ink-soft);border-radius:0 10px 10px 0;flex-direction:column;gap:3px;margin-top:12px;padding:14px 16px;font-size:13px;display:flex}.privacy-note strong{color:var(--ink);font-size:13px}.enrol-divider{color:var(--ink-faint);text-transform:uppercase;letter-spacing:.04em;align-items:center;gap:10px;margin:10px 0 14px;font-size:12px;display:flex}.enrol-divider:before,.enrol-divider:after{content:"";background:var(--line);flex:1;height:1px}.enrol-entry{gap:7px;display:grid}.enrol-entry label{font-size:13px;font-weight:700}.enrol-entry textarea{resize:vertical;border:1px solid var(--line);border-radius:var(--radius);background:var(--surface);width:100%;min-height:92px;color:var(--ink);font:13px/1.45 var(--mono);overflow-wrap:anywhere;padding:12px}.enrol-entry textarea:focus-visible{outline-offset:2px;outline:3px solid #8da7ff}.enrol-error{border-left:3px solid var(--red);background:var(--red-tint);color:var(--red);border-radius:0 10px 10px 0;margin:4px 0 12px;padding:12px 14px;font-size:13px}.consent-list{gap:10px;margin:20px 0 24px;display:grid}.consent-list li{border:1px solid var(--line);background:var(--surface);border-radius:12px;align-items:flex-start;gap:12px;padding:16px;display:flex}.consent-list__icon{background:var(--green-tint);border-radius:50%;flex:0 0 22px;width:22px;height:22px;position:relative}.consent-list__icon:after{content:"";border:solid var(--green);border-width:0 2px 2px 0;width:6px;height:9px;position:absolute;top:5px;left:7px;transform:rotate(45deg)}.consent-list strong,.consent-list small{display:block}.consent-list strong{font-size:15px;line-height:1.35}.consent-list small{color:var(--ink-soft);margin-top:3px;font-size:12px}.consent-footnote{padding:0 4px;line-height:1.55}.bx{background:var(--surface);border-radius:var(--radius);margin:14px 0;padding:14px 16px}.bx p{margin:0 0 8px;font-size:15px}.bx p:last-child{margin:0}.term{gap:12px;margin:16px 0;display:flex}.term>div{background:var(--surface);border-radius:var(--radius);flex:1;padding:14px}.big{font-size:26px;font-weight:500;line-height:1.1;display:block}button,.btn{font:inherit;border:1px solid var(--line);border-radius:var(--radius);background:var(--surface);width:100%;min-height:48px;color:var(--ink);cursor:pointer;margin-bottom:10px;padding:12px 20px;font-size:16px}button.primary{background:var(--blue);border-color:var(--blue);color:#fff}button.ghost{color:var(--ink-soft);background:0 0}button:disabled{opacity:.45}button:hover:not(:disabled),.btn:hover{filter:brightness(.98)}button:focus-visible,a:focus-visible{outline-offset:3px;outline:3px solid #8da7ff}a{color:var(--blue)}.settings{flex-direction:column;gap:8px;margin-top:24px;display:flex}.tog{background:var(--line);border:none;border-radius:13px;flex-shrink:0;width:46px;height:26px;min-height:26px;margin:0;padding:0;position:relative}.tog[aria-checked=true]{background:#1d9e75}.tog:after{content:"";background:#fff;border-radius:50%;width:20px;height:20px;transition:transform .15s;position:absolute;top:3px;left:3px;box-shadow:0 1px 4px #0003}.tog[aria-checked=true]:after{transform:translate(20px)}.dlg{z-index:10;border:1px solid var(--line);border-radius:var(--radius);background:var(--surface);max-width:504px;margin:0 auto;padding:20px;position:fixed;inset:auto 18px 18px;box-shadow:0 24px 70px #16231c38}.failed{max-width:540px;margin:34px auto;padding:20px 18px}.warn{background:var(--amber-tint);border-left:3px solid var(--amber);border-radius:0 var(--radius) var(--radius) 0;margin-bottom:14px;padding:12px 14px}.days li{justify-content:space-between}@media (max-width:380px){main{padding-top:26px}.secure{display:none}.card{padding:15px}}.calendar-page{max-width:680px;margin:0 auto}.calendar-page section{margin:28px 0}.calendar-card{border:1px solid var(--border,#d9dedb);border-radius:12px;margin:16px 0;padding:20px}.calendar-card h3{margin:0;font-size:1.1rem}.calendar-controls{flex-wrap:wrap;align-items:end;gap:12px;display:flex}.calendar-controls label{gap:6px;display:grid}.calendar-page input,.calendar-page button{font:inherit;border:1px solid #8b9792;border-radius:6px;min-height:44px;padding:10px 14px}.calendar-page button{color:#fff;cursor:pointer;background:#145c47}.calendar-page button:disabled{opacity:.55;cursor:default}.calendar-page button:focus-visible,.calendar-page input:focus-visible{outline-offset:2px;outline:3px solid #d9a441}.calendar-slot{border-top:1px solid #d9dedb;padding:12px 0}.calendar-description{white-space:pre-wrap;overflow-wrap:anywhere}
