*{box-sizing:border-box}body{margin:0;font:16px/1.5 system-ui,-apple-system,"Segoe UI",Roboto,"Noto Sans Telugu",sans-serif;background:#f3f1ec;color:#0c1b3e}
:root{--navy:#132a61;--gold:#b9832f;--soft:#ece7da;--mut:#5d6677;--ok:#0f7a43;--bad:#b3261e}
.muted{color:var(--mut)}.small{font-size:13px}.wrap{max-width:1040px;margin:0 auto;padding:12px 16px 92px}
.top{display:flex;justify-content:space-between;align-items:center;gap:8px;background:var(--navy);color:#fff;padding:12px 16px;position:sticky;top:0;z-index:20}.top b{font-size:18px;overflow:hidden;text-overflow:ellipsis;white-space:nowrap}.top .r{display:flex;gap:8px}
.top button,.top a{background:#ffffff26;color:#fff;margin:0;width:auto;padding:8px 12px;min-height:44px;font-size:14px}
.tabs{display:flex;gap:8px;margin:12px 0;overflow-x:auto;padding-bottom:2px}.tabs button{width:auto;margin:0;background:#fff;color:var(--navy);border:2px solid #d9d3c3;padding:8px 16px;white-space:nowrap;min-height:44px}.tabs button.on{background:var(--navy);color:#fff;border-color:var(--navy)}
.card{background:#fff;border-radius:14px;padding:16px;margin:0 0 12px;box-shadow:0 1px 3px #0002}h2{font-size:20px;margin:0 0 8px}h3{font-size:17px;margin:0 0 8px}
label{display:block;font-weight:700;margin:12px 0 4px;font-size:14px}input,select,textarea{width:100%;font:inherit;padding:12px;border:2px solid #cfc8b6;border-radius:10px;background:#fff}textarea{min-height:70px}input:focus,select:focus,textarea:focus,button:focus-visible{outline:3px solid #9db6d8}
button,.btn{font:inherit;font-weight:700;padding:12px 16px;border:0;border-radius:10px;background:var(--navy);color:#fff;cursor:pointer;min-height:44px;text-decoration:none;display:inline-block;text-align:center}
button.sec,.btn.sec{background:var(--soft);color:var(--navy)}button.warn{background:var(--bad)}button.gold{background:var(--gold)}button.ok{background:var(--ok)}button.sm{min-height:44px;padding:8px 12px;font-size:14px}button:disabled{opacity:.5}
.row{display:flex;gap:8px;flex-wrap:wrap;align-items:center}.row>*{flex:0 1 auto}.grow{flex:1 1 140px}.g2{display:grid;grid-template-columns:1fr 1fr;gap:12px}.g3{display:grid;grid-template-columns:repeat(auto-fit,minmax(130px,1fr));gap:12px}
.err{color:var(--bad);font-weight:700;min-height:1.4em}.okmsg{color:var(--ok);font-weight:700}
.tiles{display:grid;grid-template-columns:repeat(auto-fit,minmax(130px,1fr));gap:12px;margin-bottom:12px}.tile{background:#fff;border-radius:14px;padding:12px;box-shadow:0 1px 3px #0002}.tile b{display:block;font-size:28px;line-height:1.1;color:var(--navy);font-variant-numeric:tabular-nums}.tile span{font-size:13px;color:var(--mut)}
.badge{display:inline-block;padding:2px 12px;border-radius:99px;13px;font-weight:700;background:var(--soft);color:var(--navy)}.badge.active{background:#d7f0e1;color:#0a5a30}.badge.trial{background:#fdf0cf;color:#7a5200}.badge.expired,.badge.suspended,.badge.cancelled,.badge.no_show{background:#f8d9d6;color:#8a1b13}.badge.checked_in{background:#d7f0e1;color:#0a5a30}.badge.reserved{background:#dbe7f7;color:#142d68}.badge.blocked{background:#e5e5e5;color:#444}
.bk{display:flex;justify-content:space-between;gap:12px;align-items:center;padding:12px 0;border-top:1px solid #eee;flex-wrap:wrap}.bk:first-child{border-top:0}.bk .who{flex:1 1 200px;cursor:pointer}.bk .who b{font-size:16px}.bk .acts{display:flex;gap:8px;flex-wrap:wrap}
.banner{background:#fdf0cf;color:#5c3e00;border-radius:12px;padding:12px 16px;margin:12px 0;font-weight:700}.banner.red{background:#f8d9d6;color:#8a1b13}
.modal{position:fixed;inset:0;background:#0008;z-index:50;display:flex;align-items:flex-start;justify-content:center;overflow:auto;padding:12px}.modal .box{background:#fff;border-radius:16px;padding:16px;width:100%;max-width:560px;margin:auto;position:relative}.modal .box.wide{max-width:720px}.modal h2{padding-right:40px}.x{position:absolute;right:10px;top:10px;width:auto;min-height:36px;padding:4px 12px;background:var(--soft);color:var(--navy)}
.cal{overflow:auto;border-radius:12px;background:#fff;box-shadow:0 1px 3px #0002;max-height:70vh}.cal table{border-collapse:separate;border-spacing:0;min-width:100%}.cal th,.cal td{border-bottom:1px solid #eee;border-right:1px solid #f0ede4;padding:0;text-align:center;font-size:12px;height:38px;min-width:54px}.cal th{position:sticky;top:0;background:#fff;z-index:3;height:44px;line-height:1.2}.cal th.t{background:#e9f0fa}.cal .rm{position:sticky;left:0;background:#fff;z-index:2;min-width:84px;text-align:left;padding:0 8px;font-weight:700;border-right:2px solid #ddd}.cal th.rm{z-index:4}.cal .rm small{display:block;font-weight:400;color:var(--mut);font-size:11px}
.cal td.free{cursor:pointer}.cal td.free:hover{background:#e9f4ec}.cal td.today{background:#f4f8fd}.cal td.maint{background:repeating-linear-gradient(45deg,#f0f0f0,#f0f0f0 6px,#e4e4e4 6px,#e4e4e4 12px)}
.cal td.b{padding:2px;vertical-align:middle}.bar{border-radius:8px;padding:8px 4px;font-weight:700;color:#fff;overflow:hidden;white-space:nowrap;text-overflow:ellipsis;cursor:pointer;font-size:12px}.bar.reserved{background:#2452bd}.bar.checked_in{background:#1b8a52}.bar.checked_out{background:#8c93a1}.bar.blocked{background:#6b6b6b}
.legend{display:flex;gap:12px;flex-wrap:wrap;font-size:13px;margin:8px 0}.legend i{display:inline-block;width:12px;height:12px;border-radius:3px;margin-right:4px;vertical-align:-1px}
.photos{display:grid;grid-template-columns:repeat(auto-fill,minmax(110px,1fr));gap:8px;margin:8px 0}.ph{position:relative;border-radius:10px;overflow:hidden;background:var(--soft);aspect-ratio:4/3}.ph img{width:100%;height:100%;object-fit:cover;display:block}.ph .pa{position:absolute;left:0;right:0;bottom:0;display:flex;gap:4px;background:#000a;padding:4px}.ph .pa button{min-height:28px;padding:2px 8px;font-size:12px;background:#fff;color:#222}
.chips{display:flex;flex-wrap:wrap;gap:8px;margin:8px 0}.chip{background:var(--soft);border-radius:10px;padding:4px 8px 4px 12px;display:flex;align-items:center;gap:8px;font-weight:700}.chip.m{background:#f3dcb0}.chip button{min-height:26px;padding:0 8px;font-size:12px;background:#fff;color:var(--navy)}
.switch{display:flex;justify-content:space-between;align-items:center;gap:12px;padding:8px 0;border-top:1px solid #eee}.switch:first-child{border-top:0}.switch input{width:22px;height:22px}
.bars{display:flex;align-items:flex-end;gap:2px;height:90px;margin:8px 0}.bars div{flex:1;background:var(--navy);border-radius:3px 3px 0 0;min-height:2px}
pre{white-space:pre-wrap;background:var(--soft);padding:12px;border-radius:10px;font-size:14px}
@media(max-width:520px){.g2{grid-template-columns:1fr}.top b{max-width:55vw}}

input[type=checkbox]{width:22px;height:22px;flex:none;padding:0}
.top .r{flex-wrap:nowrap}.top .r>*{white-space:nowrap}@media(max-width:520px){.top .r>*{padding:8px 8px;font-size:13px}}
:root{--navy:#142e6b}
.mono{font:14px/1.4 ui-monospace,Menlo,Consolas,monospace;background:var(--soft);border-radius:10px;padding:12px;word-break:break-all;white-space:pre-wrap;margin:8px 0}
.btn.wa,button.wa{background:#128c4a;color:#fff}.btn.sm,a.btn.sm{min-height:44px;padding:8px 12px;font-size:14px}.btn.call{background:#fff;color:var(--navy);border:2px solid var(--navy)}
.att-row .acts{flex-wrap:nowrap}.att{width:46px;height:46px;min-height:46px;padding:0;margin:0;border-radius:12px;background:#fff;color:#555;border:2px solid #cfc8b6;font-size:17px}
.att.P.on{background:#1b8a52;color:#fff;border-color:#1b8a52}.att.L.on{background:#e0a100;color:#fff;border-color:#e0a100}.att.A.on{background:#d64545;color:#fff;border-color:#d64545}
.tbl{border-collapse:collapse;width:100%}.tbl th,.tbl td{padding:8px 8px;border-bottom:1px solid #eee;text-align:left;font-size:15px;white-space:nowrap}.tbl .n{text-align:right}
.tbl.marks input.mk{width:64px;text-align:right;padding:8px 8px}.tbl.marks input.rm{min-width:160px;padding:8px}
.chips2{display:flex;flex-wrap:wrap;gap:8px}.tchip{display:inline-flex;align-items:center;gap:8px;background:var(--soft);border-radius:10px;padding:8px 12px;margin:0;font-weight:700;cursor:pointer}.tchip input{width:20px;height:20px}
.badge.contacted,.badge.reserved{background:#dbe7f7;color:#142d68}
@media(max-width:520px){.att{width:44px;height:44px;min-height:44px}.att-row .who{flex:1 1 100px}}

/* UI quality pass: fluid layout, a shared rhythm, and accessible controls. */
:root{--ui-primary:#1b3d8d;--ui-accent:#99621a;--ui-soft:#eff2fa;--ui-ink:#0b1a3c;--ui-muted:#526272;--ui-line:#dbe3e9;--navy:#1b3d8d;--pf:#1b3d8d;--teal:#1b3d8d;--gold:#99621a;--soft:#eff2fa;--alt:#eff2fa;--mut:#526272;--bg:#f7f9fb;--ink:#0b1a3c;--sfx:#1b3d8d}
html{scroll-padding-top:120px;-webkit-text-size-adjust:100%}body{background:#f7f9fb;color:var(--ui-ink);line-height:1.6}*,*::before,*::after{box-sizing:border-box}img,svg,video{max-width:100%}h1,h2,h3,p,small,label,a,button{overflow-wrap:anywhere}h1,h2,h3{letter-spacing:-.025em}h2{line-height:1.3}button,a,input,select,textarea{touch-action:manipulation}button,.btn,.button,.navlink,.langbtn,.x,.close,.sfx-btn,.sfx-langbtn,.sfx-fab-btn,.sfx-err-banner button{min-height:46px;max-width:100%;border-radius:12px;line-height:1.35}button,.btn,.button{font-weight:700}input:not([type=checkbox]):not([type=radio]):not([type=hidden]),select,textarea{min-height:46px;max-width:100%;border:1px solid #c5d2dd;border-radius:12px;padding:12px 12px;color:var(--ui-ink);background:#fff;font:inherit}input[type=checkbox],input[type=radio]{accent-color:var(--ui-primary)}:focus-visible{outline:3px solid #4f7ade;outline-offset:3px}label{font-weight:700;color:var(--ui-ink)}.wrap,main{min-width:0}.card,.tile,.stat,.info,.course,.sfx-card{border:1px solid var(--ui-line);border-radius:18px;box-shadow:0 4px 18px #19273508}.card,.info,.course,.sfx-card{padding:24px}.tile,.stat{padding:20px}.tile b,.stat b{font-variant-numeric:tabular-nums;letter-spacing:-.035em}.row,.bk,.item,.grid,.g2,.g3,.split,.grid2,.grid3{min-width:0}.row>*,.bk>*,.item>*,.grid>*,.g2>*,.g3>*,.split>*,.grid2>*,.grid3>*{min-width:0}.row{gap:12px}.bk{padding:16px 0;gap:12px}.bk .acts{gap:8px}.small,.fine,.muted,.mut,.sfx-mut{color:var(--ui-muted)}.tabs{gap:8px;padding:8px 0;flex-wrap:wrap;overflow:visible}.tabs button{min-height:46px;white-space:normal;flex:0 1 auto;border-radius:12px}.top{padding:16px 20px;gap:12px;flex-wrap:wrap;box-shadow:0 2px 12px #19273512}.top b{max-width:100%;white-space:normal;overflow:visible;line-height:1.3}.top .r{gap:8px;flex-wrap:wrap}.top button,.top a{min-height:46px;padding:12px 16px}.modal{padding:16px;background:#15233399}.modal .box,dialog{border:1px solid var(--ui-line);border-radius:20px;max-width:calc(100vw - 32px);max-height:calc(100dvh - 32px);overflow:auto;box-shadow:0 18px 60px #15233330}.modal .box{padding:24px}.x,.close{min-width:46px;min-height:46px}.ph .pa button,.chip button,.photos .p button{min-width:44px;min-height:44px;height:auto}.chip{min-height:46px;gap:12px}.switch,.check,.chk{min-height:46px}.cal{max-width:100%;border:1px solid var(--ui-line)}.cal th,.cal td{height:46px}.bar{max-width:100%}pre{overflow-wrap:anywhere}summary{min-height:46px;display:list-item;padding:12px 0}.nav{gap:16px;flex-wrap:wrap;padding-top:20px;padding-bottom:20px}.navlink{min-height:46px;display:inline-flex;align-items:center}.hero.nophoto .shade{background:linear-gradient(125deg,var(--ui-primary),#0d1e45)}.mock{border-radius:24px;box-shadow:0 20px 48px #19273518}.mtiles div{padding:12px}.mrow{padding:12px 0}.eyebrow{color:var(--ui-accent)}.sfx-wrap{padding-top:72px;padding-bottom:80px}.sfx-stars{gap:2px}.sfx-star{min-width:44px;padding:4px}.sfx-langbtn{align-items:center;min-height:46px}.sfx-fab-btn{border-radius:12px}.sfx-dock{padding-bottom:112px}.sfx-page .sfx-card{padding:24px}.sfx-promo{border-radius:20px}.sfx-admin{padding-bottom:88px}.sfx-admin .modal{padding-bottom:76px}.sfx-dock-in{gap:12px}.sfx-dock-in .sfx-btn{min-width:0}.sfx-card input,.sfx-card textarea{min-width:0}.sfx-promo img{max-width:100%}.stats,.tiles{gap:16px}.login{padding-top:24px}.banner,.status{line-height:1.6;border-radius:12px}.brand,.logo{letter-spacing:-.03em}
@media(min-width:760px){.wrap{padding-left:28px;padding-right:28px}.card{margin-bottom:20px}.sfx-dock{padding-bottom:36px}.hero{padding-top:32px;padding-bottom:72px}.top b{max-width:52%}.tabs{margin:20px 0}}
@media(max-width:600px){.wrap{padding-left:16px;padding-right:16px}.card,.info,.course,.sfx-card{padding:20px}.tile,.stat{padding:16px}.top{padding:16px 16px}.top>b{flex:1 1 100%;max-width:none}.top .r{width:100%}.top .r>*{flex:1 1 auto;white-space:normal;text-align:center;font-size:13px}.tabs button{flex:1 1 88px;padding:12px 8px;font-size:14px}.tabs{overflow:visible}.g2,.split,.grid2{grid-template-columns:minmax(0,1fr)}.g3,.grid3,.tiles,.stats{grid-template-columns:repeat(2,minmax(0,1fr))}.modal .box{padding:20px 16px}.modal h2{padding-right:48px}.row{gap:12px}.mtiles{gap:8px}.mtiles div{padding:12px 8px}.mtiles b{font-size:24px}.sfx-wrap{padding:72px 16px 80px}.sfx-stars{gap:0}.sfx-star{font-size:36px;min-width:44px;width:44px;padding:4px}.sfx-promo{padding:24px 16px}.sfx-promo h1{font-size:26px}.hero h1{font-size:clamp(30px,9vw,44px)}.hero{padding-bottom:40px}.nav .logo{font-size:22px}.stick{min-height:48px}.sfx-dock-in .sfx-btn{flex:1 1 100%}.cal .rm{min-width:80px}.grid{min-width:0}.grid>article,.grid>.card{max-width:100%}}
@media(prefers-reduced-motion:reduce){html{scroll-behavior:auto}*,*::before,*::after{animation-duration:.01ms!important;transition-duration:.01ms!important}}

button:not([hidden]),.btn,.button,.sfx-langbtn,.sfx-fab-btn{min-height:46px!important}

/* Partner app look: compact dark header, one-row scrolling tab strip, soft cards, room above the floating buttons */
body{padding-bottom:96px}
.top{padding:12px 16px!important;border-radius:0 0 22px 22px;box-shadow:0 6px 22px #1f3a5f33}
.top>b{flex:1 1 auto!important;max-width:none!important;font-size:17px!important}
.top .r{width:auto!important;display:flex;gap:8px}
.top .r>*{flex:0 0 auto!important;min-height:44px!important;padding:8px 16px!important;font-size:14px;display:inline-flex;align-items:center;justify-content:center;border-radius:999px!important;background:#ffffff26!important;color:#fff!important;border:0!important}
.tabs{flex-wrap:nowrap!important;overflow-x:auto!important;gap:8px!important;padding:12px 2px!important;margin:8px -2px 4px!important;scrollbar-width:none}
.tabs::-webkit-scrollbar{display:none}
.tabs button{flex:0 0 auto!important;border:0!important;background:#e8ecf3!important;color:var(--navy)!important;border-radius:999px!important;min-height:44px!important;padding:8px 16px!important;font-size:14px!important;font-weight:700!important;white-space:nowrap!important}
.tabs button.on{background:var(--navy)!important;color:#fff!important;box-shadow:0 4px 12px #1f3a5f40}
.stat,.tile{border-radius:20px}
.stat b{color:var(--navy)}
a.btn,button{display:inline-flex;align-items:center;justify-content:center}
.stat b{font-size:clamp(22px,7vw,30px);white-space:nowrap}

.bnav{display:none}
@media(max-width:1023px){.mtabs{display:none!important}
.bnav{display:flex;position:fixed;left:0;right:0;bottom:0;z-index:60;background:#fff;border-top:1px solid #e3e8ef;box-shadow:0 -6px 20px #1f3a5f14;padding:8px 8px calc(8px + env(safe-area-inset-bottom))}
.bnav button{flex:1;display:flex;flex-direction:column;align-items:center;gap:2px;border:0;background:none;color:#667085;min-height:56px;border-radius:14px;padding:4px 2px;margin:0;width:auto;font-weight:700}
.bnav .ic{font-size:21px;line-height:24px;width:44px;border-radius:999px;text-align:center}.bnav .lb{font-size:11px}
.bnav button.on{color:var(--navy)}.bnav button.on .ic{background:#dfe7f3}
body{padding-bottom:84px}.sfx-dock{bottom:76px!important}}
.morelist{display:flex;flex-direction:column;gap:8px}.moreitem{display:flex;justify-content:space-between;align-items:center;width:100%;margin:0;background:#f1f4f9;color:var(--navy);border:0;border-radius:14px;min-height:52px;padding:12px 16px;font-weight:700;font-size:16px;text-align:left}
@media(max-width:1023px){.sfx-fab,#sfx-lang{bottom:calc(76px + env(safe-area-inset-bottom))!important;top:auto!important}}

.top .avatar{width:44px;height:44px;min-height:44px!important;padding:0!important;border-radius:50%!important;background:#fff!important;color:var(--navy)!important;font-weight:700;font-size:15px;display:inline-flex;align-items:center;justify-content:center}
.phero{background:var(--navy);color:#fff;border-radius:22px;padding:24px;text-align:center;margin:8px 0 16px}.phero h2{color:#fff;margin:8px 0 2px}.phero .muted2{color:#c7d5ec}
.pav{width:84px;height:84px;border-radius:50%;background:#fff;color:var(--navy);font-weight:700;font-size:30px;display:flex;align-items:center;justify-content:center;margin:0 auto}
.prow{display:flex;justify-content:space-between;gap:12px;padding:12px 0;border-bottom:1px solid #e6eaf0}.prow span{color:#667085}.prow b{text-align:right;word-break:break-all}
.signout{width:100%;background:#fdeceb!important;color:#c0341d!important;border:0!important;border-radius:14px!important;min-height:50px;font-weight:700;margin:8px 0 12px}

.top .avatar img,.pav img{width:100%;height:100%;object-fit:cover;border-radius:50%;display:block}.pav{overflow:hidden}
.pavbtns{display:flex;gap:8px;justify-content:center;margin-top:12px}.pavup,.pavrm{display:inline-flex;align-items:center;justify-content:center;min-height:44px;padding:8px 16px;border-radius:999px;background:#ffffff26;color:#fff;font-weight:700;border:0;cursor:pointer;margin:0;width:auto;font-size:14px}
.perr{color:#ffd2cc;font-size:14px;margin-top:8px}

.socrow{display:flex;align-items:flex-end;gap:12px}.socrow>div:first-child{flex:1;min-width:0}
.tglw{display:flex;flex-direction:column;align-items:center;gap:4px;margin:0 0 8px;cursor:pointer;min-width:54px}
.tglw input{position:absolute;opacity:0;width:1px;height:1px}
.tgs{width:50px;height:30px;border-radius:999px;background:#cfd6e2;position:relative;transition:.15s;display:block}.tgs::after{content:"";position:absolute;top:3px;left:3px;width:24px;height:24px;border-radius:50%;background:#fff;box-shadow:0 1px 3px #0003;transition:.15s}
.tglw input:checked+.tgs{background:#12805c}.tglw input:checked+.tgs::after{left:23px}.tglw input:focus-visible+.tgs{outline:3px solid #9bb7e8}
.tgt{font-size:12px;color:#667085;font-weight:700}

.dls{display:flex;flex-direction:column;gap:8px;margin-top:12px}.dlrow{display:flex;justify-content:space-between;align-items:center;gap:12px;padding:12px 12px;background:#f1f4f9;border-radius:14px;font-weight:700;color:var(--navy)}.dlrow .row{display:flex;gap:8px}.dlrow .btn{min-width:64px;text-align:center}

/* ---- partner panel redesign ---- */
.top{display:flex!important;align-items:center;gap:12px;padding:12px 16px 16px!important}
.top .tn{flex:1;min-width:0}.top .tn b{display:-webkit-box;-webkit-box-orient:vertical;-webkit-line-clamp:2;font-size:17px;line-height:1.25;white-space:normal;overflow:hidden;overflow-wrap:anywhere;max-width:none!important;flex:none!important}.top .tn small{color:#c7d5ec;font-size:13px;white-space:nowrap;display:block}
.top .ownbtn{width:auto;margin:0;min-height:44px;padding:8px 16px;border-radius:999px;background:#ffffff26;color:#fff;border:0;font-weight:700}
@media(max-width:759px){.sfx-fab{display:none!important}#sfx-lang{top:calc(14px + env(safe-area-inset-top))!important;bottom:auto!important;right:12px!important;left:auto!important;transform:scale(.9);transform-origin:top right}}
.thero{background:var(--navy);color:#fff;border-radius:22px;padding:20px;margin:8px 0 16px}.thero small{color:#c7d5ec;font-size:13px;letter-spacing:.04em}.thero h2{color:#fff;margin:4px 0 12px;font-size:24px}
.tact{display:flex;gap:8px;flex-wrap:wrap}.tact button{width:auto;margin:0;min-height:44px;padding:8px 16px;border-radius:999px;background:#ffffff26;color:#fff;border:0;font-weight:700;font-size:14px}.tact button:first-child{background:#fff;color:var(--navy)}
.tiles2{display:grid;grid-template-columns:1fr 1fr;gap:12px;margin-bottom:16px}
.tile2{display:flex;flex-direction:column;align-items:flex-start;gap:2px;text-align:left;background:#fff;border:1px solid #e6eaf0;border-radius:18px;padding:16px;margin:0;width:auto;min-height:0;color:var(--navy);box-shadow:0 2px 10px #1f3a5f0d}
.tile2 .ti{width:36px;height:36px;border-radius:12px;display:inline-flex;align-items:center;justify-content:center;margin-bottom:8px}
.tile2{min-width:0}.tile2 b{font-size:clamp(17px,5vw,26px);line-height:1.15;max-width:100%;overflow-wrap:anywhere;font-variant-numeric:tabular-nums}.tile2 span:not(.ti){font-size:13px;color:#667085;font-weight:700}
.moreitem.out{color:#c0341d;background:#fdeceb}a.moreitem{text-decoration:none;box-sizing:border-box}
/* language toggle: slim segmented control */
#sfx-lang .sfx-langbtn{min-height:44px!important;height:44px;padding:4px!important;gap:2px;border:1px solid rgba(0,0,0,.12)!important;background:#fff!important;box-shadow:0 1px 4px rgba(0,0,0,.1)!important;border-radius:99px!important}
#sfx-lang .sfx-langbtn span{min-width:40px;min-height:34px;padding:0 8px!important;display:flex;align-items:center;justify-content:center;border-radius:99px;color:#555!important;font-size:12.5px;font-weight:700;line-height:1;transition:background .15s,color .15s}
#sfx-lang .sfx-langbtn span.on{background:var(--ui-primary,#193983)!important;color:#fff!important}
#sfx-lang .sfx-langbtn:focus-visible{outline:2px solid var(--ui-primary,#193983);outline-offset:2px}
@media(max-width:759px){#sfx-lang{transform:none!important;top:calc(13px + env(safe-area-inset-top))!important;right:12px!important}
body:has(.bnav) #sfx-lang .sfx-langbtn{border-color:rgba(255,255,255,.28)!important;background:rgba(255,255,255,.16)!important;box-shadow:none!important}
body:has(.bnav) #sfx-lang .sfx-langbtn span{color:rgba(255,255,255,.85)!important}
body:has(.bnav) #sfx-lang .sfx-langbtn span.on{background:#fff!important;color:var(--ui-primary,#193983)!important;box-shadow:0 1px 3px rgba(0,0,0,.25)}}

/* timetable: day chips + period rows */
.ttdays{display:flex;gap:8px;overflow-x:auto;padding-bottom:12px;margin-bottom:8px;-webkit-overflow-scrolling:touch}
.ttd{flex:1 0 52px;min-height:44px;border-radius:12px!important;background:#eef1f6!important;color:#334!important;font-weight:700;border:0!important;padding:0 8px}
.ttd.on{background:var(--ui-primary,#193983)!important;color:#fff!important}
.ttp{display:flex;gap:12px;align-items:stretch;padding:12px 0;border-top:1px solid #e8ecf2}
.ttp:first-child{border-top:0}
.ttn{flex:0 0 44px;height:44px;border-radius:12px;background:#e8eefc;color:var(--ui-primary,#193983);font-weight:700;display:flex;align-items:center;justify-content:center;font-size:14px}
.ttf{flex:1;min-width:0;display:flex;flex-direction:column;gap:8px;justify-content:center}
.ttf input,.ttf select{width:100%}
.ttp.free .ttn{background:#f1f3f6;color:#99a}
.ttdays{overflow:visible}.ttd{flex:1 1 0!important;min-width:0;white-space:nowrap;padding:0 2px!important;font-size:14px}.ttd span{white-space:nowrap}

/* language lives in More on phones */
@media(max-width:759px){body:has(.bnav) #sfx-lang{display:none!important}}
.langrow{cursor:default;justify-content:space-between}
.langrow .lglab{font-weight:700}
.lgseg{display:flex;background:#eef1f6;border-radius:99px;padding:4px;gap:2px}
.lgseg button{min-height:44px!important;border:0!important;border-radius:99px!important;background:transparent!important;color:#445!important;padding:0 16px!important;font-weight:700;font-size:13.5px}
.lgseg button.on{background:var(--ui-primary,#193983)!important;color:#fff!important}

/* partner/owner polish */
.fbar{display:grid;grid-template-columns:1fr 1fr;gap:12px}.fbar .fsearch{grid-column:1/-1}.fbar>div:empty{display:none}
.tbar{display:grid;grid-template-columns:1fr 1fr;gap:8px;margin-top:12px}.tbar>*:first-child{grid-column:1/-1}.tbar .btn,.tbar button{width:100%;text-align:center;justify-content:center;white-space:normal;line-height:1.2}
.chk{display:flex;align-items:center;gap:12px;margin:12px 0 8px;min-height:44px}.chk input[type=checkbox]{width:24px!important;height:24px!important;min-height:0!important;flex:none;margin:0;accent-color:var(--ui-primary,#193983)}.chk label{margin:0!important;font-weight:700}
.warn.sm{background:#fff!important;color:#b42318!important;border:1px solid #f1c3be!important;min-height:44px!important;font-weight:700}
.top.owner{display:block!important;padding:16px 16px 20px;border-radius:0 0 24px 24px}
.top.owner .otl{display:flex;align-items:center;justify-content:space-between;gap:12px}
.top.owner .otn{display:flex;flex-direction:column;min-width:0}.top.owner .otn b{font-size:19px;line-height:1.25}.top.owner .otn span{font-size:13px;opacity:.75}
.top.owner .osig{background:rgba(255,255,255,.16)!important;color:#fff!important;border:1px solid rgba(255,255,255,.28)!important;min-height:38px!important;padding:0 16px!important;border-radius:99px!important;font-weight:700;flex:none}
.top.owner .oact{display:grid;grid-template-columns:1fr 1fr;gap:8px;margin-top:16px}
.top.owner .oact button{background:#fff!important;color:var(--ui-primary,#193983)!important;border:0!important;border-radius:14px!important;font-weight:700;min-height:46px!important}
.top.owner .oact button:last-child{background:rgba(255,255,255,.16)!important;color:#fff!important}
.top.owner~.wrap .tiles2{display:grid;grid-template-columns:1fr 1fr;gap:12px}
.top.owner~.wrap .tile2{padding:16px 16px 12px;border-radius:18px;min-height:0}
.top.owner~.wrap .tile2 b{font-size:clamp(17px,5.4vw,24px);line-height:1.1;overflow-wrap:anywhere;display:block}
.top.owner~.wrap .tile2>span:not(.ti){font-size:12.5px;line-height:1.3;color:#5b6678;display:block;margin-top:4px}
.top.owner~.wrap .tile2:nth-last-child(-n+2){grid-column:span 1}
body:has(.top.owner) #sfx-lang{display:none!important}
@media(min-width:760px){
.top.owner{padding:18px max(24px,calc((100vw - 960px)/2)) 20px;border-radius:0 0 24px 24px}
.top.owner .otn{flex-direction:row;align-items:baseline;gap:12px;flex-wrap:nowrap}.top.owner .otn b{white-space:nowrap;font-size:22px}
.top.owner .oact{display:flex;gap:12px;margin-top:16px}.top.owner .oact button{padding:0 24px!important;min-height:44px!important}
.top.owner~.wrap{max-width:960px}
.top.owner~.wrap .tiles2{grid-template-columns:repeat(4,1fr);gap:16px}
.top.owner~.wrap .tile2 b{font-size:28px}
}
@media(min-width:760px){.top.owner .otn span{display:none}}
.fsec{margin:20px 0 8px;font-size:15px;color:var(--ui-primary,#193983);border-top:1px solid #e8ecf2;padding-top:16px}
#app a:not(.btn):not(.moreitem):not(.avatar){color:var(--ui-primary,#193983);font-weight:700;text-underline-offset:3px}
/* desktop layout for the school desk */
@media(min-width:1024px){
body:has(.bnav) .wrap{max-width:1180px!important;margin-left:auto;margin-right:auto}
body:has(.bnav) .top{padding-left:max(28px,calc((100vw - 1180px)/2 + 28px))!important;padding-right:max(28px,calc((100vw - 1180px)/2 + 28px))!important}
body:has(.bnav) .tabs{flex-wrap:wrap;overflow:visible;justify-content:flex-start}
body:has(.bnav) .tiles{grid-template-columns:repeat(4,1fr)!important;gap:16px}
body:has(.bnav) .fbar{grid-template-columns:1fr 1fr 2fr}.body:has(.bnav) .fbar .fsearch{grid-column:auto}
body:has(.bnav) .fbar .fsearch{grid-column:auto}
body:has(.bnav) .tbar{display:flex;flex-wrap:wrap}.body:has(.bnav) .tbar>*:first-child{grid-column:auto}
body:has(.bnav) .tbar>*{width:auto}
}
@media(min-width:1024px){body:has(.bnav) .tiles2{grid-template-columns:repeat(4,1fr)!important;gap:16px}body:has(.bnav) .tabs{overflow-x:visible!important;flex-wrap:wrap!important}}

/* header actions on desktop */
.hact{display:none}
@media(min-width:1024px){
body:has(.bnav) .sfx-fab,body:has(.bnav) #sfx-lang{display:none!important}
.top .hact{display:flex;align-items:center;gap:12px;margin-left:auto}
.hact .hbtn{background:rgba(255,255,255,.16)!important;color:#fff!important;border:1px solid rgba(255,255,255,.28)!important;border-radius:99px!important;min-height:44px!important;padding:0 20px!important;font-weight:700;font-size:14px;width:auto}
.hact .lgseg{background:rgba(255,255,255,.16)}
.hact .lgseg button{color:rgba(255,255,255,.85)!important;min-height:44px!important}
.hact .lgseg button.on{background:#fff!important;color:var(--ui-primary,#193983)!important}
}

.tabs.grouped .tg{display:contents}.tabs.grouped .tgl{display:none}
@media(min-width:1024px){
body:has(.bnav) .tabs.grouped{display:flex!important;flex-wrap:wrap!important;gap:12px!important;padding:0!important;margin:16px 0 12px!important}
body:has(.bnav) .tabs.grouped .tg{display:flex;flex-direction:column;gap:4px;background:#fff;border:1px solid #dbe1ec;border-radius:16px;padding:8px 8px 8px;box-shadow:0 1px 2px #1f3a5f12}
body:has(.bnav) .tabs.grouped .tgl{display:block;font-style:normal;font-size:10.5px;letter-spacing:.08em;text-transform:uppercase;font-weight:700;color:#7b879b;padding:2px 8px}
body:has(.bnav) .tabs.grouped .tg{flex-flow:row wrap;align-items:center}
body:has(.bnav) .tabs.grouped .tgl{flex:0 0 100%}
body:has(.bnav) .tabs.grouped .tg button{min-height:38px!important;padding:8px 16px!important;border-radius:10px!important;background:transparent!important}
body:has(.bnav) .tabs.grouped .tg button:hover{background:#eef1f8!important}
body:has(.bnav) .tabs.grouped .tg button.on{background:var(--navy)!important;color:#fff!important}
}

@media(min-width:1024px){body:has(.bnav) .tabs.grouped .tg{padding:8px 8px 8px;gap:2px}body:has(.bnav) .tabs.grouped .tg button{padding:8px 12px!important}body:has(.bnav) .tabs.grouped{gap:8px!important;flex-wrap:nowrap!important}}
.bk .badge,.acts .badge{align-self:center;height:auto;min-height:0;line-height:1.2;padding:4px 12px}
.bk .badge,.acts .badge{display:inline-flex!important;align-items:center;height:28px!important;min-height:28px!important;padding:0 12px!important;line-height:1}
/* desktop nav v2: one slim sticky bar, grouped by dividers */
@media(min-width:1024px){
body:has(.bnav) .tabs.grouped{position:sticky;top:0;z-index:30;display:flex!important;flex-wrap:nowrap!important;align-items:stretch;gap:0!important;background:#fff;border:1px solid #dbe1ec;border-radius:14px;padding:4px!important;margin:16px 0 16px!important;box-shadow:0 2px 8px #1f3a5f14;overflow:visible!important}
body:has(.bnav) .tabs.grouped .tg{display:flex;flex-direction:row;flex-wrap:nowrap;align-items:center;gap:2px;background:none;border:0;border-radius:0;box-shadow:none;padding:0 8px;position:relative}
body:has(.bnav) .tabs.grouped .tg+.tg::before{content:"";position:absolute;left:-1px;top:10px;bottom:10px;width:1px;background:#d5dbe7}
body:has(.bnav) .tabs.grouped .tg:first-child{padding-left:2px}
body:has(.bnav) .tabs.grouped .tgl{display:none}
body:has(.bnav) .tabs.grouped .tg button{min-height:44px!important;padding:0 12px!important;border-radius:10px!important;background:transparent!important;color:#1b3e90!important;font-size:14px!important;font-weight:700;white-space:nowrap;position:relative}
body:has(.bnav) .tabs.grouped .tg button:hover{background:#eef1f8!important;color:var(--navy)!important}
body:has(.bnav) .tabs.grouped .tg button.on{background:#e6ecf8!important;color:var(--navy)!important;font-weight:700;box-shadow:none}
body:has(.bnav) .tabs.grouped .tg button.on::after{content:"";position:absolute;left:12px;right:12px;bottom:3px;height:3px;border-radius:3px;background:var(--navy)}
}
@media(min-width:1024px){body:has(.bnav) .tabs.grouped .tg{padding:0 4px;gap:0}body:has(.bnav) .tabs.grouped .tg button{padding:0 8px!important;font-size:13.5px!important}body:has(.bnav) .tabs.grouped .tg button.on::after{left:9px;right:9px}}

/* settings layout */
.setl{display:block}
.setnav{display:flex;gap:8px;overflow-x:auto;padding:4px 2px 12px;scrollbar-width:none;margin:0 -2px}.setnav::-webkit-scrollbar{display:none}
.setgrp{display:flex;gap:8px;align-items:center;flex:0 0 auto}.setgrp+.setgrp{border-left:1px solid #d5dbe7;padding-left:8px;margin-left:2px}
.setgl{display:none}
.setnav button{flex:0 0 auto;width:auto;margin:0;display:inline-flex;align-items:center;gap:8px;min-height:44px;padding:0 16px;border-radius:999px;background:#e8ecf3;color:var(--navy);border:0;font-weight:700;font-size:14px;white-space:nowrap}
.setnav button.on{background:var(--navy);color:#fff}
.setic{display:inline-flex}
.setbody>.card:first-child{margin-top:0}
/* phone: sections live in a collapsible grouped list with search, not a 75-pill strip */
.settog{display:flex;width:100%;min-height:48px;align-items:center;justify-content:space-between;background:#fff;color:var(--navy);border:1px solid #dbe1ec;border-radius:12px;font-weight:700;margin:0 0 8px;padding:0 16px;text-align:left}
.setnav{display:none;overflow:visible;background:#fff;border:1px solid #dbe1ec;border-radius:14px;padding:8px;margin:0 0 12px}.setnav.open{display:block}
.setq{width:100%;min-height:46px;border:1px solid #cdd5e3;border-radius:10px;padding:0 12px;margin:0 0 8px;font-size:16px}
.setgrp{display:block;flex:none}.setgrp+.setgrp{border-left:0;padding-left:0;margin:8px 0 0;border-top:1px solid #e6eaf2;padding-top:8px}
.setgl{display:block;font-style:normal;font-size:12px;letter-spacing:.08em;text-transform:uppercase;font-weight:700;color:#7b879b;padding:4px 8px}
.setnav button{display:flex;width:100%;border-radius:10px;background:transparent;min-height:48px;font-weight:700;color:#17357a;justify-content:flex-start;white-space:normal;text-align:left}
.setnav button.on{background:#e6ecf8;color:var(--navy);font-weight:700}
@media(min-width:1024px){
.settog{display:none}.setnav{display:block}.setq{margin-bottom:8px}
.setl{display:grid;grid-template-columns:250px minmax(0,1fr);gap:20px;align-items:start}
.setnav{display:block;position:sticky;top:84px;background:#fff;border:1px solid #dbe1ec;border-radius:16px;padding:12px;margin:0;overflow:visible}
.setgrp{display:block}.setgrp+.setgrp{border-left:0;padding-left:0;margin:12px 0 0;border-top:1px solid #e6eaf2;padding-top:8px}
.setgl{display:block;font-style:normal;font-size:12px;letter-spacing:.08em;text-transform:uppercase;font-weight:700;color:#7b879b;padding:4px 12px}
.setnav button{display:flex;width:100%;border-radius:10px;background:transparent;min-height:44px;font-weight:700;color:#17357a;justify-content:flex-start}
.setnav button:hover{background:#eef1f8}.setnav button.on{background:#e6ecf8;color:var(--navy);font-weight:700;box-shadow:inset 3px 0 0 var(--navy)}
}

.fsec{display:flex;flex-direction:column;gap:2px;margin:16px 0 8px;padding-top:12px;border-top:1px solid #e6eaf2}.fsec:first-of-type{border-top:0;margin-top:4px;padding-top:0}.fsec b{font-size:13px;letter-spacing:.06em;text-transform:uppercase;color:#6b778c}

.tscroll{overflow-x:auto;margin-top:8px;border:1px solid #e1e6ef;border-radius:12px}.tbl{width:100%;border-collapse:collapse;font-size:14px}.tbl th{background:#f1f4fa;text-align:left;padding:8px 12px;font-size:12px;text-transform:uppercase;letter-spacing:.05em;color:#5b6780}.tbl td{padding:8px 12px;border-top:1px solid #eceff5;vertical-align:top}.tbl tr.bad td{background:#fff8f7}.tbl .badge{white-space:normal}

/* owner nav + schools */
.ohd{margin:8px 0 12px;font-size:22px}.ohd2{margin:24px 0 12px;font-size:16px;color:#1b3e90}
.otool{display:flex;align-items:center;justify-content:space-between;gap:12px}.otool .ohd{margin:8px 0}
.ogo{width:auto!important;min-height:44px;padding:0 20px;border-radius:12px;margin:0!important}
.ofil{display:flex;gap:8px;overflow-x:auto;padding:12px 0 12px;scrollbar-width:none}.ofil::-webkit-scrollbar{display:none}
.ochip{flex:0 0 auto;width:auto!important;margin:0!important;min-height:44px;padding:0 16px;border-radius:999px;border:1px solid #d5dbe7!important;background:#fff!important;color:#1b3e90!important;font-weight:700;font-size:13.5px}
.ochip.on{background:var(--navy)!important;color:#fff!important;border-color:var(--navy)!important}
.oacts{display:flex;gap:8px;flex-wrap:wrap;align-items:center}.oacts button{width:auto;margin:0;min-height:44px}
.oacts button:last-child{order:-1}
@media(max-width:759px){.oacts{width:100%}.oacts button{flex:1 1 calc(50% - 8px)}.oacts button:last-child{flex:1 1 100%}.top.owner{padding-bottom:16px}.top.owner~.wrap{padding-bottom:92px}}
@media(min-width:760px){.top.owner~.wrap .tabs.grouped{display:flex!important}}
body:has(.top.owner) .tabs.grouped{position:sticky;top:0;z-index:30}
.ofg{display:grid;grid-template-columns:repeat(2,1fr);gap:12px;margin:12px 0}.ofg>div{display:flex;flex-direction:column}.ofg b{font-size:17px;color:var(--navy)}
@media(min-width:760px){.ofg{grid-template-columns:repeat(4,1fr)}}
.emptyc{text-align:center;padding:28px 20px}.emptyc .ei{width:48px;height:48px;border-radius:16px;background:#e6ecf8;color:var(--navy);font:700 26px/48px system-ui;margin:0 auto}.emptyc button{margin:0 auto}
.card .emptyc{border:0;box-shadow:none;padding:12px 0 4px;margin:0;background:none}

.calnav{display:flex;align-items:center;justify-content:space-between;margin:8px 0}.calnav .cb{min-width:44px;min-height:44px;padding:0;font-size:22px}.calg{display:grid;grid-template-columns:repeat(7,1fr);gap:4px}.calh{text-align:center;font-size:12px;color:#667085;font-weight:700;padding:4px 0}.cald{position:relative;min-height:44px;border-radius:10px;background:#f3f5f9;display:flex;align-items:center;justify-content:center;font-weight:700;font-size:14px}.cald.sun{background:#e9edf4;color:#667085}.cald.hol{background:#fdeceb;color:#c0341d}.cald.tod{outline:2px solid #11285b}.cald i{position:absolute;bottom:5px;width:6px;height:6px;border-radius:50%;background:#11285b}
.modal .box>.x+h2{min-height:46px;display:flex;align-items:center;margin:0 0 16px;padding-right:64px}.modal .box .x{top:14px;right:14px}
label:has(>input[type=checkbox]),label:has(>input[type=radio]){display:flex;align-items:center;gap:12px;min-height:44px;cursor:pointer}
input[type=checkbox],input[type=radio]{width:24px;height:24px;flex:none}
.chk,.pn-c{display:flex;align-items:center;gap:12px;min-height:44px}
.chk label,.pn-c label{flex:1;min-height:44px;display:flex;align-items:center;margin:0;cursor:pointer}
@media(max-width:520px){.tile2:last-child:nth-child(odd){grid-column:1/-1}}

/* ===== Elevation v2: depth, hierarchy, polish. Sits on the theme variables (--navy, --gold, --soft) so per-school themes still apply. ===== */
:root{--e-r:18px;--e-r-sm:12px;--e-sh1:0 1px 2px rgba(8, 19, 43,.06),0 1px 3px rgba(8, 19, 43,.08);--e-sh2:0 4px 8px -2px rgba(8, 19, 43,.08),0 12px 24px -6px rgba(8, 19, 43,.12);--e-sh3:0 20px 40px -12px rgba(8, 19, 43,.28);--e-ease:cubic-bezier(.2,.7,.2,1)}
body{font-feature-settings:"tnum" 1,"cv11" 1;letter-spacing:-.005em;background:linear-gradient(180deg,#eef2f8 0,#f7f9fb 220px) no-repeat,#f7f9fb}
h1,h2,h3{letter-spacing:-.02em;color:var(--ink,#0b1a3c)}h2{font-size:21px;font-weight:700}h3{font-size:17px;font-weight:700}
.muted,.small{color:var(--ui-muted,#526272)}
.top{background:linear-gradient(135deg,var(--navy) 0,color-mix(in srgb,var(--navy) 78%,#000) 100%)!important;box-shadow:0 10px 28px -8px color-mix(in srgb,var(--navy) 55%,transparent)!important}
.top b{font-weight:700;letter-spacing:-.01em}
.card,.tile,.tile2,.stat{border:1px solid rgba(8, 19, 43,.06);box-shadow:var(--e-sh1)!important;border-radius:var(--e-r)!important;transition:box-shadow .2s var(--e-ease),transform .2s var(--e-ease)}
.card{animation:eUp .25s var(--e-ease) both}
@keyframes eUp{from{opacity:0;transform:translateY(8px)}to{opacity:1;transform:none}}
@media(hover:hover){.card:hover,.tile2:hover{box-shadow:var(--e-sh2)!important}}
.thero{position:relative;overflow:hidden;background:linear-gradient(135deg,var(--navy) 0,color-mix(in srgb,var(--navy) 70%,#000) 100%)!important;border-radius:22px!important;box-shadow:0 18px 36px -14px color-mix(in srgb,var(--navy) 70%,transparent)!important}
.thero::before{content:"";position:absolute;right:-60px;top:-70px;width:220px;height:220px;border-radius:50%;background:radial-gradient(closest-side,rgba(255,255,255,.22),transparent)}
.thero::after{content:"";position:absolute;left:-40px;bottom:-90px;width:200px;height:200px;border-radius:50%;background:radial-gradient(closest-side,rgba(255,255,255,.1),transparent)}
.thero>*{position:relative;z-index:1}.thero h2,.thero .tn{font-weight:700;letter-spacing:-.025em}
.tact button,.tact a{background:#ffffff26!important;color:#fff!important;border:1px solid #ffffff3d!important;backdrop-filter:blur(6px);box-shadow:none!important}
.tact button:first-child,.tact a:first-child{background:#fff!important;color:var(--navy)!important;box-shadow:0 6px 14px -4px rgba(0,0,0,.35)!important}
.tile2 .ti{border-radius:14px!important}.tile2 b,.stat b{letter-spacing:-.03em;font-weight:700}
button,.btn{border-radius:14px;font-weight:700;letter-spacing:-.005em;box-shadow:0 1px 2px rgba(8, 19, 43,.12),0 6px 14px -6px color-mix(in srgb,var(--navy) 60%,transparent);transition:transform .12s var(--e-ease),box-shadow .2s var(--e-ease),filter .2s;-webkit-tap-highlight-color:transparent}
button:not(:disabled):active,.btn:active{transform:scale(.97);filter:brightness(.95)}
@media(hover:hover){button:not(:disabled):hover,.btn:hover{filter:brightness(1.06);box-shadow:0 2px 4px rgba(8, 19, 43,.14),0 10px 20px -8px color-mix(in srgb,var(--navy) 65%,transparent)}}
button.sec,.btn.sec,.bk button.sm,.acts button{background:color-mix(in srgb,var(--navy) 9%,#fff);color:var(--navy);box-shadow:none;border:1px solid color-mix(in srgb,var(--navy) 14%,transparent)}
button:disabled{opacity:.55;cursor:not-allowed;box-shadow:none}
input,select,textarea{border:1.5px solid #d5dce6!important;border-radius:var(--e-r-sm)!important;background:#fbfcfe;transition:border-color .15s,box-shadow .15s,background .15s}
input:hover,select:hover,textarea:hover{border-color:#b9c4d4!important}
input:focus,select:focus,textarea:focus{outline:none!important;border-color:var(--navy)!important;background:#fff;box-shadow:0 0 0 4px color-mix(in srgb,var(--navy) 16%,transparent)!important}
label{font-size:13px;font-weight:700;color:#142e69;letter-spacing:.01em}
.badge{font-weight:700;letter-spacing:.02em;border:1px solid rgba(8, 19, 43,.06)}
.bk{border-top:1px solid #edf0f5;transition:background .15s}@media(hover:hover){.bk:hover{background:#f8fafd}}
.bnav{background:rgba(255,255,255,.88)!important;backdrop-filter:saturate(1.6) blur(14px);-webkit-backdrop-filter:saturate(1.6) blur(14px);box-shadow:0 -10px 30px -12px rgba(8, 19, 43,.22)!important;border-top:1px solid rgba(8, 19, 43,.06)!important}
.bnav button{box-shadow:none;transition:color .15s}.bnav button.on .ic{background:color-mix(in srgb,var(--navy) 14%,#fff)!important;transition:background .2s}
.modal .box{border-radius:22px;box-shadow:var(--e-sh3);animation:eUp .25s var(--e-ease) both}.modal{backdrop-filter:blur(3px)}
.banner{border-radius:14px;box-shadow:var(--e-sh1)}
.cal,.photos .ph{border-radius:14px;box-shadow:var(--e-sh1)}
table{border-collapse:separate;border-spacing:0}th{font-size:12px;text-transform:uppercase;letter-spacing:.05em;color:#667085;font-weight:700}
.okmsg,.err{border-radius:10px}
:focus-visible{outline:3px solid color-mix(in srgb,var(--navy) 45%,#fff);outline-offset:2px}
@media(prefers-reduced-motion:reduce){.card,.modal .box{animation:none}button,.btn{transition:none}}
/* owner impersonation banner: banner pins at viewport top, school header and tab bars stack below it */
body.imp .top{top:var(--impH,60px)}
body.imp:has(.bnav) .tabs.grouped{top:var(--impH,60px)}
body.imp .setnav{top:calc(var(--impH,60px) + 84px)}
/* owner nav redesign: 4 balanced labeled groups, tidy wrap (scoped to owner panel only) */
@media(min-width:1024px){
body:has(.top.owner) .tabs.grouped{flex-wrap:wrap!important;align-items:stretch;gap:12px!important;background:#f7f9fb;border:0;border-radius:0;padding:8px 2px!important;box-shadow:none}
body:has(.top.owner) .tabs.grouped .tg{display:flex;flex-direction:row;flex-wrap:wrap;align-items:center;align-content:flex-start;gap:8px;background:#fff;border:1px solid #dbe1ec;border-radius:14px;box-shadow:0 1px 3px #1f3a5f10;padding:8px 12px}
body:has(.top.owner) .tabs.grouped .tg+.tg::before{content:none}
body:has(.top.owner) .tabs.grouped .tgl{display:block;flex:0 0 100%;font-style:normal;font-size:10.5px;letter-spacing:.08em;text-transform:uppercase;font-weight:700;color:#7b879b;padding:0 2px}
body:has(.top.owner) .tabs.grouped .tg button{min-height:40px!important;padding:0 12px!important;border-radius:10px!important;background:#f2f5fa!important;color:#17357a!important;font-size:13.5px!important;font-weight:700;white-space:nowrap}
body:has(.top.owner) .tabs.grouped .tg button:hover{background:#e6ecf8!important;color:var(--navy)!important}
body:has(.top.owner) .tabs.grouped .tg button.on{background:var(--navy)!important;color:#fff!important;font-weight:700}
body:has(.top.owner) .tabs.grouped .tg button.on::after{content:none}
}
/* Growth tools lives in the desk header now: hide its floating pill (install-app pill stays), hide header icon on desktop where the labelled header pill shows */
.sfx-fab a.sfx-fab-btn{display:none!important}
@media(min-width:1024px){.top .gtbtn{display:none}}
/* owner panel: professional left sidebar admin layout */
.top.owner{position:sticky;top:var(--impH,0);z-index:40}
.oburger{display:none}
.obk{display:none}
@media(min-width:1024px){
body:has(.top.owner) .wrap{display:flex!important;gap:28px;align-items:flex-start;max-width:1440px!important}
body:has(.top.owner) .wrap>.oside+div{flex:1;min-width:0}
.oside{flex:0 0 234px;position:sticky;top:calc(var(--impH,0px) + 76px);max-height:calc(100dvh - var(--impH,0px) - 96px);overflow-y:auto;scrollbar-width:thin;background:#fff;border:1px solid #e3e8f0;border-radius:16px;padding:16px 12px;box-shadow:0 1px 3px #1f3a5f0d}
}
.osg{margin:0 0 16px}.osg:last-child{margin-bottom:2px}
.osl{display:block;font-style:normal;font-size:10.5px;letter-spacing:.09em;text-transform:uppercase;font-weight:700;color:#8a94a6;padding:0 12px 8px}
.oni{display:flex;align-items:center;gap:12px;width:100%;border:0;background:transparent;color:#17357a;font:700 13.5px/1.25 system-ui,sans-serif;text-align:left;padding:8px 12px;border-radius:9px;min-height:40px;cursor:pointer;white-space:normal}
.oni .oic{flex:0 0 auto;display:inline-flex;color:#97a1b4}
.oni:hover{background:#f1f4fa;color:#142e6b}
.oni:hover .oic{color:#142e6b}
.oni.on{background:#eaf0fb;color:#142e6b;font-weight:700}
.oni.on .oic{color:#142e6b}
@media(max-width:1023px){
.oburger{display:inline-flex;align-items:center;justify-content:center;min-width:44px;min-height:44px;background:rgba(255,255,255,.14);border:1px solid rgba(255,255,255,.25);border-radius:12px;color:#fff;padding:0}
.obk{display:block;position:fixed;inset:0;background:#15233a99;z-index:80;opacity:0;pointer-events:none;transition:opacity .2s}
body.odraw .obk{opacity:1;pointer-events:auto}
.oside{position:fixed;left:0;top:0;bottom:0;width:274px;max-width:84vw;background:#fff;z-index:90;padding:16px 12px calc(16px + env(safe-area-inset-bottom));overflow-y:auto;transform:translateX(-105%);transition:transform .22s ease;box-shadow:0 8px 40px #15233a40;border-radius:0 18px 18px 0}
body.odraw .oside{transform:none}
.oni{min-height:44px}
body:has(.top.owner) .bnav{display:none!important}
body:has(.top.owner) .wrap{padding-bottom:24px}
}
.osi,.oni{box-shadow:none!important}
@media(max-width:1023px){.top.owner{flex-wrap:nowrap;align-items:center}.top.owner .otl{flex:1;min-width:0}}
#sfx-lang .sfx-langbtn.on{background:#1b3e8f!important;color:#fff!important}

/* alignment pass 22:12 */
html{scroll-padding-bottom:120px}
.bnav{box-shadow:0 -1px 0 #e3e8ef!important}
@media(max-width:700px){.modal{padding:12px 12px 84px!important;align-items:flex-start}.modal .box{max-height:calc(100dvh - 96px)!important;margin:0 auto!important}
.modal .box input:not([type=checkbox]):not([type=radio]),.modal .box select,.modal .box textarea{width:100%;min-height:44px}
.modal .box>button:not(.x),.modal .box form>button{width:100%;min-height:44px}
.modal .box .err,.modal .box .okmsg{scroll-margin-bottom:24px}}
#sf-toast{position:fixed;left:12px;right:12px;bottom:calc(84px + env(safe-area-inset-bottom,0px));max-width:520px;margin:0 auto;z-index:100000;pointer-events:none;padding:12px 16px;border-radius:12px;color:#fff;font-weight:700;font-size:14px;line-height:1.35;text-align:center;box-shadow:0 8px 24px rgba(0,0,0,.18);overflow-wrap:anywhere}

.pn-call,a.pn-call{display:inline-flex;align-items:center;min-height:44px;padding:0 12px}
.leaflet-bar a,.leaflet-control-zoom a{width:44px!important;height:44px!important;line-height:44px!important}
input[type=checkbox]+label[for],label[for]:has(+input[type=checkbox]){display:inline-flex;align-items:center;min-height:44px;cursor:pointer}

/* Sub-tab bars (owner and school screens): the chosen tab is navy, the others are soft, so the current one is obvious. */
body [class$="-tabs"]>button{background:#eef2fb;color:var(--navy,#1b3d8d);border:1px solid #d5dcec;box-shadow:none}
body [class$="-tabs"]>button.on,body [class$="-tabs"]>button[aria-pressed=true]{background:var(--navy,#1b3d8d);color:#fff;border-color:transparent;outline:0}

/* Tablet: stat tiles use the width (4 across), content stays readable on wide screens */
@media(min-width:760px){.tiles2{grid-template-columns:repeat(4,1fr)}.top.owner~.wrap .tiles2{grid-template-columns:repeat(4,1fr)}}

/* very narrow phones (320-359): icons keep 44px taps, school name moves to its own row instead of being squeezed */
@media(max-width:359px){.top{flex-wrap:wrap!important}.top .tn{order:9;flex:1 1 100%!important;min-width:0}.top .tn b{max-width:100%!important;white-space:normal!important}.top .r{margin-left:auto}.top>.avatar{order:1}.top .r{order:2}}
