:root{--bg:#f6f7f9;--panel:#fff;--ink:#14171f;--muted:#6b7280;--line:#e3e6ec;--accent:#2b5cd9;--accent-soft:#eaf0ff;--red:#c02b2b;--red-soft:#fdecec;--amber:#b06d00;--amber-soft:#fff5e2;--green:#1d7a4c;--green-soft:#e7f6ee;--violet:#6b3fa0;--violet-soft:#f1ebfa;--radius:12px;--shadow:0 1px 2px rgba(16,24,40,.05),0 1px 3px rgba(16,24,40,.06);--tabbar:64px}@media (prefers-color-scheme:dark){:root{--bg:#0e1116;--panel:#161a21;--ink:#e8eaee;--muted:#9aa2b1;--line:#252b35;--accent:#7ea2ff;--accent-soft:#1b2440;--red:#ff8f8f;--red-soft:#3a1d1d;--amber:#f0b95c;--amber-soft:#3a2c14;--green:#6ed3a1;--green-soft:#14301f;--violet:#c3a4f0;--violet-soft:#271a3a;--shadow:0 1px 2px rgba(0,0,0,.4)}}*{box-sizing:border-box}body,html{margin:0;padding:0}body{background:var(--bg);color:var(--ink);font:15px/1.55 -apple-system,BlinkMacSystemFont,Segoe UI,Inter,Roboto,Helvetica,Arial,sans-serif;-webkit-font-smoothing:antialiased;-webkit-text-size-adjust:100%}a{color:var(--accent)}.wrap{max-width:1080px;margin:0 auto;padding:18px 16px calc(var(--tabbar) + 32px)}@media(min-width:860px){.wrap{padding-bottom:60px}}.apphead{position:-webkit-sticky;position:sticky;top:0;z-index:20;background:var(--panel);border-bottom:1px solid var(--line)}.apphead .inner{max-width:1080px;margin:0 auto;padding:11px 16px;display:flex;align-items:center;justify-content:space-between;gap:12px}.apphead .brand{font-weight:650;letter-spacing:-.02em;font-size:16px;text-decoration:none;color:var(--ink)}.apphead .brand small{display:block;font-weight:400;font-size:11.5px;color:var(--muted);letter-spacing:0}.apphead .who{font-size:12px;color:var(--muted);text-align:right}.apphead .who a{display:block;font-size:11.5px}.dnav{display:none;gap:2px;max-width:1080px;margin:0 auto;padding:0 16px}@media(min-width:860px){.dnav{display:flex}}.dnav a{padding:9px 13px;font-size:14px;color:var(--muted);text-decoration:none;border-bottom:2px solid transparent;margin-bottom:-1px}.dnav a:hover{color:var(--ink)}.dnav a.on{color:var(--accent);border-bottom-color:var(--accent);font-weight:560}.dnav .badge{font-size:10.5px;background:var(--red);color:#fff;border-radius:999px;padding:1px 6px;margin-left:5px;font-weight:700}.tabbar{position:fixed;bottom:0;left:0;right:0;z-index:30;display:flex;background:var(--panel);border-top:1px solid var(--line);padding-bottom:env(safe-area-inset-bottom)}@media(min-width:860px){.tabbar{display:none}}.tabbar a{flex:1 1;padding:9px 2px 8px;text-align:center;text-decoration:none;color:var(--muted);font-size:10.5px;position:relative}.tabbar a.on{color:var(--accent)}.tabbar a .ic{display:block;font-size:19px;line-height:1.15}.tabbar a .badge{position:absolute;top:4px;left:50%;margin-left:6px;background:var(--red);color:#fff;font-size:9.5px;font-weight:700;border-radius:999px;padding:0 5px;line-height:15px}h1.page{margin:0 0 4px;font-size:21px;letter-spacing:-.02em}p.lede{margin:0 0 18px;font-size:13.5px}h2.sec,p.lede{color:var(--muted)}h2.sec{font-size:12.5px;text-transform:uppercase;letter-spacing:.06em;margin:22px 0 9px;font-weight:600}h2.sec:first-child{margin-top:0}.strip{display:grid;grid-template-columns:repeat(auto-fit,minmax(150px,1fr));grid-gap:9px;gap:9px;margin-bottom:18px}.kpi{background:var(--panel);border:1px solid var(--line);border-radius:var(--radius);padding:12px 14px;box-shadow:var(--shadow);text-decoration:none;color:inherit;display:block}.kpi .n{font-size:23px;font-weight:650;letter-spacing:-.02em;line-height:1.15}.kpi .l{font-size:12px;color:var(--muted);margin-top:2px}.kpi.alarm{border-color:var(--red);background:var(--red-soft)}.kpi.alarm .n{color:var(--red)}.kpi.warn{border-color:var(--amber);background:var(--amber-soft)}.kpi.warn .n{color:var(--amber)}.card{background:var(--panel);border:1px solid var(--line);border-radius:var(--radius);padding:15px 16px;margin-bottom:10px;box-shadow:var(--shadow)}.card h3{margin:0 0 4px;font-size:15.5px;letter-spacing:-.01em;line-height:1.35}.meta{font-size:12px;display:flex;gap:8px;flex-wrap:wrap;align-items:center;margin-bottom:8px}.meta,.tag{color:var(--muted)}.tag{font-size:10.5px;padding:2px 8px;border-radius:999px;background:var(--line);text-transform:uppercase;letter-spacing:.04em;font-weight:700}.tag.teacher_message{background:var(--accent-soft);color:var(--accent)}.tag.daycare{background:var(--green-soft);color:var(--green)}.tag.parents_council{background:var(--violet-soft);color:var(--violet)}.tag.timetable{background:var(--amber-soft);color:var(--amber)}.summary{margin:0 0 9px}details.more summary{cursor:pointer;font-size:13px;color:var(--accent);list-style:none}details.more summary::-webkit-details-marker{display:none}details.more summary:before{content:"▸ ";font-size:11px}details.more[open] summary:before{content:"▾ "}details.more ul{margin:8px 0 0;padding-left:18px}details.more li{margin-bottom:5px;font-size:14px}.inferred{font-size:10.5px;color:var(--amber);border:1px solid var(--amber);border-radius:999px;padding:1px 7px}.links{gap:13px;font-size:13px}.links,.unitlinks{display:flex;flex-wrap:wrap;margin-top:10px}.unitlinks{gap:6px}.unitlinks a{font-size:12px;padding:4px 10px;border:1px solid var(--line);border-radius:7px;background:var(--accent-soft);color:var(--accent);text-decoration:none;font-weight:550}.filters{display:flex;gap:7px;flex-wrap:wrap;align-items:center;margin-bottom:15px}.filters input[type=search]{flex:1 1;min-width:170px;padding:9px 12px;border:1px solid var(--line);border-radius:9px;background:var(--panel);color:var(--ink);font:inherit;font-size:16px}.chip{padding:6px 11px;border:1px solid var(--line);border-radius:999px;background:var(--panel);font-size:12.5px;cursor:pointer;color:var(--muted);white-space:nowrap}.chip.on{background:var(--accent-soft);border-color:var(--accent);color:var(--accent);font-weight:550}.act{display:flex;gap:11px;align-items:flex-start;background:var(--panel);border:1px solid var(--line);border-left-width:4px;border-radius:10px;padding:12px 13px;margin-bottom:8px;box-shadow:var(--shadow)}.act.overdue,.act.today{border-left-color:var(--red);background:var(--red-soft)}.act.soon{border-left-color:var(--amber)}.act.later{border-left-color:var(--line)}.act.done,.act.recurring{border-left-color:var(--green)}.act.done{opacity:.55}.act .body{flex:1 1;min-width:0}.act .t{font-size:14.5px;font-weight:550;margin-bottom:2px}.act.done .t{text-decoration:line-through}.act .n{font-size:12.5px;color:var(--muted)}.act .when{font-size:11.5px;font-weight:650;margin-bottom:3px}.act.overdue .when,.act.today .when{color:var(--red)}.act.soon .when{color:var(--amber)}.act.recurring .when,.tick{color:var(--green)}.tick{flex:0 0 auto;width:26px;height:26px;border-radius:8px;border:1.5px solid var(--line);background:var(--panel);cursor:pointer;font-size:14px;line-height:1;display:flex;align-items:center;justify-content:center;padding:0;margin-top:1px}.tick:hover,.tick[data-done=true]{border-color:var(--green)}.tick[data-done=true]{background:var(--green-soft)}.tick:disabled{opacity:.4;cursor:not-allowed}.ev{display:flex;gap:12px;align-items:baseline;padding:11px 13px;background:var(--panel);border:1px solid var(--line);border-radius:10px;margin-bottom:8px;box-shadow:var(--shadow)}.ev .d{min-width:96px;font-size:12.5px;font-weight:600}.ev .d small{display:block;font-weight:400;color:var(--muted);font-size:11px}.ev .t{flex:1 1;font-size:14px}.ev .c{font-size:10.5px;padding:2px 8px;border-radius:999px;background:var(--line);color:var(--muted);white-space:nowrap}.ev.nofree{border-color:var(--amber)}.ev.nofree .c{background:var(--amber-soft);color:var(--amber)}.ev.parents{border-color:var(--accent)}.ev.parents .c{background:var(--accent-soft);color:var(--accent)}.ev .warn{display:block;font-size:12px;color:var(--amber);margin-top:4px}.ev.past{opacity:.45}.ttwrap{overflow-x:auto;-webkit-overflow-scrolling:touch}table.tt{border-collapse:separate;border-spacing:3px;font-size:12px;min-width:600px;width:100%}table.tt th{font-weight:600;color:var(--muted);font-size:11.5px;padding:5px;text-align:center}table.tt th.slot{text-align:right;padding-right:8px;white-space:nowrap;font-feature-settings:"tnum";font-variant-numeric:tabular-nums}table.tt td{background:var(--panel);border:1px solid var(--line);border-radius:8px;padding:6px 7px;vertical-align:top;text-align:center;min-width:82px}table.tt td.empty{background:transparent;border-color:transparent}table.tt td .s{font-weight:600;display:block}table.tt td .tc{color:var(--muted);font-size:10.5px}table.tt td .loc{display:block;font-size:10px;color:var(--amber);margin-top:2px}table.tt td.daz{border-color:var(--accent);background:var(--accent-soft)}table.tt td.clash{border-color:var(--amber);background:var(--amber-soft)}.pgrid{display:grid;grid-template-columns:repeat(auto-fill,minmax(250px,1fr));grid-gap:10px;gap:10px}.person{background:var(--panel);border:1px solid var(--line);border-radius:var(--radius);padding:13px 15px;box-shadow:var(--shadow)}.person.key{border-color:var(--accent)}.person .nm{font-weight:600;font-size:14.5px}.person .rl{font-size:12.5px;color:var(--muted);margin:2px 0 7px}.person .ct{font-size:12.5px;line-height:1.8}.person .nt{font-size:12.5px;color:var(--amber);margin-top:6px}.flag{background:var(--panel);border:1px solid var(--line);border-left-width:4px;border-radius:10px;padding:13px 15px;margin-bottom:9px;box-shadow:var(--shadow)}.flag.high{border-left-color:var(--red)}.flag.medium{border-left-color:var(--amber)}.flag.low{border-left-color:var(--muted)}.flag .ft{font-weight:600;font-size:14.5px;margin-bottom:4px}.flag .fd{font-size:13px;color:var(--muted)}.sev{font-size:10px;text-transform:uppercase;letter-spacing:.05em;font-weight:700;margin-left:8px}.flag.high .sev{color:var(--red)}.flag.medium .sev{color:var(--amber)}.flag.low .sev{color:var(--muted)}.btn{display:inline-block;padding:11px 17px;border-radius:10px;border:1px solid var(--accent);background:var(--accent);color:#fff;font:inherit;font-size:15px;font-weight:550;cursor:pointer;text-decoration:none;text-align:center}.btn:disabled{opacity:.55;cursor:not-allowed}.btn.ghost{color:var(--accent)}.btn.ghost,.field{background:var(--panel)}.field{width:100%;padding:12px 13px;border:1px solid var(--line);border-radius:10px;color:var(--ink);font:inherit;font-size:16px}label.lbl{display:block;font-size:12.5px;margin:0 0 5px}.note,label.lbl{color:var(--muted)}.note{font-size:13px}.ok{background:var(--green-soft);border:1px solid var(--green);color:var(--green);border-radius:10px}.err,.ok{padding:11px 13px;font-size:13.5px}.err{background:var(--red-soft);border:1px solid var(--red);color:var(--red);border-radius:10px}.empty-state{color:var(--muted);font-size:14px;padding:24px;text-align:center;border:1px dashed var(--line);border-radius:var(--radius)}.loginwrap{min-height:100dvh;display:flex;align-items:center;justify-content:center;padding:24px}.loginbox{width:100%;max-width:370px;background:var(--panel);border:1px solid var(--line);border-radius:16px;padding:26px 24px;box-shadow:var(--shadow)}.loginbox h1{margin:0 0 3px;font-size:20px;letter-spacing:-.02em}.loginbox p{margin:0 0 20px;color:var(--muted);font-size:13.5px}footer.foot{margin-top:30px;padding-top:14px;border-top:1px solid var(--line);font-size:12px;color:var(--muted)}