:root{--navy:#2b2370;--navy-2:#3a3192;--gold:#f0c020;--gold-soft:#fdf3cc;--ink:#1d2333;--paper:#f4f5f9;--line:#dfe2ec}
body{font-family:'Hind Siliguri',system-ui,sans-serif;background:var(--paper);color:var(--ink);font-size:15.5px}
.sidebar{position:fixed;inset:0 auto 0 0;width:248px;background:var(--navy);color:#fff;display:flex;flex-direction:column;z-index:1040;transition:transform .2s}
.brand{display:flex;gap:10px;align-items:center;padding:16px 14px;border-bottom:1px solid rgba(255,255,255,.12)}
.brand img{width:46px;height:46px;border-radius:50%;background:#fff}
.brand b{display:block;font-size:15px;line-height:1.25}.brand small{display:block;font-size:11.5px;opacity:.7;line-height:1.3}
.sidebar nav{flex:1;overflow-y:auto;padding:8px 0}
.sidebar nav a{display:flex;gap:11px;align-items:center;color:rgba(255,255,255,.82);text-decoration:none;padding:8px 18px;border-left:3px solid transparent}
.sidebar nav a:hover{background:var(--navy-2);color:#fff}
.sidebar nav a.active{border-left-color:var(--gold);background:var(--navy-2);color:#fff;font-weight:600}
.sidebar nav a.active i{color:var(--gold)}
.who{padding:12px 18px;font-size:13px;border-top:1px solid rgba(255,255,255,.12);background:rgba(0,0,0,.22)}.who a{color:var(--gold);margin-left:6px}
.content{margin-left:248px;min-height:100vh;display:flex;flex-direction:column}
.topbar{display:flex;align-items:center;gap:12px;padding:14px 24px;background:#fff;border-bottom:1px solid var(--line)}
.topbar h1{font-size:20px;font-weight:700;margin:0;white-space:nowrap}
.edu-links{gap:4px;flex-wrap:wrap;margin-left:8px}
.edu-links a{font-size:12.5px;padding:3px 9px;border-radius:14px;background:var(--gold-soft);color:var(--ink);text-decoration:none;border:1px solid var(--line);white-space:nowrap}
.edu-links a:hover{background:var(--navy);color:#fff;border-color:var(--navy)}
.page{padding:22px 24px;flex:1}
footer{padding:12px 24px;font-size:12.5px;color:#7a8099}
.panel{background:#fff;border:1px solid var(--panel-line,var(--line));border-radius:10px;padding:18px;margin-bottom:18px;box-shadow:0 1px 3px rgba(30,36,80,.06)}
.form-control,.form-select{border-color:#b8bfd4}
.panel h2{font-size:16.5px;font-weight:700;margin:0 0 12px}
.stat{background:#fff;border:1px solid var(--line);border-left:4px solid var(--navy);border-radius:8px;padding:14px 16px}
.stat.gold{border-left-color:var(--gold)}.stat .n{font-size:24px;font-weight:700;color:var(--navy)}.stat .l{font-size:13.5px;color:#5b6278}
.btn-primary{--bs-btn-bg:var(--navy);--bs-btn-border-color:var(--navy);--bs-btn-hover-bg:var(--navy-2);--bs-btn-hover-border-color:var(--navy-2);--bs-btn-active-bg:var(--navy-2)}
.btn-gold{background:var(--gold);color:var(--gold-ink,#1b1b1b);border-color:var(--gold)}.btn-gold:hover{background:var(--gold-dark,#d9a90c);border-color:var(--gold-dark,#d9a90c);color:var(--gold-ink,#000)}
.table{--bs-table-bg:transparent}.table thead th{font-weight:600;color:#4a5170;background:#f0f2f8;white-space:nowrap}
.month-chip{display:inline-block;padding:4px 10px;border-radius:20px;border:1px solid var(--line);margin:3px;font-size:13.5px;cursor:pointer;user-select:none}
.month-chip.paid{background:#e6f4ea;border-color:#b7dfc2;color:#1e7b3a;cursor:default}
.month-chip input{margin-right:5px}
.att-row.absent{background:#fdecec}
:focus-visible{outline:2px solid var(--gold);outline-offset:2px}
.backdrop{display:none}
@media (max-width:991px){.sidebar{transform:translateX(-100%)}.content{margin-left:0}
 body.nav-open .sidebar{transform:none}body.nav-open .backdrop{display:block;position:fixed;inset:0;background:rgba(0,0,0,.4);z-index:1030}
 .page{padding:16px 12px}.topbar{padding:10px 12px}}
/* Print documents */
.doc{background:#fff;max-width:760px;margin:0 auto;padding:24px;border:1px solid var(--line)}
.doc-head{display:flex;gap:14px;align-items:center;border-bottom:2px solid var(--navy);padding-bottom:10px;margin-bottom:14px}
.doc-head img{width:64px;height:64px;border-radius:50%}.doc-head h3{margin:0;font-size:21px;font-weight:700;color:var(--navy)}.doc-head p{margin:0;font-size:13px}
.doc-title{display:inline-block;background:var(--navy);color:#fff;padding:3px 16px;border-radius:4px;font-weight:600;margin-bottom:12px}
.admit{border:2px solid var(--adm,var(--navy));border-radius:8px;padding:14px;margin-bottom:14px;page-break-inside:avoid;background:#fff}
@media print{body{background:#fff;font-size:13px}.content{margin:0}.page{padding:0}.doc{border:0;padding:0;max-width:none}
 .page-break{page-break-after:always}}
@media (prefers-reduced-motion:reduce){.sidebar{transition:none}}

/* Letterhead (matches the printed pad) */
.lh{border-bottom:2px solid #222;margin-bottom:14px;padding-bottom:6px;color:#111}
.lh-top{display:flex;align-items:center;gap:14px}
.lh-top img{width:78px;height:78px;border-radius:50%;flex:none}
.lh-text{flex:1;text-align:center}
.lh-bn{font-size:28px;font-weight:700;line-height:1.15}
.lh-en{font-family:'Times New Roman',Times,serif;font-weight:700;font-size:17px;letter-spacing:.3px}
.lh-s{font-size:12.5px;line-height:1.35}
.lh-memo{display:flex;justify-content:space-between;font-size:14px;margin-top:10px;padding-top:6px;border-top:1px solid #222}
.doc.small-lh .lh-bn{font-size:20px}.doc.small-lh .lh-en{font-size:13px}.doc.small-lh .lh-top img{width:52px;height:52px}.doc.small-lh .lh-s{font-size:10.5px}
.pad-body{white-space:pre-wrap;font-size:16px;line-height:1.75;min-height:420px}
@media (max-width:600px){.lh-bn{font-size:19px}.lh-en{font-size:12.5px}.lh-top img{width:52px;height:52px}}
.ms-table td,.ms-table th{padding:3px 5px;font-size:13px}@media print{.ms-table td,.ms-table th{font-size:11.5px;padding:2px 4px}}

/* English marksheet (like the sample the school sent) */
.ms{--ms:var(--ms-c,#24408e);background:#fff;border:3px double var(--ms);outline:1px solid var(--ms);outline-offset:4px;padding:20px 22px;margin:8px auto 24px;max-width:820px;color:#000;font-family:Arial,Helvetica,sans-serif;font-size:13.5px}
.ms-head{display:flex;align-items:center;gap:14px;border-bottom:3px double var(--ms);padding-bottom:10px}
.ms-head img{width:62px;height:62px;border-radius:50%}
.ms-school{flex:1}.ms-name{font-size:21px;font-weight:700;color:var(--ms);line-height:1.2}.ms-addr{font-size:11.5px;color:#555}
.ms-badge{background:#d4a514;color:#fff;font-weight:700;font-size:18px;padding:4px 14px;text-align:center;line-height:1.1;border-radius:3px}.ms-badge small{display:block;font-size:9.5px;font-weight:600}
.ms-title{text-align:center;font-size:18px;font-weight:700;margin:12px auto 12px;width:max-content;border-bottom:3px solid var(--ms);padding:0 10px 2px}
.ms-top{display:flex;gap:12px;align-items:stretch}.ms-box{border:1px solid #d5d9e4;background:#f7f8fb;padding:10px}
.ms-info{flex:1;display:flex;gap:12px}.ms-photo{width:80px;height:96px;border:1px solid #c5c9d6;flex:none}
.ms-h{font-weight:700;color:var(--ms);font-size:13.5px;margin-bottom:6px;text-align:center}
.ms-kv th{color:var(--ms);font-weight:600;padding:1px 6px 1px 0;white-space:nowrap;vertical-align:top}.ms-kv td{padding:1px 0}
.ms-t{width:100%;border-collapse:collapse;text-align:center}.ms-t th{background:var(--ms);color:#fff;font-weight:600;padding:4px 5px;border:1px solid var(--ms)}
.ms-t td{border:1.2px solid #555;padding:3px 5px}.ms-t tfoot th{background:#eef0f6;color:#000;border-color:#555;font-size:14px}
.ms-scale{width:200px}.ms-scale .ms-t th,.ms-scale .ms-t td{padding:2px 4px;font-size:12.5px}
.ms-grades td,.ms-grades th{font-size:13.5px}.ms-grades td.fw-semibold{font-size:14.5px;font-weight:700!important}.ms-fail{color:#b42318;font-weight:700}
.ms-remark{background:#f1f2f6;padding:7px 10px}
.ms-sign{display:flex;justify-content:space-between;margin-top:42px;text-align:center;font-size:14px}.ms-sign span{min-width:150px;border-top:1.3px solid #000;padding-top:3px;line-height:1.3}
@media (max-width:700px){.ms{padding:12px}.ms-top{flex-direction:column}.ms-scale{width:auto}.ms-grades{display:block;overflow-x:auto}}
@media print{
 /* Bootstrap narrows .container on paper (A4 counts as a small screen), which pushed the marksheet table outside its border */
 .container,.container-sm,.container-md,.container-lg,.container-xl,.container-xxl{max-width:none!important;width:100%!important;padding-left:0!important;padding-right:0!important}
 .pub-main,main.container{padding-top:0!important}
 .ms{margin:0 auto;padding:12px 14px;font-size:13px;outline-offset:3px;width:auto}
 .ms-head img{width:58px;height:58px}.ms-title{margin:8px auto;font-size:18px}
 .ms-photo{width:76px;height:92px}.ms-scale{width:185px}
 .ms-t th,.ms-t td{padding:3px 4px}.ms-grades td,.ms-grades th{font-size:13px}
 .ms-sign{margin-top:34px}
}
@media print{.ms{max-width:none;page-break-inside:avoid}.ms-t th{-webkit-print-color-adjust:exact;print-color-adjust:exact}.ms-badge{-webkit-print-color-adjust:exact;print-color-adjust:exact}}

/* ---------- Photos ---------- */
.ms-photo{object-fit:cover}
.ph{position:relative;width:80px;height:96px;border-radius:6px;overflow:hidden;background:#e9ebf2;border:1px solid var(--line);flex:none}
.ph-lg{width:110px;height:132px}
.ph img{position:absolute;inset:0;width:100%;height:100%;object-fit:cover}
.ph img:not([src]){display:none}
.ph-blank{width:100%;height:100%;display:block}
.ph[data-photo]{cursor:pointer}
.ph[data-photo]:hover{border-color:var(--navy)}
.ph-edit{position:absolute;right:4px;bottom:4px;width:26px;height:26px;border-radius:50%;background:rgba(43,35,112,.88);color:#fff;display:grid;place-items:center;font-size:13px}
.ph.busy::after{content:'…';position:absolute;inset:0;display:grid;place-items:center;background:rgba(255,255,255,.75);font-size:26px;font-weight:700;color:var(--navy)}
.ph-msg{position:absolute;left:0;right:0;bottom:0;font-size:10.5px;line-height:1.2;padding:2px 4px;text-align:center;max-height:70%;overflow:hidden}
.ph-msg:empty{display:none}.ph-msg.ok{background:#1e7b3a;color:#fff}.ph-msg.err{background:#b42318;color:#fff}
.ph-grid{display:grid;grid-template-columns:repeat(auto-fill,minmax(112px,1fr));gap:16px 12px}
.ph-card{text-align:center;display:flex;flex-direction:column;align-items:center}
.ph-card .ph{width:96px;height:115px}
.ph-name{font-size:13px;font-weight:600;line-height:1.25;margin-top:6px}
.ph-sub{font-size:12px;color:#5b6278}
.bulk{background:var(--gold-soft);border-radius:8px;padding:12px 14px}

/* ---------- Tabulation sheets & pass/fail lists ---------- */
.rep-types{display:flex;flex-wrap:wrap;gap:6px}
.rep-types a{padding:6px 13px;border:1px solid var(--line);border-radius:20px;text-decoration:none;color:var(--ink);font-size:14px;background:#fff}
.rep-types a:hover{border-color:var(--navy)}
.rep-types a.active{background:var(--navy);color:#fff;border-color:var(--navy)}
.rep{background:#fff;border:1px solid var(--line);border-radius:10px;padding:16px;margin-bottom:18px;overflow-x:auto;color:#111}
.rep-head{display:flex;align-items:center;gap:12px;border-bottom:2px solid var(--navy);padding-bottom:8px;margin-bottom:10px}
.rep-head img{width:50px;height:50px;border-radius:50%;flex:none}
.rep-school{font-size:20px;font-weight:700;line-height:1.15;color:var(--navy)}
.rep-sub{font-size:12px;color:#555}
.rep-what{margin-left:auto;text-align:right;display:flex;flex-direction:column;font-size:12.5px;line-height:1.35}
.rep-what b{font-size:15px;color:var(--navy)}
/* v15: big, clear numbers for senior teachers. Same sizes on screen and paper; before printing, a sheet that is
   wider than the paper is scaled down just enough to fit (tabulation.php), so nothing is cut and nothing is
   smaller than it has to be. */
.tab{width:100%;border-collapse:collapse;font-size:14px;text-align:center;color:#000}
.tab th,.tab td{border:1.3px solid #333;padding:3px 4px;vertical-align:middle}
.tab thead{display:table-header-group}
.tab thead th{background:#e6e9f3;font-weight:700;line-height:1.2;font-size:13.5px}
.tab tr{page-break-inside:avoid;break-inside:avoid}
.tab .t-name{text-align:left;white-space:normal;min-width:130px;font-size:14.5px;font-weight:600;line-height:1.25}
.tab-list .t-name{white-space:normal;font-weight:500}
.t-sub{font-size:13px;min-width:48px;max-width:88px;white-space:normal}
.t-sub small{display:block;font-weight:500;color:#333;font-size:12px}
.t-cell{white-space:nowrap;line-height:1.2}
.t-cell b{font-size:17px;font-weight:700}
.t-cell small{display:block;font-size:12px;color:#222;font-weight:500}
.t-g{font-size:13px;font-weight:600}
.tab .t-f,.tab .t-f b{color:#b42318;font-weight:700}
.t-na{color:#666;font-size:12px}
.t-failrow{background:#fff6f5}
.w-pos{width:44px}
.tab td.fw-bold,.tab td.fw-semibold{font-size:16px}
.tab-list{font-size:15px}.tab-list td{padding:5px 7px}
.tab-sum{margin-top:10px;width:auto;font-size:14.5px}
.tab-sum th,.tab-sum td{padding:4px 12px}
.rep-note{font-size:12.5px;color:#333;margin:6px 0 0}
.rep-h3{font-size:16px;font-weight:700;margin:16px 0 6px}
.rep-sign{display:flex;justify-content:space-between;gap:20px;margin-top:38px;font-size:14px;text-align:center}
.rep-sign span{min-width:160px;display:flex;flex-direction:column;justify-content:flex-end}
.rep-sign b{border-top:1.3px solid #000;padding-top:3px;font-weight:700}
.rep-date{font-size:11px;color:#555;text-align:right;margin-top:6px}
@media print{
 .rep{border:0;padding:0;margin:0;border-radius:0;overflow:visible}
 .rep-break{break-before:page;page-break-before:always}
 .rep-head img{width:46px;height:46px}.rep-school{font-size:20px}
 .t-failrow{background:none}.tab thead th{-webkit-print-color-adjust:exact;print-color-adjust:exact}
}

/* ---------- ID cards (CR80: 85.6 x 54 mm), 10 per A4 ---------- */
.idsheet{display:grid;grid-template-columns:repeat(2,85.6mm);grid-auto-rows:54mm;gap:2mm 4mm;justify-content:center;margin:0 auto 10mm}
.idsheet-one{grid-template-columns:85.6mm;gap:4mm}
@media screen{.idsheet{overflow-x:auto;padding-bottom:4px}}
.idc{width:85.6mm;height:54mm;border-radius:3mm;overflow:hidden;background:#fff;border:.25mm solid #c9cde0;display:flex;flex-direction:column;box-sizing:border-box;
 font-family:'Hind Siliguri',Arial,sans-serif;color:#1b1f2a;-webkit-print-color-adjust:exact;print-color-adjust:exact}
.idc-top{display:flex;align-items:center;gap:2mm;background:var(--idc,var(--navy));color:#fff;padding:0 2.5mm;height:12mm;flex:none}
.idc-top img{width:8.6mm;height:8.6mm;border-radius:50%;background:#fff;flex:none}
.idc-top > div{min-width:0}
.idc-bn{font-size:9.4pt;font-weight:700;line-height:1.1;white-space:nowrap;overflow:hidden;text-overflow:ellipsis}
.idc-en{font-size:5.4pt;color:var(--idc-acc,var(--gold));font-family:Arial,sans-serif;white-space:nowrap;overflow:hidden;text-overflow:ellipsis}
.idc-body{flex:1;display:flex;gap:3mm;padding:2.6mm 3mm 1.6mm;min-height:0;align-items:center}
.idc-photo{width:23mm;height:28mm;border:.45mm solid var(--idc-acc,var(--gold));border-radius:1mm;overflow:hidden;flex:none;background:#eef0f6}
.idc-photo img,.idc-photo svg{width:100%;height:100%;object-fit:cover;display:block}
.idc-info{flex:1;min-width:0;font-size:7pt;line-height:1.38}
.idc-name{font-size:9.2pt;font-weight:700;color:var(--idc,var(--navy));line-height:1.12;margin-bottom:.8mm;display:-webkit-box;-webkit-line-clamp:2;-webkit-box-orient:vertical;overflow:hidden}
.idc-r{display:flex;gap:1mm;white-space:nowrap;overflow:hidden}
.idc-r span{width:12.5mm;flex:none;color:#5b6278}
.idc-teacher .idc-r span,.idc-staff .idc-r span{width:16mm}
.idc-r b{font-weight:600;overflow:hidden;text-overflow:ellipsis}
.idc-foot{display:flex;justify-content:space-between;align-items:center;background:var(--idc-acc,var(--gold));color:var(--idc-acc-ink,#1b1b1b);font:700 6pt Arial,sans-serif;padding:0 2.5mm;height:5mm;flex:none;letter-spacing:.3px}
.idc-teacher .idc-foot{background:var(--idc-t,#1f6f63);color:var(--idc-t-ink,#fff)}
.idc-staff .idc-foot{background:var(--idc-s,#8a4b14);color:var(--idc-s-ink,#fff)}
.idc-back{border-top:2.4mm solid var(--idc,var(--navy))}
.idc-back-body{flex:1;display:flex;gap:2.5mm;padding:2.5mm 3mm 0;align-items:center;min-height:0}
.idc-back-text{flex:1;font-size:6pt;line-height:1.35}
.idc-back-text p{margin:0 0 1.2mm}
.idc-addr{font-weight:600;color:var(--idc,var(--navy))}
.idc-qr{width:19mm;height:19mm;flex:none}
.idc-qr img,.idc-qr canvas{width:19mm!important;height:19mm!important}
.idc-back-foot{display:flex;justify-content:space-between;align-items:flex-end;padding:0 3mm 2.4mm;font-size:6pt;height:9mm;flex:none}
.idc-sign{border-top:.25mm solid #333;padding-top:.4mm;min-width:26mm;text-align:center}
.idc-empty{visibility:hidden}
@media print{.idsheet{margin:0 auto}.idsheet + .idsheet{break-before:page;page-break-before:always}.idc{border-color:#bbb}}

/* ---------- Student login slips ---------- */
.slips{display:grid;grid-template-columns:repeat(3,1fr);background:#fff}
.slip{border:1px dashed #888;padding:8px 10px;font-size:11.5px;break-inside:avoid;page-break-inside:avoid}
.slip-h{display:flex;align-items:center;gap:6px;font-size:12px;color:var(--navy)}
.slip-h img{width:22px;height:22px;border-radius:50%}
.slip-n{font-weight:700;margin:4px 0}.slip-n span{font-weight:400;color:#555;font-size:11px}
.slip table{width:100%}.slip th{font-weight:600;padding-right:6px;white-space:nowrap;vertical-align:top;width:1%}.slip td{word-break:break-all}
.slip-big{font-size:14px;font-weight:700;letter-spacing:.5px}.slip-x{font-size:11px;font-weight:400}
.slip p{font-size:10px;margin:4px 0 0;color:#444}
@media (max-width:700px){.slips{grid-template-columns:1fr 1fr}}

/* ---------- Student portal ---------- */
.pt-bar{background:var(--navy);color:#fff;border-bottom:4px solid var(--gold)}
.pt-bar-in{display:flex;align-items:center;gap:12px;padding-top:8px;padding-bottom:8px}
.pt-brand{display:flex;align-items:center;gap:8px;color:#fff;text-decoration:none;font-weight:700;min-width:0}
.pt-brand img{width:38px;height:38px;border-radius:50%;background:#fff;flex:none}
.pt-brand span{white-space:nowrap;overflow:hidden;text-overflow:ellipsis}
.pt-nav{display:flex;gap:2px;margin-left:auto}
.pt-nav a,.pt-out{color:rgba(255,255,255,.85);text-decoration:none;padding:6px 10px;border-radius:6px;display:flex;gap:6px;align-items:center;font-size:14.5px;white-space:nowrap}
.pt-nav a:hover,.pt-out:hover{color:#fff;background:var(--navy-2)}
.pt-nav a.active{background:var(--navy-2);color:#fff;box-shadow:inset 0 -2px 0 var(--gold)}
.pt-out{margin-left:auto}.pt-nav + .pt-out{margin-left:0}
.pt-login{min-height:100vh;display:grid;place-items:center;padding:60px 16px 20px;background:linear-gradient(var(--navy) 0 36%,var(--paper) 36%)}
.pt-login-card{background:#fff;border-radius:14px;padding:26px 24px;max-width:380px;width:100%;text-align:center;box-shadow:0 12px 32px rgba(20,20,60,.16);border-top:5px solid var(--gold)}
.pt-login-logo{width:86px;height:86px;border-radius:50%;margin-top:-72px;background:#fff;border:4px solid #fff}
.pt-login h1{font-size:20px;font-weight:700;margin:10px 0 2px;color:var(--navy)}
.pt-me{display:flex;gap:16px;align-items:center}.pt-me h2{font-size:19px}
.pt-num{font-size:28px;font-weight:700;color:var(--navy);line-height:1.1}.pt-num small{font-size:14px;color:#7a8099;font-weight:500;margin-left:3px}
.pt-notice{border-bottom:1px solid var(--line);padding:8px 0}.pt-notice:last-child{border-bottom:0}
.pt-notice summary{cursor:pointer;font-weight:600}.pt-notice div{padding-top:6px;font-size:14.5px}
@media (max-width:767px){
 .pt-nav{position:fixed;bottom:0;left:0;right:0;background:var(--navy);justify-content:space-around;padding:4px 2px;z-index:50;border-top:3px solid var(--gold);margin:0}
 .pt-nav a{flex-direction:column;gap:0;font-size:11.5px;padding:4px 6px}.pt-nav a i{font-size:18px}
 body.portal{padding-bottom:66px}.pt-out,.pt-nav + .pt-out{margin-left:auto}.pt-out span{display:none}.pt-brand span{font-size:14px}
 .pt-me{flex-direction:column;text-align:center}
}
/* v19: portal tabs: short names on smaller screens; quiz count dot */
.pt-nav a{position:relative}.pt-nav .pt-s{display:none}
.pt-dot{position:absolute;top:0;right:2px;background:#e5484d;color:#fff;border-radius:9px;font-size:10.5px;line-height:1;padding:3px 5px;font-weight:700}
@media (max-width:1199px){.pt-nav .pt-l{display:none}.pt-nav .pt-s{display:inline}}
@media (max-width:767px){.pt-nav .pt-hide-sm{display:none!important}.pt-nav a{padding:4px 3px;min-width:0}}
@media print{body.portal{padding-bottom:0;background:#fff}}

/* ---- v8: signature over the line, shared helpers ---- */
.ms-sign span,.adm-sign span,.rep-sign span,.idc-sg span,.sig-box{position:relative}
.sig-img{-webkit-print-color-adjust:exact;print-color-adjust:exact}
.min-w-0{min-width:0}
/* ---- আমার পাতা (teacher / staff home) ---- */
.me-hero{background:linear-gradient(120deg,var(--navy) 0%,#3a2f9a 100%);color:#fff;border-radius:14px;padding:18px 20px;margin-bottom:16px;border-bottom:4px solid var(--gold);box-shadow:0 8px 22px rgba(30,23,96,.18)}
.me-hero-in{display:flex;align-items:center;gap:16px;flex-wrap:wrap}
.me-hero .ph{border:3px solid rgba(255,255,255,.85);background:#fff}
.me-hi{opacity:.8;font-size:13px}.me-name{font-size:22px;font-weight:700;margin:2px 0;color:#fff}
.me-role{font-size:14px;opacity:.92}.me-date{font-size:13px;opacity:.8;margin-top:4px}
.me-today{display:flex;flex-direction:column;gap:6px}
.me-cls{display:flex;align-items:center;gap:12px;border:1px solid var(--line);border-left:4px solid var(--navy);border-radius:8px;padding:8px 10px;background:#fff}
.me-cls.now{border-left-color:#1e7b3a;background:#effaf2}
.me-cls .t{min-width:54px;text-align:center;font-weight:700;color:var(--navy);line-height:1.1}.me-cls .t small{display:block;font-weight:400;color:#7a8099;font-size:11.5px}
.me-break{font-size:12px;text-align:center;color:#8a6d00;background:#fff7dc;border-radius:6px;padding:2px}
.me-week td,.me-week th{font-size:12.5px;min-width:78px}
.me-prog{display:flex;flex-direction:column;gap:2px}
.me-prog-row{display:flex;align-items:center;gap:10px;padding:8px 6px;border-bottom:1px solid var(--line);color:inherit;text-decoration:none;border-radius:6px}
.me-prog-row:hover{background:#f4f5fb}
.me-sec{display:flex;flex-wrap:wrap;gap:8px;align-items:center;padding:8px 0;border-bottom:1px solid var(--line)}.me-sec:last-child{border-bottom:0}
.me-tiles{display:grid;grid-template-columns:repeat(auto-fill,minmax(108px,1fr));gap:8px}
.me-tiles a{display:flex;flex-direction:column;align-items:center;gap:4px;text-align:center;padding:12px 6px;border:1px solid var(--line);border-radius:10px;color:var(--navy);text-decoration:none;font-size:12.5px;line-height:1.25;background:#fff}
.me-tiles a i{font-size:22px}.me-tiles a:hover{border-color:var(--navy);background:#f4f5fb}
.me-ex{display:flex;gap:10px;padding:8px 0;border-bottom:1px solid var(--line)}.me-ex:last-child{border-bottom:0}
.me-ex-d{width:52px;flex:none;text-align:center;background:var(--navy);color:#fff;border-radius:8px;padding:4px 0;line-height:1.1}.me-ex-d b{display:block;font-size:20px}.me-ex-d span{font-size:11px}
@media print{.me-hero,.me-tiles{display:none}}
.leave-bar{display:flex;flex-wrap:wrap;gap:8px;align-items:center;background:#fff6f5;border:1px solid #f1c4bf;border-radius:8px;padding:10px 12px;position:sticky;bottom:8px;z-index:5}
/* photo: camera / gallery sheet and crop */
.pu-back{position:fixed;inset:0;background:rgba(15,15,40,.55);z-index:2000;display:flex;align-items:flex-end;justify-content:center;padding:12px}
.pu-sheet,.pu-crop{background:#fff;border-radius:14px;padding:14px;width:100%;max-width:380px;box-shadow:0 10px 30px rgba(0,0,0,.25)}
.pu-crop{align-self:center;text-align:center}.pu-crop canvas{border-radius:8px;touch-action:none;cursor:grab;max-width:100%;background:#eee}
.pu-t{font-weight:700;text-align:center;margin-bottom:8px}
.pu-sheet button{display:block;width:100%;text-align:left;border:0;background:#f4f5fb;border-radius:10px;padding:12px 14px;margin-bottom:6px;font-size:15px}
.pu-sheet button i{margin-right:8px;color:var(--navy)}.pu-sheet .pu-del{color:#b42318}.pu-sheet .pu-del i{color:#b42318}.pu-sheet .pu-x{text-align:center;background:#fff;border:1px solid var(--line)}
@media(min-width:700px){.pu-back{align-items:center}}
/* student portal additions */
.pt-hero{display:flex;align-items:center;gap:10px;flex-wrap:wrap;background:linear-gradient(120deg,var(--navy),#3a2f9a);color:#fff;border-radius:14px;padding:14px 16px;margin-bottom:12px;border-bottom:4px solid var(--gold)}
.pt-next{display:flex;align-items:center;gap:12px;background:#fff7dc;border:1px solid #f0d27a;border-radius:12px;padding:10px 14px;margin-bottom:12px;color:#5a4500;text-decoration:none}.pt-next>i:first-child{font-size:24px}
.pt-days{display:flex;flex-wrap:wrap;gap:4px;margin-bottom:10px}
.pt-day{display:flex;flex-direction:column;gap:6px}
.pt-exr-list{display:flex;flex-direction:column;gap:6px}
.pt-exr-row{display:flex;align-items:center;gap:12px;border:1px solid var(--line);border-radius:10px;padding:8px 10px;background:#fff}
.pt-exr-row .d{width:50px;flex:none;text-align:center;background:var(--navy);color:#fff;border-radius:8px;padding:3px 0;line-height:1.1}.pt-exr-row .d b{display:block;font-size:19px}.pt-exr-row .d span{font-size:11px}
.pt-exr-row.past{opacity:.55}.pt-exr-row.today{border-color:#b42318;background:#fdecea}
@media print{.pt-hero,.pt-next{display:none}.pt-exr-row{break-inside:avoid}}

/* ---- v15: clearer screen for everyone (bigger text, darker lines) ---- */
body{font-size:16px}
.table{--bs-border-color:#c3c8d8;--bs-table-color:#141a2b}
.table thead th{color:#2a3150;background:#e9ecf5}
.form-control,.form-select{border-color:#9ea6bf;font-size:15.5px}
.form-label.small,label.small{font-size:14px!important;color:#2a3150}
.panel{border-color:#cfd4e3}
.panel h2{font-size:18px}
.small,small{font-size:.9em}
.sidebar nav a{font-size:15.5px}
.topbar h1{font-size:21px}
/* ---------- 3D sidebar menu with submenus (colours follow the theme: --navy, --navy-2, --gold) ---------- */
.sidebar nav.nav3d{padding:10px 10px 12px}
.nav3d .n3-btn,.nav3d .n3-item{box-sizing:border-box;display:flex;gap:10px;align-items:center;width:100%;text-align:left;text-decoration:none;cursor:pointer;line-height:1.3;font-family:inherit;transition:transform .08s,background-color .15s,box-shadow .08s}
.nav3d .n3-btn span,.nav3d .n3-item span{flex:1;min-width:0}
.nav3d .n3-btn{margin:0 0 8px;padding:9px 12px;border-radius:9px;font-size:15.5px;font-weight:600;color:#fff;
  background:var(--navy-2);border:1px solid rgba(255,255,255,.16);border-bottom:4px solid rgba(0,0,0,.42);
  box-shadow:0 3px 6px rgba(0,0,0,.28),inset 0 1px 0 rgba(255,255,255,.22)}
.nav3d .n3-btn:hover{background:color-mix(in srgb,var(--navy-2) 82%,#fff);color:#fff}
.nav3d .n3-btn:active,.nav3d .n3-item:active{transform:translateY(2px);border-bottom-width:2px;margin-bottom:10px;box-shadow:0 1px 2px rgba(0,0,0,.3)}
.nav3d .n3-btn i{font-size:17px}
.nav3d .n3-ch{margin-left:auto;font-size:13px!important;transition:transform .2s}
.nav3d .n3-group.open>.n3-head .n3-ch{transform:rotate(180deg)}
.nav3d .n3-group.has-active>.n3-head{box-shadow:0 3px 6px rgba(0,0,0,.28),inset 4px 0 0 var(--gold),inset 0 1px 0 rgba(255,255,255,.22)}
.nav3d .n3-sub{display:none;padding:0 0 4px 12px;margin:-2px 0 6px 10px;border-left:2px dashed rgba(255,255,255,.22)}
.nav3d .n3-group.open>.n3-sub{display:block;animation:n3Drop .18s ease-out}
@keyframes n3Drop{from{opacity:0;transform:translateY(-4px)}to{opacity:1;transform:none}}
.nav3d .n3-item{margin:0 0 6px;padding:7px 10px;border-radius:8px;font-size:14.5px;font-weight:500;color:var(--navy);
  background:#eef0fa;border:1px solid #fff;border-bottom:3px solid rgba(0,0,0,.25);box-shadow:0 2px 4px rgba(0,0,0,.22)}
.nav3d .n3-item:hover{background:#fff;color:var(--navy)}
.nav3d .n3-item:active{margin-bottom:7px}
.nav3d .n3-item i{color:var(--navy);font-size:15px}
/* Selected page: gold, pressed-in */
.nav3d .n3-btn.active,.nav3d .n3-item.active{background:var(--gold);color:#1d2333;border-color:rgba(255,255,255,.55);border-bottom-color:rgba(0,0,0,.45);font-weight:700;
  box-shadow:0 0 0 2px rgba(255,255,255,.35),0 3px 8px rgba(0,0,0,.3),inset 0 1px 0 rgba(255,255,255,.5)}
.nav3d .n3-btn.active i,.nav3d .n3-item.active i{color:#1d2333}
.nav3d .n3-btn.active:hover,.nav3d .n3-item.active:hover{background:var(--gold);color:#1d2333}
.nav3d :focus-visible{outline:3px solid var(--gold);outline-offset:2px}
@media (prefers-reduced-motion:reduce){.nav3d .n3-sub{animation:none!important}.nav3d *{transition:none!important}}
/* v26: notification bell in the student app header */
.pt-bell{position:relative}.pt-bell.active{background:var(--navy-2);color:#fff}
.pt-bell + .pt-out,.pt-nav + .pt-bell + .pt-out{margin-left:0!important}
.pt-badge{position:absolute;top:0;left:20px;min-width:18px;height:18px;padding:0 4px;border-radius:9px;background:#e53935;color:#fff;font-size:11px;line-height:18px;text-align:center;font-weight:700}
@media (max-width:767px){.pt-bell i{font-size:20px}.pt-badge{left:18px}}
