
@font-face{font-family:"Plex Arabic";font-weight:400;font-display:swap;src:url(/static/fonts/arabic-400.woff2) format("woff2");unicode-range:U+0600-06FF,U+0750-077F,U+0870-088E,U+0890-0891,U+0898-08E1,U+08E3-08FF,U+200C-200E,U+2010-2011,U+204F,U+2E41,U+FB50-FDFF,U+FE70-FE74,U+FE76-FEFC}
@font-face{font-family:"Plex Arabic";font-weight:600;font-display:swap;src:url(/static/fonts/arabic-600.woff2) format("woff2");unicode-range:U+0600-06FF,U+0750-077F,U+0870-088E,U+0890-0891,U+0898-08E1,U+08E3-08FF,U+200C-200E,U+2010-2011,U+204F,U+2E41,U+FB50-FDFF,U+FE70-FE74,U+FE76-FEFC}
@font-face{font-family:"Plex Arabic";font-weight:700 800;font-display:swap;src:url(/static/fonts/arabic-700.woff2) format("woff2");unicode-range:U+0600-06FF,U+0750-077F,U+0870-088E,U+0890-0891,U+0898-08E1,U+08E3-08FF,U+200C-200E,U+2010-2011,U+204F,U+2E41,U+FB50-FDFF,U+FE70-FE74,U+FE76-FEFC}
@font-face{font-family:"Plex Arabic";font-weight:400;font-display:swap;src:url(/static/fonts/latin-400.woff2) format("woff2");unicode-range:U+0000-00FF,U+0131,U+0152-0153,U+02BB-02BC,U+02C6,U+02DA,U+02DC,U+2000-206F,U+20AC,U+2122,U+2191,U+2193,U+2212,U+2215,U+FEFF,U+FFFD}
@font-face{font-family:"Plex Arabic";font-weight:600;font-display:swap;src:url(/static/fonts/latin-600.woff2) format("woff2");unicode-range:U+0000-00FF,U+0131,U+0152-0153,U+02BB-02BC,U+02C6,U+02DA,U+02DC,U+2000-206F,U+20AC,U+2122,U+2191,U+2193,U+2212,U+2215,U+FEFF,U+FFFD}
@font-face{font-family:"Plex Arabic";font-weight:700 800;font-display:swap;src:url(/static/fonts/latin-700.woff2) format("woff2");unicode-range:U+0000-00FF,U+0131,U+0152-0153,U+02BB-02BC,U+02C6,U+02DA,U+02DC,U+2000-206F,U+20AC,U+2122,U+2191,U+2193,U+2212,U+2215,U+FEFF,U+FFFD}

:root{
 --bg:#f6f8fc;--card:#fff;--soft:#f4f7fb;--soft2:#e8eef7;--line:#e2e8f0;
 --ink:#0f1e3c;--muted:#475569;--faint:#61708a;
 --brand:#163459;--brand-hover:#0f2542;--brand-wash:#e9eef6;--accent:#163459;--focus:rgb(22 52 89/.45);--gold:#b88f4e;--gold-wash:#f6efe3;--maroon:#591825;
 --ok:#047857;--ok-bg:#d1fae5;--warn:#b45309;--warn-bg:#fef3c7;--bad:#b91c1c;--bad-bg:#fee2e2;
 --info:#0369a1;--info-bg:#e0f2fe;--violet:#5b21b6;--violet-bg:#ede9fe;
 --hw:var(--brand);--hw-bg:var(--brand-wash);--post:#0369a1;--post-bg:#e0f2fe;--grade:var(--ok);--grade-bg:var(--ok-bg);
 --exam:var(--warn);--exam-bg:var(--warn-bg);--ann:var(--violet);--ann-bg:var(--violet-bg);
 --c0:#0f766e;--c1:#be185d;--c2:#b45309;--c3:#4338ca;
 --shadow:0 1px 2px rgb(15 30 60/.06),0 4px 16px rgb(15 30 60/.06);--pop:0 8px 32px rgb(15 30 60/.16);
 --r:10px;--rc:14px;--hdr:rgb(255 255 255/.9)}
@media (prefers-color-scheme:dark){:root{
 --bg:#0d111b;--card:#161b28;--soft:#1c2231;--soft2:#232b3d;--line:#2d374a;
 --ink:#e9eef7;--muted:#a8b3c6;--faint:#828ea3;
 --accent:#9db7e3;--brand:#2a5288;--brand-hover:#335f9b;--brand-wash:rgb(42 82 136/.25);--focus:rgb(157 183 227/.6);--gold:#d4ad6d;--gold-wash:rgb(184 143 78/.15);--maroon:#e3a1ad;
 --ok:#6ee7b7;--ok-bg:rgb(16 185 129/.15);--warn:#fcd34d;--warn-bg:rgb(245 158 11/.15);--bad:#fca5a5;--bad-bg:rgb(239 68 68/.15);
 --info:#7dd3fc;--info-bg:rgb(14 165 233/.15);--violet:#c4b5fd;--violet-bg:rgb(139 92 246/.18);
 --hw:#9db7e3;--post:#7dd3fc;--post-bg:rgb(14 165 233/.15);
 --c0:#5eead4;--c1:#f9a8d4;--c2:#fcd34d;--c3:#a5b4fc;
 --shadow:0 1px 2px rgb(0 0 0/.3);--pop:0 8px 32px rgb(0 0 0/.5);--hdr:rgb(22 27 40/.9)}}

*{box-sizing:border-box}
html{-webkit-text-size-adjust:100%}
body{margin:0;background:var(--bg);color:var(--ink);font:15px/1.65 "Plex Arabic",Inter,system-ui,-apple-system,"Segoe UI",sans-serif}
a{color:var(--accent)}
:focus-visible{outline:2px solid var(--focus);outline-offset:2px;border-radius:8px}
.ic{flex:none;vertical-align:-3px}
.sr{position:absolute;width:1px;height:1px;overflow:hidden;clip:rect(0 0 0 0)}
.num,.count b,.kv b,.gradebig{font-variant-numeric:tabular-nums}
[hidden]{display:none!important}

/* header */
header.top{background:var(--hdr);-webkit-backdrop-filter:blur(10px);backdrop-filter:blur(10px);border-bottom:1px solid var(--line);position:sticky;top:0;z-index:20}
header.top .in{max-width:1280px;margin:auto;padding:8px 16px;display:flex;gap:12px;align-items:center}
.logo{display:inline-flex;align-items:center;gap:8px;font-weight:800;font-size:1.05rem;text-decoration:none;color:var(--ink);flex:none}
.logo .mark{display:grid;place-items:center;width:32px;height:32px;border-radius:10px;background:var(--brand);color:#fff}
.logo img{width:40px;height:40px;border-radius:10px;background:#fff;object-fit:contain;border:1px solid var(--line)}
.logo .school{display:block;font-size:.72rem;font-weight:600;color:var(--gold);line-height:1.1}
.logo .app{display:block;line-height:1.2}
.tools{display:flex;gap:2px;align-items:center}
.tools a,.tools button{display:inline-flex;align-items:center;gap:6px;min-height:36px;padding:6px 10px;border-radius:var(--r);font-size:.85rem;font-weight:600;color:var(--muted);text-decoration:none;background:none;border:0;cursor:pointer}
.tools a:hover,.tools button:hover{background:var(--soft);color:var(--ink)}
nav.main{display:flex;gap:2px;align-items:center;flex:1;min-width:0}
nav.main::-webkit-scrollbar{display:none}
nav.main a,nav.main summary{display:inline-flex;align-items:center;gap:6px;white-space:nowrap;padding:8px 12px;border-radius:12px;text-decoration:none;color:var(--muted);font-weight:600;font-size:.9rem;cursor:pointer;list-style:none}
nav.main summary::-webkit-details-marker{display:none}
nav.main a:hover{background:var(--soft);color:var(--ink)}
nav.main a.on,nav.main summary.on{background:var(--brand);color:#fff;box-shadow:0 1px 2px rgb(22 52 89/.3)}
nav.main .pop a.on{background:var(--brand-wash);color:var(--brand);box-shadow:none}

/* bottom navigation (phones) */
nav.bottom{display:none}
@media (max-width:767px){
 nav.main,.tools .label{display:none}
 nav.bottom{display:flex;position:fixed;inset-inline:0;bottom:0;z-index:30;background:var(--hdr);-webkit-backdrop-filter:blur(10px);backdrop-filter:blur(10px);border-top:1px solid var(--line);padding:4px 4px calc(4px + env(safe-area-inset-bottom))}
 nav.bottom>a,nav.bottom>details>summary{flex:1;display:flex;flex-direction:column;align-items:center;gap:2px;min-height:52px;justify-content:center;font-size:.68rem;font-weight:600;color:var(--faint);text-decoration:none;list-style:none;cursor:pointer;border-radius:12px}
 nav.bottom>details{flex:1;display:flex}
 nav.bottom>details>summary{width:100%}
 nav.bottom>details>summary::-webkit-details-marker{display:none}
 nav.bottom .on{color:var(--accent)}
 nav.bottom .on .ic{transform:scale(1.1)}
 nav.bottom .sheet{position:fixed;inset-inline:8px;bottom:calc(68px + env(safe-area-inset-bottom));background:var(--card);border:1px solid var(--line);border-radius:18px;box-shadow:var(--pop);padding:10px;display:grid;grid-template-columns:repeat(3,1fr);gap:6px}
 nav.bottom .sheet a,nav.bottom .sheet button{display:flex;flex-direction:column;align-items:center;gap:4px;padding:12px 6px;border-radius:12px;background:var(--soft);color:var(--ink);text-decoration:none;font:inherit;font-size:.8rem;font-weight:600;border:0;width:100%;min-height:0}
 nav.bottom .sheet form{display:contents}
 main{padding-bottom:calc(84px + env(safe-area-inset-bottom))!important}
}

main{max-width:1180px;margin:auto;padding:16px}
h1{font-size:1.35rem;font-weight:800;margin:.3rem 0 .8rem;line-height:1.3;display:flex;align-items:center;gap:8px}
h2{font-size:1.05rem;font-weight:800;margin:1.5rem 0 .65rem;display:flex;align-items:center;gap:8px}
h3{font-size:.95rem;font-weight:700;margin:.6rem 0 .3rem}
.muted{color:var(--muted)}
.small{font-size:.85rem}

/* surfaces */
.card{background:var(--card);border:1px solid var(--line);border-radius:var(--rc);padding:16px;box-shadow:var(--shadow)}
.stack>*+*{margin-top:12px}
.grid{display:grid;gap:12px;grid-template-columns:repeat(auto-fill,minmax(290px,1fr))}
.row{display:flex;gap:8px;align-items:center;flex-wrap:wrap}

/* today bar */
.today{display:flex;gap:12px 20px;align-items:center;flex-wrap:wrap;justify-content:space-between;border-inline-start:4px solid var(--gold)}
.today .date{font-size:1.2rem;font-weight:800}
.status{display:flex;gap:8px;align-items:center;color:var(--muted)}
.dot{width:10px;height:10px;border-radius:50%;background:var(--faint);flex:none}
.dot.ok{background:#10b981}.dot.warn{background:#f59e0b}.dot.bad{background:#ef4444}.dot.run{background:var(--brand);animation:pulse 1.2s infinite}
@keyframes pulse{50%{opacity:.35}}
.progress{height:6px;border-radius:99px;background:var(--soft2);overflow:hidden;margin-top:8px}
.progress>i{display:block;height:100%;background:var(--brand);width:0;transition:width .4s}

/* buttons */
button,.btn{display:inline-flex;align-items:center;justify-content:center;gap:8px;min-height:44px;background:var(--brand);color:#fff;border:1px solid transparent;border-radius:var(--r);padding:8px 18px;cursor:pointer;text-decoration:none;font:inherit;font-size:.92rem;font-weight:600;transition:background .15s,border-color .15s}
button:hover,.btn:hover{background:var(--brand-hover)}
.btn.light,button.light{background:var(--card);color:var(--ink);border-color:var(--line)}
.btn.light:hover,button.light:hover{background:var(--soft)}
button.link{background:none;color:var(--muted);min-height:36px;padding:4px 10px}
button.danger{color:var(--bad)}
button[disabled]{opacity:.5;cursor:not-allowed}
@media (min-width:768px){button,.btn{min-height:40px}}

/* banners & notes */
.banner{display:flex;gap:8px;align-items:flex-start;border-radius:12px;padding:12px 14px;margin:0 0 12px;border:1px solid transparent}
.banner.ok{background:var(--ok-bg);color:var(--ok)}.banner.warn{background:var(--warn-bg);color:var(--warn)}
.banner.bad{background:var(--bad-bg);color:var(--bad)}.banner.info{background:var(--info-bg);color:var(--info)}
.banner a{color:inherit;font-weight:700}
.note{display:inline-flex;gap:6px;align-items:center;font-size:.82rem;border-radius:999px;padding:3px 12px;background:var(--soft);color:var(--muted);margin-top:8px}
.note.inferred{background:var(--brand-wash);color:var(--accent)}

/* KPI tiles */
.kv{display:grid;grid-template-columns:repeat(auto-fill,minmax(150px,1fr));gap:10px}
.kv>div,.kv>a{background:var(--card);border:1px solid var(--line);border-radius:var(--rc);padding:12px 14px;box-shadow:var(--shadow);font-size:.82rem;color:var(--muted);font-weight:600}
.kv b{display:block;font-size:1.5rem;font-weight:800;color:var(--ink);line-height:1.25;margin-top:2px}

/* children */
.kid{display:flex;flex-direction:column;gap:10px;border-top:4px solid var(--kc)}
.kid-head{display:flex;gap:12px;align-items:center}
.avatar{width:44px;height:44px;border-radius:50%;background:var(--kc);color:#fff;display:grid;place-items:center;font-weight:800;font-size:1.1rem;flex:none}
.avatar.photo{object-fit:cover;border:2px solid var(--kc);background:var(--soft)}
img.avatar[width="64"]{width:64px;height:64px}
.photo-form label.btn{margin:0;cursor:pointer}
.small-btn{min-height:36px!important;padding:6px 12px!important;font-size:.85rem!important}
.kid-name{font-weight:800;font-size:1.05rem;line-height:1.3}
.kid-title{margin:0;font-size:1.25rem}
.counts{display:grid;grid-template-columns:repeat(3,1fr);gap:8px}
.count{background:var(--soft);border-radius:12px;padding:8px;text-align:center}
.count b{display:block;font-size:1.4rem;font-weight:800;line-height:1.2}
.count span{font-size:.75rem;color:var(--muted);font-weight:600}
.count{position:relative}
.count .new{position:absolute;top:6px;inset-inline-end:6px;background:var(--ok-bg);color:var(--ok);border-radius:999px;padding:0 6px;font-size:.7rem;font-weight:800}
.badge-new{display:inline-block;background:var(--ok-bg);color:var(--ok);border-radius:999px;padding:0 8px;font-size:.72rem;font-weight:800;vertical-align:1px}
.kv small{display:block;font-size:.75rem;color:var(--faint);font-weight:600;margin-top:2px}
.k0{--kc:var(--c0)}.k1{--kc:var(--c1)}.k2{--kc:var(--c2)}.k3{--kc:var(--c3)}
.kchip{display:inline-flex;align-items:center;gap:6px;border-radius:999px;padding:2px 10px;background:var(--soft);font-size:.78rem;font-weight:700;color:var(--kc);white-space:nowrap}
.kchip::before{content:"";width:8px;height:8px;border-radius:50%;background:var(--kc)}

/* filters: pill chips in scroll rows */
.filters{display:grid;gap:10px}
.fgroup{display:flex;gap:6px;align-items:center;overflow-x:auto;scrollbar-width:none;padding-bottom:2px}
.fgroup::-webkit-scrollbar{display:none}
.fgroup .flabel{font-size:.78rem;color:var(--faint);min-width:4.2em;font-weight:700;flex:none}
fieldset .fgroup,form[data-send] .fgroup,.filters .fgroup.wrap{flex-wrap:wrap}
.chip-opt{position:relative;flex:none;margin:0}
.chip-opt input{position:absolute;opacity:0;inset:0;margin:0;cursor:pointer;width:100%;height:100%;min-height:0}
.chip-opt span{display:inline-flex;align-items:center;gap:6px;min-height:38px;padding:6px 14px;border-radius:999px;background:var(--card);border:1px solid var(--line);color:var(--muted);font-size:.88rem;font-weight:600;cursor:pointer;white-space:nowrap;transition:border-color .15s,color .15s}
.chip-opt:hover span{border-color:var(--accent);color:var(--ink)}
.chip-opt input:checked+span{background:var(--brand);color:#fff;border-color:var(--brand);box-shadow:0 1px 2px rgb(22 52 89/.3)}
.chip-opt input:focus-visible+span{outline:2px solid var(--focus);outline-offset:2px}
.custom-dates{display:none;gap:8px;grid-template-columns:1fr 1fr;max-width:420px}
.filters:has(input[name=range][value=custom]:checked) .custom-dates{display:grid}
.nojs .custom-dates{display:grid}
label{display:block;font-size:.8rem;color:var(--muted);font-weight:600;margin-bottom:4px}
input,select,textarea{font:inherit;color:inherit;width:100%;min-height:44px;padding:10px 12px;border:1px solid var(--line);border-radius:var(--r);background:var(--card);font-size:16px}
input:focus,select:focus,textarea:focus{outline:none;border-color:var(--accent);box-shadow:0 0 0 2px rgb(22 52 89/.2)}
@media (min-width:768px){input,select,textarea{font-size:.92rem}}
input[type=checkbox]{width:18px;height:18px;min-height:auto;accent-color:var(--brand)}
.fsummary{display:flex;gap:8px 14px;flex-wrap:wrap;align-items:center;justify-content:space-between;font-size:.85rem;color:var(--muted);border-top:1px solid var(--line);padding-top:10px}
.fsummary b{color:var(--ink)}
.apply{display:none}.nojs .apply{display:inline-flex}

/* child picker: avatars */
.kids-pick{gap:10px}
.kid-opt{position:relative;flex:none;margin:0}
.kid-opt input{position:absolute;opacity:0;inset:0;margin:0;cursor:pointer;width:100%;height:100%;min-height:0}
.kid-opt>span{display:flex;flex-direction:column;align-items:center;gap:4px;padding:4px 6px;border-radius:14px;min-width:64px;cursor:pointer}
.kid-opt>span b{font-size:.78rem;font-weight:700;color:var(--muted);max-width:76px;overflow:hidden;text-overflow:ellipsis;white-space:nowrap}
.kid-opt .avatar{width:40px;height:40px;font-size:1rem;box-shadow:0 0 0 2px var(--card),0 0 0 3px transparent;transition:box-shadow .15s}
.kid-opt .avatar.all{background:var(--soft2);color:var(--brand)}
.kid-opt input:checked+span .avatar{box-shadow:0 0 0 2px var(--card),0 0 0 4px var(--gold)}
.kid-opt input:checked+span b{color:var(--ink)}
.kid-opt input:focus-visible+span{outline:2px solid var(--focus);outline-offset:2px}

/* attendance & timetable */
.att{border-radius:999px;padding:2px 10px;font-size:.8rem;font-weight:800;white-space:nowrap;background:var(--soft);color:var(--muted)}
.att-present{background:var(--ok-bg);color:var(--ok)}.att-absent{background:var(--bad-bg);color:var(--bad)}
.att-late{background:var(--warn-bg);color:var(--warn)}.att-excused,.att-excusedabsence{background:var(--info-bg);color:var(--info)}
.t-materials{--tc:var(--gold);--tb:var(--gold-wash)}.t-attendance{--tc:var(--maroon);--tb:var(--soft)}
.grid.two{grid-template-columns:repeat(auto-fill,minmax(260px,1fr));margin-bottom:12px}
.stat-card{display:flex;gap:12px;align-items:center}
.stat-card .big{font-size:1.8rem;font-weight:800;color:var(--brand);line-height:1.1}
ol.slots{list-style:none;margin:0;padding:0;display:grid;gap:6px}
ol.slots li{display:flex;gap:10px;align-items:center;background:var(--soft);border-radius:10px;padding:6px 10px;font-size:.9rem}
ol.slots .slot-no{display:grid;place-items:center;min-width:26px;height:26px;border-radius:8px;background:var(--brand);color:#fff;font-weight:800;font-size:.8rem}
ol.slots small{margin-inline-start:auto}

.empty-line{padding:12px 14px;margin-top:12px}

/* feed */
.feed{display:grid;gap:10px}
.item{position:relative;padding:14px 16px;border-inline-start:4px solid var(--tc)}
.item .top{display:flex;gap:6px 8px;flex-wrap:wrap;align-items:center;margin-bottom:8px}
.tpill{display:inline-flex;align-items:center;gap:5px;border-radius:999px;padding:2px 10px;font-size:.78rem;font-weight:700;background:var(--tb);color:var(--tc)}
.t-homework{--tc:var(--hw);--tb:var(--hw-bg)}.t-posts{--tc:var(--post);--tb:var(--post-bg)}.t-grades{--tc:var(--grade);--tb:var(--grade-bg)}
.t-exams{--tc:var(--exam);--tb:var(--exam-bg)}.t-announcements{--tc:var(--ann);--tb:var(--ann-bg)}
.course{font-size:.8rem;color:var(--faint);font-weight:700}
.item .title{font-weight:700;font-size:1rem;line-height:1.55;overflow-wrap:anywhere}
.text{white-space:pre-wrap;overflow-wrap:anywhere;line-height:1.75}
.clamp{display:-webkit-box;-webkit-line-clamp:3;-webkit-box-orient:vertical;overflow:hidden}
details.more summary{cursor:pointer;list-style:none}
details.more summary::-webkit-details-marker{display:none}
details.more summary>span{display:inline-flex;align-items:center;gap:4px;margin-top:6px;color:var(--accent);font-weight:700;font-size:.88rem}
details.more[open] .preview,details.more[open] summary>span{display:none}
.meta{display:flex;gap:4px 14px;flex-wrap:wrap;align-items:center;font-size:.8rem;color:var(--faint);margin-top:10px}
.meta b{color:var(--muted);font-weight:700}
.gradebig{font-size:1.35rem;font-weight:800;color:var(--grade)}
.files{list-style:none;margin:10px 0 0;padding:0;display:flex;flex-wrap:wrap;gap:6px}
a.file,.file{display:inline-flex;align-items:center;gap:6px;padding:6px 12px;border-radius:var(--r);background:var(--soft);border:1px solid var(--line);font-size:.85rem;font-weight:600;text-decoration:none;color:var(--ink)}
a.file:hover{border-color:var(--accent);color:var(--accent)}
.file.pending{opacity:.7;font-weight:400}
.empty{color:var(--muted);text-align:center;padding:36px 16px}
.loading{opacity:.55;pointer-events:none;transition:opacity .2s}
a.threadlink{display:block;text-decoration:none;color:inherit}
a.threadlink:hover{border-color:var(--accent)}

/* grades & lists */
details.subject{border-top:1px solid var(--line);padding:10px 0}
details.subject:first-of-type{border-top:0}
details.subject>summary{cursor:pointer;font-weight:700;display:flex;justify-content:space-between;gap:8px}
ul.plain{list-style:none;margin:0;padding:0}
ul.plain>li{border-top:1px solid var(--line);padding:10px 0}
ul.plain>li:first-child{border-top:0}
.gl{display:flex;justify-content:space-between;gap:12px;align-items:baseline}
.nw{white-space:nowrap}
fieldset.grant{border:1px solid var(--line);border-inline-start:4px solid var(--kc,var(--brand));border-radius:12px;padding:10px 12px;margin:0}
fieldset.grant legend{padding:0 6px;font-size:.8rem;font-weight:700;color:var(--muted)}

/* auth pages */
.login{max-width:400px;margin:8vh auto}
.login .card{display:grid;gap:12px;padding:24px;border-top:4px solid var(--gold)}
.login .brand-logo{display:block;width:120px;height:120px;margin:0 auto 4px;object-fit:contain;border-radius:16px;background:#fff}
.login .school-name{text-align:center;color:var(--maroon);font-weight:800;margin:0}
.login h1{justify-content:center}
.lang-switch{max-width:400px;margin:16px auto 0;text-align:end;padding:0 16px}
@media (max-width:600px){
 main{padding:12px}.custom-dates{grid-template-columns:1fr}
 .today{padding:14px;gap:10px}.today>div{flex:1 1 100%}.today form,.today .sync-btn{width:100%}
 h1{font-size:1.2rem}h2{font-size:1rem;margin:1.2rem 0 .5rem}
 .kv{grid-template-columns:1fr 1fr;gap:8px}.kv>div,.kv>a{padding:10px 12px}.kv b{font-size:1.3rem}
 .kid-rail{display:flex;overflow-x:auto;scroll-snap-type:x mandatory;gap:10px;margin-inline:-12px;padding:2px 12px 6px;scrollbar-width:none}
 .kid-rail::-webkit-scrollbar{display:none}
 .kid-rail>.card{flex:0 0 86%;scroll-snap-align:center}
 .filters{padding:12px;gap:8px}.fgroup .flabel{display:none}
 .fsummary{font-size:.78rem}
 .item{padding:12px 14px}.card{padding:14px}
 .banner{padding:10px 12px;font-size:.88rem}
}
/* password field */
.pw-wrap{position:relative}
.pw-wrap input{padding-inline-end:48px}
.pw-eye{position:absolute;inset-inline-end:4px;top:50%;transform:translateY(-50%);min-height:36px;width:40px;padding:0;background:none;color:var(--muted);border:0}
.pw-eye:hover{background:var(--soft);color:var(--ink)}
.pw-eye[aria-pressed=true]{color:var(--accent)}
.pw-rules{list-style:none;margin:8px 0 0;padding:10px 12px;background:var(--soft);border-radius:10px;display:grid;gap:4px;font-size:.85rem}
.pw-rules .pw-head{font-weight:700;color:var(--muted);margin-bottom:2px}
.pw-rules li[data-rule]{display:flex;gap:8px;align-items:center;color:var(--faint);transition:color .15s}
.pw-rules li[data-rule] .ic{opacity:.35}
.pw-rules li.ok{color:var(--ok);font-weight:700}
.pw-rules li.ok .ic{opacity:1}

/* installable app & offline */
.install{position:fixed;inset-inline:12px;bottom:calc(12px + env(safe-area-inset-bottom));z-index:40;display:flex;gap:12px;align-items:center;flex-wrap:wrap;
 background:var(--card);border:1px solid var(--line);border-top:3px solid var(--gold);border-radius:16px;box-shadow:var(--pop);padding:12px 14px;max-width:560px;margin-inline:auto}
.install img{border-radius:12px;border:1px solid var(--line)}
.install>div:nth-child(2){flex:1 1 200px}
@media (max-width:767px){.install{bottom:calc(76px + env(safe-area-inset-bottom))}}
.offline-bar{position:sticky;top:0;z-index:25;background:var(--warn-bg);color:var(--warn);text-align:center;font-size:.85rem;font-weight:700;padding:6px 12px}
@media (display-mode:standalone){header.top{padding-top:env(safe-area-inset-top)}}

/* printable grade report */
.print-link{margin-inline-start:auto}
.print-body{background:#fff;color:#111}
.print-page{max-width:820px;margin:0 auto;padding:24px}
.print-actions{margin-bottom:16px}
.report-head{display:flex;gap:16px;align-items:center;border-bottom:3px solid var(--gold);padding-bottom:12px;margin-bottom:12px}
.report-head img{width:96px;height:96px;object-fit:contain}
.report-school{font-size:1.25rem;font-weight:800;color:#163459}
.report-school-alt{font-size:.9rem;font-weight:700;color:#591825}
.report-head h1{margin:.3rem 0 0;color:#111;font-size:1.3rem}
.report-meta{display:grid;grid-template-columns:repeat(3,1fr);gap:8px;margin:0 0 16px}
.report-meta div{border:1px solid #d6dce5;border-radius:8px;padding:8px 10px}
.report-meta dt{font-size:.75rem;color:#555;font-weight:700}.report-meta dd{margin:0;font-weight:700}
.report-course{break-inside:avoid;margin-bottom:14px}
.report-course h2{font-size:1rem;color:#163459;border-inline-start:4px solid var(--gold);padding-inline-start:8px;margin:0 0 6px}
.report-course table{width:100%;border-collapse:collapse;font-size:.9rem}
.report-course th{background:#163459;color:#fff;text-align:start;padding:6px 8px;font-weight:700}
.report-course td{border-bottom:1px solid #e1e5ec;padding:6px 8px}
.report-course th.num,.report-course td.num{text-align:end;white-space:nowrap;font-variant-numeric:tabular-nums;font-weight:700}
.report-course .sub{font-size:.75rem;color:#666}
.report-foot{margin-top:18px;border-top:1px solid #d6dce5;padding-top:8px;font-size:.75rem;color:#555}
@media print{.no-print{display:none!important}.print-page{padding:0;max-width:none}@page{size:A4;margin:14mm}.report-course th{-webkit-print-color-adjust:exact;print-color-adjust:exact}}
@media (max-width:600px){.report-meta{grid-template-columns:1fr}.report-head img{width:64px;height:64px}}
@media (prefers-reduced-motion:reduce){*{transition:none!important;animation:none!important}}
/* calendar */
.cal-kids{display:flex;overflow-x:auto;scrollbar-width:none;margin:0 0 12px;padding:2px}
a.kid-opt{text-decoration:none;color:inherit}
a.kid-opt.on .avatar{box-shadow:0 0 0 2px var(--card),0 0 0 4px var(--gold)}a.kid-opt.on b{color:var(--ink)}
.cal-week{padding:12px}
.cal-head{display:flex;align-items:center;justify-content:space-between;gap:8px;margin-bottom:8px}
.cal-head b{font-size:1rem}
.cal-nav{display:grid;place-items:center;width:44px;height:44px;border-radius:12px;background:var(--soft);color:var(--brand)}
.cal-days{list-style:none;margin:0;padding:0;display:grid;grid-template-columns:repeat(7,1fr);gap:4px}
.cal-days a{display:flex;flex-direction:column;align-items:center;gap:2px;padding:8px 0 6px;border-radius:14px;text-decoration:none;color:var(--ink);min-height:64px;border:1px solid transparent}
.cal-days .wd{font-size:.72rem;color:var(--muted);font-weight:700;white-space:nowrap}
.cal-days .dn{font-size:1.1rem;font-weight:800}
.cal-days a.today{border-color:var(--gold)}
.cal-days a.on{background:var(--brand);color:#fff}.cal-days a.on .wd{color:#dbe4f3}
.cal-days .marks{display:flex;gap:3px;height:6px}
.mk{display:block;width:6px;height:6px;border-radius:50%;background:var(--faint)}.mk.imp{background:var(--maroon)}
.cal-days a.on .mk{background:#fff}.cal-days a.on .mk.imp{background:var(--gold)}
.cal-quick{margin-top:10px;gap:8px}.cal-quick .btn{min-height:38px;padding:6px 14px}
.cal-day{display:flex;align-items:center;gap:8px;flex-wrap:wrap}
.cal-day .pill{font-size:.8rem;background:var(--gold);color:#fff;border-radius:999px;padding:2px 10px}
.cal-kid h3{display:flex;align-items:center;gap:10px;margin:0 0 6px}.cal-kid h3 a{color:inherit;text-decoration:none}
.cal-kid h4{display:flex;align-items:center;gap:6px;margin:12px 0 6px;font-size:.9rem;color:var(--muted)}
ol.slots li.miss{outline:1px solid var(--bad-bg)}
.cal-items{display:grid;gap:6px}
.cal-item{display:flex;gap:10px;align-items:flex-start;padding:8px 10px;border-radius:12px;background:var(--soft);text-decoration:none;color:var(--ink);font-size:.9rem}
.cal-item>svg{flex:none;margin-top:2px;color:var(--brand)}
.cal-item.t-exams>svg{color:var(--maroon)}.cal-item.t-homework>svg{color:var(--gold)}
.cal-item .t{display:block;color:var(--muted);font-size:.85rem;margin-top:2px;overflow-wrap:anywhere}
@media (max-width:380px){.cal-days .wd{font-size:.64rem}.cal-days .dn{font-size:1rem}}
/* child profile: photo + tabs */
.kid-profile .kid-head{align-items:center}
.photo-pick{margin:0;flex:none}.photo-pick label{position:relative;display:block;cursor:pointer;border-radius:50%}
.photo-pick .avatar{width:72px;height:72px;font-size:1.6rem}
.photo-pick .cam{position:absolute;bottom:-2px;inset-inline-end:-2px;display:grid;place-items:center;width:28px;height:28px;border-radius:50%;background:var(--gold);color:#fff;border:2px solid var(--card)}
.photo-pick label:focus-within{outline:3px solid var(--focus);outline-offset:3px}
.photo-note{color:var(--faint);display:flex;align-items:center;gap:4px;margin-top:4px}
.tabs{display:flex;gap:6px;overflow-x:auto;scrollbar-width:none;margin:12px 0;padding:2px;position:sticky;top:0;z-index:5;background:var(--bg)}
.tabs::-webkit-scrollbar{display:none}
.tabs a{display:inline-flex;align-items:center;gap:6px;flex:none;min-height:42px;padding:6px 14px;border-radius:999px;background:var(--card);border:1px solid var(--line);color:var(--muted);text-decoration:none;font-weight:700;font-size:.88rem;white-space:nowrap}
.tabs a.on{background:var(--brand);border-color:var(--brand);color:#fff}
.kv-links a{display:flex;flex-direction:column;gap:2px;text-decoration:none;color:inherit}
ul.subjects{columns:2;column-gap:16px}@media (max-width:420px){ul.subjects{columns:1}}
@media (max-width:600px){.kv.kv-links{grid-template-columns:repeat(3,1fr);gap:6px}.kv.kv-links>a{padding:8px;font-size:.74rem}.kv.kv-links b{font-size:1.15rem}.kv.kv-links small{font-size:.68rem}}
/* analytics */
.analytics{margin-bottom:28px}
.analytics .kid-h{display:flex;align-items:center;gap:10px;margin-top:22px}.analytics .kid-h a{color:inherit;text-decoration:none}
h3.sec{display:flex;align-items:center;gap:8px;margin:18px 0 8px;font-size:1.05rem}
.ins-grid{display:grid;gap:10px;grid-template-columns:repeat(auto-fill,minmax(280px,1fr))}
.insight,.advice{border-inline-start:4px solid var(--line)}
.insight.tone-warn{border-inline-start-color:var(--maroon)}.insight.tone-ok{border-inline-start-color:var(--ok)}.insight.tone-info{border-inline-start-color:var(--brand)}
.ins-head{display:flex;align-items:center;gap:8px;flex-wrap:wrap}.ins-head h3{margin:0;font-size:1rem;flex:1}
.ins-head>svg{color:var(--brand);flex:none}.tone-warn .ins-head>svg{color:var(--maroon)}.tone-ok .ins-head>svg{color:var(--ok)}
.ins-meta{display:flex;gap:6px;flex-wrap:wrap;margin:6px 0}
.ins-finding{margin:6px 0;font-weight:600}
.insight details summary{cursor:pointer;color:var(--brand);font-weight:700;font-size:.88rem;min-height:36px;display:flex;align-items:center}
.ins-why{display:grid;grid-template-columns:auto 1fr;gap:4px 10px;font-size:.86rem;margin:6px 0}.ins-why dt{color:var(--muted);font-weight:700}.ins-why dd{margin:0}
ul.ev li{display:flex;justify-content:space-between;gap:8px;padding:4px 0;border-bottom:1px solid var(--line);font-size:.86rem}
.pill.conf-high{background:var(--ok-bg);color:var(--ok)}.pill.conf-medium{background:var(--info-bg);color:var(--info)}.pill.conf-low{background:var(--soft2);color:var(--muted)}
.pill{display:inline-flex;align-items:center;gap:4px;border-radius:999px;padding:2px 10px;font-size:.78rem;font-weight:700;background:var(--soft);color:var(--muted)}
.ok-pill{background:var(--ok-bg);color:var(--ok)}
ul.checks{margin:6px 0 10px;padding-inline-start:20px;display:grid;gap:4px;font-size:.92rem}
.charts{display:grid;gap:12px;grid-template-columns:repeat(auto-fill,minmax(320px,1fr))}
@media (max-width:420px){.charts,.ins-grid{grid-template-columns:1fr}}
figure.chart{margin:0}figure.chart h3{margin:0 0 4px;font-size:1rem}
.chart-meta{margin-bottom:10px}
.chart-empty{background:var(--soft);border-radius:12px;padding:16px;text-align:center;color:var(--muted);font-size:.9rem}
figure.chart figcaption{margin-top:10px;color:var(--muted);line-height:1.6}
ul.bars{list-style:none;margin:0;padding:0;display:grid;gap:6px}
ul.bars a,ul.bars .brow{display:grid;grid-template-columns:minmax(80px,38%) 1fr auto;align-items:center;gap:8px;text-decoration:none;color:var(--ink);font-size:.86rem;min-height:30px}
ul.bars .bl{overflow:hidden;text-overflow:ellipsis;white-space:nowrap}
svg.bt{width:100%;height:12px;display:block}
svg .track{fill:var(--soft2)}svg .fill.brand{fill:var(--brand)}svg .fill.gold{fill:var(--gold)}svg .fill.warn,svg .fill.bad{fill:var(--maroon)}svg .fill.good{fill:var(--ok)}
svg .axis{stroke:var(--muted);stroke-width:.6}
ul.bars .bv{min-width:3.2em;text-align:end}
.cols-wrap{overflow-x:auto}svg.cols{width:100%;min-width:240px;height:auto;max-height:200px}
svg.cols text{font-size:10px;fill:var(--muted);text-anchor:middle;font-family:inherit}svg.cols .cv{fill:var(--ink);font-weight:700}
svg.line-chart{width:100%;height:auto}
svg.line-chart .grid{stroke:var(--line);stroke-width:1}svg.line-chart .ax{font-size:9px;fill:var(--muted);text-anchor:end;font-family:inherit}
svg.line-chart polyline{fill:none;stroke-width:2.5}svg.line-chart circle{stroke:var(--card);stroke-width:1.5}
.s0 polyline{stroke:#163459}.s0 circle,.legend .s0 i{fill:#163459;background:#163459}
.s1 polyline{stroke:#b88f4e}.s1 circle,.legend .s1 i{fill:#b88f4e;background:#b88f4e}
.s2 polyline{stroke:#591825}.s2 circle,.legend .s2 i{fill:#591825;background:#591825}
.s3 polyline{stroke:#0f766e}.s3 circle,.legend .s3 i{fill:#0f766e;background:#0f766e}
.s4 polyline{stroke:#7c3aed}.s4 circle,.legend .s4 i{fill:#7c3aed;background:#7c3aed}
.s5 polyline{stroke:#c2410c}.s5 circle,.legend .s5 i{fill:#c2410c;background:#c2410c}
ul.legend{list-style:none;margin:8px 0 0;padding:0;display:flex;flex-wrap:wrap;gap:6px 14px;font-size:.8rem}
ul.legend li{display:flex;align-items:center;gap:6px}ul.legend i{display:inline-block;width:12px;height:4px;border-radius:2px}
details.dq{margin-top:12px}details.dq summary{cursor:pointer;font-weight:700;display:flex;gap:6px;align-items:center;min-height:36px}
details.dq ul li{padding:4px 0}
/* home follow-up */
.follow h2{display:flex;align-items:center;gap:8px;margin-top:0}
.follow-list{display:grid;gap:8px;margin-bottom:10px}
.follow-list li{padding:10px 12px;border-radius:12px;background:var(--soft);border-inline-start:4px solid var(--brand);display:grid;gap:4px}
.follow-list li.tone-warn{border-inline-start-color:var(--maroon)}
/* plan */
.plan-add label{display:grid;gap:4px;font-weight:700;font-size:.88rem}
.plan-add input,.plan-add select,.plan-add textarea{font:inherit;font-weight:400}
.tasks{display:grid;gap:10px;grid-template-columns:repeat(auto-fill,minmax(280px,1fr))}
.task h3{margin:6px 0;font-size:1rem}.task-head{display:flex;gap:8px;align-items:center;flex-wrap:wrap}.task-head .pill{margin-inline-start:auto}
.task.st-done{opacity:.85;border-inline-start:4px solid var(--ok)}.task.st-skipped{opacity:.75}
.task-actions{gap:8px;flex-wrap:wrap;align-items:center}.task-actions .grow{flex:1;flex-wrap:wrap;gap:6px}
.task-actions input{flex:1;min-width:140px}
.later{background:var(--soft);border-radius:10px;padding:8px 10px;margin:6px 0}
.outcome{color:var(--ok)}
h3.plan-day{display:flex;gap:8px;align-items:center;margin:16px 0 8px}
ul.suggest{display:grid;gap:8px}ul.suggest li{display:grid;gap:6px}
/* notification permission */
.notif-ask{display:flex;gap:12px;align-items:center;flex-wrap:wrap;border-inline-start:4px solid var(--gold)}
.notif-ask>svg{color:var(--gold);flex:none}.notif-ask div{flex:1;min-width:200px}
/* weekly grid (days across, lessons down) */
.wgrid{padding:12px}
.wg-scroll{overflow-x:auto;margin:8px -4px 0;padding:0 4px;scrollbar-width:thin}
table.wg{border-collapse:separate;border-spacing:4px;width:100%;min-width:540px;table-layout:fixed}
table.wg th,table.wg td{padding:0;vertical-align:top}
table.wg thead th a{display:flex;flex-direction:column;align-items:center;gap:2px;padding:6px 2px;border-radius:10px;text-decoration:none;color:var(--ink);font-size:.78rem;border:1px solid transparent}
table.wg thead th a span{color:var(--muted);font-weight:700}
table.wg thead th.today a{border-color:var(--gold)}
table.wg thead th.on a{background:var(--brand);color:#fff}table.wg thead th.on a span{color:#dbe4f3}
.wg-corner{width:44px}
th.wg-time{width:44px;position:sticky;inset-inline-start:0;z-index:1;background:var(--card);text-align:center;vertical-align:middle!important}
th.wg-time b{display:grid;place-items:center;width:24px;height:24px;margin:0 auto;border-radius:8px;background:var(--brand);color:#fff;font-size:.78rem}
th.wg-time small{display:block;font-size:.62rem;color:var(--muted);margin-top:2px}
table.wg td a{display:flex;flex-direction:column;gap:3px;min-height:52px;padding:6px;border-radius:10px;background:var(--brand-wash);color:var(--ink);text-decoration:none;font-size:.76rem;line-height:1.25}
table.wg td a b{overflow:hidden;text-overflow:ellipsis;display:-webkit-box;-webkit-line-clamp:2;-webkit-box-orient:vertical;font-weight:700}
table.wg td.today a{box-shadow:inset 0 0 0 1.5px var(--gold)}
table.wg td.miss a{background:var(--bad-bg)}
table.wg td.wg-empty{background:var(--soft);border-radius:10px;opacity:.5;min-height:52px;height:52px}
table.wg .att{font-size:.64rem;padding:1px 6px;align-self:flex-start}
.wg-marks{display:flex;flex-wrap:wrap;gap:3px;margin-top:auto}
.wg-marks i{display:inline-flex;align-items:center;gap:1px;font-style:normal;font-size:.66rem;font-weight:800;border-radius:6px;padding:1px 4px;background:var(--card)}
.mk-hw{color:var(--gold)}.mk-test{color:var(--maroon)}.mk-task{color:var(--brand)}.mk-task.done{color:var(--ok)}.mk-other{color:var(--muted)}
tr.wg-extra td a{background:var(--soft);min-height:0}
ul.wg-legend{list-style:none;display:flex;flex-wrap:wrap;gap:4px 14px;margin:8px 0 0;padding:0}
ul.wg-legend li{display:flex;align-items:center;gap:4px}
@media (max-width:600px){table.wg{min-width:0;border-spacing:3px}.wg-corner,th.wg-time{width:34px}table.wg td a{padding:4px;font-size:.68rem;min-height:46px}table.wg thead th a{font-size:.68rem;padding:4px 0}table.wg thead th a b{font-size:.64rem}.wg-marks i{padding:0 2px;font-size:.6rem}}
/* header: one row like Tyreon — logo · sections · More · icons · account */
.tools{margin-inline-start:auto;gap:4px;flex:none}
details.menu-pop{position:relative}
details.menu-pop>summary{list-style:none;cursor:pointer}details.menu-pop>summary::-webkit-details-marker{display:none}
details.menu-pop .pop{position:absolute;top:calc(100% + 6px);inset-inline-start:0;min-width:210px;background:var(--card);border:1px solid var(--line);border-radius:14px;box-shadow:0 10px 30px rgb(15 30 60/.14);padding:6px;display:grid;gap:2px;z-index:50}
details.user-pop .pop{inset-inline-start:auto;inset-inline-end:0}
details.menu-pop .pop a,details.menu-pop .pop button{display:flex;align-items:center;gap:8px;padding:9px 12px;border-radius:10px;color:var(--ink);text-decoration:none;font:inherit;font-size:.9rem;font-weight:600;background:none;border:0;width:100%;cursor:pointer;min-height:40px;justify-content:flex-start}
details.menu-pop .pop a:hover,details.menu-pop .pop button:hover{background:var(--soft)}
.icon-btn{position:relative;display:grid!important;place-items:center;width:40px;height:40px;padding:0!important;border-radius:12px!important}
.lang-btn{display:inline-flex!important;width:auto;gap:4px!important;padding:0 8px!important}.lang-btn b{font-size:.78rem}
.bell .badge{position:absolute;top:2px;inset-inline-end:2px;min-width:18px;height:18px;padding:0 4px;border-radius:999px;background:var(--maroon);color:#fff;font-size:.66rem;font-weight:800;display:grid;place-items:center;border:2px solid var(--card)}
details.user-pop>summary{display:flex;align-items:center;gap:8px;padding:4px 6px 4px 10px;border-radius:12px}
details.user-pop>summary:hover{background:var(--soft)}
.u-avatar{display:grid;place-items:center;width:34px;height:34px;border-radius:50%;background:var(--brand);color:#fff;font-weight:800}
.u-name{display:grid;line-height:1.15}.u-name b{font-size:.85rem;color:var(--ink)}.u-name small{font-size:.7rem;color:var(--muted)}
@media (max-width:1100px){.u-name{display:none}nav.main a,nav.main summary{padding:8px 9px;font-size:.85rem}}
@media (max-width:767px){.logo .school{font-size:.66rem}.lang-btn b{display:none}}
/* notifications list */
ul.notif-list{display:grid;gap:8px}
ul.notif-list a{display:flex;gap:12px;align-items:flex-start;padding:12px;border-radius:14px;background:var(--card);border:1px solid var(--line);text-decoration:none;color:var(--ink)}
ul.notif-list li.unread a{border-color:var(--gold);box-shadow:inset 3px 0 0 var(--gold)}
.n-ic{display:grid;place-items:center;width:36px;height:36px;border-radius:12px;background:var(--brand-wash);color:var(--brand);flex:none}
.n-ic.t-grades{color:var(--ok);background:var(--ok-bg)}.n-ic.t-attendance,.n-ic.t-exams{color:var(--maroon);background:var(--bad-bg)}.n-ic.t-homework{color:var(--gold);background:var(--gold-wash)}
.n-body{display:grid;gap:3px;min-width:0}.n-top{display:flex;gap:6px;align-items:center;flex-wrap:wrap}.n-title{overflow-wrap:anywhere}
.new-pill{background:var(--gold);color:#fff}
/* phones: Tyreon-like bottom bar with a raised centre button, greeting on home */
.hello{display:none}
@media (max-width:767px){
 .hello{display:block;margin:4px 2px 10px}.hello h1{margin:0;font-size:1.25rem}.hello small{color:var(--muted);font-size:.8rem}
 nav.bottom{align-items:flex-end}
 nav.bottom .fab-form{flex:1;display:flex;flex-direction:column;align-items:center;gap:2px;margin:0;font-size:.68rem;font-weight:600;color:var(--faint)}
 nav.bottom .fab{width:56px;height:56px;min-height:0;border-radius:50%;padding:0;margin-top:-26px;background:var(--brand);color:#fff;box-shadow:0 6px 16px rgb(22 52 89/.35),0 0 0 4px var(--card);display:grid;place-items:center}
 nav.bottom .fab:disabled{opacity:1}
 nav.bottom .fab.spin svg{animation:spin 1s linear infinite}
 header.top .in{padding:6px 12px;gap:6px}
 .logo img{width:36px;height:36px}.logo .app{font-size:.95rem}
 .icon-btn{width:38px;height:38px}
 details.user-pop>summary{padding:2px}
 .lang-btn{display:none!important}
}
@keyframes spin{to{transform:rotate(360deg)}}
@media (prefers-reduced-motion:reduce){nav.bottom .fab.spin svg{animation:none}}
@media (max-width:767px){section.today form[data-sync]{display:none}}
/* weekly grid on phones: a row of days (the table is for wide screens); the chosen day is listed below */
.wg-days{display:none}
.day-slots li{align-items:flex-start}
.sl-main{display:grid;gap:4px;flex:1;min-width:0}.sl-course{font-weight:700}
.sl-tags{display:flex;flex-wrap:wrap;gap:4px}.sl-tags:empty{display:none}
.tag{display:inline-flex;align-items:center;gap:3px;border-radius:999px;padding:1px 8px;font-size:.74rem;font-weight:700}
.tag-hw{background:var(--gold-wash);color:#8a6a33}.tag-test{background:var(--bad-bg);color:var(--maroon)}
@media (max-width:767px){
 .wg-scroll,ul.wg-legend{display:none}
 .wg-days{display:grid;grid-template-columns:repeat(7,1fr);gap:4px;list-style:none;margin:8px 0 0;padding:0}
 .wg-days a{display:flex;flex-direction:column;align-items:center;gap:2px;padding:8px 0 6px;border-radius:14px;text-decoration:none;color:var(--ink);border:1px solid transparent;min-height:72px}
 .wg-days a.off{opacity:.55}
 .wg-days .wd{font-size:.7rem;color:var(--muted);font-weight:700}
 .wg-days b{font-size:1.1rem}
 .wg-days a.today{border-color:var(--gold)}
 .wg-days a.on{background:var(--brand);color:#fff}.wg-days a.on .wd{color:#dbe4f3}
 .wg-dots{display:flex;gap:2px;min-height:16px}
 .wg-dots i{font-style:normal;font-size:.62rem;font-weight:800;min-width:16px;height:16px;border-radius:8px;display:grid;place-items:center;padding:0 3px;color:#fff}
 .d-hw{background:var(--gold)}.d-test{background:var(--maroon)}.d-miss{background:var(--bad)}
 .wg-days a.on .wg-dots i{box-shadow:0 0 0 1.5px #fff}
}
