:root{--navy:#1a3c6e;--navy-2:#2c5282;--accent:#d9822b;--bg:#f2f4f8;--card:#ffffff;--soft:#e9eef7;--line:#d9dfe9;--ink:#1c2533;--muted:#5d6878;--on-btn:#ffffff;--ok:#1f8a4c;--ok-bg:#e3f4ea;--warn:#b26a00;--warn-bg:#fdf1dc;--bad:#b83227;--bad-bg:#fbe6e4;--idle:#7a8494;--idle-bg:#eceff3;--f-display:"Lexend","Segoe UI",system-ui,sans-serif;--f-body:"Source Sans 3","Segoe UI",system-ui,sans-serif;color-scheme:light}@media (prefers-color-scheme:dark){:root{--navy:#16325c;--navy-2:#7fa6e0;--accent:#f0a65a;--bg:#0f1622;--card:#172131;--soft:#1d2a3e;--line:#2a374b;--ink:#e6ebf2;--muted:#9aa6b8;--on-btn:#0f1622;--ok:#5fcf8d;--ok-bg:#16341f;--warn:#f2b552;--warn-bg:#3a2a10;--bad:#f08a80;--bad-bg:#3d1b18;--idle:#9aa6b8;--idle-bg:#222d3d;color-scheme:dark}}*{box-sizing:border-box}body,html{margin:0}body{background:var(--bg);color:var(--ink);font-family:var(--f-body);font-size:15px;line-height:1.5}h1,h2,h3{font-family:var(--f-display);font-weight:500;text-wrap:balance;margin:0}h1{font-size:1.5rem}h2{font-size:1.25rem}h3{font-size:1.02rem}button,input,select,textarea{font:inherit;color:inherit}:focus-visible{outline:2px solid var(--accent);outline-offset:2px}a{color:var(--navy-2)}.wrap{max-width:1080px;margin:0 auto;padding-left:max(16px,env(safe-area-inset-left,0px));padding-right:max(16px,env(safe-area-inset-right,0px))}.bar{position:-webkit-sticky;position:sticky;top:0;z-index:5;background:var(--navy);color:#fff}.bar .wrap{display:flex;flex-wrap:wrap;gap:8px 16px;align-items:center;padding-block:10px}.brand{display:flex;flex-direction:column;line-height:1.2;margin-right:auto}.brand b{font-family:var(--f-display);font-weight:500;font-size:1.05rem}.brand span{font-size:.8rem;opacity:.8}.bar .who{font-size:.88rem;opacity:.9}.bar button{background:transparent;border:1px solid rgba(255,255,255,.35);color:#fff;padding:5px 12px;border-radius:6px;cursor:pointer}main{padding-block:22px 60px;gap:22px}.stack,main{display:flex;flex-direction:column}.stack{gap:12px}.row{display:flex;flex-wrap:wrap;gap:10px;align-items:center}.between{justify-content:space-between}.muted{color:var(--muted)}.small{font-size:.86rem}.panel{background:var(--card);border:1px solid var(--line);padding:16px 18px}.banner,.panel{border-radius:10px}.banner{display:flex;flex-wrap:wrap;gap:8px 16px;align-items:center;justify-content:space-between;padding:12px 16px;border:1px solid}.banner.open{background:var(--ok-bg);border-color:var(--ok)}.banner.closed{background:var(--bad-bg);border-color:var(--bad)}.banner b{font-family:var(--f-display);font-weight:500}.btn{border:1px solid var(--navy-2);background:var(--navy-2);color:var(--on-btn);border-radius:7px;padding:7px 14px;cursor:pointer;font-weight:600}.btn.ghost{background:transparent;color:var(--navy-2)}.btn.ok{background:var(--ok);border-color:var(--ok)}.btn.bad{background:transparent;border-color:var(--bad);color:var(--bad)}.btn.small{padding:4px 10px;font-size:.85rem}.btn:disabled{opacity:.45;cursor:not-allowed}.linkbtn{background:none;border:0;color:var(--navy-2);cursor:pointer;padding:0;text-decoration:underline}.grid{display:grid;grid-template-columns:repeat(auto-fill,minmax(310px,1fr));grid-gap:14px;gap:14px}.child{background:var(--card);border:1px solid var(--line);border-radius:10px;padding:16px;display:flex;flex-direction:column;gap:12px;min-width:0}.child header{display:flex;justify-content:space-between;gap:8px;align-items:flex-start}.school{font-size:.75rem;font-weight:700;letter-spacing:.05em;border:1px solid var(--line);border-radius:4px;padding:1px 6px;color:var(--muted);white-space:nowrap}.meters{display:grid;grid-template-columns:1fr 1fr;grid-gap:10px;gap:10px}.meter{font-size:.82rem;color:var(--muted)}.meter b{font-family:var(--f-display);font-weight:500;font-size:1.05rem;color:var(--ink);font-feature-settings:"tnum";font-variant-numeric:tabular-nums}.track{height:6px;border-radius:3px;background:var(--idle-bg);margin-top:4px;overflow:hidden}.track i{display:block;height:100%;background:var(--navy-2)}.week{display:grid;grid-template-columns:repeat(5,1fr);grid-gap:4px;gap:4px}.day{border-radius:6px;padding:5px 2px;text-align:center;font-size:.72rem;line-height:1.25;border:1px solid transparent}.day b{display:block;font-size:.78rem}.s-approved{background:var(--ok-bg);color:var(--ok)}.s-pending{background:var(--warn-bg);color:var(--warn)}.s-returned{background:var(--bad-bg);color:var(--bad)}.s-none{background:var(--idle-bg);color:var(--idle)}.s-open{border:1px dashed var(--navy-2);color:var(--navy-2)}.s-future,.s-open{background:transparent}.s-future{border:1px solid var(--line);color:var(--idle)}.pill{display:inline-block;font-size:.75rem;font-weight:700;padding:2px 8px;border-radius:99px;white-space:nowrap}.goals{margin:0;padding-left:18px;font-size:.88rem;color:var(--muted)}form.log{gap:10px;border-top:1px solid var(--line);padding-top:12px}.field,form.log,label.field{display:flex;flex-direction:column}.field,label.field{gap:3px;font-size:.85rem;font-weight:600;min-width:0}input[type=date],input[type=email],input[type=month],input[type=number],input[type=password],input[type=text],input[type=time],select,textarea{background:var(--bg);border:1px solid var(--line);border-radius:6px;padding:6px 8px;font-weight:400;width:100%;min-width:0}textarea{min-height:64px;resize:vertical}.checks{flex-direction:column;gap:4px}.checks,.checks label{display:flex;font-weight:400}.checks label{align-items:flex-start;gap:6px}.two{grid-template-columns:1fr 1fr;grid-gap:10px}.three,.two{display:grid;gap:10px}.three{grid-template-columns:repeat(3,1fr);grid-gap:10px}.locked{font-size:.88rem;color:var(--muted);border-top:1px solid var(--line);padding-top:10px}.note{background:var(--soft);font-size:.88rem}.error,.note{border-radius:8px;padding:8px 10px}.error{background:var(--bad-bg);color:var(--bad);font-size:.9rem}.kpis{display:grid;grid-template-columns:repeat(auto-fit,minmax(170px,1fr));grid-gap:12px;gap:12px}.kpi{background:var(--card);border:1px solid var(--line);border-radius:10px;padding:12px 14px}.kpi b{display:block;font-family:var(--f-display);font-weight:500;font-size:1.6rem;font-feature-settings:"tnum";font-variant-numeric:tabular-nums}.kpi span{font-size:.82rem;color:var(--muted)}.tablebox{overflow-x:auto;background:var(--card);border:1px solid var(--line);border-radius:10px}table{border-collapse:collapse;width:100%;font-size:.9rem}td,th{text-align:left;padding:8px 12px;border-bottom:1px solid var(--line);white-space:nowrap;vertical-align:middle}th{font-size:.75rem;letter-spacing:.05em;text-transform:uppercase;color:var(--muted);font-weight:700;background:var(--soft)}td.num,th.num{text-align:right;font-feature-settings:"tnum";font-variant-numeric:tabular-nums}td.wrapcell{white-space:normal;min-width:220px}tr:last-child td{border-bottom:0}td select{width:auto}.review{background:var(--card);border:1px solid var(--line);border-left:4px solid var(--warn);border-radius:8px;padding:14px 16px;display:flex;flex-direction:column;gap:8px}.review.returned{border-left-color:var(--bad)}.review.approved{border-left-color:var(--ok)}.review dl{display:grid;grid-template-columns:max-content 1fr;grid-gap:3px 12px;gap:3px 12px;margin:0;font-size:.9rem}.review dt{color:var(--muted)}.review dd{margin:0;min-width:0;overflow-wrap:anywhere}.subtabs{display:flex;gap:4px;flex-wrap:wrap;border-bottom:1px solid var(--line)}.subtabs button{background:none;border:0;border-bottom:3px solid transparent;padding:8px 12px;cursor:pointer;color:var(--muted);font-weight:600}.subtabs button[aria-selected=true]{color:var(--ink);border-bottom-color:var(--accent)}.toggle{display:flex;gap:8px;align-items:center;font-size:.92rem}.toggle input{width:18px;height:18px;accent-color:var(--navy-2)}.login{max-width:400px;margin:8vh auto 0;gap:14px}.login,.login .panel{display:flex;flex-direction:column}.login .panel{gap:12px}.evidence{display:flex;flex-wrap:wrap;gap:8px}.evidence img,.evidence video{max-width:100%;max-height:320px;border-radius:8px;background:#000}.toast{position:fixed;left:50%;bottom:calc(20px + env(safe-area-inset-bottom,0px));transform:translateX(-50%);background:var(--ink);color:var(--bg);padding:9px 16px;border-radius:8px;font-size:.9rem;z-index:20;max-width:calc(100% - 32px)}@media (max-width:560px){.grid,.meters,.three,.two{grid-template-columns:1fr}}