/* School OS — Royal look (handover #24). Navy and gold like the report card, ID cards and welcome page.
   Loaded after style.css: it only changes how things look, never what they do. */
@font-face{font-family:"HR Serif";src:url(fonts/cormorant.woff) format("woff");font-weight:500 700;font-style:normal;font-display:swap}
@font-face{font-family:"HR Serif";src:url(fonts/cormorant-Italic.woff) format("woff");font-weight:500 700;font-style:italic;font-display:swap}

:root{--bg:#f6f3ea;--panel:#fffefa;--panel-soft:#faf6ec;--ink:#0d1f3c;--muted:#5e6a80;--line:#e8dfc9;--nav:#0a1f44;
  --gold:#c9a24e;--gold-2:#e8cf8a;--gold-3:#a88234;--gold-deep:#8a6a22;--navy:#0a1f44;--navy-2:#0e2a57;
  --accent:#0e2a57;--accent-soft:#edf1f8;--good:#1d6b4f;--good-soft:#e7f2ec;
  --blue:#2f5597;--blue-soft:#ecf1fa;--purple:#6b4f9c;--purple-soft:#f2eef9;--orange:#9a6418;--orange-soft:#faf0de;--red:#a93d3d;--red-soft:#f9eaea;
  --radius:16px;--shadow:0 1px 2px #0a1f440a,0 12px 28px -20px #0a1f4440;
  --serif:"HR Serif","Iowan Old Style","Palatino Linotype",Palatino,Georgia,"Noto Serif",serif;
  --gold-grad:linear-gradient(135deg,#f3dfa6 0%,#d9b764 38%,#c9a24e 60%,#a88234 100%);
  --navy-grad:linear-gradient(160deg,#10306a 0%,#0a1f44 55%,#06142f 100%)}
[data-theme=dark]{--bg:#06122a;--panel:#0c1d3f;--panel-soft:#10254d;--ink:#eef2f9;--muted:#a3afc6;--line:#20375f;--nav:#040d20;
  --accent:#e8cf8a;--accent-soft:#1a2d55;--good:#8fd3b4;--good-soft:#173a33;--blue:#b3c9f0;--blue-soft:#1b2f55;--purple:#cdb8ef;--purple-soft:#2e2650;
  --orange:#f0c47e;--orange-soft:#3a2e1a;--red:#f3a3a3;--red-soft:#3d2230;--gold-deep:#e8cf8a;--shadow:none}

body{font-size:14.5px;background:var(--bg)}
h1,h2,.serif{font-family:var(--serif)}
.eyebrow{color:var(--gold-deep);letter-spacing:2.2px;font-size:10.5px;font-weight:700}

/* ---------- Side bar ---------- */
.side{background:var(--navy-grad);border-right:1px solid #c9a24e33;padding:24px 16px 18px}
.side:before{content:"";position:absolute;inset:0;pointer-events:none;background:radial-gradient(520px 320px at 20% -8%,#c9a24e1f,transparent 60%)}
.brand{flex-direction:column;align-items:center;text-align:center;gap:10px;padding:4px 6px 18px;position:relative}
.brand img{width:74px;height:74px;border-radius:18px;border:0;box-shadow:0 0 0 2px #e8cf8a,0 0 0 5px #c9a24e33,0 10px 26px #0006}
.brand .rb-name{font-family:var(--serif);font-size:25px;font-weight:700;letter-spacing:.2px;color:#fff;line-height:1.05}
.brand .rb-sub{font-size:9.5px;letter-spacing:3px;color:var(--gold-2);font-weight:700;text-transform:uppercase;margin-top:5px}
.brand .rb-motto{font-family:var(--serif);font-style:italic;color:#c8d3e6;font-size:14px;margin-top:3px}
.rb-rule{display:flex;align-items:center;gap:8px;margin:0 8px 16px;color:var(--gold)}
.rb-rule:before,.rb-rule:after{content:"";flex:1;height:1px;background:linear-gradient(90deg,transparent,#c9a24e99)}
.rb-rule:after{background:linear-gradient(90deg,#c9a24e99,transparent)}
.rb-rule i{width:6px;height:6px;transform:rotate(45deg);background:var(--gold);display:block}
.workspace{border-color:#c9a24e40;background:#ffffff08;margin:0 2px 20px}
.workspace .icon{color:var(--gold-2)}
.workspace b{font-size:12.5px}.workspace small{font-size:11px;color:#9fb0c9}
.navgrp>p{color:#c9a24ecc;font-size:9.5px;letter-spacing:2.2px}
.nav a{color:#c3cee0;font-size:13.5px;border-radius:10px;min-height:44px}
.nav a:hover{background:#ffffff0d;color:#fff}
.nav a.active{background:linear-gradient(90deg,#c9a24e3d,#c9a24e12);color:#f6e6b8;font-weight:700;box-shadow:inset 3px 0 0 var(--gold-2)}
.nav a.active .icon{color:var(--gold-2)}
.nav-count{background:#c9a24e2e;color:#f3dfa6}
.nav a.active .nav-count{background:#c9a24e44;color:#fff3d0}
.help-tile{background:linear-gradient(135deg,#ffffff0d,#ffffff04);border-color:#c9a24e33}
.help-tile b{font-size:13px}.help-tile p{font-size:12px}
.help-tile button{border-color:#c9a24e55;color:#f3dfa6;font-size:12px}
.userbox{border-top-color:#c9a24e33}
.userbox b{font-size:12.5px}.userbox small{font-size:11px}
.avatar.gold{background:var(--gold-grad);color:var(--navy)}

/* ---------- Top bar ---------- */
.top{background:color-mix(in srgb,var(--panel) 92%,transparent);backdrop-filter:blur(10px);-webkit-backdrop-filter:blur(10px);border-bottom:1px solid var(--line);box-shadow:0 1px 0 #c9a24e22}
.top-school .school-title{font-family:var(--serif);font-size:19px;font-weight:700;max-width:420px}
.top-school small{font-size:11.5px}
.school-symbol{display:none}
.top-crest{width:38px;height:38px;border-radius:11px;box-shadow:0 0 0 1.5px var(--gold);flex-shrink:0}
.top-search{background:var(--panel-soft);font-size:12.5px;border-radius:10px}
.top-avatar{background:var(--gold-grad);border:0;color:var(--navy);font-weight:800}
.school-sync-banner{font-size:12.5px}

/* ---------- Page heading ---------- */
.content{padding-top:34px}
.page-head{position:relative;padding-bottom:20px;border-bottom:1px solid var(--line);margin-bottom:26px}
.page-head:after{content:"";position:absolute;left:0;bottom:-2px;width:74px;height:3px;border-radius:2px;background:var(--gold-grad)}
.page-head h1{font-size:44px;font-weight:700;letter-spacing:-.3px;line-height:1.05;color:var(--ink)}
.page-head p{font-size:14px;margin-top:8px}
.page-head .eyebrow{display:flex;align-items:center;gap:8px;margin-bottom:8px}
.page-head .eyebrow:before{content:"";width:18px;height:1.5px;background:var(--gold)}

/* ---------- Buttons, badges, chips ---------- */
.btn{background:var(--navy-grad);color:#fff;border-radius:11px;font-size:13px;min-height:44px;box-shadow:inset 0 0 0 1px #c9a24e59,0 6px 16px -10px #0a1f44aa}
.btn.secondary{background:var(--panel);color:var(--ink);border-color:var(--line);box-shadow:none}
.btn.secondary:hover{border-color:var(--gold)}
.btn.gold{background:var(--gold-grad);color:var(--navy);font-weight:750;box-shadow:inset 0 0 0 1px #fff5,0 6px 16px -10px #8a6a22}
.btn.soft{background:var(--accent-soft);color:var(--accent);box-shadow:none}
.btn.small{font-size:12px;min-height:36px}
.btn.danger{background:var(--red-soft);color:var(--red);box-shadow:none}
[data-theme=dark] .btn{background:var(--gold-grad);color:var(--navy)}
[data-theme=dark] .btn.secondary{background:var(--panel);color:var(--ink)}
.text-btn{color:var(--accent);font-size:12.5px}
[data-theme=dark] .text-btn{color:var(--gold-2)}
.badge{border-radius:999px;font-size:11px;padding:4px 10px;font-weight:650}
.badge.good{background:var(--good-soft);color:var(--good)}
.date-chip{font-size:12.5px;border-radius:999px;padding:9px 14px;border-color:var(--line)}
.date-chip .icon{color:var(--gold-deep)}
.pill{border-radius:999px;font-size:11px;padding:4px 10px;border-color:#c9a24e66;color:var(--gold-deep)}

/* ---------- Cards and numbers ---------- */
.card,.metric,.person-card,.tablewrap,.quick-action,.profile-top{border-color:var(--line);box-shadow:var(--shadow)}
.card{position:relative;border-radius:var(--radius)}
.card:before,.metric:before{content:"";position:absolute;left:18px;right:18px;top:-1px;height:2px;border-radius:2px;background:linear-gradient(90deg,transparent,#c9a24eb3,transparent)}
.card-head h2{font-size:24px;font-weight:700;letter-spacing:0}
.card-head p{font-size:12.5px}
.metric{padding:20px 20px 18px}
.metric-top>span{font-size:11px;letter-spacing:1.4px;text-transform:uppercase;font-weight:700;color:var(--muted)}
.metric-icon,.metric.blue .metric-icon,.metric.purple .metric-icon,.metric.orange .metric-icon{background:var(--navy-grad);color:var(--gold-2);border-radius:50%;width:36px;height:36px;box-shadow:0 0 0 3px #c9a24e26}
.metric-value{font-family:var(--serif);font-size:46px;font-weight:700;letter-spacing:0;line-height:1;margin:12px 0 8px;color:var(--ink)}
.metric-value.money{font-size:36px}
.metric-foot{font-size:12px}
.section-label h2{font-family:var(--serif);font-size:26px;font-weight:700}
.section-label>span{font-size:12px}
.quick-action{border-radius:14px;padding:18px 16px}
.quick-action:hover{border-color:var(--gold)}
.quick-action>span,.quick-action:nth-child(n)>span{background:var(--navy-grad);color:var(--gold-2);border-radius:50%;width:40px;height:40px}
.quick-action b{font-size:13.5px}.quick-action small{font-size:12px}
.task-row{gap:14px}
.task-icon{background:var(--orange-soft);color:var(--orange);border-radius:50%}
.task-info b{font-size:13.5px}.task-info p{font-size:12.5px}
.activity-item b{font-size:13.5px}.activity-item p{font-size:12px}.activity-item time{font-size:11px}
.activity-item .activity-dot{background:var(--gold)}
.agenda-detail b{font-size:13.5px}.agenda-detail p,.agenda-time{font-size:12px}
.card-note{font-size:12px}
.legend p{font-size:12.5px}.legend b{font-size:14px}
.donut{background:conic-gradient(var(--gold) 0 var(--p),var(--line) var(--p) 100%)}
.donut strong{font-family:var(--serif);font-size:34px}
.donut small{font-size:11px}
.workspace-note{font-size:12px}
.empty>.icon{color:var(--gold)}
.empty h3{font-family:var(--serif);font-size:22px}
.empty p{font-size:13.5px}

/* ---------- Tables, tabs, forms ---------- */
.tablewrap{border-radius:14px}
table{font-size:13.5px}
th{background:var(--panel-soft);color:var(--gold-deep);font-size:10.5px;letter-spacing:1.6px;text-transform:uppercase;font-weight:750;border-bottom:1px solid #c9a24e55}
td small{font-size:12px}
.table-footer,.filter-count{font-size:12.5px}
.tabs{gap:26px}
.tabs button{font-size:14px}
.tabs button.active{color:var(--ink);border-color:var(--gold);border-bottom-width:3px;font-weight:700}
[data-theme=dark] .tabs button.active{color:var(--gold-2)}
.field>span{font-size:12.5px}
.field input,.field select,.field textarea{font-size:14px;border-radius:10px}
.field input:focus,.field select:focus,.field textarea:focus{border-color:var(--gold);box-shadow:0 0 0 3px #c9a24e26}
.input-wrap,.filter-select{border-radius:10px;font-size:13px}
.input-wrap input{font-size:13.5px}
.segmented{border-radius:10px}
.segmented button{font-size:12.5px}
.segmented button.active{background:var(--navy);color:var(--gold-2)}
.modalbox{border-radius:20px;border-color:#c9a24e55;box-shadow:0 30px 90px #06142f59}
.modal-head h2{font-size:30px;font-weight:700}
.modal-head p{font-size:13.5px}
.detail-list dt{font-size:11px;letter-spacing:1.3px;text-transform:uppercase;font-weight:700;color:var(--muted)}
.detail-list dd{font-size:14.5px;font-weight:600}
.info-strip{font-size:13px}
.info-strip.gold{background:#fbf3df;color:#7c5a14}

/* ---------- Mobile bar ---------- */
@media(max-width:760px){
  .mobile-nav{background:var(--navy-grad);border-top:1px solid #c9a24e55;box-shadow:0 -10px 30px #06142f33}
  .mobile-nav a,.mobile-nav button{color:#b9c6db;font-size:11px}
  .mobile-nav a.active{color:var(--gold-2);background:#ffffff12}
  .mobile-nav .add-action{background:var(--gold-grad);color:var(--navy);border-radius:50%;width:50px;height:50px;min-width:50px;margin-top:-18px;box-shadow:0 0 0 4px #0a1f44,0 8px 20px #0007}
  .page-head h1{font-size:34px}
  .metric{padding:14px 14px 13px}.metric-top>span{letter-spacing:1px;font-size:10px}.metric-icon,.metric.blue .metric-icon,.metric.purple .metric-icon,.metric.orange .metric-icon{width:30px;height:30px}
  .metric-value{font-size:34px;margin:8px 0 4px}.metric-value.money{font-size:22px;white-space:nowrap}.metric-foot{font-size:11.5px}
  .card-head h2{font-size:22px}
  .top-school .school-title{font-size:17px}
}

/* ================= Overview ================= */
.royal-hero{position:relative;overflow:hidden;border-radius:22px;background:var(--navy-grad);color:#fff;padding:34px 38px;display:flex;align-items:center;gap:32px;margin-bottom:24px;box-shadow:0 22px 50px -30px #06142fcc;isolation:isolate}
.royal-hero:before{content:"";position:absolute;inset:0;z-index:-1;background:
  radial-gradient(circle at 16% 50%,transparent 0 118px,#c9a24e22 119px 120px,transparent 121px 168px,#c9a24e1a 169px 170px,transparent 171px 224px,#c9a24e12 225px 226px,transparent 227px),
  radial-gradient(700px 300px at 90% -20%,#c9a24e24,transparent 60%)}
.royal-hero:after{content:"";position:absolute;left:0;right:0;bottom:0;height:4px;background:var(--gold-grad)}
.rh-crest{width:132px;height:132px;border-radius:30px;flex-shrink:0;box-shadow:0 0 0 3px #e8cf8a,0 0 0 9px #c9a24e2e,0 18px 40px #0008}
.rh-main{flex:1;min-width:0}
.rh-eyebrow{font-size:11px;letter-spacing:3px;font-weight:700;color:var(--gold-2);text-transform:uppercase}
.rh-main h1{font-family:var(--serif);font-size:48px;font-weight:700;line-height:1.02;margin-top:10px;letter-spacing:0}
.rh-main h1 em{font-style:italic;color:#f3dfa6;font-weight:600}
.rh-school{font-family:var(--serif);font-size:21px;color:#dfe6f3;margin-top:8px}
.rh-school i{color:var(--gold-2)}
.rh-actions{display:flex;flex-wrap:wrap;gap:10px;margin-top:20px;align-items:center}
.rh-actions .btn.ghost{background:#ffffff10;color:#fff;box-shadow:inset 0 0 0 1px #ffffff33}
.rh-side{display:grid;gap:10px;min-width:220px}
.rh-stat{background:#ffffff0d;border:1px solid #c9a24e40;border-radius:16px;padding:12px 16px;display:flex;align-items:center;gap:12px}
.rh-stat b{font-family:var(--serif);font-size:34px;line-height:1;color:#fff;font-weight:700;min-width:58px}
.rh-stat small{font-size:12px;color:#c3cee0;line-height:1.35}
.rh-medal{display:flex;align-items:center;gap:14px;background:#ffffff0a;border:1px solid #c9a24e4d;border-radius:18px;padding:14px 18px}
.rh-medal>b{font-family:var(--serif);font-size:44px;font-weight:700;width:70px;height:70px;border-radius:50%;display:grid;place-items:center;color:var(--navy);background:var(--gold-grad);box-shadow:0 0 0 3px #0a1f44,0 0 0 4.5px #e8cf8a;line-height:1;padding-top:2px}
.rh-medal span{display:block;font-family:var(--serif);font-size:24px;font-weight:700;color:#fff;line-height:1.1}
.rh-medal small{display:block;font-size:12.5px;color:#c3cee0;margin-top:3px;letter-spacing:.3px}
.class-grid{display:grid;grid-template-columns:repeat(auto-fill,minmax(150px,1fr));gap:12px}
.class-tile{position:relative;text-align:left;background:var(--panel);border:1px solid var(--line);border-radius:14px;padding:14px 16px 13px;color:var(--ink);box-shadow:var(--shadow);overflow:hidden;min-height:92px;display:flex;flex-direction:column;justify-content:space-between}
.class-tile:before{content:"";position:absolute;left:0;top:0;bottom:0;width:4px;background:var(--gold-grad)}
.class-tile.jhs:before{background:var(--navy-grad)}
.class-tile.kg:before{background:linear-gradient(#e8cf8a,#d9b764)}
.class-tile:hover{border-color:var(--gold);transform:translateY(-2px)}
.class-tile small{font-size:10.5px;letter-spacing:1.5px;text-transform:uppercase;font-weight:700;color:var(--muted)}
.class-tile b{font-family:var(--serif);font-size:24px;font-weight:700;line-height:1.1;display:block;margin-top:2px}
.class-tile span{font-size:12.5px;color:var(--muted)}
.class-tile span strong{font-family:var(--serif);font-size:22px;color:var(--ink);font-weight:700}
.class-tile.none span{font-style:italic}

/* ================= Students ================= */
.class-chips{display:flex;gap:8px;overflow-x:auto;padding:2px 2px 6px;margin:0 0 20px;scrollbar-width:thin}
.class-chips button{flex-shrink:0;border:1px solid var(--line);background:var(--panel);color:var(--ink);border-radius:999px;padding:8px 14px;font-size:13px;font-weight:600;min-height:40px;display:inline-flex;gap:7px;align-items:center}
.class-chips button small{font-size:11px;color:var(--muted);font-weight:700;background:var(--panel-soft);border-radius:999px;padding:1px 7px}
.class-chips button.on{background:var(--navy-grad);color:var(--gold-2);border-color:transparent}
.class-chips button.on small{background:#ffffff1f;color:#fff}
.class-group{margin:6px 0 26px}
.class-group>h3{display:flex;align-items:baseline;gap:12px;font-family:var(--serif);font-size:28px;font-weight:700;margin:0 0 14px}
.class-group>h3 small{font-family:var(--font);font-size:12.5px;color:var(--muted);font-weight:600;letter-spacing:.3px}
.class-group>h3:after{content:"";flex:1;height:1px;background:linear-gradient(90deg,#c9a24e88,transparent);align-self:center}
.pupil-grid{display:grid;grid-template-columns:repeat(auto-fill,minmax(210px,1fr));gap:16px}
.pupil-card{position:relative;background:var(--panel);border:1px solid var(--line);border-radius:16px;overflow:hidden;box-shadow:var(--shadow);display:flex;flex-direction:column;text-align:center;cursor:pointer;transition:transform .15s,border-color .15s}
.pupil-card:hover{transform:translateY(-3px);border-color:var(--gold)}
.pc-band{height:62px;background:var(--navy-grad);position:relative;display:flex;align-items:flex-start;justify-content:space-between;padding:10px 12px}
.pc-band:after{content:"";position:absolute;left:0;right:0;bottom:0;height:3px;background:var(--gold-grad)}
.pc-band img{width:26px;height:26px;border-radius:7px;box-shadow:0 0 0 1px var(--gold-2)}
.pc-band span{font-size:10px;letter-spacing:2px;color:var(--gold-2);font-weight:800;text-transform:uppercase;margin-top:6px}
.pc-photo{width:84px;height:104px;margin:-34px auto 0;border-radius:12px;background:#dfe5ee;box-shadow:0 0 0 3px var(--panel),0 0 0 4.5px var(--gold);overflow:hidden;position:relative;display:grid;place-items:center;flex-shrink:0}
.pc-photo img{width:100%;height:100%;object-fit:cover;display:block}
.pc-photo .pc-ini{font-family:var(--serif);font-size:32px;font-weight:700;color:var(--gold-2);width:100%;height:100%;display:grid;place-items:center;background:linear-gradient(160deg,#1a3a73,#0a1f44)}
.pupil-card h3{font-family:var(--serif);font-size:21px;font-weight:700;line-height:1.1;margin:12px 12px 6px;letter-spacing:0}
.pc-role{align-self:center;font-size:10px;letter-spacing:1.6px;text-transform:uppercase;font-weight:800;background:var(--navy);color:var(--gold-2);border-radius:999px;padding:4px 10px}
.pc-ids{display:flex;justify-content:center;gap:18px;margin:12px 12px 0}
.pc-ids small{display:block;font-size:9.5px;letter-spacing:1.5px;color:var(--muted);text-transform:uppercase;font-weight:700}
.pc-ids b{font-size:15px;letter-spacing:.5px;color:var(--ink);font-variant-numeric:tabular-nums}
.pc-facts{margin:14px 0 0;padding:12px 14px;border-top:1px dashed var(--line);display:grid;grid-template-columns:1fr auto;gap:4px 10px;text-align:left;font-size:12.5px}
.pc-facts dt{color:var(--muted);font-size:11.5px}
.pc-facts dd{margin:0;font-weight:650;text-align:right;overflow:hidden;text-overflow:ellipsis;white-space:nowrap;min-width:0}
.pc-facts dd.owe{color:var(--orange)}
.pc-facts dd.ok{color:var(--good)}
.pc-flags{display:flex;gap:6px;justify-content:center;flex-wrap:wrap;padding:0 10px 12px}
.pc-flags:empty{display:none}
.pc-foot{margin-top:auto;border-top:1px solid var(--line);padding:10px 14px;display:flex;justify-content:space-between;align-items:center;font-size:12.5px;color:var(--accent);font-weight:700;background:var(--panel-soft)}
.pc-foot .icon{width:16px;height:16px}
.pupil-card.inactive{opacity:.72}
.pupil-card.inactive .pc-band{background:linear-gradient(160deg,#5b6474,#3b4250)}
.person-cell .pc-mini{width:38px;height:46px;border-radius:8px;overflow:hidden;box-shadow:0 0 0 1.5px var(--gold);flex-shrink:0;display:grid;place-items:center;background:linear-gradient(160deg,#1a3a73,#0a1f44);color:var(--gold-2);font-family:var(--serif);font-weight:700;font-size:17px}
.person-cell .pc-mini img{width:100%;height:100%;object-fit:cover}
@media(max-width:760px){
  .pupil-grid{grid-template-columns:repeat(2,minmax(0,1fr));gap:12px}
  .pc-band{height:50px;padding:8px 9px}.pc-band span{font-size:9px;letter-spacing:1.4px;margin-top:4px}
  .pc-photo{width:70px;height:86px;margin-top:-28px}
  .pupil-card h3{font-size:18px;margin:10px 8px 5px}
  .pc-role{font-size:9px;letter-spacing:1.2px;padding:3px 8px}
  .pc-ids{gap:10px}.pc-ids b{font-size:13px}.pc-ids small{font-size:8.5px}
  .pc-facts{padding:10px;font-size:12px}.pc-facts dt{font-size:11px}
  .pc-foot{padding:9px 10px;font-size:12px}
  .class-group>h3{font-size:24px}
  .royal-hero{flex-direction:column;align-items:flex-start;padding:26px 22px 28px;gap:18px;border-radius:20px}
  .royal-hero:before{background:radial-gradient(circle at 50% 70px,transparent 0 70px,#c9a24e22 71px 72px,transparent 73px 110px,#c9a24e18 111px 112px,transparent 113px),radial-gradient(500px 260px at 90% -20%,#c9a24e24,transparent 60%)}
  .rh-top{display:flex;align-items:center;gap:16px}
  .rh-crest{width:86px;height:86px;border-radius:22px}
  .rh-main h1{font-size:36px}
  .rh-dot{display:none}.rh-school i{display:block}
  .rh-actions{display:grid;grid-template-columns:1fr 1fr;width:100%}.rh-actions .btn{padding:10px 8px;font-size:12.5px}
  .rh-school{font-size:18px}
  .rh-side{width:100%;grid-template-columns:1fr 1fr;min-width:0}
  .rh-stat{padding:10px 12px}.rh-stat b{font-size:28px;min-width:0}
  .rh-side{grid-template-columns:1fr}
  .rh-medal{padding:10px 14px}.rh-medal>b{width:54px;height:54px;font-size:34px}.rh-medal span{font-size:20px}
  .class-grid{grid-template-columns:repeat(2,minmax(0,1fr))}
}

/* ================= Pupil page ================= */
.pupil-hero{position:relative;overflow:hidden;border-radius:22px;background:var(--navy-grad);color:#fff;padding:30px 34px;display:flex;align-items:center;gap:30px;margin-bottom:18px;isolation:isolate;box-shadow:0 22px 50px -30px #06142fcc}
.pupil-hero:after{content:"";position:absolute;left:0;right:0;bottom:0;height:4px;background:var(--gold-grad)}
.ph-watermark{position:absolute;right:-40px;top:50%;transform:translateY(-50%);width:300px;height:300px;opacity:.08;z-index:-1;border-radius:60px}
.ph-photo{width:150px;height:186px;border-radius:18px;overflow:hidden;flex-shrink:0;box-shadow:0 0 0 4px #0a1f44,0 0 0 6px var(--gold-2),0 18px 36px #0009;background:#dfe5ee;display:grid;place-items:center;position:relative}
.ph-photo img{width:100%;height:100%;object-fit:cover}
.ph-photo .pc-ini{font-family:var(--serif);font-size:58px;font-weight:700;color:var(--gold-2);width:100%;height:100%;display:grid;place-items:center;background:linear-gradient(160deg,#1a3a73,#0a1f44)}
.ph-photo button{position:absolute;left:8px;right:8px;bottom:8px;border-radius:10px;background:#0a1f44d9;color:#f3dfa6;font-size:11.5px;font-weight:700;padding:6px 4px;border:1px solid #c9a24e66}
.ph-main{flex:1;min-width:0}
.ph-main .rh-eyebrow{margin-bottom:8px}
.ph-main h1{font-family:var(--serif);font-size:50px;font-weight:700;line-height:1;letter-spacing:0}
.ph-role{display:inline-block;margin-top:12px;font-size:11px;letter-spacing:2px;text-transform:uppercase;font-weight:800;background:var(--gold-grad);color:var(--navy);border-radius:999px;padding:5px 13px}
.ph-ids{display:flex;flex-wrap:wrap;gap:12px 28px;margin-top:18px}
.ph-ids small{display:block;font-size:10px;letter-spacing:1.8px;text-transform:uppercase;color:#aebbd3;font-weight:700}
.ph-ids b{font-size:21px;letter-spacing:.6px;font-variant-numeric:tabular-nums}
.ph-ids .badge{margin-top:4px}
.ph-actions{display:flex;flex-direction:column;gap:10px;align-self:stretch;justify-content:center;min-width:190px}
.ph-actions .btn.ghost{background:#ffffff10;color:#fff;box-shadow:inset 0 0 0 1px #ffffff33}
.pupil-facts{display:grid;grid-template-columns:repeat(4,minmax(0,1fr));gap:14px;margin-bottom:22px}
.pf{background:var(--panel);border:1px solid var(--line);border-radius:14px;padding:14px 16px;box-shadow:var(--shadow);min-width:0;position:relative}
.pf small{display:flex;align-items:center;gap:7px;font-size:10.5px;letter-spacing:1.4px;text-transform:uppercase;font-weight:700;color:var(--muted)}
.pf small .icon{width:15px;height:15px;color:var(--gold-deep)}
.pf b{display:block;font-family:var(--serif);font-size:26px;font-weight:700;margin-top:6px;line-height:1.1;overflow:hidden;text-overflow:ellipsis;white-space:nowrap}
.pf span{display:block;font-size:12.5px;color:var(--muted);margin-top:3px;overflow:hidden;text-overflow:ellipsis;white-space:nowrap}
.pf.alert{background:#fbf3df;border-color:#e4c98a}
.pf.alert b{color:#7c5a14;font-family:var(--font);font-size:15px;white-space:normal;margin-top:8px}
[data-theme=dark] .pf.alert{background:#3a2e1a;border-color:#6b5427}
[data-theme=dark] .pf.alert b{color:#f0c47e}
@media(max-width:960px){.pupil-facts{grid-template-columns:repeat(2,minmax(0,1fr))}}
@media(max-width:760px){
  .pupil-hero{flex-direction:column;text-align:center;padding:26px 20px 24px;gap:16px}
  .ph-photo{width:128px;height:158px}
  .ph-main h1{font-size:38px}
  .ph-ids{justify-content:center;gap:10px 22px}
  .ph-ids b{font-size:18px}
  .ph-actions{flex-direction:row;min-width:0;width:100%}
  .ph-actions .btn{flex:1}
  .ph-watermark{right:50%;transform:translate(50%,-50%);width:260px;height:260px}
  .pupil-facts{gap:10px}
  .pf{padding:12px}.pf b{font-size:22px}
}

/* Serif numbers stand on the line (Cormorant's default numbers dip like small letters). */
h1,h2,h3,.serif,.metric-value,.class-tile b,.class-tile strong,.rh-medal,.donut strong,.pf b,.pupil-card h3,.class-group>h3,.ph-main h1,.rh-main h1{font-variant-numeric:lining-nums proportional-nums;font-feature-settings:"lnum" 1}
.pc-facts{grid-template-columns:auto minmax(0,1fr)}
.pc-facts dt{white-space:nowrap}
.school-sync-banner{background:var(--panel-soft);color:var(--muted);border-bottom:1px solid var(--line);font-size:12.5px}
.school-sync-banner .text-btn{color:var(--gold-deep)}
#view:focus,#view:focus-visible{outline:none}
.pf a,.activity-item a,.person-card a{color:inherit;text-decoration-color:#c9a24e99;text-underline-offset:3px}
.ph-watermark{opacity:.06}

/* ================= Add a class list (handover #25) ================= */
.cl-steps{display:flex;gap:10px;list-style:none;padding:0;margin:0 0 20px;flex-wrap:wrap}
.cl-steps li{display:flex;align-items:center;gap:9px;padding:8px 14px 8px 8px;border-radius:999px;border:1px solid var(--line);background:var(--panel);font-size:13px;font-weight:650;color:var(--muted)}
.cl-steps li b{width:26px;height:26px;border-radius:50%;display:grid;place-items:center;background:var(--panel-soft);color:var(--muted);font-size:12.5px}
.cl-steps li b .icon{width:15px;height:15px}
.cl-steps li.on{border-color:var(--gold);color:var(--ink)}.cl-steps li.on b{background:var(--navy-grad);color:var(--gold-2)}
.cl-steps li.done b{background:var(--good-soft);color:var(--good)}
.class-tile.cl-next{border-color:var(--gold);box-shadow:0 0 0 3px #c9a24e33,var(--shadow)}
.class-tile.cl-next small{color:var(--gold-deep)}
.cl-card{padding-bottom:18px}
.cl-grid{display:grid;gap:8px}
.cl-row{display:grid;grid-template-columns:34px minmax(180px,2fr) 108px 150px minmax(150px,1.4fr) 150px 38px;gap:8px;align-items:center}
.cl-row.cl-hd{font-size:10.5px;letter-spacing:1.4px;text-transform:uppercase;font-weight:750;color:var(--gold-deep);padding:0 0 4px;border-bottom:1px solid #c9a24e55}
.cl-row label small{display:none}
.cl-row input,.cl-row select{width:100%;min-height:42px;border:1px solid var(--line);border-radius:10px;background:var(--panel);color:var(--ink);padding:8px 10px;font-size:14px;min-width:0}
.cl-row input:focus,.cl-row select:focus{border-color:var(--gold);outline:none;box-shadow:0 0 0 3px #c9a24e26}
.cl-n{font-family:var(--serif);font-weight:700;font-size:20px;color:var(--gold-deep);text-align:center}
.cl-problems{border-color:#e4b0b0}
.cl-done{margin-top:6px}
.sticky-save .actions{display:flex;gap:10px;flex-wrap:wrap}
@media(max-width:1100px){
  .cl-row.cl-hd{display:none}
  .cl-row{grid-template-columns:30px 1fr 1fr 38px;grid-template-areas:"n name name x" "n g d x" "n p ph x";background:var(--panel-soft);border:1px solid var(--line);border-radius:14px;padding:10px 8px}
  .cl-row .cl-n{grid-area:n;align-self:start;padding-top:22px}
  .cl-row label:nth-of-type(1){grid-area:name}.cl-row label:nth-of-type(2){grid-area:g}.cl-row label:nth-of-type(3){grid-area:d}.cl-row label:nth-of-type(4){grid-area:p}.cl-row label:nth-of-type(5){grid-area:ph}
  .cl-row .icon-btn{grid-area:x;align-self:start}
  .cl-row label small{display:block;font-size:11px;font-weight:650;color:var(--muted);margin:0 0 3px 2px}
}
@media(max-width:520px){.cl-row{grid-template-columns:26px 1fr 34px;grid-template-areas:"n name x" "n g x" "n d x" "n p x" "n ph x"}.cl-steps li span{display:none}.cl-steps li{padding-right:8px}}

/* ================= Registers watch screen (handover #25) ================= */
.rw-card{margin-bottom:20px}
.rw-grid{display:grid;grid-template-columns:repeat(auto-fill,minmax(170px,1fr));gap:10px}
.rw-tile{text-align:left;border:1px solid var(--line);background:var(--panel);border-radius:14px;padding:12px 14px;color:var(--ink);display:flex;flex-direction:column;gap:5px;position:relative;overflow:hidden}
.rw-tile:before{content:"";position:absolute;left:0;top:0;bottom:0;width:4px;background:var(--good)}
.rw-tile.wait:before{background:#d9a441}
.rw-tile.on{border-color:var(--gold);box-shadow:0 0 0 3px #c9a24e33}
.rw-tile b{font-family:var(--serif);font-size:22px;font-weight:700;line-height:1.1}
.rw-nums{display:flex;flex-wrap:wrap;gap:5px}
.rw-nums i{font-style:normal;font-size:11.5px;font-weight:700;border-radius:999px;padding:2px 8px}
.rw-nums .p{background:var(--good-soft);color:var(--good)}.rw-nums .a{background:var(--red-soft);color:var(--red)}.rw-nums .l{background:var(--orange-soft);color:var(--orange)}.rw-nums .w{background:#fbf0d9;color:#8a5a0c}
.rw-tile small{font-size:11.5px;color:var(--muted);white-space:nowrap;overflow:hidden;text-overflow:ellipsis}
[data-theme=dark] .rw-nums .w{background:#3a2e1a;color:#f0c47e}
.notice-card .text-btn+.text-btn{margin-left:14px}

/* ================= Messages (handover #27) ================= */
.cm-grid{display:grid;grid-template-columns:minmax(0,1fr) 320px;gap:20px;align-items:start}
.cm-h{font-family:var(--serif);font-size:22px;font-weight:700;margin:18px 0 10px}.cm-form .cm-h:first-of-type{margin-top:0}
.cm-chips{display:flex;flex-wrap:wrap;gap:8px}
.cm-chips button{display:inline-flex;align-items:center;gap:7px;border:1px solid var(--line);background:var(--panel);color:var(--ink);border-radius:999px;padding:9px 14px;font-size:13.5px;font-weight:650;min-height:42px}
.cm-chips button .icon{width:17px;height:17px;color:var(--gold-deep)}
.cm-chips button.on{background:var(--navy-grad);color:var(--gold-2);border-color:transparent}.cm-chips button.on .icon{color:var(--gold-2)}
.cm-pick{margin-top:12px;display:grid;grid-template-columns:repeat(auto-fill,minmax(210px,1fr));gap:8px}
.cm-pick .input-wrap{grid-column:1/-1}
.cm-chosen{grid-column:1/-1;display:flex;flex-wrap:wrap;gap:6px}.cm-chosen .badge button{background:none;color:inherit;font-weight:800;padding:0 0 0 4px}
#cmPupilHits{grid-column:1/-1;display:grid;gap:4px}
.cm-hit{text-align:left;background:var(--panel-soft);border:1px solid var(--line);border-radius:10px;padding:8px 12px;color:var(--ink);font-weight:650}.cm-hit small{color:var(--muted);font-weight:500;margin-left:6px}
.cm-types{display:grid;grid-template-columns:repeat(3,1fr);gap:8px}
.cm-types button{text-align:left;border:1px solid var(--line);background:var(--panel);border-radius:14px;padding:12px;color:var(--ink);display:flex;flex-direction:column;gap:3px;border-left:5px solid var(--line)}
.cm-types button b{font-size:14px}.cm-types button small{font-size:12px;color:var(--muted)}
.cm-types button.t-fyi{border-left-color:#5b7fc4}.cm-types button.t-action{border-left-color:#d9a441}.cm-types button.t-urgent{border-left-color:var(--red)}
.cm-types button.on{border-color:var(--gold);box-shadow:0 0 0 3px #c9a24e33;background:var(--panel-soft)}
.cm-tpl{display:flex;flex-wrap:wrap;gap:6px;align-items:center;margin-bottom:12px}
.cm-preview{position:sticky;top:100px}
.cm-phone{background:#e9edf3;border-radius:34px;border:8px solid #0a1f44;padding:0 0 18px;min-height:420px;box-shadow:0 20px 40px -24px #06142f99;overflow:hidden}
.cm-bar{display:flex;align-items:center;gap:10px;background:var(--navy-grad);color:#fff;padding:14px}
.cm-bar img{width:34px;height:34px;border-radius:9px}.cm-bar b{display:block;font-size:14px}.cm-bar small{font-size:11px;color:var(--gold-2)}
.cm-bubble{margin:14px;background:#fff;color:#0d1f3c;border-radius:4px 16px 16px 16px;padding:12px 14px;font-size:13.5px;line-height:1.5;box-shadow:0 2px 6px #0001}
.cm-bubble b{display:block;margin-bottom:4px}.cm-bubble p{margin:0 0 6px}.cm-bubble small{color:#6b7686}.cm-bubble mark{background:#fbe7a8;border-radius:3px}
.cm-tag{display:inline-block;font-size:10px;font-weight:800;letter-spacing:1px;text-transform:uppercase;border-radius:999px;padding:2px 8px;margin-bottom:6px;background:#ecf1fa;color:#2f5597}
.cm-tag.t-action{background:#fbf0d9;color:#8a5a0c}.cm-tag.t-urgent{background:#f9e3e3;color:#9a2f2f}
.cm-prog{height:10px;border-radius:99px;background:var(--panel-soft);overflow:hidden;border:1px solid var(--line)}.cm-prog div{height:100%;background:var(--gold-grad);transition:width .3s}
.cm-stats{display:grid;grid-template-columns:repeat(auto-fit,minmax(90px,1fr));gap:8px;margin-top:14px}
.cm-stats div{border:1px solid var(--line);border-radius:12px;padding:10px;text-align:center;background:var(--panel)}
.cm-stats b{display:block;font-family:var(--serif);font-size:28px;line-height:1}.cm-stats small{font-size:11.5px;color:var(--muted)}
.cm-stats .good b{color:var(--good)}.cm-stats .bad b{color:var(--red)}
.cm-list{display:grid;gap:8px}
.cm-item{display:flex;align-items:center;gap:12px;text-align:left;border:1px solid var(--line);background:var(--panel);border-radius:14px;padding:12px 14px;color:var(--ink);box-shadow:var(--shadow)}
.cm-item:hover{border-color:var(--gold)}
.cm-dot{width:10px;height:10px;border-radius:50%;flex-shrink:0;background:#5b7fc4}.cm-dot.t-action{background:#d9a441}.cm-dot.t-urgent{background:var(--red)}.cm-dot.t-staff{background:var(--gold)}
.cm-main{flex:1;min-width:0}.cm-main b{display:block;font-size:14.5px}.cm-main small{font-size:12px;color:var(--muted)}
.cm-reach{text-align:right;min-width:92px}.cm-reach b{font-family:var(--serif);font-size:22px}.cm-reach small{display:block;font-size:11px;color:var(--muted)}
.cm-mini{display:block;height:5px;border-radius:9px;background:var(--panel-soft);margin-top:4px;overflow:hidden}.cm-mini i{display:block;height:100%;background:var(--good)}
.cm-sentbody{background:var(--panel-soft);border:1px solid var(--line);border-radius:12px;padding:12px 14px;font-size:14px;line-height:1.55}
@media(max-width:960px){.cm-grid{grid-template-columns:1fr}.cm-preview{position:static;max-width:340px;margin:0 auto}}
@media(max-width:560px){.cm-types{grid-template-columns:1fr}.cm-item{flex-wrap:wrap}.cm-reach{text-align:left}}

/* ================= Operations (handover #27) ================= */
.ops-seg{display:none;margin-bottom:12px}
.ops-board{display:grid;grid-template-columns:repeat(3,minmax(0,1fr));gap:16px;align-items:start}
.ops-col{background:var(--panel-soft);border:1px solid var(--line);border-radius:16px;padding:12px;min-height:160px}
.ops-col h3{display:flex;justify-content:space-between;align-items:center;font-family:var(--serif);font-size:22px;margin:2px 4px 12px}
.ops-col h3 small{font-family:var(--font);font-size:12px;background:var(--panel);border:1px solid var(--line);border-radius:999px;padding:1px 9px;color:var(--muted)}
.ops-empty{font-size:13px;text-align:center;padding:18px 0}
.ops-card{background:var(--panel);border:1px solid var(--line);border-left:5px solid #9aa8bb;border-radius:14px;padding:12px;margin-bottom:10px;cursor:pointer;box-shadow:var(--shadow)}
.ops-card.u-urgent{border-left-color:var(--red)}.ops-card.u-week{border-left-color:#d9a441}
.ops-card:hover{border-color:var(--gold)}
.ops-ph{width:100%;height:120px;object-fit:cover;border-radius:10px;margin-bottom:8px;display:block}
.ops-top{display:flex;justify-content:space-between;align-items:center}
.ops-cost{font-size:12.5px;font-weight:750;color:var(--gold-deep)}
.ops-card h4{font-size:15px;margin:8px 0 2px}.ops-card p{font-size:12.5px;color:var(--muted)}
.ops-meta{display:flex;justify-content:space-between;gap:8px;font-size:12px;color:var(--muted);margin:8px 0}
.ops-meta span{display:inline-flex;gap:4px;align-items:center}.ops-meta .icon{width:14px;height:14px}
.ops-big{width:100%;max-height:340px;object-fit:contain;border-radius:12px;background:#000;margin-bottom:12px}
.ops-urg{display:grid;grid-template-columns:repeat(3,1fr);gap:8px}
.ops-urg label{border:1px solid var(--line);border-radius:12px;padding:10px;display:flex;flex-direction:column;gap:3px;cursor:pointer;border-left:5px solid #9aa8bb}
.ops-urg label.u-urgent{border-left-color:var(--red)}.ops-urg label.u-week{border-left-color:#d9a441}
.ops-urg label:has(input:checked){border-color:var(--gold);box-shadow:0 0 0 3px #c9a24e33}
.ops-urg label{position:relative}.ops-urg input{position:absolute;opacity:0;inset:0;width:100%;height:100%;margin:0;cursor:pointer}.ops-urg b{font-size:14px}.ops-urg small{font-size:11.5px;color:var(--muted)}
.ops-sup{display:grid;grid-template-columns:repeat(auto-fill,minmax(260px,1fr));gap:12px}
.ops-si{background:var(--panel);border:1px solid var(--line);border-radius:14px;padding:14px;box-shadow:var(--shadow)}
.ops-si.low{border-color:#e4b0b0;background:linear-gradient(0deg,var(--red-soft),var(--panel) 60%)}
.ops-si-top{display:flex;justify-content:space-between;gap:10px}.ops-si-top b{font-size:15px}.ops-si-top small{display:block;font-size:12px;color:var(--muted)}
.ops-si-top strong{font-family:var(--serif);font-size:30px;line-height:1}.ops-si-top strong small{font-family:var(--font);font-size:12px;display:inline}
.ops-si.low .ops-si-top small{color:var(--red)}
.ops-bar{height:8px;border-radius:9px;background:var(--panel-soft);margin:10px 0;overflow:hidden}.ops-bar i{display:block;height:100%;background:var(--good)}.ops-si.low .ops-bar i{background:var(--red)}
@media(max-width:900px){.ops-seg{display:inline-flex}.ops-board{grid-template-columns:1fr}.ops-col{display:none}.ops-col.on{display:block}.ops-urg{grid-template-columns:1fr}}

/* ================= Activity (handover #27) ================= */
.act-filters{display:flex;flex-wrap:wrap;gap:8px;align-items:center;margin-bottom:16px}
.act-filters .input-wrap{flex:1;min-width:220px}.act-filters .input-wrap input{width:100%}
.act-day{margin-bottom:18px}
.act-day h3{font-family:var(--serif);font-size:22px;margin:0 0 8px}
.act-row{display:flex;align-items:center;gap:12px;width:100%;text-align:left;background:var(--panel);border:1px solid var(--line);border-radius:12px;padding:10px 12px;margin-bottom:6px;color:var(--ink)}
button.act-row:hover{border-color:var(--gold)}
.act-row time{font-size:12.5px;color:var(--muted);min-width:44px;font-variant-numeric:tabular-nums}
.act-row .avatar{width:32px;height:32px;border-radius:50%;font-size:11px}
.act-main{flex:1;min-width:0}.act-main b{font-size:13.5px;font-weight:650}.act-main b span{font-weight:800}.act-main small{display:block;font-size:11.5px;color:var(--muted)}
.act-row>.icon{width:16px;height:16px;color:var(--muted)}
.act-diff td.was{color:var(--red);text-decoration:line-through;text-decoration-color:#a93d3d66}.act-diff td.now{color:var(--good);font-weight:650}
.act-vers{display:flex;flex-wrap:wrap;gap:6px}.act-vers span{font-size:12px;border:1px solid var(--line);border-radius:999px;padding:3px 10px;color:var(--muted)}.act-vers span.on{border-color:var(--gold);color:var(--ink);font-weight:700}
@media(max-width:560px){.act-row .badge{display:none}}

/* ================= Reports & insights (handover #27) ================= */
.ins-period{display:flex;flex-wrap:wrap;gap:8px;align-items:center;margin-bottom:16px}
.ins-period button{border:1px solid var(--line);background:var(--panel);color:var(--ink);border-radius:999px;padding:8px 14px;font-weight:650;font-size:13px;min-height:40px}
.ins-period button.on{background:var(--navy-grad);color:var(--gold-2);border-color:transparent}
.ins-period input{min-height:40px;border:1px solid var(--line);border-radius:10px;padding:0 10px;background:var(--panel);color:var(--ink)}
.ins-grid{display:grid;grid-template-columns:repeat(2,minmax(0,1fr));gap:20px;margin-top:20px}
.ins-wide{grid-column:1/-1}
.ins-bars{display:grid;gap:8px}
.ins-bar{display:grid;grid-template-columns:110px minmax(0,1fr) auto;gap:10px;align-items:center;font-size:13px}
.ins-bar>span{font-weight:650;overflow:hidden;text-overflow:ellipsis;white-space:nowrap}
.ins-bar>div{height:12px;border-radius:9px;background:var(--panel-soft);overflow:hidden;border:1px solid var(--line)}
.ins-bar>div i{display:block;height:100%;background:var(--navy-grad)}
.ins-bar>b{font-variant-numeric:tabular-nums;min-width:70px;text-align:right}.ins-bar>b small{display:block;font-weight:500;color:var(--muted);font-size:11px}
.ins-bars i.good,.ins-cols i.good{background:linear-gradient(90deg,#2f8f67,#1d6b4f)}.ins-bars i.warn,.ins-cols i.warn{background:linear-gradient(90deg,#e0b457,#c9922f)}.ins-bars i.bad,.ins-cols i.bad{background:linear-gradient(90deg,#c65a5a,#a93d3d)}.ins-cols i.gold{background:var(--gold-grad)}
.ins-cols{display:flex;align-items:flex-end;gap:6px;height:170px;overflow-x:auto;padding-bottom:4px}
.ins-col{display:flex;flex-direction:column;align-items:center;gap:4px;flex:0 0 var(--w);height:100%}
.ins-colbar{flex:1;width:100%;display:flex;align-items:flex-end;background:var(--panel-soft);border-radius:6px 6px 0 0;overflow:hidden}
.ins-colbar i{display:block;width:100%;background:var(--navy-grad);border-radius:6px 6px 0 0}
.ins-col small{font-size:10px;color:var(--muted);white-space:nowrap}
.ins-legend{display:flex;gap:12px;font-size:11.5px;color:var(--muted);margin-top:6px}.ins-legend span:before{content:"";display:inline-block;width:10px;height:10px;border-radius:3px;margin-right:4px;vertical-align:-1px}
.ins-legend .good:before{background:#1d6b4f}.ins-legend .warn:before{background:#c9922f}.ins-legend .bad:before{background:#a93d3d}
.ins-tiles{display:grid;grid-template-columns:repeat(3,1fr);gap:8px;margin-bottom:12px}
.ins-tiles div{border:1px solid var(--line);border-radius:12px;padding:10px 12px;background:var(--panel-soft)}.ins-tiles small{font-size:11.5px;color:var(--muted);display:block}.ins-tiles b{font-family:var(--serif);font-size:24px}
.ins-small{display:flex;flex-wrap:wrap;gap:6px 14px;font-size:12.5px;color:var(--muted);margin-top:10px}.ins-small b{color:var(--ink)}
.ins-2{display:grid;grid-template-columns:1fr 1fr;gap:20px}
.ins-best{display:flex;flex-wrap:wrap;gap:4px 10px;align-items:baseline;padding:6px 0;border-bottom:1px dashed var(--line);font-size:13px}.ins-best b{min-width:70px}.ins-best small{color:var(--muted)}
@media(max-width:960px){.ins-grid,.ins-2{grid-template-columns:1fr}}
@media(max-width:520px){.ins-bar{grid-template-columns:78px minmax(0,1fr) auto}.ins-tiles b{font-size:19px}}
#insPrintArea{display:none}
@media print{
  body.ins-printing>*:not(#insPrintArea){display:none!important}
  body.ins-printing{background:#fff}
  body.ins-printing #insPrintArea{display:block}
  .insp-page{font-family:Georgia,serif;color:#0d1f3c;padding:8mm}
  .insp-page header{display:flex;gap:14px;align-items:center;border-bottom:3px double #b3862a;padding-bottom:8px;margin-bottom:12px}
  .insp-page header img{width:62px;height:62px}.insp-page h1{font-size:20px;margin:0}.insp-page header p{margin:4px 0 0;font-size:12px;font-family:Arial,sans-serif}
  .insp-nums{display:grid;grid-template-columns:repeat(5,1fr);gap:6px;margin-bottom:10px}.insp-nums div{border:1px solid #b3862a;border-radius:6px;padding:6px;text-align:center}.insp-nums small{display:block;font-size:10px;font-family:Arial,sans-serif}.insp-nums b{font-size:17px}
  .insp-page h2{font-size:15px;margin:12px 0 4px;color:#7f5a0c}
  .insp-page table{width:100%;border-collapse:collapse;font-family:Arial,sans-serif;font-size:11px;min-width:0;margin-bottom:6px}.insp-page th,.insp-page td{border:1px solid #c9ced8;padding:4px 6px;text-align:left;background:none;color:#0d1f3c}
  .insp-page th{background:#f3ecd9!important;-webkit-print-color-adjust:exact;print-color-adjust:exact}
  .insp-page p{font-family:Arial,sans-serif;font-size:12px}
  .insp-page footer{margin-top:14px;font-size:10px;font-family:Arial,sans-serif;color:#667}
  @page{size:A4;margin:10mm}
}

/* ================= Timetable (handover #28) ================= */
.tt-week{display:flex;align-items:center;gap:10px;flex-wrap:wrap;background:var(--panel);border:1px solid var(--line);border-radius:14px;padding:8px 12px;margin-bottom:14px}
.tt-week>div{min-width:160px}.tt-week b{display:block;font-family:var(--serif);font-size:20px}.tt-week small{font-size:12px;color:var(--muted)}
.tt-week select{margin-left:auto}
.tt-planpick{display:flex;align-items:center;gap:8px;font-size:12.5px;color:var(--muted)}.tt-planpick select{min-height:38px;border-radius:10px;border:1px solid var(--line);background:var(--panel);color:var(--ink);padding:0 8px}
.tt-grid{display:grid;grid-template-columns:96px repeat(var(--cols),minmax(92px,1fr));gap:4px;overflow-x:auto}
.tt-corner{background:transparent}
.tt-time{background:var(--navy-grad);color:#fff;border-radius:10px;padding:6px 8px;text-align:center}
.tt-time b{display:block;font-size:12px;font-variant-numeric:tabular-nums}.tt-time small{font-size:10.5px;color:var(--gold-2)}
.tt-time.band{background:#3b4a66}
.tt-day{display:flex;align-items:center;font-family:var(--serif);font-size:18px;font-weight:700;padding:0 6px}
.tt-cell{min-height:70px;border:1px solid var(--line);background:var(--panel);border-radius:10px;padding:6px 7px;text-align:left;display:flex;flex-direction:column;gap:1px;color:var(--ink);cursor:pointer}
.tt-cell:hover{border-color:var(--gold)}
.tt-cell b{font-size:12.5px;line-height:1.2}.tt-cell i{font-size:11px;color:var(--gold-deep);font-style:normal;font-weight:700}.tt-cell small{font-size:11px;color:var(--muted);margin-top:auto}
.tt-cell.empty{align-items:center;justify-content:center;color:var(--muted);font-size:20px;background:var(--panel-soft);border-style:dashed}
.tt-cell.act{background:#fbf3df;border-color:#e7d3a1}
[data-theme=dark] .tt-cell.act{background:#2b2616;border-color:#5b4c25}
.tt-band{border-radius:10px;background:repeating-linear-gradient(135deg,var(--panel-soft) 0 8px,transparent 8px 16px),var(--panel);border:1px solid var(--line);display:flex;align-items:center;justify-content:center;text-align:center;font-weight:700;font-size:12px;color:var(--muted);writing-mode:vertical-rl;transform:rotate(180deg);padding:6px 2px}
.tt-days-m,.tt-mlist{display:none}
.tt-mrow{display:grid;grid-template-columns:62px 1fr;gap:8px;align-items:stretch;margin-bottom:6px}
.tt-mrow time{font-weight:750;font-size:13px;font-variant-numeric:tabular-nums;padding-top:6px}.tt-mrow time small{display:block;font-weight:500;color:var(--muted);font-size:11.5px}
.tt-mrow .tt-band{writing-mode:horizontal-tb;transform:none;min-height:40px}
.tt-mrow .tt-cell{min-height:58px}
.tt-tday{border-top:1px solid var(--line);padding:10px 0}.tt-tday h3{font-family:var(--serif);font-size:20px;margin:0 0 6px}
.tt-tl{display:flex;align-items:center;gap:10px;padding:6px 0;font-size:13.5px}.tt-tl time{min-width:96px;color:var(--muted);font-variant-numeric:tabular-nums}.tt-tl b{flex:1}.tt-tl.act b{color:var(--gold-deep)}
.tt-pname{font-family:var(--serif);font-size:24px;font-weight:700;border:0;border-bottom:1px dashed var(--line);background:transparent;color:var(--ink);width:100%;max-width:360px}
.tt-prows{display:grid;gap:6px}
.tt-prow{display:grid;grid-template-columns:110px 24px 110px 170px minmax(0,1fr) 38px;gap:6px;align-items:center;font-size:13px;color:var(--muted)}
.tt-prow input,.tt-prow select{min-height:40px;border:1px solid var(--line);border-radius:9px;background:var(--panel);color:var(--ink);padding:0 8px;min-width:0}
@media(max-width:760px){
  .tt-grid{display:none}.tt-days-m{display:inline-flex;margin-bottom:10px}.tt-mlist{display:block}
  .tt-prow{grid-template-columns:1fr 18px 1fr 38px;grid-template-areas:"s t e x" "k k k k" "l l l l"}.tt-prow>input:nth-of-type(1){grid-area:s}.tt-prow>span{grid-area:t}.tt-prow>input:nth-of-type(2){grid-area:e}.tt-prow select{grid-area:k}.tt-prow>input:nth-of-type(3){grid-area:l}.tt-prow .icon-btn{grid-area:x}
  .tt-prow{border-bottom:1px dashed var(--line);padding-bottom:8px}
  .tt-week select{margin-left:0;width:100%}
}
#ttPrintArea{display:none}
@media print{
  body.tt-printing>*:not(#ttPrintArea){display:none!important}
  body.tt-printing{background:#fff}body.tt-printing #ttPrintArea{display:block}
  .ttp-page{page-break-after:always;break-after:page;padding:4mm;font-family:Arial,sans-serif;color:#0d1f3c}
  .ttp-page:last-child{page-break-after:auto;break-after:auto}
  .ttp-page header{display:flex;align-items:center;gap:12px;border-bottom:3px double #b3862a;padding-bottom:6px;margin-bottom:8px}
  .ttp-page header img{width:52px;height:52px}.ttp-page h1{font-family:Georgia,serif;font-size:18px;margin:0}.ttp-page header p{margin:2px 0 0;font-size:11px;font-style:italic}
  .ttp-title{margin-left:auto;text-align:right;background:#0a1f44!important;color:#fff;border-radius:6px;padding:6px 12px;-webkit-print-color-adjust:exact;print-color-adjust:exact}.ttp-title b{display:block;font-family:Georgia,serif;font-size:20px;color:#e8cf8a}.ttp-title small{font-size:10px}
  .ttp-page table{width:100%;border-collapse:collapse;min-width:0;table-layout:fixed}
  .ttp-page th,.ttp-page td{border:1.2px solid #0d1f3c;padding:4px;text-align:center;vertical-align:middle;font-size:10.5px;background:none;color:#0d1f3c}
  .ttp-page thead th{background:#0a1f44!important;color:#fff;font-size:10px;-webkit-print-color-adjust:exact;print-color-adjust:exact}
  .ttp-page th.ttp-day{width:26mm;font-family:Georgia,serif;font-size:11px;letter-spacing:.5px;background:#f3ecd9!important;-webkit-print-color-adjust:exact;print-color-adjust:exact}
  .ttp-page thead th.ttp-day{background:#0a1f44!important}
  .ttp-page td b{display:block;font-size:11.5px}.ttp-page td i{display:block;font-size:9.5px;font-style:italic;color:#7f5a0c}.ttp-page td small{display:block;font-size:9.5px;color:#3b4a66;margin-top:2px}
  .ttp-page td.ttp-band{background:#faf6ec!important;-webkit-print-color-adjust:exact;print-color-adjust:exact;width:12mm}.ttp-page td.ttp-band span{writing-mode:vertical-rl;transform:rotate(180deg);font-weight:700;font-size:10px;letter-spacing:1px;text-transform:uppercase}
  .ttp-page tbody tr{height:26mm}
  .ttp-list td{vertical-align:top;text-align:left}.ttp-l{border-bottom:1px dashed #c9ced8;padding:4px 0}.ttp-l small{display:block;font-size:9.5px;color:#3b4a66}.ttp-l b{display:block;font-size:11px}.ttp-l span{font-size:10px;color:#7f5a0c;font-weight:700}
  .ttp-page footer{margin-top:6px;font-size:9px;color:#667}
  @page ttland{size:A4 landscape;margin:8mm}
  /* Update 34: a class timetable fills the whole landscape page (rows share the height left under the heading). */
  .ttp-page{height:193mm;box-sizing:border-box;display:flex;flex-direction:column;overflow:hidden}
  .ttp-page .ttp-fill{flex:1 1 auto;min-height:0;display:flex}
  .ttp-page .ttp-fill table{height:100%}
  .ttp-page tbody tr{height:auto}
  .ttp-page th,.ttp-page td{font-size:12px;padding:5px}
  .ttp-page thead th{font-size:12px;padding:7px 4px}
  .ttp-page th.ttp-day{font-size:13px}
  .ttp-page td b{font-size:14px;letter-spacing:.2px}.ttp-page td i{font-size:11.5px}.ttp-page td small{font-size:11.5px;margin-top:4px}
  .ttp-page td.ttp-band span{font-size:12px;letter-spacing:2px}
  .ttp-page.ttp-dense td b{font-size:12px}.ttp-page.ttp-dense td small,.ttp-page.ttp-dense td i{font-size:10px}.ttp-page.ttp-dense thead th{font-size:10.5px}
  .ttp-list .ttp-l b{font-size:12.5px}.ttp-list .ttp-l small{font-size:11px}
  .ttp-page{page:ttland}
  /* Classroom QR poster (handover #38) */
  .ttp-poster{font-family:Arial,sans-serif;color:#000;text-align:center}
  .ttp-poster header{display:flex;align-items:center;gap:12px;border-bottom:3px double #000;padding-bottom:6px;text-align:left}
  .ttp-poster header img{width:60px;height:60px;filter:grayscale(1)}.ttp-poster h1{font-family:Georgia,serif;font-size:20px;margin:0}.ttp-poster header p{margin:2px 0 0;font-size:12px;font-style:italic}
  .ttp-cls{font-family:Georgia,serif;font-size:54px;font-weight:700;margin:8mm 0 1mm;line-height:1.1}
  .ttp-sub{font-size:16px;letter-spacing:.3em;font-weight:700}
  .ttp-qr{width:100mm;height:100mm;margin:6mm auto;display:block;image-rendering:pixelated}
  .ttp-poster ol{display:inline-block;text-align:left;font-size:17px;line-height:1.7;margin:0}
  .ttp-poster footer{margin-top:6mm;font-size:11px;color:#444}
  .ttp-poster{break-inside:avoid}
}

/* ---------- Classroom tap-in (handover #38) ---------- */
.room-list{display:grid;gap:10px;margin-top:12px}
.room-row{display:flex;gap:12px;align-items:center;justify-content:space-between;flex-wrap:wrap;border:1px solid var(--line);border-radius:14px;padding:12px 14px}
.room-row b{font-size:16px}.room-row small{display:block;margin-top:4px;color:var(--muted)}
.room-act{display:flex;gap:6px;flex-wrap:wrap}
@media (max-width:640px){.room-act{width:100%}.room-act .btn{flex:1 1 auto}}

/* ---------- Leave & payroll (handover #29) ---------- */
.lp-top{display:flex;align-items:center;justify-content:space-between;gap:12px;margin-bottom:16px;flex-wrap:wrap}
.lv-grid{display:grid;grid-template-columns:repeat(auto-fill,minmax(300px,1fr));gap:14px}
.lv-card{background:var(--panel);border:1px solid var(--line);border-radius:16px;padding:18px;position:relative;overflow:hidden;box-shadow:var(--shadow)}
.lv-card:before{content:"";position:absolute;left:0;top:0;bottom:0;width:4px;background:var(--gold)}
.lv-card.wait:before{background:#d9a441}.lv-card.on:before{background:var(--red)}
.lv-top{display:flex;gap:12px;align-items:center;margin-bottom:12px}.lv-top h3{font-size:15px;margin:0}.lv-top p{font-size:12px;color:var(--muted);margin:2px 0 0}.lv-top .badge{margin-left:auto;white-space:nowrap}
.lv-what{display:flex;flex-direction:column;gap:2px;padding:10px 12px;border-radius:10px;background:var(--panel-soft);margin-bottom:10px}.lv-what b{font-family:var(--serif);font-size:18px}.lv-what span{font-size:12.5px;color:var(--muted)}
.lv-reason{font-style:italic;font-size:13px;margin:0 0 10px}
.lv-lessons{display:flex;align-items:center;gap:6px;font-size:12.5px;margin:0 0 12px;color:var(--ink)}.lv-lessons .icon{width:15px;height:15px;color:var(--gold-3)}
.lv-card .actions{align-items:center}
.lv-miss{display:flex;flex-wrap:wrap;gap:6px;margin:8px 0 14px;max-height:180px;overflow:auto}
.lv-miss span{border:1px solid var(--line);border-radius:8px;padding:5px 8px;font-size:12px;background:var(--panel-soft)}.lv-miss b{margin-right:6px;color:var(--gold-deep)}
.lp-head{display:flex;justify-content:space-between;align-items:flex-end;gap:16px;flex-wrap:wrap}
.lp-month{display:flex;align-items:flex-end;gap:18px;flex-wrap:wrap}.lp-month .field{width:170px}
.lp-month h2{font-size:28px;margin:0 0 4px}.lp-month small{display:block;font-size:11.5px;color:var(--muted);margin-top:4px}
.lp-metrics{margin-top:16px;grid-template-columns:repeat(3,minmax(0,1fr))}
.lp-metrics .metric-value{font-size:24px;white-space:nowrap}
.lp-table{margin-top:4px}.lp-table tbody tr{cursor:pointer}.lp-table tr.off td{opacity:.55}
.lp-table td{padding:13px 16px;white-space:nowrap}.lp-table td:first-child{white-space:normal}
.lp-net{font-family:var(--serif);font-size:17px;color:var(--ink)}
.lp-table tfoot td{border-top:2px solid var(--gold);background:var(--panel-soft)}
.lp-ssnit{margin-top:16px}.lp-ssnit-grid{display:grid;grid-template-columns:repeat(4,minmax(0,1fr));gap:12px}
.lp-ssnit-grid div,.lp-preview div{border:1px solid var(--line);border-radius:12px;padding:10px 12px;background:var(--panel-soft)}
.lp-ssnit-grid small,.lp-preview small{display:block;font-size:11px;color:var(--muted)}.lp-ssnit-grid b,.lp-preview b{font-family:var(--serif);font-size:19px}
.lp-months{display:flex;gap:10px;overflow:auto;padding-bottom:6px}
.lp-months button{border:1px solid var(--line);background:var(--panel);color:var(--ink);border-radius:12px;padding:10px 14px;text-align:left;min-width:150px}
.lp-months button.on{border-color:var(--gold);box-shadow:inset 0 -3px 0 var(--gold)}.lp-months small{display:block;color:var(--muted);font-size:11px;margin-top:2px}
.lp-row{display:grid;grid-template-columns:1fr 130px;gap:8px;margin-bottom:8px}
.lp-row input{width:100%;background:var(--panel);border:1px solid var(--line);color:var(--ink);border-radius:9px;padding:10px 12px;font-size:13px;min-height:42px}
.lp-preview{display:grid;grid-template-columns:repeat(4,minmax(0,1fr));gap:10px;margin:18px 0 10px}
.lp-preview .net{background:var(--navy);border-color:var(--navy)}.lp-preview .net small{color:var(--gold-2)}.lp-preview .net b{color:#fff}
@media(max-width:760px){
  .lp-metrics{grid-template-columns:1fr}.lp-ssnit-grid,.lp-preview{grid-template-columns:1fr 1fr}
  .lp-table td{white-space:normal}.lp-month .field{width:100%}.lp-month{width:100%}
  .lv-grid{grid-template-columns:1fr}
}
#lpPrintArea{display:none}
@media print{
  body.lp-printing>*:not(#lpPrintArea){display:none!important}
  body.lp-printing{background:#fff}body.lp-printing #lpPrintArea{display:block}
  .lps-page{page-break-after:always;break-after:page;font-family:Arial,sans-serif;color:#0d1f3c;height:277mm;display:flex;flex-direction:column;justify-content:space-between}
  .lps-page:last-child{page-break-after:auto;break-after:auto}
  .lps-sum{height:auto;justify-content:flex-start}
  .lps-page header,.lps header{display:flex;align-items:center;gap:10px;border-bottom:3px double #b3862a;padding-bottom:5px;margin-bottom:8px}
  .lps-page header img,.lps header img{width:44px;height:44px}.lps-page h1,.lps h1{font-family:Georgia,serif;font-size:16px;margin:0}.lps-page header p,.lps header p{margin:2px 0 0;font-size:10px;font-style:italic}
  .lps{height:132mm;border:1.4px solid #0d1f3c;border-radius:6px;padding:5mm;box-sizing:border-box;display:flex;flex-direction:column}
  .lps-title{margin-left:auto;text-align:right;background:#0a1f44!important;color:#fff;border-radius:5px;padding:4px 10px;-webkit-print-color-adjust:exact;print-color-adjust:exact}.lps-title b{display:block;font-family:Georgia,serif;font-size:16px;letter-spacing:2px;color:#e8cf8a}.lps-title small{font-size:10px}
  .lps-who{display:grid;grid-template-columns:repeat(4,1fr);gap:6px;margin-bottom:6px}.lps-who small{display:block;font-size:8.5px;color:#556;text-transform:uppercase;letter-spacing:.5px}.lps-who b{font-size:11px}
  .lps-cols{display:grid;grid-template-columns:1fr 1fr;gap:8px}
  .lps table,.lps-sum table{width:100%;border-collapse:collapse;min-width:0}
  .lps th,.lps td,.lps-sum th,.lps-sum td{border:1px solid #9aa3b5;padding:3px 6px;font-size:10.5px;text-align:left;background:none;color:#0d1f3c}
  .lps td:last-child,.lps th:last-child{text-align:right;width:28mm}
  .lps thead th,.lps-sum thead th{background:#f3ecd9!important;-webkit-print-color-adjust:exact;print-color-adjust:exact;font-size:10px}
  .lps tfoot td,.lps-sum tfoot td{font-weight:700;border-top:1.6px solid #0d1f3c}
  .lps-net{display:flex;align-items:center;gap:12px;margin-top:6mm;border:1.6px solid #b3862a;border-radius:6px;padding:5px 10px}
  .lps-net small{display:block;font-size:9px;letter-spacing:1px;color:#7f5a0c}.lps-net b{font-family:Georgia,serif;font-size:20px;white-space:nowrap}.lps-net p{margin:0;font-size:10.5px;font-style:italic}
  .lps-foot{display:flex;gap:14px;align-items:flex-end;margin-top:auto;font-size:9.5px;color:#445}.lps-foot span:first-child{flex:1}
  .lps-foot .sig{width:36mm;border-top:1px solid #0d1f3c;text-align:center;padding-top:2px;margin-top:10mm}
  .lps-cut{text-align:center;font-size:9px;color:#889;border-top:1px dashed #aab;margin:3mm 0;line-height:0;padding-top:2mm}
  .lps-sum td:nth-child(n+2),.lps-sum th:nth-child(n+2){text-align:right}.lps-sum td:last-child{width:30mm}.lps-sum tbody tr{height:9mm}
  .lps-ssnit{display:grid;grid-template-columns:repeat(5,1fr);gap:6px;margin-top:8px}.lps-ssnit div{border:1px solid #9aa3b5;border-radius:5px;padding:5px}.lps-ssnit small{display:block;font-size:8.5px;color:#556}.lps-ssnit b{font-size:12px}
  .lps-page footer{font-size:9px;color:#667;margin-top:6px}
}
.lp-net,.lp-ssnit-grid b,.lp-preview b,.lv-what b,.lp-month h2{font-variant-numeric:lining-nums tabular-nums;font-feature-settings:"lnum" 1}
@media(max-width:760px){.lp-table tfoot{display:none}.lp-table td:last-child:empty{display:none}}

/* Staff form (handover #33): normal-size ticks and circles next to their words; one clear line per job. */
.field .adm-paper{display:flex;align-items:flex-start;gap:12px;font-size:14px;line-height:1.45;padding:10px 12px;border:1px solid var(--line);border-radius:12px;background:var(--panel);margin:6px 0;cursor:pointer}
.field .adm-paper input[type=checkbox],.field .adm-paper input[type=radio]{width:22px;height:22px;min-height:0;min-width:22px;flex:0 0 22px;padding:0;margin:1px 0 0;border-radius:6px;accent-color:var(--navy)}
.field .adm-paper:has(input:checked){border-color:var(--gold);background:var(--panel-soft)}
.stf-job{display:grid;grid-template-columns:52px 1fr 1.4fr auto;gap:8px;align-items:center;margin:8px 0;padding:8px 10px;border:1px solid var(--line);border-radius:12px;background:var(--panel)}
.stf-jn{font-size:11px;font-weight:800;letter-spacing:.5px;color:var(--gold-deep);text-transform:uppercase}
.stf-jx{font-size:12px;color:var(--red)}
@media (max-width:640px){.stf-job{grid-template-columns:1fr 1fr;grid-template-areas:"n x" "c c" "s s"}.stf-jn{grid-area:n}.stf-jx{grid-area:x;justify-self:end}.stf-job .jc{grid-area:c}.stf-job .js{grid-area:s;grid-column:auto}}
@media (max-width:640px){.field .stf-job .jc,.field .stf-job .js{grid-column:1/-1;width:100%}}
/* Update 25: problem messages look like problems */
.toast.toast-bad{background:#7a2323;border-color:#f3b3b3;color:#fff}
.toast.toast-bad .icon{color:#ffd2d2}
/* Update 30: pupil registration step form (js/register.js) */
.reg-steps{display:flex;gap:5px;margin:-4px 0 18px}.reg-steps span{flex:1;height:5px;border-radius:9px;background:var(--line)}.reg-steps span.done{background:var(--gold)}.reg-steps span.on{background:var(--navy)}
[data-theme="dark"] .reg-steps span.on{background:var(--gold-deep)}
.reg-form .formgrid{margin-bottom:6px}.reg-form small{display:block;color:var(--muted);font-size:11.5px;margin-top:5px;line-height:1.45}
.reg-form textarea{width:100%;min-height:78px;margin-top:10px;border:1px solid var(--line);border-radius:12px;padding:10px 12px;font:inherit;background:var(--panel);color:inherit}
.reg-q{margin:6px 0 16px}.reg-q>b{display:block;margin-bottom:8px;font-size:13.5px}
.reg-sub{display:flex;gap:8px;align-items:center;font-weight:700;font-size:12px;color:var(--gold-deep);text-transform:uppercase;letter-spacing:.06em;margin:16px 0 10px}
.reg-choice{display:flex;flex-wrap:wrap;gap:8px}.reg-choice label{display:inline-flex;align-items:center;gap:8px;border:1.5px solid var(--line);border-radius:12px;padding:10px 14px;cursor:pointer;font-size:13.5px;min-height:44px;background:var(--panel)}
.reg-choice label.on{border-color:var(--gold);background:var(--orange-soft);font-weight:700}.reg-choice label.off{opacity:.45;cursor:not-allowed}.reg-choice input{accent-color:var(--gold-deep)}
.reg-check{display:flex!important;gap:10px;align-items:flex-start;font-size:13px;line-height:1.45}.reg-check input{width:20px;height:20px;flex:none;margin-top:1px;accent-color:var(--gold-deep)}.reg-check.big{border:1px solid var(--line);border-radius:14px;padding:12px 14px;background:var(--panel)}
.reg-match{display:flex;gap:10px;align-items:center;border:1.5px solid var(--gold);background:var(--orange-soft);border-radius:14px;padding:12px 14px;margin:6px 0 10px;font-size:13px;line-height:1.45}.reg-match>div{flex:1}.reg-match .icon{flex:none}
.reg-linked{font-size:12px;display:flex;gap:6px;align-items:flex-start;flex-wrap:wrap}
.reg-err{display:flex;gap:10px;align-items:flex-start;background:var(--red-soft,#fdeaea);color:var(--red,#9d2d2d);border-radius:12px;padding:12px 14px;font-size:13px;line-height:1.5;margin-top:10px}
.reg-err[hidden]{display:none}
.reg-doc{display:flex;gap:14px;align-items:flex-start;border:1px solid var(--line);border-radius:16px;padding:14px;margin-bottom:12px;background:var(--panel)}.reg-doc>div:last-child{flex:1;min-width:0}.reg-doc b{display:block}.reg-doc small{display:block;color:var(--muted);margin:4px 0 10px;font-size:12px;line-height:1.45}
.reg-thumb{width:64px;height:64px;border-radius:12px;background:var(--orange-soft);display:grid;place-items:center;overflow:hidden;flex:none;color:var(--gold-deep)}.reg-thumb.photo{width:64px;height:80px}.reg-thumb img{width:100%;height:100%;object-fit:cover}
.reg-sum{margin-bottom:16px}.reg-sum dd{white-space:pre-line}
.reg-sigpad{display:block;width:100%;height:190px;border:1.5px dashed var(--gold);border-radius:16px;background:#fff;touch-action:none;margin:10px 0 8px;cursor:crosshair}
.reg-agree{margin:6px 0 0;padding:10px 12px;border-radius:12px;background:var(--orange-soft);font-size:13px}
.reg-actions{position:sticky;bottom:-24px;background:var(--panel);padding-bottom:4px}
.reg-progress{list-style:none;margin:6px 0 4px;padding:0;display:grid;gap:8px}.reg-progress li{display:flex;gap:10px;align-items:flex-start;font-size:13.5px;line-height:1.45;padding:10px 12px;border-radius:12px;background:var(--panel-soft,#f5f2e8)}
.reg-progress li.ok .icon{color:var(--good)}.reg-progress li.wait .icon{color:var(--orange)}
.reg-need-strip{align-items:center;margin-bottom:14px}.reg-need-strip span{flex:1}
.reg-drafts{margin-bottom:14px}.reg-drafts .task-row{display:flex;justify-content:space-between;gap:10px;align-items:center;padding:10px 0;border-top:1px solid var(--line)}
.reg-profile{margin-bottom:16px}
.reg-pdf-host{position:fixed;left:-10000px;top:0;width:210mm}
.reg-done-actions{justify-content:flex-start;flex-wrap:wrap}.reg-done-actions .btn{flex:0 1 auto}
/* Update 31: pick-up list and leaving */
.reg-nophoto{color:var(--bad,#b3261e);font-weight:600}
.reg-left{border:1px solid #e3b8b4;background:#fff7f6}
.reg-left p{margin:6px 0}
.reg-pick .info-strip{margin-bottom:10px}
/* Update 32: fees */
.fin-tabs{overflow-x:auto;flex-wrap:nowrap;scrollbar-width:none}.fin-tabs button{white-space:nowrap}
.fin-dup{margin-bottom:14px;background:#fff4f2;border-color:#e8b4ad}.fin-dup b{color:#9d2d2d}
.fin-plan td,.fin-plan th{padding:6px 8px}.fin-plan .fin-amt,.fin-amt{width:100%;min-width:84px;max-width:140px;padding:9px 10px;border:1px solid var(--line,#e2d8c3);border-radius:10px;font:inherit;background:#fff}
.fin-amt[data-sug]{background:#fffaf0;border-style:dashed}
.fin-lbl{display:block;font-weight:700;font-size:13px;margin-bottom:6px}
.fin-part{display:grid;grid-template-columns:1fr 120px auto;gap:8px;align-items:center;margin-bottom:8px}
.fin-part select,.fin-part input{padding:10px;border:1px solid var(--line,#e2d8c3);border-radius:10px;font:inherit;background:#fff;min-width:0}
.fin-extra{grid-column:1/-1;display:flex;gap:8px;align-items:flex-start;font-size:13px;background:#f2f6ff;border-radius:10px;padding:8px 10px}
.fin-sigpad{height:130px}
.fin-charges{display:flex;flex-direction:column;gap:6px}
.fin-charge{display:flex;gap:10px;justify-content:space-between;align-items:flex-start;border:1px solid var(--line,#eee4cf);border-radius:12px;padding:9px 11px}
.fin-charge.off{opacity:.55}.fin-charge small{display:block;color:var(--muted,#6b6f78);font-size:12px;margin-top:2px}
.fin-charge-r{display:flex;flex-direction:column;align-items:flex-end;gap:2px;white-space:nowrap}
.fin-some{display:flex;flex-wrap:wrap;gap:6px;margin-top:6px}
.dm-list{display:flex;flex-direction:column;gap:8px;max-height:60vh;overflow:auto}
.dm-row{display:flex;flex-wrap:wrap;justify-content:space-between;gap:8px;border:1px solid var(--line,#eee4cf);border-radius:12px;padding:9px 11px}
.dm-row small{display:block;font-size:12px}.dm-owe{color:#9d2d2d}
.dm-items{display:flex;flex-wrap:wrap;align-items:center;gap:6px}
.dm-seg{display:inline-flex;border:1px solid var(--line,#e2d8c3);border-radius:10px;overflow:hidden}
.dm-seg button{border:0;background:#fff;padding:6px 9px;font:600 12px/1 inherit;cursor:pointer}
.dm-seg button.on.dm-paid{background:#1b7a3a;color:#fff}.dm-seg button.on.dm-credit{background:#c98a12;color:#fff}.dm-seg button.on.dm-none{background:#6b6f78;color:#fff}
@media (max-width:560px){.fin-part{grid-template-columns:1fr 96px auto}}

/* Update 34: bring in a timetable from a file — check screen */
.tti-drop{display:flex;flex-direction:column;align-items:flex-start;gap:10px;padding:6px 0}
.tti-files{display:grid;gap:8px;margin-top:10px}
.tti-file{display:flex;flex-wrap:wrap;align-items:center;gap:8px 14px;border:1px solid var(--line);border-radius:12px;padding:10px 12px;background:var(--panel,#fff)}
.tti-file b{flex:1 1 220px;font-size:14px;word-break:break-all}.tti-file small{flex:1 1 100%;color:var(--muted)}
.tti-file.bad{border-color:#e7b9b3;background:#fff6f4}.tti-file.bad small{color:#a33a32}.tti-file.dup{opacity:.6}
.tti-file label{display:flex;align-items:center;gap:6px;font-size:13px;font-weight:700}.tti-file select{min-height:36px;border-radius:9px;padding:0 8px}
.tti-warn{color:#8a5a00!important;font-weight:700}
.tti-who{display:grid;grid-template-columns:repeat(auto-fill,minmax(280px,1fr));gap:8px}
.tti-whorow{display:flex;align-items:center;gap:8px;border:1px solid var(--line);border-radius:12px;padding:8px 10px}
.tti-whorow span{flex:1;min-width:0}.tti-whorow b{display:block;font-size:14px}.tti-whorow small{color:var(--muted);font-size:12px}
.tti-whorow select{max-width:56%;min-height:36px;border-radius:9px;padding:0 6px}
.tti-whorow.orange,.tti-c.orange{border-color:#e9a23b;background:#fff4e2}
.tti-times{display:flex;flex-wrap:wrap;gap:6px}.tti-times span{border:1px solid var(--line);border-radius:10px;padding:5px 9px;font-size:12px}.tti-times span b{display:block;font-size:12px}.tti-times span.band{background:#f6f1e3}
.tti-o{color:#b86e00}
.tti-prev{overflow:hidden}
.tti-grid{display:grid;grid-template-columns:44px repeat(var(--cols),minmax(84px,1fr));gap:4px;overflow-x:auto;padding-bottom:4px}
.tti-th{font-size:11px;font-weight:800;text-align:center;padding:6px 2px;background:#0a1f44;color:#fff;border-radius:7px}.tti-th.band{background:#8a6a1f}
.tti-day{font-size:12px;font-weight:800;display:flex;align-items:center;justify-content:center;background:#f3ecd9;border-radius:7px}
.tti-band{display:flex;align-items:center;justify-content:center;writing-mode:vertical-rl;transform:rotate(180deg);font-size:11px;font-weight:800;letter-spacing:1px;text-transform:uppercase;background:#f6f1e3;border-radius:7px;color:#5f4a12}
.tti-c{border:1px solid var(--line);border-radius:8px;padding:6px 5px;min-height:58px;text-align:center;font-size:12px;display:flex;flex-direction:column;justify-content:center}
.tti-c b{font-size:12px}.tti-c i{font-size:11px;color:#7f5a0c}.tti-c small{font-size:11px;color:var(--muted)}.tti-c.act{background:#f8f5ec}.tti-c.empty{border-style:dashed;opacity:.5}

/* ===== Update 36: a colour for each section (inside the royal blue and gold frame) ===== */
body[data-sec=people]{--sec:#2f5fb3;--sec-deep:#1d438a;--sec-soft:#eaf0fb}
body[data-sec=presence]{--sec:#0f7f7a;--sec-deep:#0a5c58;--sec-soft:#e2f3f1}
body[data-sec=learning]{--sec:#6a3d9a;--sec-deep:#4b2873;--sec-soft:#f1eafa}
body[data-sec=staff]{--sec:#c0661a;--sec-deep:#8f480b;--sec-soft:#fcefe2}
body[data-sec=money]{--sec:#1d7a45;--sec-deep:#125830;--sec-soft:#e4f3ea}
body[data-sec=ops]{--sec:#8a5a2b;--sec-deep:#633f1b;--sec-soft:#f4ebe0}
body[data-sec=msg]{--sec:#1a86c2;--sec-deep:#0e6596;--sec-soft:#e3f2fa}
body[data-sec=insight]{--sec:#4a6283;--sec-deep:#33465f;--sec-soft:#e9eef4}
body[data-sec] .page-head>div:first-child{display:grid;grid-template-columns:auto minmax(0,1fr);column-gap:18px;align-items:center}
body[data-sec] .page-head>div:first-child>*:not(.sec-medal){grid-column:2}
.sec-medal{grid-row:1/span 3;width:62px;height:62px;border-radius:50%;display:grid;place-items:center;background:var(--sec);color:#fff;box-shadow:0 0 0 4px var(--sec-soft),0 0 0 5px color-mix(in srgb,var(--sec) 35%,transparent),0 10px 24px -12px var(--sec)}
.sec-medal svg{width:28px;height:28px}
body[data-sec] .page-head .eyebrow{color:var(--sec-deep)}
body[data-sec] .page-head .eyebrow:before{background:var(--sec)}
body[data-sec] .page-head:after{background:var(--sec);width:96px}
body[data-sec] .metric-icon,body[data-sec] .metric.blue .metric-icon,body[data-sec] .metric.purple .metric-icon,body[data-sec] .metric.orange .metric-icon{background:var(--sec);color:#fff}
body[data-sec] .metric{border-top:3px solid var(--sec)}
body[data-sec] .tabs button.active{border-color:var(--sec);color:var(--sec-deep)}
body[data-sec] .class-chips button.on{background:var(--sec);color:#fff}
body[data-sec] .card-head h2:before{content:"";display:inline-block;width:8px;height:8px;border-radius:50%;background:var(--sec);margin-right:9px;vertical-align:middle;transform:translateY(-2px)}
body[data-sec] .info-strip:not(.gold):not(.fin-dup){border-left:3px solid var(--sec)}
[data-theme=dark] body[data-sec] .page-head .eyebrow,[data-theme=dark] body[data-sec] .tabs button.active{color:color-mix(in srgb,var(--sec) 55%,#fff)}
@media(max-width:760px){.sec-medal{width:46px;height:46px}.sec-medal svg{width:21px;height:21px}body[data-sec] .page-head>div:first-child{column-gap:12px}}
@media print{.sec-medal{display:none}}

/* Update 36: Overview — Today at a glance (the school's live numbers, in the hero's navy and gold) */
.today:empty{display:none}
.today{margin:0 0 26px;border-radius:22px;background:linear-gradient(160deg,#0c2552,#071737 70%);color:#fff;padding:22px 22px 18px;box-shadow:0 18px 40px -26px #071737;position:relative;overflow:hidden}
.today:before{content:"";position:absolute;inset:0 0 auto;height:3px;background:var(--gold-grad)}
.td-head{display:flex;align-items:baseline;justify-content:space-between;gap:12px;flex-wrap:wrap;margin-bottom:14px}
.td-head h2{font-family:var(--serif);font-size:26px;font-weight:600;color:#fff;margin:0}.td-head span{font-size:12.5px;color:#c9d3e6}
.td-tiles{display:grid;grid-template-columns:repeat(4,minmax(0,1fr));gap:1px;background:#ffffff1f;border-radius:16px;overflow:hidden}
.td-tile{background:#0b2148;border:0;color:#fff;text-align:left;padding:16px 16px 14px;display:flex;flex-direction:column;gap:4px;cursor:pointer;min-width:0;font:inherit}
.td-tile:hover,.td-tile:focus-visible{background:#10295a;outline:none}
.td-tile b{font-family:var(--serif);font-size:40px;line-height:1;font-weight:700;color:var(--gold-2,#e8cf8a);white-space:nowrap;overflow:hidden;text-overflow:ellipsis}
.td-tile b i{font-style:normal;font-size:22px;color:#9fb0cc;font-weight:600}
.td-tile.t-money b{font-size:30px;padding-top:8px}
.td-tile span{font-weight:800;font-size:14px;letter-spacing:.2px}.td-tile small{font-size:12.5px;color:#b9c5db;line-height:1.35}
.td-attn{margin-top:14px;display:grid;gap:6px}
.td-attn h3{display:flex;align-items:center;gap:8px;font-size:13px;color:#ffb4a8;margin:0 0 2px;font-weight:800}.td-attn h3 svg{width:16px;height:16px}
.td-item{display:grid;grid-template-columns:auto 1fr auto;align-items:center;gap:4px 12px;text-align:left;background:#3a1218;border:1px solid #7a2a2a;border-radius:12px;padding:10px 12px;color:#fff;font:inherit;cursor:pointer}
.td-item b{font-size:14px;color:#ffd7d0}.td-item span{font-size:12.5px;color:#e9c3bd;min-width:0;overflow:hidden;text-overflow:ellipsis;white-space:nowrap}.td-item svg{width:16px;height:16px;color:#ffb4a8}
.td-ok{margin-top:12px;display:flex;align-items:center;gap:8px;font-size:13.5px;color:#bfe8cf}.td-ok svg{width:17px;height:17px}
@media(max-width:960px){.td-tiles{grid-template-columns:repeat(2,minmax(0,1fr))}}
@media(max-width:520px){.today{padding:18px 14px 14px;border-radius:18px}.td-tile{padding:13px 12px}.td-tile b{font-size:32px}.td-tile.t-money b{font-size:22px;padding-top:6px}.td-item{grid-template-columns:1fr auto}.td-item span{grid-column:1}}
/* Update 36: Finance — received this week, still owed per class */
.fin-charts{display:grid;grid-template-columns:minmax(0,1fr) minmax(0,1.2fr);gap:16px;margin:0 0 18px}
.fin-chart{margin:0;padding:16px 18px}.fin-chart .card-head{margin-bottom:10px}.fin-chart h3{margin:0;font-size:15px}
.fin-week{display:grid;grid-template-columns:repeat(7,minmax(0,1fr));gap:8px;height:170px;align-items:end}
.fin-wk{display:flex;flex-direction:column;align-items:center;gap:5px;height:100%;min-width:0}
.fin-wk-bar{flex:1;width:100%;max-width:38px;display:flex;align-items:flex-end;background:var(--sec-soft,#eef6f0);border-radius:9px;overflow:hidden}
.fin-wk-bar i{display:block;width:100%;background:var(--sec,#1f8a4c);border-radius:9px 9px 0 0;opacity:.75}
.fin-wk.is-today .fin-wk-bar i{opacity:1;background:var(--sec-deep,#146b38)}
.fin-wk-amt{font-size:11px;font-weight:700;color:var(--muted);white-space:nowrap;min-height:14px}.fin-wk.is-today .fin-wk-amt{color:var(--sec-deep,#146b38)}
.fin-wk-day{font-size:12px;font-weight:700;color:var(--muted)}.fin-wk.is-today .fin-wk-day{color:var(--ink)}
.fin-wk-sum{margin:10px 0 0;font-size:12.5px}
.fin-owe{display:grid;gap:6px;max-height:212px;overflow:auto}
.fin-owe-row{display:grid;grid-template-columns:78px minmax(0,1fr) auto;align-items:center;gap:10px;background:none;border:0;padding:4px 2px;font:inherit;color:inherit;text-align:left;cursor:pointer;border-radius:8px}
.fin-owe-row:hover,.fin-owe-row:focus-visible{background:var(--sec-soft,#fff4e8);outline:none}
.fin-owe-cls{font-weight:700;font-size:13px;white-space:nowrap;overflow:hidden;text-overflow:ellipsis}
.fin-owe-bar{height:12px;background:#f3eee6;border-radius:6px;overflow:hidden}.fin-owe-bar i{display:block;height:100%;background:#e0892b;border-radius:6px}
.fin-owe-amt{font-weight:800;font-size:13px;color:var(--red);text-align:right;white-space:nowrap}.fin-owe-amt small{display:block;font-weight:600;font-size:11px;color:var(--muted)}
@media(max-width:860px){.fin-charts{grid-template-columns:1fr}}
@media(max-width:520px){.fin-week{height:140px;gap:5px}.fin-wk-amt{font-size:9.5px}.fin-owe-row{grid-template-columns:64px minmax(0,1fr) auto}}
/* Update 36: Gate — live board */
.gl-board{background:var(--panel);border:1px solid var(--line);border-radius:20px;padding:18px}
.gl-top{display:flex;align-items:center;gap:14px 22px;flex-wrap:wrap}
.gl-count{display:flex;align-items:baseline;gap:8px}.gl-count b{font-family:var(--serif);font-size:46px;line-height:1;color:var(--sec-deep,#0e7490)}.gl-count span{font-weight:700;color:var(--muted)}
.gl-key{display:flex;align-items:center;gap:6px;font-size:13px;color:var(--muted);flex-wrap:wrap}.gl-key b{color:var(--ink);margin-right:10px}
.gl-dot{width:10px;height:10px;border-radius:50%;display:inline-block}
.gl-dot.gl-in{background:#1f9d55}.gl-dot.gl-late{background:#e8891c}.gl-dot.gl-out{background:#c7ccd6}
.gl-live{margin-left:auto;display:flex;align-items:center;gap:7px;font-size:12.5px;font-weight:700;color:var(--muted)}
.gl-live i{width:8px;height:8px;border-radius:50%;background:#1f9d55;box-shadow:0 0 0 0 #1f9d5588;animation:glPulse 2s infinite}
@keyframes glPulse{70%{box-shadow:0 0 0 8px #1f9d5500}100%{box-shadow:0 0 0 0 #1f9d5500}}
@media(prefers-reduced-motion:reduce){.gl-live i{animation:none}}
.gl-meter{display:flex;height:8px;border-radius:5px;background:#e6e9ef;overflow:hidden;margin:14px 0 6px}.gl-meter i{display:block;height:100%}.gl-meter .gl-in{background:#1f9d55}.gl-meter .gl-late{background:#e8891c}
.gl-class{margin-top:16px}.gl-class h3{font-size:14px;margin:0 0 8px;display:flex;gap:8px;align-items:baseline}.gl-class h3 span{font-size:12.5px;color:var(--muted);font-weight:700}
.gl-tiles{display:grid;grid-template-columns:repeat(auto-fill,minmax(96px,1fr));gap:6px}
.gl-tile{border:0;border-radius:10px;padding:8px 9px;text-align:left;font:inherit;cursor:pointer;display:flex;flex-direction:column;gap:1px;min-width:0}
.gl-tile b{font-size:12.5px;line-height:1.25;overflow:hidden;display:-webkit-box;-webkit-line-clamp:2;-webkit-box-orient:vertical;word-break:break-word}.gl-tile small{font-size:11px;font-weight:600;opacity:.85}
.gl-tile.gl-in{background:#1f9d55;color:#fff}.gl-tile.gl-late{background:#e8891c;color:#fff}.gl-tile.gl-out{background:#eef0f4;color:#5b6475}.gl-tile.gl-leave{background:#eef0f4;color:#5b6475;border:1px dashed #b8bfcc}
.gl-tile:focus-visible{outline:3px solid var(--sec,#0e7490);outline-offset:2px}
@media(max-width:520px){.gl-board{padding:14px 12px}.gl-count b{font-size:38px}.gl-live{margin-left:0}.gl-tiles{grid-template-columns:repeat(auto-fill,minmax(84px,1fr))}}
/* Update 36: Attendance — one register, a grid of classes */
.att-bar{display:flex;align-items:flex-end;gap:12px;flex-wrap:wrap}
.att-key{display:flex;gap:6px 14px;flex-wrap:wrap;margin-left:auto;font-size:12px;color:var(--muted)}.att-key span{display:flex;align-items:center;gap:6px}
.att-key i{width:11px;height:11px;border-radius:3px;display:inline-block}.k-good{background:#1f9d55}.k-mid{background:#e8a21c}.k-low{background:#d64545}.k-wait{background:#fff;border:1.5px dashed #b8bfcc}
.att-sum{margin:14px 0 12px;font-size:14px;color:var(--muted)}.att-sum b{color:var(--ink)}
.att-grid{display:grid;grid-template-columns:repeat(auto-fill,minmax(168px,1fr));gap:10px}
.att-tile{border:0;border-radius:16px;padding:14px 14px 12px;text-align:left;display:flex;flex-direction:column;gap:3px;font:inherit;cursor:pointer;min-width:0;color:#fff}
.att-tile.t-good{background:#1f9d55}.att-tile.t-mid{background:#e8a21c}.att-tile.t-low{background:#d64545}
.att-tile.t-wait{background:var(--panel);color:var(--ink);border:1.5px dashed #b8bfcc}
.att-tile:focus-visible{outline:3px solid var(--sec,#2563eb);outline-offset:2px}
.att-cls{font-weight:800;font-size:14px}
.att-pct{font-family:var(--serif);font-size:38px;font-weight:700;line-height:1.05}.att-pct small{font-size:18px;opacity:.85}.att-pct.att-wait{color:#b8bfcc}
.att-n{font-size:12.5px;font-weight:700;opacity:.95}.att-by{font-size:11.5px;opacity:.85;white-space:nowrap;overflow:hidden;text-overflow:ellipsis}
.att-tile.t-wait .att-n,.att-tile.t-wait .att-by{color:var(--muted)}
.att-tools{flex-wrap:wrap;gap:8px;align-items:center;margin-bottom:10px}#attDone{font-size:13px;margin-left:auto}
.att-list{display:grid;gap:4px;max-height:55vh;overflow:auto;margin-bottom:10px}
.att-row{display:flex;align-items:center;justify-content:space-between;gap:10px;padding:7px 4px;border-bottom:1px solid var(--line)}
.att-who{min-width:0}.att-who b{display:block;font-size:14px}.att-who small{font-size:11.5px;color:var(--muted)}
.att-codes{display:flex;gap:4px;flex:none}
.att-codes button{width:38px;height:36px;border-radius:9px;border:1px solid var(--line);background:var(--panel);font:inherit;font-weight:800;color:var(--muted);cursor:pointer}
.att-codes .on.c-P{background:#1f9d55;border-color:#1f9d55;color:#fff}.att-codes .on.c-L{background:#e8891c;border-color:#e8891c;color:#fff}
.att-codes .on.c-A{background:#d64545;border-color:#d64545;color:#fff}.att-codes .on.c-E{background:#6b7280;border-color:#6b7280;color:#fff}
@media(max-width:520px){.att-grid{grid-template-columns:repeat(2,minmax(0,1fr))}.att-pct{font-size:32px}.att-key{margin-left:0}.att-codes button{width:34px}}
/* Update 37: secure classroom stickers */
.sun-steps{display:grid;grid-template-columns:repeat(3,minmax(0,1fr));gap:10px;margin:4px 0 12px}
.sun-step{display:flex;gap:10px;align-items:flex-start;flex-wrap:wrap;background:var(--sec-soft,#f3f0ff);border-radius:14px;padding:12px}
.sun-step>b{flex:none;width:28px;height:28px;border-radius:50%;display:flex;align-items:center;justify-content:center;background:var(--sec,#6d4bd1);color:#fff;font-size:14px}
.sun-step>div{flex:1 1 calc(100% - 38px);min-width:0}.sun-step strong{display:block;font-size:14px}.sun-step span{display:block;font-size:12.5px;color:var(--muted);line-height:1.4;margin-top:2px}
.sun-step .btn{margin-left:38px}
.room-row.is-sun{border-color:#9bd3b3;background:linear-gradient(90deg,#1f9d550d,transparent 60%)}
.room-old{width:100%}.room-old summary{cursor:pointer;font-size:12.5px;color:var(--muted);font-weight:700;padding:4px 0}.room-old .room-act{margin-top:6px}
@media (min-width:641px){.room-row>.room-act{align-items:center}.room-old{width:auto}}
.sun-copy{display:grid;gap:6px;margin:0 0 12px}.sun-copy span{font-size:12.5px;font-weight:800;color:var(--muted)}
.sun-copy code{display:block;font-size:15px;padding:12px 14px;border-radius:12px;background:var(--panel-2,#f4f1ea);border:1px solid var(--line);word-break:break-all;user-select:all;-webkit-user-select:all;letter-spacing:.04em}
.sun-copy .btn{justify-self:start}
.sun-guide{padding-left:20px;line-height:1.55;font-size:14px;display:grid;gap:6px}.sun-guide code{font-size:12.5px}
@media (max-width:760px){.sun-steps{grid-template-columns:1fr}}
.sun-card .card-head .pill{white-space:nowrap;flex:none}

/* Update 36/37 in dark mode */
[data-theme=dark] .k-wait{background:transparent}
[data-theme=dark] .gl-meter{background:#2a3446}[data-theme=dark] .gl-tile.gl-out,[data-theme=dark] .gl-tile.gl-leave{background:#253047;color:#c3cbdb}
[data-theme=dark] .fin-owe-bar{background:#2a3446}[data-theme=dark] .fin-wk-bar{background:#1f3a2b}
[data-theme=dark] .room-row.is-sun{border-color:#2f6b4a}
#dashOld[hidden]{display:none}

/* Update 41: register buttons in words, name on top, 4 buttons below */
.att-row{flex-direction:column;align-items:stretch;gap:7px;padding:9px 4px}
.att-codes{display:grid;grid-template-columns:repeat(4,minmax(0,1fr));gap:6px}
.att-codes button{width:auto;height:40px;font-size:13.5px;font-weight:700;padding:0 4px;min-width:0;white-space:nowrap;overflow:hidden;text-overflow:ellipsis}
@media(max-width:520px){.att-codes button{width:auto;font-size:13px}}

/* Update 41: date in words under every date box */
.date-words{display:block;margin-top:4px;font-size:12px;font-weight:700;color:var(--muted);min-height:1em}.date-words:empty{display:none}

.date-wrap{display:inline-flex;flex-direction:column;min-width:0}.date-wrap>input{width:100%}

/* Update 43: Low attendance (office) — red below 75%, amber 75–89%, the same colours as the parents' ring */
.att-low{margin-top:18px}
.low-tabs{display:flex;gap:8px;flex-wrap:wrap}
.low-tabs button{font:inherit;font-weight:700;font-size:14px;min-height:42px;padding:0 14px;border-radius:12px;border:1.5px solid var(--line);background:var(--panel);color:var(--ink);cursor:pointer;display:inline-flex;gap:8px;align-items:center}
.low-tabs button b{font-size:13px;padding:1px 8px;border-radius:99px;background:var(--panel-soft)}
.low-tabs .lt-red.on{border-color:#d64545;background:#fdecec;color:#8f2525}.low-tabs .lt-amber.on{border-color:#e8a21c;background:#fdf4e1;color:#7a5309}
.low-help{font-size:13px;margin:10px 0 12px}
.low-list{display:flex;flex-direction:column;gap:8px}
.low-row{display:flex;align-items:center;gap:12px;padding:10px 12px;border:1px solid var(--line);border-left:5px solid #e8a21c;border-radius:12px;background:var(--panel)}
.low-row.lv-red{border-left-color:#d64545}
.low-pct{flex:none;width:58px;text-align:center;font:700 22px/1 var(--serif,Georgia,serif);color:#7a5309}.low-row.lv-red .low-pct{color:#b42f2f}.low-pct small{font-size:12px}
.low-who{flex:1;min-width:0}.low-who b{display:block}.low-who small{display:block;color:var(--muted);font-size:12.5px}.low-who .low-sent{color:#1f7a45;font-weight:600}
.low-act{display:flex;gap:6px;flex-wrap:wrap;justify-content:flex-end}.low-act .btn{text-decoration:none}
.low-none{margin:4px 0;color:#1f7a45;font-weight:600}
.att-who .att-why{display:block;color:#2f5592;font-size:12px;margin-top:2px}
@media(max-width:640px){.low-row{flex-wrap:wrap}.low-act{width:100%;justify-content:stretch}.low-act>*{flex:1}}
:root[data-theme="dark"] .low-tabs .lt-red.on{background:#3a1d1d;color:#ffb4b4}:root[data-theme="dark"] .low-tabs .lt-amber.on{background:#3a2e14;color:#ffd98a}

/* Update 49: fees split per fee under each balance */
.fin-split{display:flex;flex-direction:column;gap:2px;margin-top:5px;font-size:12px;line-height:1.35;color:var(--muted)}
.fin-split span b{font-weight:700;color:var(--ink,inherit)}.fin-split span.owe b{color:var(--red)}.fin-split span.adv b{color:var(--accent)}
@media (max-width:760px){.responsive td.fin-baltd{grid-column:1/-1}}
.fin-split span{display:flex;justify-content:space-between;gap:10px;max-width:340px}.fin-split span b{white-space:nowrap}

/* Update 54: Finance → All fees */
.fa-card .adm-h{margin:18px 0 6px}
.fa-row{display:grid;grid-template-columns:minmax(150px,1.1fr) 2fr auto;gap:10px 16px;align-items:center;padding:12px 0;border-top:1px solid var(--line)}
.fa-name{display:flex;flex-direction:column;gap:4px}.fa-name b{font-size:15px}
.fa-how{align-self:flex-start;font-size:11.5px;font-weight:700;padding:2px 9px;border-radius:999px;background:var(--panel-soft,#f2efe7);color:var(--muted)}
.fa-how.daily{background:#fdf1dc;color:#8a5a00}.fa-how.term{background:#e7eef9;color:#1d3f73}.fa-how.year{background:#efe8f7;color:#5b3a86}
.fa-amts{display:flex;flex-wrap:wrap;gap:6px 14px;font-size:13.5px}.fa-amt small{color:var(--muted)}.fa-amt b{font-weight:700}
.fa-note{flex-basis:100%;margin:2px 0 0;font-size:12.5px}
.fa-act{display:flex;gap:6px;flex-wrap:wrap;justify-content:flex-end}
@media (max-width:640px){.fa-row{grid-template-columns:1fr}.fa-act{justify-content:flex-start}}
[data-theme="dark"] .fa-how.daily{background:#3a2c10;color:#f3c76b}[data-theme="dark"] .fa-how.term{background:#17284a;color:#a9c4ff}[data-theme="dark"] .fa-how.year{background:#2a1d3d;color:#d1b8f5}
/* Update 71: Make timetable */
.ttm-card{margin-bottom:14px}
.ttm-card h2{margin:0 0 4px}
.ttm-chips{margin-bottom:4px;flex-wrap:wrap;overflow:visible}
.ttm-seg{margin:6px 0 12px;flex-wrap:wrap;display:flex;gap:6px}
.ttm-reqs{display:flex;flex-direction:column;gap:0}
.ttm-req{display:grid;grid-template-columns:minmax(120px,1.4fr) 110px 110px minmax(150px,1.6fr);gap:8px 12px;align-items:center;padding:9px 0;border-bottom:1px solid var(--line)}
.ttm-req:last-child{border-bottom:0}
.ttm-req.zero b{color:var(--muted);font-weight:600}
.ttm-req label{display:flex;flex-direction:column;gap:2px;font-size:12px;color:var(--muted)}
.ttm-req label.ttm-d{flex-direction:row;align-items:center;gap:6px;font-size:13px;color:var(--ink)}
.ttm-req input[type=number]{width:72px;font:inherit;font-size:15px;padding:7px 8px;border:1px solid var(--line);border-radius:8px;background:var(--panel);color:var(--ink)}
.ttm-req select{font:inherit;font-size:14px;padding:7px 8px;border:1px solid var(--line);border-radius:8px;background:var(--panel);color:var(--ink);max-width:100%}
.ttm-total{display:flex;flex-wrap:wrap;gap:8px 12px;align-items:center;justify-content:space-between;padding-top:12px;font-size:14px}
.ttm-total span{flex:1 1 100%}
.ttm-total.bad span{color:var(--red);font-weight:700}
.ttm-teachers{display:flex;flex-direction:column}
.ttm-trow{display:flex;flex-wrap:wrap;gap:8px 14px;align-items:center;justify-content:space-between;padding:10px 0;border-bottom:1px solid var(--line)}
.ttm-trow:last-child{border-bottom:0}
.ttm-trow small{display:block;color:var(--muted);font-size:12px}
.ttm-days{display:flex;gap:5px;flex-wrap:wrap}
.ttm-days button{min-width:62px;border:1px solid var(--line);border-radius:9px;background:var(--panel);color:var(--ink);padding:5px 6px;display:flex;flex-direction:column;align-items:center;cursor:pointer;font:inherit}
.ttm-days button b{font-size:13px}.ttm-days button small{font-size:10.5px;color:inherit;opacity:.85}
.ttm-days button.w-all{background:var(--navy-grad,var(--navy));color:var(--gold-2);border-color:transparent}
.ttm-days button.w-am,.ttm-days button.w-pm{background:var(--orange-soft);color:var(--orange);border-color:transparent}
.ttm-days button.w-off{background:var(--panel-soft);color:var(--muted);text-decoration:line-through}
.ttm-good{border-top:3px solid var(--good)}
.ttm-bad{border-top:3px solid var(--red)}
.ttm-bad ul{margin:8px 0;padding-left:20px}
.ttm-checks{list-style:none;margin:10px 0 14px;padding:0;display:grid;grid-template-columns:repeat(auto-fit,minmax(260px,1fr));gap:6px 16px}
.ttm-checks li{display:flex;gap:8px;align-items:flex-start;font-size:13.5px}
.ttm-checks li .icon{width:18px;height:18px;flex-shrink:0;margin-top:1px}
.ttm-checks li.ok .icon{color:var(--good)}.ttm-checks li.no .icon{color:var(--red)}
.ttm-checks small{display:block;color:var(--muted)}
.ttm-gridwrap{overflow-x:auto;margin:4px 0 8px}
.ttm-grid{border-collapse:separate;border-spacing:3px;width:100%;min-width:480px;font-size:13px}
.ttm-grid th{font-weight:700;color:var(--muted);font-size:12px;padding:2px}
.ttm-grid td{background:var(--panel-soft);border-radius:8px;padding:6px 7px;vertical-align:top}
.ttm-grid td b{display:block;font-size:13px;line-height:1.15}
.ttm-grid td small{display:block;font-size:11.5px;color:var(--muted);line-height:1.15}
.ttm-grid td.tm{background:none;color:var(--muted);font-size:12px;white-space:nowrap;width:46px}
.ttm-grid td.free{background:none;border:1px dashed var(--line);color:var(--muted);font-size:12px}
.ttm-grid td.chg{box-shadow:inset 0 0 0 2px var(--gold)}
.ttm-grid tr.band td{background:none;color:var(--muted);font-size:11.5px;padding:2px 6px}
.ttm-grid tr.band td+td{background:var(--panel-soft);text-align:center;border-radius:6px}
.ttm-legend i{display:inline-block;width:12px;height:12px;border-radius:3px;box-shadow:inset 0 0 0 2px var(--gold);vertical-align:-1px;margin-right:6px}
@media (max-width:640px){
  .ttm-req{grid-template-columns:1fr 1fr;gap:6px 10px}
  .ttm-req b{grid-column:1 / -1}
  .ttm-req .ttm-t{grid-column:1 / -1}
  .ttm-days button{min-width:54px}
  .ttm-grid{min-width:0;font-size:12px;border-spacing:2px}
  .ttm-grid td{padding:5px 4px}
  .ttm-grid td b{font-size:11.5px;overflow-wrap:anywhere}
  .ttm-grid td small{font-size:10px;overflow-wrap:anywhere}
  .ttm-grid td.tm{width:34px;font-size:10.5px}
}

/* Update 73: Day plans — Used by */
.tt-usedby{margin-top:14px;padding-top:12px;border-top:1px solid var(--line)}
.tt-usedby small{color:var(--muted);font-size:12px;margin-left:6px}
.tt-usedby .class-chips{flex-wrap:wrap;overflow:visible;margin:8px 0 0}
/* Update 78: Day plans by group (Nursery, KG, Basic 1–3, Basic 4–6, JHS, Special days) */
.tt-gtabs{display:grid;grid-template-columns:repeat(auto-fit,minmax(118px,1fr));gap:8px;margin-bottom:14px}
.tt-gtabs button{display:flex;flex-direction:column;align-items:flex-start;gap:2px;padding:10px 12px;border:1.5px solid var(--line);border-radius:14px;background:var(--panel);color:var(--ink);cursor:pointer;text-align:left;min-height:58px}
.tt-gtabs button b{font-size:15px}.tt-gtabs button small{font-size:11.5px;color:var(--muted)}
.tt-gtabs button.active{background:var(--navy,#0b1930);border-color:var(--navy,#0b1930);color:#fff}.tt-gtabs button.active small{color:#e8cf8a}
.tt-group .card-head h2{margin:0}.tt-group .card-head p{margin:4px 0 0;color:var(--muted)}
.tt-gtools{display:flex;flex-wrap:wrap;gap:8px;align-items:center;margin-top:14px;padding-top:12px;border-top:1px solid var(--line);font-size:13px;color:var(--muted)}
.tt-gtools select{min-height:36px;border:1px solid var(--line);border-radius:9px;background:var(--panel);color:var(--ink);padding:0 8px;margin-left:6px}
.tt-savebar{position:sticky;bottom:10px;z-index:5;display:flex;align-items:center;justify-content:space-between;gap:10px;margin:14px 0;padding:10px 12px 10px 16px;border-radius:16px;background:var(--panel);border:1px solid var(--line);box-shadow:0 6px 18px rgba(11,25,48,.12);font-size:13.5px;font-weight:700;color:#2f7a4a}
.tt-savebar.dirty{color:#9b2c1d;border-color:#e7b7ab;background:#fff7f5}
.info-strip.tt-new{background:#fff3d6;border-color:#f0d9a0;color:#5c3d00}
@media (max-width:900px){.tt-savebar{bottom:88px}}
/* Update 79: one staff member as a full page */
.stf-hero.sh-head{background:linear-gradient(135deg,#141414,#2a2418 60%,#141414)}
.stf-hero.sh-prop{background:linear-gradient(135deg,#2a0f4a,#3d1466 60%,#2a0f4a)}
.stf-roles{display:flex;flex-wrap:wrap;gap:6px;margin-top:14px}
.stf-roles span{font-size:11.5px;font-weight:700;color:#f3dfa6;border:1px solid #c9a24e66;border-radius:999px;padding:4px 10px;background:#ffffff0d}
.stf-cols{display:grid;grid-template-columns:minmax(0,1fr) minmax(0,1fr);gap:16px;margin-bottom:16px}
.stf-cols .card{margin:0}
.stf-job-line{display:grid;grid-template-columns:150px 1fr;gap:10px;align-items:center;padding:10px 0;border-top:1px solid var(--line)}
.stf-job-line:first-of-type{border-top:0}
.stf-job-line b{font-size:14px}
.stf-job-line>div{display:flex;flex-wrap:wrap;gap:6px}
.stf-chip{font-size:12.5px;font-weight:700;border-radius:999px;padding:5px 11px;background:var(--panel-soft,#f3efe4);border:1px solid var(--line)}
.stf-chip.ct{background:#fbf1d8;border-color:#e4c98a;color:#7a5a12}
.stf-time{list-style:none;margin:0;padding:0 0 0 18px;border-left:2px solid #e4c98a}
.stf-time li{position:relative;padding:0 0 14px 10px}
.stf-time li:before{content:"";position:absolute;left:-25px;top:4px;width:10px;height:10px;border-radius:50%;background:var(--gold-2,#c9a24e);box-shadow:0 0 0 3px var(--panel,#fff)}
.stf-time span{display:block;font-size:11.5px;color:var(--muted)}
.stf-time b{display:block;font-size:14px;text-transform:capitalize}
.stf-time small{display:block;font-size:12.5px;color:var(--muted)}
.stf-time em{font-style:normal;font-size:11px;color:var(--muted)}
.stf-more{margin-bottom:12px}
@media (max-width:900px){.stf-cols{grid-template-columns:1fr}.stf-job-line{grid-template-columns:1fr}}
@media (max-width:900px){.stf-hero .ph-actions{flex-wrap:wrap}.stf-hero .ph-actions .btn{flex:1 1 140px}.stf-roles{justify-content:center}}
/* Update 81: Make timetable — step 1 by group (same groups as Day plans) */
.ttm-groups button.part{border-color:var(--gold,#c9a24e);border-style:dashed}
.ttm-groups button.part small::after{content:' · some classes'}
.ttm-groupbar{display:flex;flex-wrap:wrap;align-items:center;justify-content:space-between;gap:10px;font-size:13.5px}
.ttm-addwhy{font-size:12.5px;margin:8px 0 0}
.ttm-addhint{display:flex;gap:8px;align-items:center;background:#fff7e6;border:1px solid #ecd49a;color:#6b4e12;border-radius:12px;padding:10px 12px;font-size:13px;margin:0}
.ttm-addhint .icon{width:16px;flex:none}.ttm-addhint .btn{margin-left:8px}
.ttm-some{margin-top:12px}.ttm-some summary{cursor:pointer;font-size:13px;font-weight:700;color:var(--muted)}.ttm-some .class-chips{margin-top:10px}
/* Update 81: the money lock */
.money-lock{text-align:center;padding:40px 22px;max-width:560px;margin:0 auto}
.money-lock .ml-ico{width:64px;height:64px;margin:0 auto 14px;border-radius:20px;display:grid;place-items:center;background:var(--navy,#0b1930);color:#e8cf8a}
.money-lock .ml-ico .icon{width:30px;height:30px}
.money-lock h2{font-size:22px;margin-bottom:8px}.money-lock p{color:var(--muted);font-size:14px;margin:0 auto 18px;max-width:380px}
.td-tile.locked b{font-size:30px}
#moneyPin{font-size:24px;letter-spacing:.4em;text-align:center}
/* Update 81: Royal Pay list in Finance */
.rp-row{display:flex;justify-content:space-between;gap:14px;padding:12px 0;border-top:1px solid var(--line);flex-wrap:wrap}
.rp-row:first-of-type{border-top:0}
.rp-main{display:flex;flex-direction:column;gap:2px;min-width:0}.rp-main b{font-size:16px}.rp-main span{font-size:13px}.rp-main small{font-size:11.5px;color:var(--muted)}
.rp-side{display:flex;flex-direction:column;align-items:flex-end;gap:4px;font-size:12px}.rp-side small{color:var(--muted)}
.rp-note{color:#9b2c1d!important}
.rp-sort{border-color:#ecd49a;background:#fffaf0}
@media(max-width:700px){.rp-side{align-items:flex-start}}

/* Update 82: Royal Shop (office) */
.rs-switch{display:flex;align-items:center;justify-content:space-between;gap:16px;margin-bottom:18px;flex-wrap:wrap}
.rs-switch h2{margin:0;font-size:17px}.rs-switch p{margin:4px 0 0;color:var(--muted);font-size:13px;max-width:640px}
.rs-cols{display:grid;grid-template-columns:minmax(0,1fr) 300px;gap:20px;align-items:start}
.rs-side{display:grid;gap:16px;position:sticky;top:16px}
@media(max-width:1000px){.rs-cols{grid-template-columns:1fr}.rs-side{position:static}}
.rs-help{font-size:13px;margin:0 0 14px}
.rs-st{display:flex;gap:8px;flex-wrap:wrap;margin-bottom:12px}
.rs-st button{display:inline-flex;align-items:center;gap:8px;border:1px solid var(--line);background:var(--panel,#fff);color:var(--ink);border-radius:999px;padding:7px 8px 7px 14px;font-size:13px;font-weight:650;min-height:38px}
.rs-st button i{font-style:normal;min-width:24px;height:24px;border-radius:999px;display:grid;place-items:center;background:#eef1f6;font-size:12px;font-weight:800}
.rs-st button.on{background:var(--navy,#0b1930);border-color:var(--navy,#0b1930);color:#fff}.rs-st button.on i{background:var(--gold,#d4af61);color:var(--navy,#0b1930)}
.rs-st button.s-paid:not(.on) i{background:#e5ecfa;color:#1f4e79}.rs-st button.s-waiting:not(.on) i{background:#fbf1dc;color:#8a5f0f}.rs-st button.s-ready:not(.on) i{background:#e2f2e8;color:#1f5f35}
.rs-order{margin-bottom:12px;border-left:5px solid #cfd6e2}
.rs-order.s-paid{border-left-color:#1f4e79}.rs-order.s-ready{border-left-color:#2f7a4a}.rs-order.s-waiting{border-left-color:#d6a54a}.rs-order.s-cancelled{opacity:.75}
.rs-oh{display:flex;align-items:center;gap:12px;flex-wrap:wrap}.rs-oh .muted{font-size:12.5px}.rs-no{font-size:17px;letter-spacing:.04em}.rs-tot{margin-left:auto;font-size:17px}
.rs-who{display:flex;align-items:center;gap:12px;margin:12px 0 6px}.rs-who small{display:block;color:var(--muted);font-size:12.5px}
.rs-ini{width:40px;height:40px;border-radius:12px;display:grid;place-items:center;background:#e5ecfa;color:#1f4e79;font-weight:800;font-size:13px;flex:none}
.rs-lines{list-style:none;margin:6px 0;padding:0}.rs-lines li{display:flex;justify-content:space-between;gap:12px;padding:7px 0;border-top:1px dashed var(--line);font-size:14px}.rs-lines li:first-child{border-top:0}
.rs-lines .rs-sum{border-top:1px solid var(--line)}.rs-size{color:var(--muted);font-size:12.5px}
.rs-ref{margin:6px 0 0;font-size:12px;color:var(--muted)}.rs-ref a{font-weight:700}
.rs-order .actions{display:flex;gap:8px;flex-wrap:wrap;margin-top:12px}
.rs-money h2,.rs-how h2{margin:0 0 10px;font-size:16px}.rs-how p{font-size:13px;color:var(--muted);margin:0 0 8px}
.rs-mrow{display:grid;grid-template-columns:1fr auto;gap:2px 10px;padding:8px 0;border-top:1px solid var(--line)}.rs-mrow:first-of-type{border-top:0}.rs-mrow span{font-size:13px;color:var(--muted)}.rs-mrow b{font-size:17px;grid-row:span 2;align-self:center}.rs-mrow small{font-size:12px;color:var(--muted)}
.rs-items{padding:6px 18px}
.rs-item{display:grid;grid-template-columns:56px minmax(0,1fr) auto auto;gap:14px;align-items:center;padding:12px 0;border-top:1px solid var(--line)}.rs-item:first-child{border-top:0}
.rs-item.off{opacity:.6}.rs-iname small{display:block;color:var(--muted);font-size:12px;margin-top:2px}
.rs-tile{border-radius:14px;display:grid;place-items:center;overflow:hidden;flex:none;background:#eef1f6}.rs-tile img{width:100%;height:100%;object-fit:cover}
.rs-stock{display:flex;gap:6px;flex-wrap:wrap;margin-top:7px}
.rs-chip{padding:3px 9px;border-radius:999px;font-size:12px;font-weight:800;background:#edf3ee;color:#1f5f35}.rs-chip.low{background:#fdf0d6;color:#8a5a0b}.rs-chip.out{background:#f6e1dc;color:#9b2c1d}
.rs-price{font-size:15px;white-space:nowrap}.rs-iact{display:flex;gap:6px}
@media(max-width:760px){.rs-item{grid-template-columns:56px 1fr}.rs-price,.rs-iact{grid-column:2}}
.rs-photo{display:flex;gap:16px;align-items:center;margin-bottom:16px}.rs-file{cursor:pointer;display:inline-flex}
.rs-fsec{margin:16px 0;display:grid;gap:10px}
.rs-ccs{display:flex;gap:6px;flex-wrap:wrap}
.rs-cc{border:1px solid var(--line);background:#fff;border-radius:999px;padding:6px 12px;font-size:13px;font-weight:650;color:var(--ink);min-height:34px}
.rs-cc.on{background:var(--navy,#0b1930);border-color:var(--navy,#0b1930);color:#fff}
.rs-check{display:flex;gap:10px;align-items:flex-start;font-size:14px;cursor:pointer}.rs-check input{margin-top:3px;width:18px;height:18px;flex:none}
.rs-szrow{display:grid;grid-template-columns:1fr 1fr 40px;gap:10px;align-items:end}
.rs-addline{display:grid;grid-template-columns:minmax(0,2fr) minmax(0,1fr) 100px auto;gap:10px;align-items:end}
.rs-addline .field[hidden]{display:none}
@media(max-width:760px){.rs-addline{grid-template-columns:1fr 1fr}.rs-addline .field:first-child{grid-column:1/-1}}
[data-theme=dark] .rs-st button,[data-theme=dark] .rs-cc{background:transparent;color:inherit}

/* Update 83: exact hours for teachers */
.ttm-trow{align-items:flex-start}
.ttm-tname{display:flex;flex-direction:column;gap:3px;min-width:180px;flex:1 1 220px}
.ttm-fit{display:inline-flex;align-items:flex-start;gap:6px;font-size:12px;line-height:1.4;padding:4px 9px;border-radius:9px;margin-top:3px;max-width:520px}
.ttm-fit .icon{width:14px;height:14px;flex:none;margin-top:1px}
.ttm-fit.ok{background:var(--good-soft,#e7f3eb);color:var(--good,#1f6b3e)}.ttm-fit.bad{background:#fbe9e4;color:#9b2c1d}
.ttm-days button.w-hrs{background:#e5ecfa;color:#1f4e79;border-color:transparent;min-width:84px}
.ttm-days button.w-hrs small{font-size:10px;white-space:normal;text-align:center;line-height:1.25}
.ttm-tact{display:flex;gap:6px;flex-wrap:wrap;align-items:center;flex:1 1 100%}
.ttm-said{color:var(--muted);font-size:11.5px;flex:1 1 100%}
.ttm-type,.ttm-week{flex:1 1 100%;background:var(--panel-soft,#f6f4ef);border-radius:12px;padding:12px 14px;display:grid;gap:8px}
.ttm-type textarea{width:100%;font:inherit;font-size:15px;border:1px solid var(--line);border-radius:10px;padding:10px;background:var(--panel,#fff);color:var(--ink);resize:vertical}
.ttm-tip{font-size:12px;margin:0}
.ttm-prev{background:var(--panel,#fff);border:1px solid var(--line);border-radius:10px;padding:10px 12px;display:grid;gap:8px}
.ttm-prev ul{list-style:none;margin:0;padding:0;display:grid;gap:4px}
.ttm-prev li{display:grid;grid-template-columns:96px 1fr auto;gap:8px;font-size:13.5px;align-items:baseline}
.ttm-prev li.w-off span{color:var(--muted);text-decoration:line-through}
.ttm-prev li small{font-size:12px;color:var(--good,#1f6b3e);font-weight:650}.ttm-prev li small.none{color:#9b2c1d}
.ttm-perr{margin:0;color:#9b2c1d;font-size:12.5px}
.ttm-wk td.tm small{display:block;font-size:10px;color:var(--muted)}
.ttm-wk td.can{background:#e7f3eb;color:#1f6b3e}.ttm-wk td.busy{background:var(--orange-soft,#fdf0d6);color:var(--orange,#8a5a0b)}.ttm-wk td.no{background:transparent;color:var(--muted);font-size:11px}
.ttm-legend2{display:flex;gap:6px 14px;flex-wrap:wrap;align-items:center;font-size:11.5px;margin:0}.ttm-legend2 i{display:inline-block;width:12px;height:12px;border-radius:3px;margin-right:-8px}
.ttm-legend2 i.can{background:#e7f3eb;border:1px solid #9fcfb0}.ttm-legend2 i.busy{background:#fdf0d6;border:1px solid #e3c27a}.ttm-legend2 i.no{background:transparent;border:1px solid var(--line)}
@media(max-width:560px){.ttm-prev li{grid-template-columns:80px 1fr}.ttm-prev li small{grid-column:2}}

/* Update 84: Make timetable teacher by teacher */
.ttm-tcards{display:grid;gap:14px}
.ttm-tcard{border:1px solid var(--line);border-radius:16px;padding:14px 16px;background:var(--panel,#fff);display:grid;gap:12px}
.ttm-thead{display:flex;justify-content:space-between;align-items:flex-start;gap:10px}.ttm-thead b{font-size:16px}.ttm-thead small{display:block;color:var(--muted);font-size:12px}
.ttm-tsec{display:grid;gap:8px;padding-top:10px;border-top:1px dashed var(--line)}
.ttm-lab{font-size:12.5px;color:var(--muted);font-weight:700}
.ttm-hint{font-size:12.5px}
.ttm-trow2{display:grid;grid-template-columns:minmax(160px,1.3fr) minmax(0,2fr) 110px auto 36px;gap:10px;align-items:end;padding:8px 10px;border-radius:12px;background:var(--panel-soft,#f6f4ef)}
.ttm-f{display:grid;gap:4px;min-width:0}.ttm-f>span{font-size:11.5px;color:var(--muted);font-weight:650}
.ttm-f select,.ttm-f input{width:100%;font:inherit;font-size:14px;border:1px solid var(--line);border-radius:9px;padding:8px 9px;background:var(--panel,#fff);color:var(--ink);min-height:40px}
.ttm-ccs{display:flex;gap:6px;flex-wrap:wrap}
.ttm-ccs button{border:1px solid var(--line);background:var(--panel,#fff);color:var(--ink);border-radius:999px;padding:6px 12px;font:inherit;font-size:13px;font-weight:650;min-height:36px;cursor:pointer}
.ttm-ccs button.on{background:var(--navy,#0b1930);border-color:var(--navy,#0b1930);color:#fff}
.ttm-trow2 .ttm-d{align-self:center;white-space:nowrap}
.ttm-x{align-self:center}
.ttm-addsub{max-width:340px}
.ttm-tfoot{display:flex;gap:8px;flex-wrap:wrap;align-items:center;justify-content:space-between}
.ttm-tcard .ttm-type,.ttm-tcard .ttm-week{margin-top:2px}
.ttm-addt{display:flex;gap:10px 14px;align-items:end;flex-wrap:wrap;margin-top:14px;padding-top:14px;border-top:1px solid var(--line)}.ttm-addt .ttm-f{min-width:260px}
.ttm-clist{display:grid;gap:10px}
.ttm-crow{border:1px solid var(--line);border-radius:14px;padding:10px 14px;display:grid;gap:8px}.ttm-crow.bad{border-color:#e9b4a8;background:#fdf6f3}
.ttm-chead{display:flex;gap:8px 16px;align-items:center;flex-wrap:wrap}.ttm-chead>b{font-size:15px}.ttm-chead .ttm-f{margin-left:auto;width:150px}
.ttm-count{font-size:13px;color:var(--muted)}.ttm-count.over{color:#9b2c1d;font-weight:700}
.ttm-none{display:flex;gap:6px;flex-wrap:wrap;align-items:center;font-size:13px}.ttm-none>span:first-child{color:#9b2c1d;font-weight:700}.ttm-none small{flex:1 1 100%;color:var(--muted)}
.ttm-nchip{display:inline-flex;align-items:center;gap:6px;background:#fbe9e4;color:#7a2a1b;border-radius:999px;padding:3px 4px 3px 10px;font-weight:650}
.ttm-nchip button{border:0;background:#fff;color:#7a2a1b;border-radius:999px;padding:3px 9px;font:inherit;font-size:11.5px;cursor:pointer}
.ttm-allset{margin:0;color:var(--good,#1f6b3e);font-size:13px;font-weight:650}
.ttm-old summary{cursor:pointer;list-style:revert;padding:2px 0}.ttm-old[open] summary{margin-bottom:12px}
@media(max-width:760px){.ttm-trow2{grid-template-columns:1fr 1fr}.ttm-trow2 .ttm-fs,.ttm-trow2>.ttm-f:nth-child(2){grid-column:1/-1}.ttm-x{justify-self:end}.ttm-chead .ttm-f{margin-left:0}.ttm-addt .ttm-f{min-width:0;flex:1 1 100%}}
[data-theme=dark] .ttm-tcard{background:transparent}[data-theme=dark] .ttm-crow.bad{background:transparent}

.ttm-addbtn{justify-self:start}.ttm-tcard .btn{width:auto}

/* Update 86: school times inside Make timetable (step 2) */
.tt-tview{list-style:none;margin:4px 0 6px;padding:0;display:grid;gap:4px}
.tt-tview li{display:flex;gap:14px;align-items:baseline;padding:7px 12px;border-radius:10px;background:rgba(11,25,48,.045)}
.tt-tview li time{min-width:112px;font-variant-numeric:tabular-nums;color:var(--muted);font-size:13.5px}
.tt-tview li.band{background:#fff6e0;color:#5c3d00}
.tt-chk{display:flex;gap:10px;align-items:flex-start;padding:10px 12px;border-radius:12px;margin:4px 0 12px;font-size:14px;line-height:1.45}
.tt-chk ul{margin:4px 0 0;padding-left:18px}
.tt-chk svg{flex:none;width:18px;height:18px;margin-top:2px}
.tt-chk.ok{background:#eaf6ed;color:#1d5b2c}
.tt-chk.warn{background:#fff3d6;color:#5c3d00}
.tt-chk.bad{background:#fff1ee;color:#9b2c1d}
.tt-wm{color:#b7791f}
.tt-gtabs button.active .tt-wm{color:#e8cf8a}
.tt-special{margin-top:16px;border-top:1px solid var(--line);padding-top:12px}
.tt-special summary{cursor:pointer;font-weight:600}
.tt-spec{margin-top:12px;padding-top:12px;border-top:1px dashed var(--line)}
#ttTimesCard .tt-gtools{display:flex;flex-wrap:wrap;gap:8px;align-items:center;margin-top:10px}
#ttTimesCard .tt-gtools .btn{white-space:normal;text-align:left;height:auto;min-height:36px;max-width:100%}
#ttTimesCard .tt-savebar:not(.dirty){position:static}
#ttTimesCard .tt-savebar:not(.dirty){position:static}

/* Update 87: classes with their own lesson times each day */
.tt-dgrid{display:grid;grid-template-columns:repeat(5,minmax(0,1fr));gap:8px}
.tt-dcol h4{margin:0 0 6px;font-size:13px;color:var(--muted);font-weight:700}
.tt-drow{display:grid;gap:3px;margin-bottom:6px}
.tt-drow time{font-size:11.5px;color:var(--muted);font-variant-numeric:tabular-nums}
.tt-drow .tt-cell{width:100%;min-height:54px}
.tt-drow.band .tt-band{padding:6px 8px;border-radius:10px;font-size:12.5px;writing-mode:horizontal-tb;transform:none}
@media (max-width:900px){.tt-dgrid{display:none}}
@media (min-width:901px){.tt-ownnote ~ .tt-mlist{display:none}}
.ttm-made{display:flex;gap:10px;align-items:flex-start;margin:10px 0;padding:10px 12px;border-radius:12px;background:#fff3d6;color:#5c3d00;font-size:13.5px;line-height:1.45}
.ttm-made svg{flex:none;width:18px;height:18px;margin-top:1px}
.ttm-fitgrid{display:grid;grid-template-columns:repeat(5,minmax(120px,1fr));gap:8px;min-width:640px}
.ttm-fday h4{margin:0 0 6px;font-size:13px}
.ttm-fl{display:grid;gap:1px;padding:6px 8px;margin-bottom:5px;border-radius:9px;background:rgba(11,25,48,.045);font-size:12.5px}
.ttm-fl time{font-size:11px;color:var(--muted);font-variant-numeric:tabular-nums}
.ttm-fl small{color:var(--muted);font-size:11px}
.ttm-fl.band{background:#fff6e0;color:#5c3d00;display:flex;gap:8px;align-items:baseline}
.ttm-fl.free{opacity:.6}
.ttm-fl.made{box-shadow:inset 0 0 0 2px #c9a227;background:#fffaf0}
.ttm-legend i.made{display:inline-block;width:12px;height:12px;border-radius:3px;box-shadow:inset 0 0 0 2px #c9a227;margin-right:6px;vertical-align:-1px}
.ttp-band{background:#f4ecd8}
@media print{
  .ttp-own .ttp-list td{padding:4px 6px}
  .ttp-own .ttp-l{padding:5px 0}
  .ttp-own .ttp-list .ttp-l b{display:block;font-size:14.5px;line-height:1.2}
  .ttp-own .ttp-list .ttp-l small{display:block;font-size:11.5px;line-height:1.3;margin-top:1px}
  .ttp-own .ttp-l small span{font-size:11.5px}
  .ttp-own .ttp-l.ttp-band{background:#f4ecd8!important;-webkit-print-color-adjust:exact;print-color-adjust:exact;padding:4px 5px}
  .ttp-own .ttp-l.ttp-band small,.ttp-own .ttp-l.ttp-band b{display:inline;font-size:12px}
}

/* Update 88: clashes fixed when bringing in timetables */
.tti-fix{border:2px solid #c9a227;background:#fffaf0}
.tti-fix h3{margin:12px 0 4px;font-size:14px}
.tti-fix ul{margin:0;padding-left:18px;font-size:13.5px;line-height:1.5}
.tti-fix .tti-drop-list{color:#9b2c1d}
.tti-c.moved{box-shadow:inset 0 0 0 2px #c9a227;background:#fffaf0}

/* Update 89: the two-part class timetable (usual times + Special times), premium print */
@media print{
  .ttp-two thead tr.ttp-parts th{background:none!important;border:0;padding:0 0 3px;font-family:Georgia,serif;font-size:13px;letter-spacing:1.5px;text-transform:uppercase;color:#0a1f44}
  .ttp-two thead tr.ttp-parts th.ttp-p1{text-align:left;border-bottom:2px solid #0a1f44}
  .ttp-two thead tr.ttp-parts th.ttp-p2{text-align:left;color:#7a5a12;border-bottom:2px solid #b3862a}
  .ttp-two th.ttp-gap,.ttp-two td.ttp-gap{width:3mm;border:0!important;background:none!important;padding:0}
  .ttp-two thead th.ttp-s{background:#b3862a!important;color:#fff;-webkit-print-color-adjust:exact;print-color-adjust:exact}
  .ttp-two td.ttp-s{background:#fbf6ea!important;border-color:#b3862a!important;-webkit-print-color-adjust:exact;print-color-adjust:exact}
  .ttp-two td.ttp-s.on b{color:#5c3d00}
  .ttp-two td.ttp-star{background:#f7f1e3!important;-webkit-print-color-adjust:exact;print-color-adjust:exact;color:#7a5a12}
  .ttp-two td.ttp-star span{display:block;font-size:16px;line-height:1}
  .ttp-two td.ttp-star small{display:block;font-size:9.5px;color:#7a5a12;letter-spacing:.3px}
  .ttp-two.ttp-dense th,.ttp-two.ttp-dense td{font-size:10.5px;padding:4px}
  .ttp-two.ttp-dense td b{font-size:12px}
}
@media print{
  .ttp-two th.ttp-day{width:22mm}
  .ttp-two thead tr:not(.ttp-parts) th{font-size:10.5px;line-height:1.25;padding:4px 2px}
  .ttp-two th.ttp-bh{width:9mm;font-size:8.5px}
  .ttp-two td.ttp-band{width:9mm}
  .ttp-two td{overflow-wrap:anywhere;hyphens:auto}
  .ttp-two td b{font-size:12px;line-height:1.2}
  .ttp-two td small{font-size:10px}
}
@media print{
  .ttp-two col.cg-day{width:21mm}.ttp-two col.cg-b{width:8mm}.ttp-two col.cg-gap{width:3mm}
  .ttp-two td{overflow-wrap:normal;hyphens:none}
  .ttp-two td b{font-size:12.5px}
}
@media print{ .ttp-two col.cg-s{width:27mm} .ttp-two thead tr.ttp-parts th{white-space:nowrap} }

/* Update 90: the timetable helper */
.tth-start{display:flex;gap:16px;align-items:center;justify-content:space-between;flex-wrap:wrap;margin-bottom:14px;border:1px solid #c9a24e66;background:linear-gradient(135deg,#fffaf0,#fff)}
.tth-start b{font-size:16px}.tth-start p{margin:4px 0 0;font-size:13.5px;color:var(--muted);max-width:620px;line-height:1.45}
.tth .modal-head h2{font-size:21px;line-height:1.25}.tth .modal-head p{line-height:1.45}
.tth-body{display:flex;flex-direction:column;gap:12px;margin-top:6px}
.tth-msg{margin:8px 0 0;padding:9px 12px;border-radius:10px;background:#fff3d6;color:#5c3d00;font-size:14px}
.tth-foot{display:flex;justify-content:space-between;align-items:center;gap:10px;margin-top:16px;padding-top:12px;border-top:1px solid var(--line)}
.tth-where{font-size:12px;color:var(--muted)}
.tth-opts{display:grid;grid-template-columns:repeat(auto-fill,minmax(150px,1fr));gap:10px}
.tth-opt{display:flex;flex-direction:column;gap:3px;text-align:left;padding:14px;border:1px solid var(--line);border-radius:14px;background:var(--panel);cursor:pointer;font:inherit;color:inherit}
.tth-opt b{font-size:16px}.tth-opt small{color:var(--muted)}.tth-opt.on,.tth-opt:hover{border-color:#c9a24e;box-shadow:0 0 0 2px #c9a24e33}
.tth-acts{display:flex;gap:10px;flex-wrap:wrap;align-items:center}.tth-acts.col{flex-direction:column;align-items:stretch}.tth-acts.col .btn{justify-content:center}
.tth-box{padding:12px 14px;border:1px solid var(--line);border-radius:14px;background:var(--panel)}
.tth-box p{margin:4px 0}.tth-small{font-size:13px;color:var(--muted)}
.tth-times ol{list-style:none;margin:8px 0;padding:0;display:grid;gap:2px}
.tth-times li{display:flex;gap:12px;font-size:13.5px;padding:3px 6px;border-radius:6px}.tth-times li.band{background:#fff3d6;color:#5c3d00}
.tth-times time{min-width:96px;font-variant-numeric:tabular-nums;color:var(--muted)}.tth-times li.band time{color:inherit}
.tth-ok{display:flex;gap:8px;align-items:center;color:#1d5b2c;margin:6px 0}.tth-ok.big{font-size:16px;font-weight:600;padding:10px 12px;border-radius:12px;background:#eaf6ed}
.tth-ok svg,.tth-bad svg,.tth-warnbox svg{flex:none;width:18px;height:18px}
.tth-bad,.tth-warnbox{display:flex;gap:10px;align-items:flex-start;padding:11px 13px;border-radius:12px;font-size:14px;line-height:1.45}
.tth-bad{background:#fff1ee;color:#9b2c1d}.tth-warnbox{background:#fff3d6;color:#5c3d00}
.tth-bad ul,.tth-warnbox ul{margin:4px 0 0;padding-left:18px}.tth-bad p,.tth-warnbox p{margin:6px 0 0}
.tth-warn{color:#9b2c1d;font-size:14px;margin:4px 0}.tth-hint{font-size:13.5px;color:#5c3d00;background:#fff3d6;padding:8px 11px;border-radius:10px;margin:0}
.tth-now{margin:0;padding:8px 11px;border-radius:10px;background:var(--panel);border:1px solid var(--line);font-size:13.5px}
.tth-days{list-style:none;margin:8px 0;padding:0;display:grid;gap:4px}.tth-days li{display:flex;gap:12px;font-size:14px}.tth-days li b{min-width:96px}.tth-days li.w-off span{color:var(--muted);text-decoration:line-through}
.tth-tlist,.tth-rows{list-style:none;margin:0;padding:0;display:grid;gap:8px}
.tth-tlist li,.tth-rows li{display:flex;justify-content:space-between;align-items:center;gap:10px;padding:10px 12px;border:1px solid var(--line);border-radius:12px;background:var(--panel)}
.tth-tlist li span,.tth-rows li span{display:flex;flex-direction:column;gap:2px;min-width:0}.tth-tlist small,.tth-rows small{color:var(--muted);font-size:12.5px}
.tth-tlist li.bad{border-color:#e9b8ad}.tth-tlist li.bad small{color:#9b2c1d}.tth-tlist li.ok small{color:#1d5b2c}.tth-tlist li.todo small{color:#5c3d00}
.tth-chips{display:flex;flex-wrap:wrap;gap:10px}
.tth-chips button{display:flex;flex-direction:column;align-items:flex-start;gap:2px;padding:12px 16px;border-radius:14px;border:1px solid var(--line);background:var(--panel);font:inherit;color:inherit;cursor:pointer;min-width:110px}
.tth-chips button b{font-size:15px}.tth-chips button small{font-size:12px;color:var(--muted)}
.tth-chips button.on{background:#13284f;border-color:#13284f;color:#fff}.tth-chips button.on small{color:#f3d48b}
.tth-n input{max-width:140px;font-size:18px}
.tth-per{display:grid;grid-template-columns:repeat(auto-fill,minmax(120px,1fr));gap:10px}
.tth-sum{margin:0;font-size:14px}
.tth-give{display:grid;gap:6px}
.tth-subn{display:grid;grid-template-columns:repeat(auto-fill,minmax(130px,1fr));gap:8px;margin-top:10px}
.tth-subn label{display:flex;flex-direction:column;gap:3px;font-size:12.5px}.tth-subn input{max-width:90px}
.tth-cls.bad{border-color:#e9b8ad;background:#fff7f5}.tth-cls.ok b{display:flex;gap:6px;align-items:center;color:#1d5b2c}.tth-cls.done{opacity:.55}
.ttm-pnote{font-size:13px;margin:6px 0}
.ttm-share{display:flex;align-items:center;justify-content:space-between;gap:8px;font-size:13px;margin:6px 0;padding:6px 8px;border:1px dashed var(--line,#cbd5e1);border-radius:8px}
.ttm-share span{flex:1;min-width:0}
[data-theme="dark"] .tth-start{background:linear-gradient(135deg,#1d1a12,transparent)}
[data-theme="dark"] .tth-times li.band,[data-theme="dark"] .tth-warnbox,[data-theme="dark"] .tth-hint,[data-theme="dark"] .tth-msg{background:#3a2e14;color:#ffd98a}
[data-theme="dark"] .tth-bad{background:#3a1d1d;color:#ffb4b4}[data-theme="dark"] .tth-ok.big{background:#173222;color:#9fe0b4}[data-theme="dark"] .tth-ok{color:#9fe0b4}
[data-theme="dark"] .tth-cls.bad{background:#2a1a1a}
@media (max-width:560px){.tth .modal-head h2{font-size:18px}.tth-chips button{min-width:0;flex:1 1 40%}.tth-days li b{min-width:80px}.tth-start .btn{width:100%;justify-content:center}}
.tth .btn.ghost{background:transparent;color:var(--ink);border:1px solid var(--line);box-shadow:none;background-image:none}.tth .btn.ghost:hover{background:var(--panel-soft)}
/* Update 91: when each class closes; no Prep below Basic 4 */
.tt-close{margin-top:12px;padding:10px 12px;border:1px solid var(--line,#e2e2e2);border-radius:10px;font-size:13px}
.tt-close>b{display:block;margin-bottom:6px}
.tt-close-row{display:flex;flex-wrap:wrap;gap:10px}
.tt-close-row label{display:flex;flex-direction:column;gap:3px;font-size:12.5px;min-width:110px}
.tt-close-row label.own span{font-weight:700;color:#8a5a00}
.tt-close-row input{max-width:130px}
.tt-close-note{display:flex;gap:6px;align-items:flex-start;margin:8px 0 0;padding:8px 10px;border-radius:8px;background:#eaf6ed;color:#1d5b2c}
.tt-close-note .btn{margin-left:4px}
.tt-small{font-size:12px;margin:6px 0 0}
.ttm-noprep{font-size:12.5px}
[data-theme="dark"] .tt-close-note{background:#16301e;color:#bfe8c9}
.tt-close-note .btn.ghost{background:transparent;color:inherit;border:1px solid currentColor;box-shadow:none}

/* Update 93: royal seal, measured day and arrival calendar. */
.g93-seal{width:164px;height:164px;position:relative;flex:none;isolation:isolate}
.g93-ring{position:absolute;inset:0;width:100%;height:100%;filter:drop-shadow(0 9px 12px #0003)}
.g93-photo{position:absolute;inset:12%;border-radius:50%;overflow:hidden;background:#e9e2cf;display:grid;place-items:center;color:#173459;font-family:var(--serif,Georgia,serif);font-size:36px;font-weight:700}
.g93-photo>span{display:grid;place-items:center;width:100%;height:100%}.g93-photo img,.g93-photo svg{width:100%;height:100%;object-fit:cover;display:block}.g93-photo img{position:absolute;inset:0}.g93-photo img[hidden]{display:none}
.g93-crown{position:absolute;left:50%;top:-9%;width:29%;transform:translateX(-50%);filter:drop-shadow(0 3px 3px #0003)}
.g93-rank{position:absolute;right:-2%;bottom:7%;border-radius:999px;padding:5px 10px;font:700 12px var(--sans,Arial);background:linear-gradient(135deg,#f4e1a3,#c9a24e);color:#17213b;box-shadow:0 3px 10px #0003;white-space:nowrap}
.g93-avatar{width:30px;height:30px;position:relative;border-radius:50%;overflow:hidden;background:#e9e2cf;display:inline-grid;place-items:center;color:#173459;flex:none;font-size:10px;font-weight:800;box-shadow:0 0 0 1px #c9a24e88;vertical-align:middle}
.g93-avatar img{position:absolute;inset:0;width:100%;height:100%;object-fit:cover}.g93-avatar img[hidden]{display:none}
.g93-week{display:flex;justify-content:center;gap:17px;padding-top:16px}.g93-week-day{text-align:center;display:grid;gap:5px}.g93-week-day small{font-size:11px;color:#e9e3d4}
.g93-coin{width:27px;height:27px;border-radius:50%;display:grid;place-items:center;background:linear-gradient(135deg,#f1d998,#c9a24e);box-shadow:inset 0 0 0 3px #e8cf8a,inset 0 0 0 5px #9b7834;color:#17223b;font-size:12px;font-weight:800}
.g93-coin.late{background:#db901c;box-shadow:inset 0 0 0 2px #ffc461}.g93-coin.none{background:transparent;border:1px dashed #ffffff70;box-shadow:none}.g93-coin.today{outline:2px solid #fff;outline-offset:3px}
.g93-calendar{display:grid;grid-template-columns:repeat(5,minmax(0,1fr));gap:8px;margin-top:16px}.g93-weekhead{text-align:center;font-size:12px;color:#647087;padding-bottom:3px}
.g93-date{border-radius:11px;min-height:66px;display:flex;flex-direction:column;justify-content:center;align-items:center;gap:3px;min-width:0}.g93-date>small{font-size:10px;opacity:.8}.g93-date>b{font-size:14px;line-height:1.1}.g93-date>span{font-size:10px}
.g93-date.early{background:#e3f3ea;color:#166b4a}.g93-date.ontime{background:#e8eef9;color:#2f5597}.g93-date.late{background:#fbefd9;color:#986010}.g93-date.absent{background:#f7e6e6;color:#a13b3b}.g93-date.future{border:1px dashed #dfd4ba;color:#7a7f88}.g93-date.unrecorded{background:#f3f0e9;color:#747984}.g93-date.selected{outline:2px solid #c9a24e;outline-offset:2px}.g93-date.blank{background:none}
.g93-key{display:flex;gap:16px;flex-wrap:wrap;margin-top:18px;font-size:12px;color:#5e6a80}.g93-key>span{display:flex;align-items:center;gap:5px}.g93-key i{height:8px;width:8px;border-radius:3px}.g93-key .early i{background:#1d7a55}.g93-key .ontime i{background:#2f5597}.g93-key .late i{background:#b26b0f}.g93-key .absent i{background:#a93d3d}.g93-calnote{font-size:11px!important;color:#77808d;margin:12px 0 0!important}
@media(prefers-reduced-motion:reduce){.g93-seal{animation:none!important}}

.modalbox.g93-modal{width:920px;max-width:100%;padding:0;border:0;border-radius:24px;overflow-x:hidden;background:#fffefa}
.g93-office{--g93-line:#e8dfc9;color:#0d1f3c;background:#fffefa;font-family:var(--sans);overflow-wrap:anywhere}
.g93-header{position:relative;padding:24px 30px 20px;isolation:isolate;background:radial-gradient(ellipse at 15% 0%,#183e78 0%,#0b244b 48%,#071831 100%);color:#fff;border-bottom:3px solid #c9a24e;overflow:hidden}
.g93-header:after{content:"";position:absolute;left:0;bottom:0;right:0;height:1px;background:linear-gradient(90deg,transparent,#fff0b9,transparent)}
.g93-watermark{position:absolute;right:-30px;top:-35px;width:245px;opacity:.07;filter:grayscale(1) brightness(4);z-index:-1;pointer-events:none}
.g93-date-label{font-size:11px;letter-spacing:.11em;color:#ead296;padding-right:40px;text-transform:uppercase}
.g93-close{position:absolute;right:18px;top:16px;border:1px solid #ffffff24;width:40px;height:40px;border-radius:50%;background:#ffffff0d;color:white;font-size:25px;cursor:pointer}
.g93-identity{display:flex;gap:26px;align-items:center;margin:30px 0 4px}.g93-identity .g93-seal{width:150px;height:150px}.g93-who{flex:1;min-width:0}.g93-eyebrow{font-size:9px;letter-spacing:.19em;color:#dec891;margin:0 0 9px!important}
.g93-who h2{font-family:var(--serif);font-size:46px;line-height:1.05;font-weight:700;color:#fff;margin:0!important;letter-spacing:0}.g93-who>p:last-child{color:#c7d3e6;font-size:13px;margin:12px 0 0}
.g93-under{display:flex;align-items:center;justify-content:space-between;flex-wrap:wrap;gap:10px;padding:18px 30px 4px;color:#617086;font-size:12px}
.g93-status{display:inline-flex;align-items:center;gap:8px;padding:7px 12px;border-radius:99px;font-size:12px;font-weight:700;max-width:100%}.g93-status i{width:7px;height:7px;flex:none;border-radius:50%;background:currentColor;box-shadow:0 0 0 3px #ffffff80}
.g93-status.early{color:#1d7a55;background:#e3f3ea}.g93-status.ontime{color:#2f5597;background:#e8eef9}.g93-status.late{color:#986010;background:#fbefd9}.g93-status.absent{color:#a93d3d;background:#f7e6e6}
.g93-body{padding:20px 30px 28px;display:grid;grid-template-columns:1.1fr 1fr;gap:20px}.g93-body>*{min-width:0}
.g93-day{background:radial-gradient(ellipse at 50% 5%,#fff3d5,#fffefa 78%);border:1px solid var(--g93-line);border-radius:18px;padding:16px 18px 12px}
.g93-section-title{display:flex;align-items:center;justify-content:space-between;gap:8px}.g93-section-title h3{font-family:var(--serif);font-size:24px;font-weight:700;margin:0;color:#10264a;line-height:1.1}.g93-section-title>span{font-size:8px;letter-spacing:.12em;color:#7d7769;text-align:right}
.g93-sky{display:block;width:100%;overflow:visible;margin-top:4px}.g93-sky-value{font-family:var(--serif);font-size:34px;font-weight:700;fill:#10264a}.g93-sky-note{font-family:var(--sans);font-size:11px;fill:#617086}
.g93-endpoints{display:flex;justify-content:space-between;gap:12px;font-size:11px;color:#617086;margin-top:3px}.g93-endpoints b{display:block;color:#10264a;font-size:14px;padding-top:4px}.g93-endpoints>span:last-child{text-align:right}
.g93-facts{display:flex;flex-direction:column;gap:10px}.g93-fact{flex:1;display:flex;gap:12px;align-items:center;padding:14px;border:1px solid var(--g93-line);border-radius:16px;background:#faf6ec}.g93-fact>div{min-width:0}.g93-fact b{display:block;font-size:19px;color:#10264a}.g93-fact small{display:block;font-size:11.5px;line-height:1.5;color:#617086;margin-top:3px}
.g93-fact-icon{width:38px;height:38px;display:grid;place-items:center;flex:none;border-radius:12px;font-size:22px}.g93-fact-icon.early{color:#1d7a55;background:#e3f3ea}.g93-fact-icon.ontime{color:#2f5597;background:#e8eef9}.g93-fact-icon.gold{color:#936e20;background:#f7edcf}
.g93-card{grid-column:1/-1;border:1px solid var(--g93-line);border-radius:18px;padding:19px 20px}.g93-scans{margin-top:12px}.g93-scan{display:flex;align-items:center;gap:12px;padding:13px 0;border-top:1px solid var(--g93-line)}.g93-scan:first-child{border:0}.g93-scan>b{font-size:16px;min-width:40px}.g93-direction{border-radius:99px;padding:4px 8px;font-size:10px;font-weight:800;flex:none}.g93-direction.in{color:#1d7a55;background:#e3f3ea}.g93-direction.out{color:#2f5597;background:#e8eef9}
.g93-how{flex:1;min-width:0;color:#617086;font-size:12px;line-height:1.45}.g93-how small{display:block;margin-top:4px}.g93-remove{background:transparent;color:#a93d3d;border:1px solid #a93d3d44;border-radius:10px;font:600 12px var(--sans);padding:8px 10px;min-height:40px;cursor:pointer}
.g93-permissions{border-top:1px solid var(--g93-line);padding-top:5px}.g93-permissions p{font-size:12px;color:#617086}.g93-permissions b,.g93-permissions span{display:block;margin-top:4px}.g93-permissions b{color:#10264a}.g93-allow{margin-top:10px;background:linear-gradient(135deg,#f2dda1,#c9a24e)!important;color:#10264a!important;border:1px solid #b89748!important;box-shadow:0 3px 8px #c9a24e22}
.g93-footer{padding:16px 30px;background:#faf6ec;border-top:1px solid var(--g93-line);display:flex;align-items:center;justify-content:space-between;gap:14px;font-size:11px;color:#617086}.g93-footer .btn{flex:none}.g93-empty{color:#617086;font-size:13px}
.gl-tile .g93-avatar{float:left;margin:0 8px 4px 0}.g93-list-name{display:flex;align-items:center;gap:9px}.g93-list-name>div{min-width:0}
.g93-modal button:focus-visible{outline:3px solid #c9a24e;outline-offset:3px}
@media(max-width:640px){.modalbox.g93-modal{border-radius:18px}.g93-header{padding:20px 18px 18px}.g93-date-label{font-size:9px}.g93-identity{gap:14px;margin-top:27px}.g93-identity .g93-seal{width:103px;height:103px}.g93-seal .g93-rank{font-size:9px;padding:4px 7px}.g93-who h2{font-size:30px}.g93-who>p:last-child{font-size:11px;margin-top:8px}.g93-eyebrow{font-size:7px;letter-spacing:.12em}.g93-under{padding:16px 18px 0}.g93-body{padding:18px;grid-template-columns:1fr;gap:15px}.g93-day{padding:16px 16px 13px}.g93-sky{max-width:370px;margin:0 auto}.g93-facts{gap:8px}.g93-fact{padding:11px 13px}.g93-fact b{font-size:18px}.g93-card{padding:17px 13px}.g93-calendar{gap:5px}.g93-date{min-height:62px;border-radius:8px}.g93-date>b{font-size:12px}.g93-date>span{font-size:8px}.g93-key{gap:10px;font-size:10px}.g93-scan{gap:7px;flex-wrap:wrap}.g93-scan>b{font-size:14px;min-width:33px}.g93-how{font-size:11px;flex-basis:calc(100% - 155px)}.g93-remove{font-size:10px;padding:7px}.g93-footer{padding:15px 18px}.g93-section-title h3{font-size:24px}}

/* ===== Update 95: the pupil's fees FULL SCREEN (Account, Money received) with the child's photo ===== */
#modal.modal:has(.f95){padding:0}
#modal .modalbox:has(.f95){width:100vw;max-width:100vw;height:100dvh;max-height:100dvh;border:0;border-radius:0;padding:0;background:#f6f3ea;overflow-y:auto;overflow-x:hidden;box-shadow:none}
.f95{min-height:100%;display:flex;flex-direction:column;color:#0d1f3c}
.f95-m{white-space:nowrap;font-variant-numeric:tabular-nums}
.f95-top{position:sticky;top:0;z-index:6;display:flex;align-items:center;gap:12px;padding:10px 26px;background:#fffefaf0;backdrop-filter:blur(6px);border-bottom:1px solid #e8dfc9}
.f95-back{display:inline-flex;align-items:center;gap:6px;font:inherit;font-weight:700;font-size:14.5px;color:#0d1f3c;padding:8px 15px 8px 11px;border-radius:99px;border:1px solid #e8dfc9;background:#fff;cursor:pointer;white-space:nowrap}
.f95-where{color:#5e6a80;font-size:14px}.f95-sp{flex:1}
.f95-x{width:38px;height:38px;border-radius:50%;border:1px solid #e8dfc9;background:#fff;display:grid;place-items:center;color:#0d1f3c;cursor:pointer;flex:none}.f95-x svg{width:18px;height:18px}
.f95-back:focus-visible,.f95-x:focus-visible{outline:3px solid #c9a24e;outline-offset:2px}
.f95-band{position:relative;overflow:hidden;background:linear-gradient(160deg,#10306a 0%,#0a1f44 55%,#06142f 100%);padding:28px 40px 0;min-height:184px;flex:none}
.f95-band:after{content:"";position:absolute;left:0;right:0;bottom:0;height:3px;background:linear-gradient(90deg,#a88234,#f3dfa6,#c9a24e,#a88234)}
.f95-wm{position:absolute;right:-40px;top:-50px;width:300px;opacity:.08;filter:grayscale(1) brightness(3);pointer-events:none}
.f95-id{max-width:1240px;margin:0 auto;display:flex;align-items:flex-end;gap:26px;position:relative}
.f95-id .g93-seal{width:156px;height:156px;margin-bottom:-58px;z-index:2}
.f95-who{flex:1;min-width:0;padding-bottom:24px}
.f95-term{color:#e8cf8a;font-size:14px;letter-spacing:.03em}
.f95-who h2{margin:6px 0 0;font-family:var(--serif);font-weight:700;font-size:50px;line-height:1.02;color:#fff;overflow-wrap:anywhere}
.f95-status{flex:none;text-align:right;padding-bottom:24px}
.f95-status span{display:block;color:#c8d3e6;font-size:14px}
.f95-status b{display:block;font-family:var(--serif);font-weight:700;font-size:44px;line-height:1.05;color:#fff}
.f95-band.owe .f95-status b{color:#f3c98a}.f95-band.paid .f95-status b{color:#9fe0bf}.f95-band.ahead .f95-status b{color:#b9cdf3}
.f95-under{width:100%;max-width:1320px;margin:0 auto;padding:14px 40px 0 222px;display:flex;flex-wrap:wrap;gap:8px 18px;align-items:center;color:#5e6a80;font-size:14.5px}
.f95-chip{display:inline-flex;align-items:center;gap:7px;padding:5px 12px 5px 9px;border-radius:99px;font-weight:700;font-size:13px}
.f95-chip i{width:9px;height:9px;border-radius:50%;background:currentColor}
.f95-chip.good{background:#e3f3ea;color:#1d7a55}.f95-chip.warn{background:#fbefd9;color:#9a5c0c}.f95-chip.bad{background:#f7e6e6;color:#a93d3d}
.f95-wrap{width:100%;max-width:1320px;margin:0 auto;padding:24px 40px 40px;display:grid;grid-template-columns:minmax(0,1.55fr) minmax(0,1fr);gap:24px;flex:1;align-content:start}
.f95-recv .f95-wrap{grid-template-columns:minmax(0,1.35fr) minmax(0,1fr)}
.f95-main,.f95-side{display:flex;flex-direction:column;gap:22px;min-width:0}
.f95-recv .f95-side{position:sticky;top:76px;align-self:start}
.f95-card{background:#fffefa;border:1px solid #e8dfc9;border-radius:20px;padding:20px 22px}
.f95-card>h3{margin:0 0 12px;font-family:var(--serif);font-size:26px;font-weight:700;color:#0d1f3c}
.f95-fee{display:grid;grid-template-columns:minmax(0,1fr) auto;gap:5px 14px;padding:13px 0;border-top:1px solid #efe7d5}
.f95-fee:first-of-type{border-top:0;padding-top:2px}
.f95-fee-n{font-weight:700;font-size:16px;min-width:0}.f95-fee-s{text-align:right;font-weight:700}
.f95-fee-s.paid,.f95-ln .paid{color:#1d7a55}.f95-fee-s.owe,.f95-ln .owe{color:#a8620c}.f95-fee-s.ahead,.f95-ln .ahead{color:#2f5597}
.f95-bar{grid-column:1/-1;height:10px;border-radius:99px;background:#efe8d6;overflow:hidden}
.f95-bar i{display:block;height:100%;border-radius:99px;background:linear-gradient(90deg,#1d7a55,#3aa779)}
.f95-bar.owe i{background:linear-gradient(90deg,#c9a24e,#e0b964)}.f95-bar.ahead i{background:linear-gradient(90deg,#2f5597,#5b7fc4)}
.f95-fee small{grid-column:1/-1;color:#5e6a80;font-size:13px}
.f95-total{display:flex;justify-content:space-between;align-items:baseline;gap:10px;margin-top:6px;padding-top:13px;border-top:2px solid #0d1f3c}
.f95-total span{font-weight:700}.f95-total b{font-family:var(--serif);font-size:28px}
.f95-tickets{display:flex;flex-direction:column;gap:12px}
.f95-tk{position:relative;display:grid;grid-template-columns:auto minmax(0,1fr) auto;align-items:center;gap:16px;padding:14px 18px 14px 22px;background:#fff;border:1px solid #e8dfc9;border-radius:14px;overflow:hidden}
.f95-tk:before{content:"";position:absolute;left:0;top:0;bottom:0;width:6px;background:#0a1f44}
.f95-tk:after{content:"";position:absolute;left:0;right:0;top:0;height:2px;background:linear-gradient(90deg,#a88234,#f3dfa6,#c9a24e)}
.f95-tk-mid{display:flex;flex-direction:column;gap:3px;min-width:0}.f95-tk-mid small{color:#5e6a80;font-size:13px}
.f95-tk-no{font-family:var(--serif);font-weight:700;font-size:21px;line-height:1.05;white-space:nowrap}
.f95-tk-r{display:flex;flex-direction:column;align-items:flex-end;gap:6px}
.f95-tk-amt{font-family:var(--serif);font-size:24px;font-weight:700}
.f95-tk-acts{display:flex;gap:8px;flex-wrap:wrap;justify-content:flex-end}
.f95-tk.cx{background:#fbf8f2}.f95-tk.cx:before{background:#a93d3d}
.f95-tk.cx .f95-tk-no,.f95-tk.cx .f95-tk-amt{color:#8b93a3;text-decoration:line-through;text-decoration-thickness:1.5px}
.f95-tk .f95-why,.f95-told.bad{color:#a93d3d!important}.f95-told{color:#1d7a55!important}
.f95-stamp{width:60px;height:60px;flex:none;transform:rotate(-12deg)}
.f95-hint{color:#5e6a80;font-size:13px;margin:12px 0 0}
.f95-acts{display:flex;flex-direction:column;gap:10px}.f95-acts .btn{width:100%;justify-content:center;padding:13px 16px;font-size:15px}
.btn.f95-gold{background:linear-gradient(135deg,#f3dfa6 0%,#d9b764 38%,#c9a24e 60%,#a88234 100%);border-color:#a88234;color:#1d1405;box-shadow:0 8px 18px -10px #8a6a22}
.btn.f95-gold:disabled{opacity:.45;cursor:not-allowed;box-shadow:none}
.f95-ad{display:flex;justify-content:space-between;gap:12px;padding:11px 0;border-top:1px solid #efe7d5}
.f95-ad:first-of-type{border-top:0}.f95-ad b{display:block}.f95-ad small{color:#5e6a80;font-size:12.5px}.f95-ad.off{opacity:.6}
.f95-ad-r{text-align:right;flex:none}.f95-ad-r .text-btn{font-size:12.5px}
.f95-fold{margin-top:8px;border-radius:12px;background:#faf6ec;padding:2px 12px}
.f95-fold summary{cursor:pointer;padding:10px 0;color:#5e6a80;font-size:13.5px;list-style-position:inside}
.f95-person{display:flex;gap:12px;align-items:center;padding:8px 0}.f95-person b{display:block}.f95-person small{color:#5e6a80}
.f95-av{width:44px;height:44px;border-radius:50%;background:#faf6ec;border:2px solid #e8cf8a;display:grid;place-items:center;font-family:var(--serif);font-weight:700;font-size:18px;flex:none}
.f95-bottom{position:sticky;bottom:0;z-index:6;margin-top:auto;display:flex;align-items:center;justify-content:flex-end;gap:12px;padding:12px 26px calc(12px + env(safe-area-inset-bottom));background:#fffefaf0;backdrop-filter:blur(6px);border-top:1px solid #e8dfc9}
.f95-msg{margin-right:auto;color:#5e6a80;font-size:14px}
.f95-bottom.f95-phone{display:none}
.f95-warn{border-radius:20px;padding:18px 20px;background:linear-gradient(180deg,#fff6e6,#fffaf0);border:2px solid #e3b65c}
.f95-warn h3{margin:0;font-family:var(--serif);font-size:25px;display:flex;gap:12px;align-items:center;line-height:1.15}
.f95-ico{width:36px;height:36px;border-radius:50%;background:#b26b0f;color:#fff;display:grid;place-items:center;font-family:var(--sans,inherit);font-weight:800;font-size:19px;flex:none}
.f95-warn p{margin:10px 0 0;line-height:1.5}
.f95-last{margin-top:12px;display:flex;align-items:center;gap:14px;padding:10px 14px;border-radius:14px;background:#fff;border:1px solid #e8dfc9}
.f95-last>div{flex:1;min-width:0;display:flex;flex-direction:column}.f95-last small{color:#5e6a80;font-size:13px}.f95-last>b{font-family:var(--serif);font-size:21px}
.f95-last .f95-stamp{width:52px;height:52px}
.f95-choices{display:flex;flex-wrap:wrap;gap:10px;margin-top:14px}
.f95-okline{display:flex;align-items:center;gap:10px;padding:12px 14px;border-radius:14px;background:#e8eef9;color:#20427e;font-weight:600}
.f95-okline svg{width:18px;height:18px;flex:none}.f95-okline span{flex:1}
.f95-owes{display:flex;justify-content:space-between;align-items:center;gap:10px;padding:11px 14px;border-radius:14px;background:#e3f3ea;color:#14553c;font-weight:600;margin-top:4px}
.f95-owed{display:flex;flex-wrap:wrap;gap:8px}.f95-owed span{padding:5px 11px;border-radius:99px;font-size:13px;font-weight:700;background:#faf6ec}
.f95-owed .owe{color:#a8620c;background:#fbefd9}.f95-owed .ahead{color:#2f5597;background:#e8eef9}.f95-owed .paid{color:#1d7a55;background:#e3f3ea}
.f95-recv .formgrid{margin-top:4px}
.f95 .formgrid>.full{grid-column:1/-1}
.f95 .fin-part{grid-template-columns:minmax(0,1fr) 150px auto}
.f95-mini{background:#fff;border:1px solid #e8dfc9;border-radius:18px;overflow:hidden;box-shadow:0 30px 60px -40px #0a1f44}
.f95-mh{position:relative;display:flex;align-items:center;gap:12px;padding:15px 20px;background:linear-gradient(160deg,#10306a,#0a1f44);color:#fff}
.f95-mh:after{content:"";position:absolute;left:0;right:0;bottom:0;height:3px;background:linear-gradient(90deg,#a88234,#f3dfa6,#c9a24e,#a88234)}
.f95-mh img{width:40px;height:40px;object-fit:contain}.f95-mh b{font-family:var(--serif);font-size:20px;letter-spacing:.06em;display:block}.f95-mh small{display:block;color:#e8cf8a;font-size:12px}
.f95-mb{padding:14px 20px 16px}.f95-mb hr{border:0;border-top:2px solid #efe7d5;margin:8px 0}
.f95-ln{display:flex;justify-content:space-between;gap:12px;padding:8px 0;border-top:1px dashed #e8dfc9}.f95-ln:first-child{border-top:0}
.f95-ln span{color:#5e6a80}.f95-ln b{text-align:right;min-width:0;overflow-wrap:anywhere}
.f95-note{margin:10px 0 0;font-size:13px;color:#5e6a80;line-height:1.45}
@media (max-width:760px){
  .f95-top{padding:9px 14px}.f95-where{display:none}
  .f95-band{padding:20px 16px 0;min-height:0}
  .f95-id{flex-direction:column;align-items:center;text-align:center;gap:6px}
  .f95-id .g93-seal{width:124px;height:124px;margin-bottom:0}
  .f95-who{padding-bottom:0}.f95-who h2{font-size:36px}
  .f95-status{text-align:center;padding-bottom:20px}.f95-status b{font-size:32px}
  .f95-under{padding:12px 16px 0;justify-content:center;text-align:center;font-size:13.5px}
  .f95-wrap,.f95-recv .f95-wrap{grid-template-columns:1fr;padding:16px 14px 24px;gap:16px}
  .f95-recv .f95-side{position:static}
  .f95-card{padding:16px 15px;border-radius:18px}.f95-card>h3{font-size:23px}
  .f95-tk{grid-template-columns:minmax(0,1fr);gap:8px;padding:12px 14px 12px 18px}
  .f95-tk .f95-stamp{display:none}
  .f95-tk-r{flex-direction:row;align-items:center;justify-content:space-between}
  .f95-acc .f95-acts{display:none}
  .f95-bottom{padding:10px 14px calc(10px + env(safe-area-inset-bottom))}
  .f95-bottom.f95-phone{display:flex}
  .f95-bottom .f95-msg{display:none}.f95-bottom .btn{flex:1;justify-content:center}
  .f95-recv .f95-bottom .f95-msg:not(:empty){display:block;flex-basis:100%;text-align:center;margin:0 0 4px}
  .f95-recv .f95-bottom{flex-wrap:wrap}
  .f95-warn h3{font-size:22px}.f95-last .f95-stamp{display:none}.f95-last .f95-tk-no{font-size:18px}
  .f95-choices .btn{flex:1 1 100%;justify-content:center;white-space:normal;text-align:center}
  .f95-owes{flex-direction:column;align-items:stretch;text-align:center}
}

/* Update 95b: Timetable → Classes, "Fill in missing teachers" */
.tt-fillstrip{margin-bottom:12px}.tt-fillstrip .btn{margin-left:6px;vertical-align:middle}
.tt-filllist{margin:8px 0 12px;padding-left:18px;line-height:1.75}.tt-filllist label{cursor:pointer}.tt-filllist input{vertical-align:middle;margin-right:4px}

/* Update 96: Friday Worship strip and the class-teacher timetables */
.tt-wsstrip{margin-bottom:12px}.tt-wsstrip .btn{margin-left:6px;vertical-align:middle}
.ttm-ws{display:flex;flex-wrap:wrap;align-items:center;gap:6px}.ttm-ws input[type=time]{width:auto;min-width:0;padding:4px 6px;border:1px solid var(--line,#d8dbe3);border-radius:8px;font:inherit}
.tt-ct{border:1px solid var(--line,#e4e6ee);border-radius:14px;padding:12px 14px;margin:10px 0;background:var(--card,#fff)}
.tt-ct h3{margin:0 0 4px;font-size:16px}.tt-ct .muted{font-size:13px}
.tt-ctn{display:flex;flex-wrap:wrap;gap:6px;margin:8px 0}.tt-ctn span{background:rgba(201,162,39,.14);border-radius:999px;padding:2px 10px;font-size:12.5px;white-space:nowrap}
.tt-ctw{width:100%;border-collapse:collapse;font-size:12.5px}.tt-ctw th{text-align:left;padding:4px 6px;white-space:nowrap;vertical-align:top;color:var(--muted,#667)}
.tt-ctw{table-layout:fixed;min-width:0}.tt-ctw th{width:44px}.tt-ctw td{padding:4px 6px;border-top:1px solid var(--line,#eceef3);line-height:1.6;white-space:normal;overflow-wrap:anywhere}.tt-ctw .i{white-space:nowrap}.tt-ctw .w{color:#8a6d0b;font-weight:600}
.tt-ctpick{display:flex;flex-wrap:wrap;gap:8px;margin:6px 0 10px}.tt-ctpick label{display:flex;gap:6px;align-items:center;border:1px solid var(--line,#e4e6ee);border-radius:10px;padding:6px 10px;cursor:pointer}
.tt-ctwarn{color:#8a5a00;font-size:12.5px;margin:4px 0 0;padding-left:16px}
@media (max-width:640px){.tt-ctw th{white-space:normal}}
/* Update 99: Scan a child's card (office phones) */
.scg-wrap{max-width:560px;margin:0 auto;padding:14px 16px 24px;display:flex;flex-direction:column;gap:14px}
.scg-cam{position:relative;border-radius:22px;overflow:hidden;background:#06142f;aspect-ratio:3/4;max-height:62vh;box-shadow:0 12px 30px rgba(6,20,47,.25)}
.scg-cam video{width:100%;height:100%;object-fit:cover;display:block}
.scg-frame{position:absolute;inset:10% 14% 30% 14%;pointer-events:none}
.scg-frame i{position:absolute;width:44px;height:44px;border:4px solid #e0bd68;border-radius:6px}
.scg-frame i:nth-child(1){left:0;top:0;border-right:0;border-bottom:0}.scg-frame i:nth-child(2){right:0;top:0;border-left:0;border-bottom:0}
.scg-frame i:nth-child(3){left:0;bottom:0;border-right:0;border-top:0}.scg-frame i:nth-child(4){right:0;bottom:0;border-left:0;border-top:0}
.scg-say{position:absolute;left:0;right:0;bottom:0;padding:14px 18px 16px;background:rgba(6,20,47,.9);color:#fff;text-align:center;display:flex;flex-direction:column;gap:3px}
.scg-say b{font-size:16px;color:#f3dc98}.scg-say span{font-size:13px;opacity:.9}
.scg-cam:focus{outline:none}.scg-off[hidden]{display:none!important}
.scg-off{position:absolute;inset:0;display:flex;flex-direction:column;align-items:center;justify-content:center;gap:12px;color:#fff;text-align:center;padding:20px;background:#0a1f44}
.scg-find label{display:block;font-weight:700;font-size:14px;margin-bottom:6px;color:var(--ink,#0d1f3c)}
.scg-find input{width:100%;min-height:46px;border-radius:12px;border:1px solid #e3d6b4;padding:0 14px;font-size:16px;background:#fff;color:#0d1f3c}
.scg-list{display:flex;flex-direction:column;gap:6px;margin-top:8px}
.scg-list button{display:flex;justify-content:space-between;align-items:center;gap:10px;text-align:left;border:1px solid #e3d6b4;background:#fffdf7;border-radius:12px;padding:11px 14px;font:inherit;color:#0d1f3c;cursor:pointer}
.scg-list button span{color:#6a5a33;font-size:13px}
.scg-note{font-size:12px;color:#5d6880;text-align:center;margin:0}
.scg-big{font-size:17px;margin:2px 0 6px}
.scg-att{display:flex;align-items:center;gap:14px;flex-wrap:wrap}
.scg-pct{font:700 34px/1 Georgia,serif;color:#1d7a55}.scg-pct.mid{color:#b26b0f}.scg-pct.low{color:#a93d3d}
.scg-sub{margin:14px 0 8px;font-size:13px;letter-spacing:.06em;text-transform:uppercase;color:#8a6a1f}

/* ===== Update 100b: View card (ID cards) — the card front and back full screen, as printed ===== */
.idv .idv-wrap{flex:1;background:radial-gradient(120% 80% at 50% 0,#173a7a 0,#0a1f44 55%,#06142f 100%);color:#e9eef8;padding:26px 16px 22px;display:flex;flex-direction:column;align-items:center;gap:16px}
.idv-cards{--z:1.4;display:flex;gap:40px;justify-content:center;align-items:flex-start}
.idv-cards.idv-stack{flex-direction:column;align-items:center;gap:22px}
.idv-side{margin:0;display:flex;flex-direction:column;align-items:center;gap:10px}
.idv-fit{width:calc(54mm * var(--z));height:calc(85.6mm * var(--z));position:relative;flex:none}
.idv-fit>.idc-card{position:absolute;left:0;top:0;transform:scale(var(--z));transform-origin:0 0;outline:none;box-shadow:0 1.2mm 5mm rgba(0,0,0,.5)}
.idv .idc-qr{image-rendering:pixelated}
.idv-side figcaption{font-size:12px;letter-spacing:.1em;text-transform:uppercase;color:#e8cf8a;font-weight:700;text-align:center}
.idv-note{max-width:640px;text-align:center;font-size:13px;line-height:1.55;color:#c9d3e6;margin:0}
.idv-note b{color:#fff}
.idv-code{font-family:ui-monospace,Menlo,Consolas,monospace;color:#fff;letter-spacing:.04em}
.idv-acts{display:flex;gap:12px;justify-content:center;flex-wrap:wrap}
.idv-wait{color:#e9eef8;margin-top:48px}
.idv-err{display:flex;flex-direction:column;gap:14px;align-items:center;max-width:440px;text-align:center;margin-top:40px}
@media(max-width:640px){.idv .idv-wrap{padding:18px 12px 18px}.idv-acts{width:100%}.idv-acts .btn{flex:1;justify-content:center}}

/* Update 102 — Class tests set by the office (otests.js): navy and gold, phone first */
.ot-lock{display:flex;gap:10px;align-items:center;flex-wrap:wrap;border-radius:14px;padding:12px 14px;margin:0 0 14px;font-size:13.5px;line-height:1.45}
.ot-lock>.icon{flex:none;width:20px;height:20px}.ot-lock>span{flex:1;min-width:200px}.ot-lock-acts{display:flex;gap:8px;flex-wrap:wrap}
.ot-lock.shut{background:var(--navy-grad);color:#eef2fa;border:1px solid #c9a24e55}.ot-lock.shut b{color:#f3dfa6}.ot-lock.shut .icon{color:var(--gold-2)}
.ot-lock.open{background:var(--good-soft);color:var(--good);border:1px solid #1d6b4f33}.ot-lock.off{background:var(--panel-soft);color:var(--muted);border:1px dashed var(--line)}
.ot-hero{background:var(--navy-grad);color:#eef2fa;border-radius:18px;padding:18px 18px 16px;margin:0 0 16px;position:relative;overflow:hidden;border:1px solid #c9a24e40}
.ot-hero:after{content:"";position:absolute;right:-30px;top:-30px;width:150px;height:150px;border-radius:50%;border:18px solid #c9a24e1f}
.ot-hero-k{font-size:10.5px;letter-spacing:2.2px;color:var(--gold-2);font-weight:700}.ot-hero p{margin:10px 0 0;font-size:13px;color:#c8d3e6;max-width:640px;position:relative;z-index:1}
.ot-hero-nums{display:flex;gap:22px;flex-wrap:wrap;margin-top:8px;position:relative;z-index:1}.ot-hero-nums span{display:flex;flex-direction:column;font-size:12px;color:#c8d3e6}
.ot-hero-nums b{font-family:var(--serif);font-size:34px;line-height:1.05;color:#f3dfa6;font-variant-numeric:lining-nums;font-feature-settings:"lnum" 1}
.ot-group{margin:0 0 18px}.ot-group-h{display:flex;align-items:baseline;gap:10px;flex-wrap:wrap;margin:0 0 8px}.ot-group-h h2{font-family:var(--serif);font-size:22px;margin:0;color:var(--ink)}.ot-group-h p{margin:0;color:var(--muted);font-size:12.5px}.ot-group-h .badge{font-family:system-ui,-apple-system,'Segoe UI',Roboto,Arial,sans-serif;font-variant-numeric:lining-nums}
.ot-card{display:grid;grid-template-columns:64px 1fr;gap:12px;background:var(--panel);border:1px solid var(--line);border-left:4px solid var(--gold);border-radius:14px;padding:12px;margin:0 0 10px;box-shadow:var(--shadow)}
.ot-card.draft{border-left-color:#9aa4b5}.ot-card.written{border-left-color:var(--orange)}.ot-card.done{border-left-color:var(--good)}.ot-card.ot-today{border-left-color:var(--red);background:linear-gradient(90deg,#c9a24e14,var(--panel) 40%)}
.ot-date{background:var(--navy-grad);color:#eef2fa;border-radius:12px;display:flex;flex-direction:column;align-items:center;justify-content:center;padding:8px 4px;align-self:start;text-align:center}
.ot-date b{font-family:var(--serif);font-size:28px;line-height:1;color:#f3dfa6;font-variant-numeric:lining-nums;font-feature-settings:"lnum" 1}.ot-date span{font-size:11px;text-transform:uppercase;letter-spacing:1.4px;font-weight:700}.ot-date small{font-size:10.5px;color:#c8d3e6}
.ot-main{min-width:0}.ot-top{display:flex;gap:8px;align-items:center;justify-content:space-between;flex-wrap:wrap}.ot-top h3{margin:0;font-size:16px;color:var(--ink)}
.ot-what{margin:3px 0 0;font-size:14px}.ot-meta{margin:4px 0 0;font-size:12px;color:var(--muted);display:flex;flex-wrap:wrap;align-items:center;gap:3px}.ot-meta .icon{width:13px;height:13px}
.ot-shown{color:var(--orange)}.ot-status{margin:6px 0 0;font-size:12.5px;color:var(--accent);font-weight:600}
.ot-prog{display:flex;gap:12px;flex-wrap:wrap;margin-top:6px;font-size:12px;color:var(--muted)}.ot-prog b{color:var(--ink)}
.ot-acts{display:flex;gap:6px;flex-wrap:wrap;margin-top:10px}.ot-acts .btn{min-height:36px}.ot-del{color:var(--red)!important}
.ot-lockline{display:inline-flex;align-items:center;gap:5px;font-size:11.5px;color:var(--muted)}.ot-lockline .icon{width:13px;height:13px}
.ot-form{display:grid;gap:14px}.ot-sec{border:1px solid var(--line);border-radius:14px;padding:14px;background:var(--panel)}
.ot-sec h3{display:flex;align-items:center;gap:8px;margin:0 0 10px;font-size:15px;color:var(--ink)}.ot-sec h3 i{font-style:normal;width:24px;height:24px;border-radius:50%;background:var(--gold-grad);color:#1a1408;display:grid;place-items:center;font-size:12.5px;font-weight:800}
.ot-sec h4{margin:16px 0 8px;font-size:13.5px;color:var(--accent)}.ot-sec h4 small{font-weight:500;color:var(--muted);margin-left:6px}
.ot-teacher{margin:8px 0 0;font-size:13px;display:flex;gap:6px;align-items:flex-start;color:var(--muted)}.ot-teacher .icon{flex:none;width:16px;height:16px;margin-top:1px}.ot-teacher b{color:var(--ink)}
.ot-mode{display:grid;grid-template-columns:1fr 1fr;gap:8px;margin:0 0 12px}.ot-mode button{min-height:46px;border-radius:12px;border:1px solid var(--line);background:var(--panel-soft);color:var(--ink);font-weight:700;font-size:13.5px;padding:8px}
.ot-mode button.on{background:var(--navy-grad);color:#f3dfa6;border-color:#c9a24e88}
.ot-word{display:flex;gap:10px;align-items:center;flex-wrap:wrap;margin:0 0 10px}.ot-word span{font-size:12px;color:var(--muted);flex:1;min-width:180px}
.ot-maths{position:sticky;top:-1px;z-index:2;display:flex;gap:4px;flex-wrap:wrap;background:var(--panel-soft);border:1px solid var(--line);border-radius:12px;padding:6px;margin:0 0 6px}
.ot-maths button{min-width:36px;min-height:36px;border-radius:9px;border:1px solid var(--line);background:var(--panel);color:var(--ink);font-size:16px;font-weight:700;padding:0 6px}
.ot-q{border:1px solid var(--line);border-radius:12px;padding:10px;margin:0 0 8px;background:var(--panel-soft)}
.ot-qh{display:flex;gap:8px;align-items:flex-start}.ot-n{flex:none;width:28px;height:28px;border-radius:50%;background:var(--navy);color:#f3dfa6;display:grid;place-items:center;font-size:13px}
.ot-text{flex:1;min-width:0;border:1px solid var(--line);border-radius:10px;padding:8px 10px;font:inherit;font-size:14px;background:var(--panel);color:var(--ink);resize:vertical}
.ot-x{flex:none;width:34px;height:34px;border-radius:9px;border:1px solid var(--line);background:var(--panel);color:var(--red);font-weight:800}
.ot-opts{display:grid;grid-template-columns:1fr 1fr;gap:6px;margin:8px 0 0 36px}.ot-opt{display:flex;gap:6px;align-items:center}.ot-opt b{width:20px;color:var(--accent);text-align:center}
.ot-opt input,.ot-mkl input{flex:1;min-width:0;min-height:38px;border:1px solid var(--line);border-radius:9px;padding:0 9px;font:inherit;font-size:14px;background:var(--panel);color:var(--ink)}
.ot-ans{display:flex;gap:6px;align-items:center;flex-wrap:wrap;margin:8px 0 0 36px;font-size:12.5px;color:var(--muted)}
.ot-ans button,.ot-key button{min-width:40px;min-height:38px;border-radius:10px;border:1px solid var(--line);background:var(--panel);color:var(--ink);font-weight:800}
.ot-ans button.on,.ot-key button.on{background:var(--good);border-color:var(--good);color:#fff}
.ot-throw{display:flex;gap:8px;align-items:flex-start;flex-wrap:wrap;margin:8px 0 0 36px}.ot-upq .ot-throw{margin:0}.ot-mkl{display:flex;gap:6px;align-items:center;font-size:12.5px;color:var(--muted);width:130px}.ot-mkl input{width:70px;flex:none}
.ot-guide{flex:1;min-width:180px;border:1px solid var(--line);border-radius:10px;padding:8px 10px;font:inherit;font-size:13px;background:var(--panel);color:var(--ink);resize:vertical}
.ot-note{font-size:12.5px;color:var(--muted);margin:0 0 10px}.ot-pages{display:flex;gap:8px;overflow-x:auto;padding:4px 0 10px}.ot-pages figure{margin:0;flex:none;width:96px;text-align:center}
.ot-pages img{width:96px;height:132px;object-fit:cover;border:1px solid var(--line);border-radius:8px;background:#fff}.ot-pages figcaption{font-size:11px;color:var(--muted)}
.ot-upn{max-width:220px}.ot-keys{display:grid;grid-template-columns:repeat(auto-fill,minmax(230px,1fr));gap:6px}.ot-key{display:flex;gap:5px;align-items:center}.ot-key b{width:26px;text-align:right;color:var(--accent)}
.ot-where{display:grid;gap:8px;margin:10px 0}.ot-where label,.ot-check{display:flex;gap:8px;align-items:flex-start;font-size:13px;line-height:1.4}.ot-where input,.ot-check input{margin-top:3px;width:18px;height:18px;flex:none}
.ot-total{position:sticky;bottom:0;z-index:2;background:var(--navy-grad);color:#eef2fa;border-radius:12px;padding:10px 14px;font-size:13px}.ot-total b{color:#f3dfa6}.ot-sum{font-size:15px}.ot-warn{color:#ffb35c;font-weight:700}
.ot-pin{position:fixed;inset:0;z-index:10050;background:#06142fcc;display:grid;place-items:center;padding:16px}
.ot-pin-box{width:min(380px,100%);background:var(--panel);border-radius:18px;padding:20px;border:1px solid #c9a24e66;box-shadow:0 24px 60px -20px #000}
.ot-pin-box h2{font-family:var(--serif);margin:4px 0 6px;font-size:24px;color:var(--ink)}.ot-pin-box p{font-size:13px;color:var(--muted);margin:0 0 12px}
.ot-pin-box input{width:100%;min-height:50px;border-radius:12px;border:1px solid var(--line);font-size:24px;letter-spacing:8px;text-align:center;background:var(--panel-soft);color:var(--ink)}
.ot-pin-acts{display:flex;gap:8px;justify-content:flex-end;margin-top:14px}.ot-pin-err{color:var(--red)!important;font-weight:600;margin:8px 0 0!important}
.ot-qs-h{font-size:14px;margin:14px 0 8px}.ot-qs{display:grid;gap:5px}.ot-qbar{display:grid;grid-template-columns:30px 1fr 96px;gap:8px;align-items:center;font-size:12px}.ot-qbar b{text-align:right}
.ot-qbar i{height:12px;border-radius:6px;background:linear-gradient(90deg,var(--c) var(--w),var(--line) var(--w))}.ot-qbar.high{--c:var(--good)}.ot-qbar.mid{--c:var(--orange)}.ot-qbar.low{--c:var(--red)}
@media (max-width:560px){.ot-card{grid-template-columns:52px 1fr;gap:10px;padding:10px}.ot-date b{font-size:23px}.ot-opts,.ot-ans,.ot-throw{margin-left:0}.ot-opts{grid-template-columns:1fr}.ot-mode{grid-template-columns:1fr}.ot-hero-nums{gap:16px}.ot-hero-nums b{font-size:28px}.ot-acts .btn{flex:1 1 auto}}
/* Update 102b — the New class test form. Phone: nothing wider than the screen (the 3 buttons at the bottom pushed the form
   off the left edge on his brother's phone). Laptop (900px and wider): the whole screen, the buttons and the maths signs stay
   at the top, options A–D in one row, the class and the day side by side. */
.ot-form{grid-template-columns:minmax(0,1fr)}.ot-form>*{min-width:0}
.ot-form select,.ot-form input,.ot-form textarea{max-width:100%;min-width:0}
.ot-topbar{display:none}
@media (max-width:899px){.ot-form .form-actions{flex-wrap:wrap}.ot-form .form-actions .btn{flex:1 1 auto;justify-content:center}}
@media (min-width:900px){
  #modal.modal:has(.ot-full){padding:0}
  #modal .modalbox.ot-full{width:100vw;max-width:100vw;height:100dvh;max-height:100dvh;border:0;border-radius:0;padding:0 32px 28px;box-shadow:none;overflow-y:auto;overflow-x:hidden;background:var(--panel)}
  .ot-full>.modal-head,.ot-full .ot-form{max-width:1360px;margin-left:auto;margin-right:auto}
  .ot-full>.modal-head{padding-top:22px}
  .ot-full .ot-form{grid-template-columns:minmax(0,1fr) minmax(0,1fr);align-items:start}
  .ot-full .ot-topbar{display:grid;grid-template-columns:minmax(0,1fr) auto;gap:8px 16px;align-items:center;grid-column:1/-1;position:sticky;top:0;z-index:6;background:var(--panel);margin:0 -32px;padding:10px 32px;border-bottom:1px solid var(--line);box-shadow:0 10px 18px -16px #06142f80}
  .ot-topline{display:flex;gap:6px;align-items:baseline;min-width:0;overflow:hidden;white-space:nowrap;text-overflow:ellipsis;font-size:14px;color:var(--muted)}.ot-topline b{color:var(--ink);font-size:15.5px;overflow:hidden;text-overflow:ellipsis}
  .ot-topacts{display:flex;gap:8px}.ot-topacts .btn{white-space:nowrap}
  .ot-topmaths{grid-column:1/-1}.ot-topmaths[hidden]{display:none}.ot-topmaths .ot-maths{position:static;margin:0}
  .ot-full .ot-sec:nth-of-type(n+3),.ot-full .ot-total,.ot-full .form-actions{grid-column:1/-1}
  .ot-full .form-actions{display:none}
  .ot-full .ot-sec{height:100%}
  .ot-full .ot-sec:nth-of-type(-n+2){height:auto;align-self:stretch}
  .ot-full .ot-opts{grid-template-columns:repeat(4,minmax(0,1fr))}
  .ot-full .ot-sec:nth-of-type(2) .formgrid{grid-template-columns:1fr 1fr}
}
/* Update 102b — Timetable check */
.tt-checkstrip{margin-bottom:12px}
.ttc-list{display:grid;gap:14px;margin:6px 0 4px}
.ttc-cls h3{display:flex;align-items:center;gap:8px;margin:0 0 8px;font-size:16px;color:var(--ink)}
.ttc-item{border:1px solid var(--line);border-left:4px solid #c9a24e;border-radius:12px;padding:10px 12px;background:var(--panel);margin-bottom:8px}
.ttc-item.k-who{border-left-color:#b4442f}.ttc-item.k-hours{border-left-color:#d08a1e}.ttc-item.k-none{border-left-color:#2f5fa8}
.ttc-kind{font-size:11px;font-weight:800;letter-spacing:.06em;text-transform:uppercase;color:var(--muted);margin-bottom:2px}
.ttc-item>b{font-size:14.5px;color:var(--ink)}.ttc-item p{margin:4px 0 8px;font-size:13px;line-height:1.45;color:var(--muted)}
.ttc-fix{display:flex;flex-wrap:wrap;gap:6px;align-items:center}.ttc-fix small{font-size:11.5px;color:var(--muted);margin-right:6px}
@media (max-width:560px){.ttc-fix .btn{flex:1 1 100%;justify-content:center}}
/* Update 102b — each problem in red next to its box */
.ot-form .ot-bad{border-color:#c0392b!important;box-shadow:0 0 0 3px #c0392b22;border-radius:12px}
.ot-form .field.ot-bad{padding:6px;border:1.5px solid #c0392b}
.ot-err{color:#b3261e;font-size:13px;font-weight:700;line-height:1.4;margin:6px 0 2px;display:block}.ot-err .btn{margin-top:6px}
.ot-key.ot-bad{outline:2px solid #c0392b;outline-offset:2px}
/* Update 102b — "Type them here" is one white page (Samuel: "a blank space where the teacher will type the questions") */
.ot-fmt{display:inline-flex;gap:4px;margin-right:6px;padding-right:8px;border-right:1px solid var(--line)}
.ot-page{min-height:320px;background:#fff;color:#111;font-family:'Times New Roman',Georgia,serif;border:1.5px solid var(--line);border-radius:14px;padding:18px 20px;font-size:16px;line-height:1.65;outline:none;white-space:pre-wrap;overflow-wrap:anywhere;box-shadow:inset 0 1px 3px #06142f12;cursor:text}
.ot-page .m-fr{cursor:default;font-size:.92em}.ot-page sup,.ot-page sub{font-size:.72em}
.ot-page:focus{border-color:#c9a24e;box-shadow:0 0 0 3px #c9a24e33}
.ot-page:empty:before{content:attr(data-ph);color:#9a9a9a;white-space:pre-wrap;pointer-events:none}
.ot-pagehint{margin:8px 2px 0;font-size:12.5px;color:var(--muted);line-height:1.5}
.ot-found{margin-top:12px;border:1px dashed var(--line);border-radius:14px;padding:12px;background:var(--panel-soft)}
.ot-fnone{margin:0;font-size:13px;color:var(--muted);display:flex;gap:6px;align-items:flex-start}
.ot-fhead{font-size:13.5px;display:flex;gap:6px;align-items:center;margin-bottom:6px}
.ot-fgroup h5{margin:10px 0 6px;font-size:13px;color:var(--accent)}.ot-fgroup h5 small{font-weight:500;color:var(--muted);margin-left:6px}
.ot-frow{display:grid;grid-template-columns:34px minmax(0,1fr) auto;gap:6px 10px;align-items:center;padding:7px 8px;border-radius:10px;background:var(--panel);border:1px solid var(--line);margin-bottom:6px}
.ot-fno{font-weight:800;color:var(--accent);text-align:right}.ot-ftext{font-size:13.5px;overflow:hidden;text-overflow:ellipsis;white-space:nowrap}
.ot-fans{display:flex;gap:4px}.ot-fans button{width:36px;height:34px;border-radius:9px;border:1px solid var(--line);background:var(--panel-soft);font-weight:800;color:var(--ink)}
.ot-fans button.on{background:var(--navy-grad);color:#f3dfa6;border-color:transparent}
.ot-fsw{grid-column:2/-1;justify-self:start;font-size:11.5px;border:0;background:none;color:var(--muted);text-decoration:underline;padding:0;cursor:pointer}
.ot-fmk{display:flex;gap:6px;align-items:center;font-size:12.5px;font-weight:700}.ot-fmk input{width:70px}
.ot-fguide{grid-column:2/-1;min-height:34px;font-size:13px}
.ot-fwarn{margin:4px 0 0;font-size:12.5px;color:#a15c00;display:flex;gap:6px;align-items:flex-start}
.ot-frow.ot-bad{border-color:#c0392b}.ot-frow .ot-err{grid-column:1/-1;margin:2px 0 0}
@media (min-width:900px){.ot-full .ot-page{min-height:52vh;font-size:16.5px;padding:24px 30px}}
@media (max-width:560px){.ot-frow{grid-template-columns:28px minmax(0,1fr)}.ot-fans,.ot-fmk{grid-column:2/-1}.ot-ftext{white-space:normal}.ot-page{min-height:260px;padding:14px}}
.ttc-cls h3 small{font-size:12.5px;font-weight:600;color:var(--muted)}
/* Update 102b — one whole paper, one total mark ("free to set whatever they want") */
.ot-whole{display:grid;gap:8px}.ot-wmk input{width:90px}.ot-whole .ot-fsw,.ot-fwholebtn{grid-column:auto;justify-self:start;margin-top:4px}
.ot-whole.ot-bad{border:1.5px solid #c0392b;border-radius:12px;padding:8px}
/* Update 102b — Which sections? (Objectives only · Theory only · Both); one page per section; the spelling check */
.ot-kinds{display:flex;flex-wrap:wrap;gap:8px;align-items:center;margin:0 0 12px}.ot-kinds>span{font-weight:800;font-size:13px;color:var(--ink);margin-right:4px}
.ot-kinds button{border:1.5px solid var(--line);background:var(--panel);border-radius:999px;padding:8px 14px;font-weight:700;font-size:13px;color:var(--ink);cursor:pointer}
.ot-kinds button.on{background:var(--navy-grad);color:#f3dfa6;border-color:transparent}
.ot-part{margin-top:14px}.ot-part[hidden]{display:none}
.ot-parth{display:flex;flex-wrap:wrap;gap:6px 12px;align-items:center;margin:0 0 8px}.ot-parth h4{margin:0;font-size:14px;letter-spacing:.04em;color:var(--accent)}.ot-parth span{flex:1 1 260px;font-size:12.5px;color:var(--muted)}
.ot-objpage{min-height:220px}
.ot-tidyres{margin:8px 0 0;padding:8px 12px;border-radius:10px;background:#e9f6ee;color:#1d5a35;font-size:13px;display:flex;gap:6px;align-items:flex-start}.ot-tidyres[hidden]{display:none}.ot-tidyres p{margin:6px 0}.ot-tidyres s{color:#9b2c1d}
[data-uppart][hidden]{display:none}
@media (min-width:900px){.ot-full .ot-objpage{min-height:36vh}}
/* Update 102c — class-teacher timetables: a subject with its own teacher (Computing → MOTIVE) */
.tt-ctspec{margin:4px 0 6px;font-size:13px;line-height:1.5;color:#0f2a52;background:#f4efe1;border-radius:8px;padding:6px 10px}
.tt-ctw .i.st b{color:#0f2a52;font-weight:700}
.ttc-remake{border:1px solid #c9a24e;background:#fbf6e8;border-radius:12px;padding:12px 14px;margin:0 0 12px}
.ttc-remake>b{display:block;font-size:15px;color:#0f2a52}
.ttc-remake p{margin:4px 0 10px;font-size:13px;line-height:1.5;color:var(--muted)}
/* Update 102d — "Fix them all for me"; the check fits a phone (long buttons wrap instead of running off the right side) */
.ttc-auto{display:flex;gap:14px;align-items:center;justify-content:space-between;border:1px solid #0f2a5233;background:#f3f6fb;border-radius:12px;padding:12px 14px;margin:0 0 12px}
.ttc-auto>div{min-width:0}.ttc-auto b{display:block;font-size:15px;color:#0f2a52}.ttc-auto p{margin:4px 0 0;font-size:13px;line-height:1.5;color:var(--muted)}
.ttc-auto .btn{flex:none}
.ttc-needs h3{display:flex;align-items:center;gap:8px;margin:6px 0 8px;font-size:16px;color:var(--ink)}
.ttc-needs .ttc-item{border-left-color:#8a8f99}
.ttc-list{grid-template-columns:minmax(0,1fr)}
.ttc-cls,.ttc-item,.ttc-remake,.ttc-auto>div{min-width:0}
.ttc-item,.ttc-item p,.ttc-item>b,.ttc-remake p{overflow-wrap:anywhere}
.ttc-fix .btn,.ttc-remake .btn,.ttc-auto .btn{white-space:normal;height:auto;max-width:100%;line-height:1.35;text-align:center}
@media (max-width:560px){.ttc-auto{flex-direction:column;align-items:stretch}.ttc-auto .btn,.ttc-remake .btn{width:100%;justify-content:center}}
/* Update 102e — "Fix them all for me" also fills lessons with no teacher */
.ttc-item.k-fill{border-left-color:#2e7d4f}
/* Update 105 — the Basic 1–6 morning rule (Spelling & Dictation · Multiplication) and the empty lessons in the Timetable check */
.ttc-item.k-morning{border-left-color:#7a4fb0}.ttc-item.k-empty{border-left-color:#c9a24e}
.ttc-item.k-empty>small{font-size:12px}
.tt-amrule{border:1px solid #c9a24e;background:#fbf6e8;border-radius:12px;padding:12px 14px;margin:0 0 12px}
.tt-amrule>b{display:block;font-size:16px;color:#0f2a52}.tt-amrule p{margin:6px 0 0;font-size:13.5px;line-height:1.5;color:var(--ink)}.tt-amrule p.muted{color:var(--muted);font-size:12.5px}
.tt-amwait{color:#7a5a12!important}
.tte-list{display:grid;gap:8px;margin:4px 0 8px}
.tte-row{display:flex;align-items:center;gap:10px;justify-content:space-between;border:1px solid var(--line);border-radius:12px;padding:8px 10px 8px 12px;background:var(--panel)}
.tte-row.off{opacity:.55}
.tte-name{min-width:0;flex:1 1 auto}.tte-name b{display:block;font-size:14.5px;color:var(--ink);overflow-wrap:anywhere}.tte-name small{display:block;font-size:12px;color:var(--muted);line-height:1.35;overflow-wrap:anywhere}
.tte-step{display:flex;align-items:center;gap:4px;flex:none}
.tte-step button{width:40px;height:40px;border-radius:50%;border:1.5px solid var(--line);background:var(--panel);font-size:20px;font-weight:800;line-height:1;color:var(--ink);cursor:pointer;display:grid;place-items:center;padding:0}
.tte-step button:not(:disabled):hover{border-color:#c9a24e}.tte-step button:disabled{cursor:default}
.tte-step output{min-width:34px;text-align:center;font-weight:800;font-size:15px;color:#0f2a52}
.tte-sum{margin:2px 0 6px;font-size:13px;color:var(--muted)}
[data-theme="dark"] .tt-amrule{background:#2a2414;border-color:#8a6d2e}[data-theme="dark"] .tt-amrule>b,[data-theme="dark"] .tte-step output{color:#f3dfa6}[data-theme="dark"] .tt-amwait{color:#ffd98a!important}
.ttm-am{align-items:flex-start!important;margin-top:10px}.ttm-am input{margin-top:3px;flex:none}
/* Update 108: Teachers' work (five tabs) */
.tw-tabs{display:flex;gap:8px;flex-wrap:wrap;margin:0 0 12px}
.tw-tabs button{border:1px solid var(--line);background:var(--panel);color:var(--ink);border-radius:999px;padding:9px 16px;font:inherit;font-weight:700;cursor:pointer;min-height:42px}
.tw-tabs button.on{background:var(--navy-grad);border-color:transparent;color:#f3dfa6}
.tw-bar{display:flex;gap:12px;align-items:flex-end;flex-wrap:wrap;margin:0 0 12px}.tw-bar .field{margin:0;min-width:180px}.tw-bar p{margin:0 0 10px}
.tw-clash{border-left:4px solid var(--red)}.tw-clash h3{margin:0 0 6px;display:flex;gap:6px;align-items:center;color:var(--red)}.tw-clash p{margin:4px 0}
.tw-noq{color:var(--red);font-weight:700}
.tw-page{background:#fff;color:#111;border:1px solid var(--line);border-radius:12px;padding:16px 18px;font-family:'Times New Roman',Georgia,serif;font-size:16px;line-height:1.6;overflow-wrap:anywhere;max-width:100%;overflow-x:auto}
.tw-page h3{font-size:15px;margin:12px 0 6px}.tw-page table{border-collapse:collapse}.tw-page td{border:1px solid #444;padding:3px 6px}.tw-page img{max-width:100%;height:auto}
.tw-qq{margin:6px 0}.tw-qq ol{margin:4px 0 0 18px}.tw-passage{border-left:3px solid #c9a24e;padding:6px 10px;margin:6px 0 10px;background:#faf6ea}
.tw-book{max-width:100%;border-radius:10px;border:1px solid var(--line)}
@media (max-width:560px){.tw-tabs button{padding:8px 12px;font-size:14px}.tw-page{padding:12px;font-size:15px}}
/* Update 109: the class timetable's new look — subject colours (same in every class), "Free" boxes, a colour key, clearer writing */
@media print{
  .ttp-page{font-family:"Segoe UI",Roboto,"Helvetica Neue",Arial,sans-serif}
  .ttp-page h1,.ttp-page .ttp-title b{font-family:"HR Serif",Georgia,serif}
  .ttp-page td.ttp-l,.ttp-page td.ttp-free,.ttp-page .ttp-key i{-webkit-print-color-adjust:exact;print-color-adjust:exact}
  .ttp-page td.ttp-l b{font-size:15px;font-weight:800;color:#0d1f3c;letter-spacing:.2px}
  .ttp-page td.ttp-l small{font-size:10.5px;color:#4a5568;font-weight:600;margin-top:5px}
  .ttp-page td.ttp-l i{color:#5c4a1a}
  .ttp-page td.ttp-free{background:#fafbfc!important}.ttp-page td.ttp-free span{font-size:11px;color:#a3abb8;font-style:italic;letter-spacing:.5px}
  .ttp-page thead th{font-size:12.5px;letter-spacing:.3px;font-weight:800}
  .ttp-page th.ttp-day{font-family:"HR Serif",Georgia,serif;font-size:14px;font-weight:700;letter-spacing:.5px;color:#0a1f44}
  .ttp-page.ttp-dense td.ttp-l b{font-size:13px}.ttp-page.ttp-dense td.ttp-l small{font-size:9.5px}
  .ttp-key{display:flex;flex-wrap:wrap;gap:4px 12px;margin:6px 0 0;font-size:10px;color:#2d3a52;font-weight:600}
  .ttp-key span{display:inline-flex;align-items:center;gap:4px}
  .ttp-key i{display:inline-block;width:12px;height:10px;border-radius:2px;border-top:3px solid #999}
  .ttp-key i.ttp-key-free{background:#fafbfc;border:1px solid #c9ced8}
  .ttp-two td.ttp-s.on b{color:#0d1f3c}
  .ttp-two th.ttp-day{font-size:12.5px;letter-spacing:.2px} /* Update 110: WEDNESDAY fits the narrow day column */
}
/* Update 110: the class test paper reader */
.ot-read{margin:10px 0;border:1px solid var(--line);border-left:4px solid var(--gold);border-radius:12px;padding:10px 12px;background:var(--panel)}
.ot-readhead,.ot-readbusy{display:flex;gap:8px;align-items:flex-start;margin:0 0 6px}.ot-readhead .icon,.ot-readbusy .icon{flex:none;margin-top:2px}
.ot-readw{display:flex;gap:10px;align-items:center;justify-content:space-between;flex-wrap:wrap;border-top:1px dashed var(--line);padding:8px 0 2px;color:var(--red);font-weight:600}
.ot-readw span{flex:1 1 220px}.ot-readok{margin:4px 0 0;color:var(--good);font-weight:700}
/* Update 110: "Present · early / on time / late", 🔒 gate marks, "Correct the mark", Corrections */
.att-word{display:table;margin-top:4px;font-size:12px;font-weight:800;border-radius:999px;padding:3px 9px;background:#eef1f6;color:#44526a}
.att-word.w-early{background:#e3f3ea;color:#166b4a}.att-word.w-ontime{background:#e8eef9;color:#2f5597}.att-word.w-late{background:#fbefd9;color:#8a5a0c}
.att-word.w-absent{background:#f9e8e2;color:#9a2f2f}.att-word.w-excused{background:#eef0f3;color:#4b5563}
.att-who .att-lock{display:block;margin-top:3px;color:#5e6a80;font-size:12px}
.att-row.att-locked{background:#fbfaf6}
.att-side{display:flex;gap:8px;align-items:center;flex-wrap:wrap}
.att-side .att-codes{flex:1}
.att-codes:has(button:nth-child(3):last-child){grid-template-columns:repeat(3,minmax(0,1fr))}
.att-clock{margin:8px 0 4px;font-size:13px;line-height:1.45;border-radius:10px;padding:8px 11px;background:#e8eef9;color:#28487f}
.att-clock.late{background:#fbefd9;color:#7a4e08}
.fix-form .fix-k{font-weight:800;font-size:13px;margin:12px 0 6px}
.fix-chips{display:flex;flex-wrap:wrap;gap:6px}
.fix-chips .chip{border:1.5px solid var(--line);background:var(--panel);border-radius:999px;padding:7px 12px;font:inherit;font-weight:700;font-size:13px;color:var(--ink);cursor:pointer}
.fix-chips .chip.on{background:#14284b;border-color:#14284b;color:#fff}
.fix-list{display:grid;gap:8px}
.fix-row{display:flex;gap:12px;justify-content:space-between;flex-wrap:wrap;border:1px solid var(--line);border-radius:12px;padding:9px 11px}
.fix-row>div:first-child b{display:block}.fix-row small{display:block;color:var(--muted);font-size:12px;margin-top:2px}
.fix-what{text-align:right;min-width:0}.fix-old{color:var(--muted);text-decoration:line-through}
@media(max-width:520px){.fix-what{text-align:left}}
.g93-fact-icon.none{color:#7a7f88;background:#eef0f3}.g93-fact-icon.late{color:#986010;background:#fbefd9}
/* Update 113: Curriculum map (office) */
.cmo-note{background:#fbefd9;color:#7a4e08;border-radius:10px;padding:8px 11px;font-size:13px}
.cmo-key{display:flex;flex-wrap:wrap;gap:12px;font-size:12.5px;margin-bottom:12px}.cmo-key span{display:flex;align-items:center;gap:5px}.cmo-key i{width:11px;height:11px;border-radius:3px;display:inline-block}
.cmo-key .good i{background:#1f8a57}.cmo-key .weak i{background:#d98b1c}.cmo-key .gap i{background:#c0392b}.cmo-key .coming i{background:#cfd6e0}
.cmo-grid{display:grid;grid-template-columns:repeat(auto-fill,minmax(170px,1fr));gap:8px;margin-top:8px}
.cmo-tile{border-radius:12px;padding:9px 10px;border:1px solid var(--line);background:var(--panel);display:flex;flex-direction:column;gap:3px;min-width:0}
.cmo-tile b{font-size:12px}.cmo-tile span{font-size:12.5px;line-height:1.35}.cmo-tile small{font-size:11px;color:var(--muted)}
.cmo-tile.good{background:#e5f4ec;border-color:#bfe3cf;color:#173b2a}.cmo-tile.weak{background:#fcf0dc;border-color:#f1d29c;color:#4a3208}.cmo-tile.gap{background:#fbe6e3;border-color:#efb9b2;color:#4d1712}
.cmo-next{display:grid;gap:10px}.cmo-n{border-left:4px solid var(--line);padding:4px 10px}.cmo-n.gap{border-color:#c0392b}.cmo-n.weak{border-color:#d98b1c}.cmo-n.good{border-color:#1f8a57}.cmo-n ul{margin:6px 0 0;padding-left:18px;font-size:13px}
.cmo-job{border-top:1px solid var(--line);padding:12px 0}.cmo-job-h{display:flex;justify-content:space-between;gap:10px;flex-wrap:wrap;align-items:center}
.cmo-pills{display:flex;gap:6px;flex-wrap:wrap}.cmo-pills i{font-style:normal;font-size:12px;font-weight:700;border-radius:999px;padding:3px 9px;background:#eef1f6}
.cmo-pills .good{background:#e5f4ec;color:#145c41}.cmo-pills .weak{background:#fcf0dc;color:#8a5a0c}.cmo-pills .gap{background:#fbe6e3;color:#9a2f2f}

/* Update 124b: TAP-IN LIVE (Classroom tap-in), the Gate live board's look for lessons */
.tl-board{margin-bottom:16px}
.gl-dot.tl-dot-wait{background:#d64545}
.tl-grid{display:grid;grid-template-columns:repeat(auto-fill,minmax(190px,1fr));gap:10px;margin-top:14px}
.tl-room{border-radius:14px;padding:12px 13px;display:flex;flex-direction:column;gap:3px;min-width:0;border:1px solid transparent}
.tl-room-h{display:flex;flex-wrap:wrap;justify-content:space-between;align-items:baseline;gap:2px 8px}.tl-room-h b{font-family:var(--serif);font-size:20px;line-height:1.1;white-space:nowrap}.tl-room-h time{font-size:11.5px;font-weight:700;opacity:.85;white-space:nowrap}
.tl-room strong{font-size:14px}.tl-room span{font-size:13px;opacity:.9;overflow-wrap:anywhere}.tl-room em{font-style:normal;font-size:12.5px;font-weight:800;margin-top:4px}
.tl-in{background:#1f9d55;color:#fff}.tl-late{background:#e8891c;color:#fff}
.tl-wait,.tl-cover{background:#fdecec;color:#8f1d1d;border-color:#f1b5b5;animation:tlWait 2.4s ease-in-out infinite}
.tl-soon{background:#eef0f4;color:#5b6475}
@keyframes tlWait{50%{box-shadow:0 0 0 4px #d6454522}}
@media(prefers-reduced-motion:reduce){.tl-wait,.tl-cover{animation:none}}
.tl-quiet{margin:14px 0 4px;font-weight:700;color:var(--muted)}
.tl-today{display:flex;flex-wrap:wrap;gap:6px 16px;margin-top:14px;padding-top:12px;border-top:1px solid var(--line);font-size:13px;color:var(--muted)}
.tl-today b{color:var(--ink);font-size:15px}.tl-today .g b{color:#1f9d55}.tl-today .a b{color:#c46d0c}.tl-today .r b{color:#c03030}
.tl-feed{margin-top:14px}.tl-feed h3{font-size:14px;margin:0 0 8px}
.tl-ev{display:grid;grid-template-columns:70px minmax(0,auto) 1fr;gap:4px 10px;align-items:baseline;padding:7px 0;border-top:1px dashed var(--line);font-size:13px}
.tl-ev time{font-weight:800;color:var(--muted);font-variant-numeric:tabular-nums}.tl-ev span{color:var(--muted);overflow-wrap:anywhere}
.tl-ev-in b{color:#1f9d55}.tl-ev-late b,.tl-ev-early b{color:#c46d0c}.tl-ev-no b,.tl-ev-no span{color:#c03030}
@media(max-width:520px){.tl-grid{grid-template-columns:1fr 1fr}.tl-room-h{flex-direction:column;align-items:flex-start}.tl-ev{grid-template-columns:62px 1fr}.tl-ev span{grid-column:2}}
@media(max-width:360px){.tl-grid{grid-template-columns:1fr}}
[data-theme=dark] .tl-wait,[data-theme=dark] .tl-cover{background:#3a1f22;color:#ffc9c9;border-color:#6b3036}
[data-theme=dark] .tl-soon{background:#253047;color:#c3cbdb}
