:root{
    --navy:#071b38;
    --navy2:#123f73;
    --gold:#d6a63e;
    --gold2:#f3d37c;
    --paper:#f4f7fb;
    --card:#fff;
    --text:#35445b;
    --muted:#748197;
    --line:#dce5ee;
    --green:#137047;
    --red:#b42318;
    --orange:#9a5c0b;
    --blue:#1f5f99;
    --shadow:0 13px 35px rgba(7,27,56,.08);
    --sidebar:270px
}
*{box-sizing:border-box}
html{font-size:15px;scroll-behavior:smooth}
body{margin:0;background:var(--paper);color:var(--text);font-family:Inter,Arial,Helvetica,sans-serif;line-height:1.55}
a{color:inherit;text-decoration:none}
button,input,select,textarea{font:inherit}
button:disabled{opacity:.55;cursor:not-allowed}
code{padding:2px 5px;border-radius:5px;background:#eef3f8;color:var(--navy)}
.shell{min-height:100vh;display:flex}
.sidebar{position:fixed;inset:0 auto 0 0;width:var(--sidebar);padding:17px 13px;background:linear-gradient(180deg,var(--navy),#041126);color:#fff;overflow:auto;z-index:1000}
.brand{display:grid;grid-template-columns:52px 1fr;gap:11px;align-items:center;padding:8px 9px 17px;border-bottom:1px solid rgba(255,255,255,.1)}
.brand-mark{width:52px;height:52px;display:grid;place-items:center;border-radius:13px;background:linear-gradient(135deg,var(--gold),var(--gold2));color:var(--navy);font-weight:950;letter-spacing:-.04em}
.brand strong{display:block;font-size:.91rem}.brand small{display:block;color:#a8b7ca;font-size:.68rem}
.nav{display:grid;gap:3px;margin-top:13px}
.nav-title{padding:14px 10px 5px;color:#788da7;font-size:.64rem;font-weight:900;letter-spacing:.1em;text-transform:uppercase}
.nav a{padding:9px 11px;border-radius:9px;color:#d9e3ee;font-size:.79rem;font-weight:720}
.nav a:hover,.nav a.active{background:rgba(255,255,255,.1);color:#fff}
.nav a.active{background:#fff;color:var(--navy)}
.main{width:calc(100% - var(--sidebar));margin-left:var(--sidebar);min-width:0}
.topbar{min-height:74px;padding:14px 23px;display:flex;align-items:center;justify-content:space-between;gap:18px;border-bottom:1px solid var(--line);background:rgba(255,255,255,.95);position:sticky;top:0;z-index:800;backdrop-filter:blur(12px)}
.topbar h1{margin:0;color:var(--navy);font-size:1.32rem;line-height:1.2}
.topbar p{margin:3px 0 0;color:var(--muted);font-size:.75rem}
.userbox{display:flex;align-items:center;gap:10px}
.userbox span{font-size:.74rem;font-weight:850;color:var(--navy)}
.content{padding:22px}
.alert{padding:11px 13px;margin-bottom:16px;border-radius:11px;border:1px solid var(--line);background:#fff;font-size:.8rem;font-weight:700}
.alert.success{color:var(--green);background:#ecfdf3;border-color:#a9dfc2}
.alert.error{color:var(--red);background:#fff1f1;border-color:#f6c2c2}
.alert.warning{color:var(--orange);background:#fff7e9;border-color:#f3d69b}
.stats{display:grid;grid-template-columns:repeat(4,minmax(0,1fr));gap:13px;margin-bottom:18px}
.stat{padding:17px;border:1px solid var(--line);border-radius:15px;background:#fff;box-shadow:var(--shadow)}
.stat strong{display:block;color:var(--navy);font-size:1.7rem;line-height:1}
.stat span{display:block;margin-top:7px;color:var(--muted);font-size:.73rem;font-weight:850}
.grid-2{display:grid;grid-template-columns:repeat(2,minmax(0,1fr));gap:16px}
.grid-3{display:grid;grid-template-columns:repeat(3,minmax(0,1fr));gap:16px}
.panel{padding:18px;border:1px solid var(--line);border-radius:16px;background:#fff;box-shadow:var(--shadow)}
.panel-head{display:flex;justify-content:space-between;align-items:center;gap:12px;margin-bottom:15px}
.panel h2{margin:0;color:var(--navy);font-size:1.02rem}
.panel p{color:var(--muted)}
.button{display:inline-flex;align-items:center;justify-content:center;min-height:38px;padding:8px 13px;border:0;border-radius:9px;background:linear-gradient(135deg,var(--gold),var(--gold2));color:var(--navy);font-weight:900;font-size:.75rem;cursor:pointer}
.button.secondary{border:1px solid var(--line);background:#fff}
.button.danger{background:#fee4e2;color:var(--red)}
.button.success{background:#dff7e9;color:var(--green)}
.button.small{min-height:30px;padding:5px 8px;font-size:.68rem}
.toolbar{display:flex;flex-wrap:wrap;align-items:center;justify-content:space-between;gap:10px;margin-bottom:14px}
.search-form{display:flex;gap:7px;min-width:min(430px,100%)}
.search-form input,.search-form select{flex:1}
.table-wrap{overflow:auto}
.data-table{width:100%;min-width:760px;border-collapse:collapse}
.data-table th,.data-table td{padding:10px;border-bottom:1px solid var(--line);text-align:left;vertical-align:top;font-size:.75rem}
.data-table th{color:var(--muted);font-size:.64rem;text-transform:uppercase;letter-spacing:.06em}
.data-table td strong{color:var(--navy)}
.data-table td small{display:block;color:var(--muted)}
.badge{display:inline-flex;padding:4px 7px;border-radius:999px;background:#eef3f8;color:var(--navy);font-size:.63rem;font-weight:900}
.badge.active,.badge.published,.badge.approved,.badge.present,.badge.paid,.badge.confirmed,.badge.sent,.badge.success,.badge.resolved,.badge.returned{color:var(--green);background:#e9f8f0}
.badge.inactive,.badge.rejected,.badge.absent,.badge.failed,.badge.cancelled,.badge.suspended,.badge.lost{color:var(--red);background:#fff0ef}
.badge.pending,.badge.draft,.badge.late,.badge.partial,.badge.submitted,.badge.processing,.badge.queued,.badge.overdue{color:var(--orange);background:#fff6e8}
.form-grid{display:grid;grid-template-columns:repeat(2,minmax(0,1fr));gap:12px}
.field{display:grid;gap:6px}
.field.full,.form-actions{grid-column:1/-1}
.field label{color:var(--navy);font-size:.72rem;font-weight:850}
.field input,.field select,.field textarea{width:100%;padding:9px 11px;border:1px solid var(--line);border-radius:9px;background:#fff;outline:none}
.field input:focus,.field select:focus,.field textarea:focus{border-color:var(--gold);box-shadow:0 0 0 3px rgba(214,166,62,.13)}
.field small{color:var(--muted);font-size:.66rem}
.form-actions{display:flex;gap:8px;flex-wrap:wrap;padding-top:4px}
.detail-grid{display:grid;grid-template-columns:repeat(2,minmax(0,1fr));gap:10px}
.detail-item{padding:11px;border:1px solid var(--line);border-radius:10px;background:#f8fafc}
.detail-item small{display:block;color:var(--muted);font-size:.64rem}
.detail-item strong{display:block;margin-top:3px;color:var(--navy);word-break:break-word}
.timeline{display:grid;gap:9px}
.timeline-item{padding:11px;border-left:3px solid var(--gold);background:#f8fafc;border-radius:0 10px 10px 0}
.timeline-item strong{color:var(--navy)}
.timeline-item small{display:block;color:var(--muted)}
.empty{padding:25px;text-align:center;color:var(--muted)}
.pagination{display:flex;gap:6px;flex-wrap:wrap;margin-top:15px}
.pagination a,.pagination span{padding:6px 9px;border:1px solid var(--line);border-radius:7px;background:#fff;font-size:.7rem}
.pagination .current{background:var(--navy);color:#fff}
.menu-button{display:none}
.auth-body{min-height:100vh;padding:18px;display:grid;place-items:center;background:radial-gradient(circle at top left,rgba(214,166,62,.15),transparent 30%),linear-gradient(145deg,#f2f6fb,#fff)}
.auth-card{width:min(790px,100%);display:grid;grid-template-columns:280px 1fr;overflow:hidden;border:1px solid var(--line);border-radius:18px;background:#fff;box-shadow:0 20px 55px rgba(7,27,56,.13)}
.auth-brand{padding:29px;display:flex;flex-direction:column;justify-content:center;color:#fff;background:linear-gradient(145deg,var(--navy),var(--navy2))}
.auth-brand .brand-mark{width:68px;height:68px}
.auth-brand h1{margin:16px 0 8px;font-size:1.6rem;line-height:1.15}
.auth-brand p{margin:0;color:rgba(255,255,255,.78);font-size:.81rem}
.auth-form{padding:30px;display:flex;flex-direction:column;justify-content:center}
.auth-form h2{margin:0;color:var(--navy);font-size:1.34rem}
.auth-form>p{margin:6px 0 0;color:var(--muted);font-size:.77rem}
.auth-form form{display:grid;gap:11px;margin-top:15px}
.auth-links{display:flex;gap:12px;flex-wrap:wrap;margin-top:15px;padding-top:12px;border-top:1px solid var(--line)}
.auth-links a{color:var(--navy);font-size:.7rem;font-weight:850}
.install-shell{width:min(1080px,100%);display:grid;grid-template-columns:310px 1fr;overflow:hidden;border:1px solid var(--line);border-radius:20px;background:#fff;box-shadow:0 24px 65px rgba(7,27,56,.14)}
.install-brand{padding:34px 28px;display:flex;flex-direction:column;justify-content:center;gap:18px;color:#fff;background:linear-gradient(155deg,var(--navy),var(--navy2))}
.install-brand .brand-mark{width:76px;height:76px}
.install-brand h1{margin:7px 0 9px;font-size:1.65rem;line-height:1.2}
.install-brand p{color:rgba(255,255,255,.78);font-size:.82rem}
.eyebrow{color:var(--gold2);font-size:.68rem;font-weight:900;letter-spacing:.1em;text-transform:uppercase}
.install-card{padding:27px;max-height:92vh;overflow:auto}
.install-card h2{margin:0 0 14px;color:var(--navy)}
.install-form{display:grid;gap:17px}
fieldset{margin:0;padding:16px;border:1px solid var(--line);border-radius:13px}
legend{padding:0 8px;color:var(--navy);font-size:.78rem;font-weight:900}
.check-grid{display:grid;grid-template-columns:repeat(3,minmax(0,1fr));gap:8px;margin-bottom:18px}
.check-item{padding:8px;border-radius:9px;background:#f6f8fb;font-size:.68rem}
.check-item span{margin-right:5px;font-weight:950}
.check-item.passed{color:var(--green)}
.check-item.failed{color:var(--red)}
.danger-zone{padding:10px;border-radius:9px;background:#fff4f3}
.danger-zone label{display:flex;gap:8px;align-items:flex-start}
.danger-zone input{width:auto;margin-top:3px}
.success-state{text-align:center;padding:32px 12px}
.success-icon{width:72px;height:72px;margin:0 auto 14px;display:grid;place-items:center;border-radius:50%;background:#e7f8ef;color:var(--green);font-size:2rem;font-weight:950}
.install-actions{display:flex;gap:9px;justify-content:center;flex-wrap:wrap;margin:20px 0}
.security-note{padding:11px;border-radius:9px;background:#fff7e9;color:var(--orange);font-size:.75rem}
.quick-actions{display:flex;gap:8px;flex-wrap:wrap}
.kpi-note{font-size:.66rem;color:var(--muted)}
@media(max-width:1050px){.stats{grid-template-columns:repeat(2,minmax(0,1fr))}.install-shell{grid-template-columns:260px 1fr}}
@media(max-width:980px){.sidebar{transform:translateX(-103%);transition:.2s}.sidebar.open{transform:translateX(0)}.main{width:100%;margin-left:0}.menu-button{display:inline-flex}}
@media(max-width:760px){.content{padding:14px}.topbar{padding:12px 14px}.grid-2,.grid-3,.form-grid,.detail-grid{grid-template-columns:1fr}.field.full,.form-actions{grid-column:auto}.stats{grid-template-columns:1fr}.auth-card,.install-shell{grid-template-columns:1fr}.auth-brand,.install-brand{padding:20px;display:grid;grid-template-columns:58px 1fr;gap:13px;align-items:center}.auth-brand .brand-mark,.install-brand .brand-mark{width:58px;height:58px;grid-row:1/3}.auth-brand h1,.install-brand h1{margin:0 0 4px;font-size:1.17rem}.auth-brand p,.install-brand p{font-size:.71rem}.auth-form,.install-card{padding:21px}.search-form{min-width:100%}.check-grid{grid-template-columns:1fr 1fr}.userbox span{display:none}}
@media(max-width:430px){.auth-body{padding:8px}.check-grid{grid-template-columns:1fr}.topbar h1{font-size:1.08rem}}
/* Current-school logo used in every authenticated dashboard and portal. */
.school-logo-mark{
    position:relative;
    overflow:hidden;
    padding:4px;
    background:#fff!important;
    border:1px solid rgba(255,255,255,.35);
    box-shadow:0 7px 20px rgba(0,0,0,.18);
}
.school-logo-mark img,
.topbar-school-logo img{
    width:100%;
    height:100%;
    display:block;
    object-fit:contain;
}
.school-logo-mark img{
    border-radius:9px;
}
.school-logo-fallback{
    width:100%;
    height:100%;
    display:grid;
    place-items:center;
    border-radius:9px;
    background:linear-gradient(135deg,var(--school-theme),var(--gold2));
    color:var(--navy);
    font-size:.72rem;
    font-weight:950;
    letter-spacing:-.02em;
}
.topbar-heading{
    min-width:0;
    display:flex;
    align-items:center;
    gap:11px;
}
.topbar-heading>div{
    min-width:0;
}
.topbar-school-logo{
    flex:0 0 43px;
    width:43px;
    height:43px;
    display:grid;
    place-items:center;
    overflow:hidden;
    padding:3px;
    border:1px solid var(--line);
    border-radius:11px;
    background:#fff;
    box-shadow:0 5px 15px rgba(7,27,56,.08);
}
.topbar-school-logo img{
    border-radius:7px;
}
.topbar-school-logo .school-logo-fallback{
    font-size:.57rem;
}
@media(max-width:520px){
    .topbar-school-logo{
        flex-basis:37px;
        width:37px;
        height:37px;
    }
    .brand{
        grid-template-columns:52px minmax(0,1fr);
    }
}

/* ================================================================
   High-end multi-school backend shell
   Uses each school's logo/theme and keeps Ego SMS as the notification layer.
   ================================================================ */
:root{
    --sidebar:288px;
    --surface:#ffffff;
    --surface-soft:#f7f9fc;
    --surface-muted:#eef3f8;
    --ink-strong:#10213d;
    --sidebar-deep:#08162b;
    --sidebar-mid:#102d52;
    --school-tint:#eef4ff;
    --school-tint:color-mix(in srgb,var(--school-theme) 12%,#ffffff);
    --school-border:#c7d6eb;
    --school-border:color-mix(in srgb,var(--school-theme) 24%,#dce5ee);
    --school-deep:#102d52;
    --school-deep:color-mix(in srgb,var(--school-theme) 76%,#071b38);
}
.backend-body{background:#f4f7fb;color:#344054;min-height:100vh}
.backend-shell{min-height:100vh}
.backend-sidebar{
    width:var(--sidebar);
    padding:14px 12px 16px;
    background:
        radial-gradient(circle at 20% 0%,color-mix(in srgb,var(--school-theme) 36%,transparent),transparent 30%),
        linear-gradient(180deg,var(--sidebar-deep),#061020 70%,#040c18);
    border-right:1px solid rgba(255,255,255,.06);
    scrollbar-width:thin;
    scrollbar-color:rgba(255,255,255,.18) transparent;
}
.backend-brand{
    grid-template-columns:58px minmax(0,1fr);
    gap:12px;
    padding:8px 8px 17px;
    border-bottom:1px solid rgba(255,255,255,.1);
}
.backend-brand .brand-mark{width:58px;height:58px;border-radius:16px}
.backend-brand .brand-copy{min-width:0}
.backend-brand strong{overflow:hidden;text-overflow:ellipsis;white-space:nowrap;color:#fff;font-size:.88rem;letter-spacing:-.01em}
.backend-brand small{margin-top:3px;color:#94a8c1;font-size:.61rem;text-transform:uppercase;letter-spacing:.06em}
.sidebar-context{
    margin:13px 4px 4px;
    padding:12px 13px;
    display:grid;
    grid-template-columns:1fr auto;
    gap:2px 8px;
    border:1px solid rgba(255,255,255,.08);
    border-radius:13px;
    background:rgba(255,255,255,.055);
}
.sidebar-context span{color:#91a6c0;font-size:.62rem;font-weight:800;text-transform:uppercase;letter-spacing:.07em}
.sidebar-context strong{color:#fff;font-size:.73rem;text-align:right}
.sidebar-context small{grid-column:1/-1;margin-top:5px;color:#c8d5e4;font-size:.63rem}
.backend-nav{gap:2px;margin-top:8px;padding-bottom:90px}
.backend-nav .nav-title{padding:15px 10px 6px;color:#6f88a8;font-size:.59rem;letter-spacing:.12em}
.backend-nav a{
    min-height:40px;
    padding:8px 10px;
    display:grid;
    grid-template-columns:22px minmax(0,1fr) auto;
    align-items:center;
    gap:9px;
    border:1px solid transparent;
    border-radius:10px;
    color:#cbd7e5;
    font-size:.73rem;
    font-weight:730;
    transition:background .16s ease,border-color .16s ease,color .16s ease,transform .16s ease;
}
.backend-nav a:hover{background:rgba(255,255,255,.075);border-color:rgba(255,255,255,.08);color:#fff;transform:translateX(2px)}
.backend-nav a.active{
    background:linear-gradient(135deg,#fff,color-mix(in srgb,var(--school-theme) 8%,#fff));
    border-color:rgba(255,255,255,.28);
    color:var(--school-deep);
    box-shadow:0 9px 24px rgba(0,0,0,.2);
}
.nav-icon{width:20px;height:20px;display:grid;place-items:center;color:inherit}
.nav-icon svg{width:18px;height:18px}
.nav-label{min-width:0;overflow:hidden;text-overflow:ellipsis;white-space:nowrap}
.nav-badge{min-width:20px;height:20px;padding:0 6px;display:grid;place-items:center;border-radius:999px;background:#ef4444;color:#fff;font-size:.56rem;font-weight:900}
.sidebar-account{
    position:fixed;
    left:12px;
    bottom:12px;
    width:calc(var(--sidebar) - 24px);
    min-height:62px;
    padding:10px;
    display:grid;
    grid-template-columns:40px minmax(0,1fr) 31px;
    align-items:center;
    gap:9px;
    border:1px solid rgba(255,255,255,.1);
    border-radius:14px;
    background:rgba(7,23,44,.94);
    box-shadow:0 -12px 30px rgba(3,10,22,.35);
    backdrop-filter:blur(16px);
}
.account-avatar{width:40px;height:40px;display:grid;place-items:center;border-radius:12px;background:linear-gradient(135deg,var(--school-theme),var(--gold2));color:#fff;font-size:.72rem;font-weight:950;box-shadow:0 7px 18px color-mix(in srgb,var(--school-theme) 28%,transparent)}
.sidebar-account>span:nth-child(2){min-width:0}
.sidebar-account strong{display:block;overflow:hidden;text-overflow:ellipsis;white-space:nowrap;color:#fff;font-size:.7rem}
.sidebar-account small{display:block;color:#8da2bc;font-size:.61rem}
.sidebar-account>a{width:31px;height:31px;display:grid;place-items:center;border-radius:9px;color:#a9bad0;background:rgba(255,255,255,.06)}
.sidebar-account>a:hover{color:#fff;background:rgba(255,255,255,.12)}
.sidebar-account svg{width:16px;height:16px}
.backend-main{width:calc(100% - var(--sidebar));margin-left:var(--sidebar);min-height:100vh;display:flex;flex-direction:column}
.backend-topbar{
    min-height:78px;
    padding:12px 24px;
    border-bottom:1px solid #e3e8ef;
    background:rgba(255,255,255,.94);
    box-shadow:0 3px 15px rgba(16,33,61,.035);
}
.backend-topbar .topbar-heading{gap:12px}
.backend-topbar h1{font-size:1.18rem;color:var(--ink-strong);letter-spacing:-.02em}
.backend-topbar p{margin:3px 0 0;max-width:680px;color:#7a8799;font-size:.68rem}
.topbar-actions{display:flex;align-items:center;gap:8px}
.icon-button{
    width:40px;height:40px;padding:0;display:grid;place-items:center;border:1px solid #e2e8f0;border-radius:11px;background:#fff;color:#41516a;cursor:pointer;transition:.15s ease;
}
.icon-button:hover{border-color:var(--school-border);background:var(--school-tint);color:var(--school-deep)}
.icon-button svg{width:18px;height:18px}
.notification-button{position:relative}
.notification-button>span{position:absolute;top:-5px;right:-5px;min-width:19px;height:19px;padding:0 5px;display:grid;place-items:center;border:2px solid #fff;border-radius:999px;background:#ef4444;color:#fff;font-size:.52rem;font-weight:950}
.profile-button{min-width:184px;padding:5px 8px 5px 5px;display:grid;grid-template-columns:36px minmax(0,1fr);align-items:center;gap:8px;border:1px solid #e2e8f0;border-radius:12px;background:#fff}
.profile-button .account-avatar{width:36px;height:36px;border-radius:10px;font-size:.64rem}
.profile-button strong{display:block;overflow:hidden;text-overflow:ellipsis;white-space:nowrap;color:var(--ink-strong);font-size:.68rem}
.profile-button small{display:block;color:#8591a1;font-size:.58rem}
.backend-content{flex:1;width:100%;max-width:1680px;margin:0 auto;padding:22px 24px 30px}
.backend-footer{padding:14px 24px;display:flex;justify-content:space-between;gap:15px;border-top:1px solid #e2e8f0;background:#fff;color:#8490a0;font-size:.62rem}
.sidebar-backdrop{display:none}

.dashboard-hero{
    position:relative;
    overflow:hidden;
    min-height:205px;
    margin-bottom:18px;
    padding:28px 30px;
    display:flex;
    align-items:center;
    justify-content:space-between;
    gap:22px;
    border:1px solid color-mix(in srgb,var(--school-theme) 23%,#dce5ee);
    border-radius:20px;
    background:
        radial-gradient(circle at 87% 20%,color-mix(in srgb,var(--gold2) 35%,transparent),transparent 24%),
        radial-gradient(circle at 65% 100%,color-mix(in srgb,var(--school-theme) 32%,transparent),transparent 31%),
        linear-gradient(135deg,var(--sidebar-deep),var(--school-deep));
    box-shadow:0 18px 46px rgba(7,27,56,.17);
    color:#fff;
}
.dashboard-hero::after{content:"";position:absolute;inset:0;pointer-events:none;background-image:linear-gradient(rgba(255,255,255,.055) 1px,transparent 1px),linear-gradient(90deg,rgba(255,255,255,.055) 1px,transparent 1px);background-size:34px 34px;mask-image:linear-gradient(90deg,rgba(0,0,0,.8),transparent)}
.hero-copy,.hero-actions{position:relative;z-index:1}
.hero-copy{max-width:740px}
.hero-copy .eyebrow{color:var(--gold2)}
.hero-copy h2{margin:7px 0 9px;color:#fff;font-size:clamp(1.55rem,2.5vw,2.25rem);line-height:1.12;letter-spacing:-.035em}
.hero-copy>p{max-width:680px;margin:0;color:#c8d6e8;font-size:.81rem}
.hero-meta{margin-top:18px;display:flex;flex-wrap:wrap;gap:9px}
.hero-meta span{padding:7px 10px;display:inline-flex;align-items:center;gap:6px;border:1px solid rgba(255,255,255,.13);border-radius:999px;background:rgba(255,255,255,.07);color:#e7eef7;font-size:.63rem;font-weight:750}
.hero-meta svg{width:14px;height:14px}
.hero-actions{width:min(230px,100%);display:grid;gap:9px}
.hero-actions .button{min-height:42px;gap:8px;justify-content:flex-start;padding-inline:14px}
.hero-actions .button.secondary{border-color:rgba(255,255,255,.18);background:rgba(255,255,255,.09);color:#fff}
.hero-actions .button.secondary:hover{background:rgba(255,255,255,.15)}
.button svg{width:16px;height:16px}
.dashboard-stats{grid-template-columns:repeat(4,minmax(0,1fr));gap:14px}
.metric-card{
    position:relative;
    overflow:hidden;
    min-height:135px;
    padding:17px;
    display:grid;
    grid-template-columns:44px minmax(0,1fr) auto;
    align-items:start;
    gap:12px;
    border-color:#e4e9f0;
    box-shadow:0 9px 26px rgba(16,33,61,.055);
    transition:transform .17s ease,box-shadow .17s ease,border-color .17s ease;
}
.metric-card::before{content:"";position:absolute;inset:0 auto 0 0;width:3px;background:var(--metric-color,#2563eb)}
.metric-card:hover{transform:translateY(-3px);border-color:color-mix(in srgb,var(--metric-color) 28%,#dce5ee);box-shadow:0 16px 34px rgba(16,33,61,.1)}
.metric-icon{width:44px;height:44px;display:grid;place-items:center;border-radius:13px;background:color-mix(in srgb,var(--metric-color) 11%,#fff);color:var(--metric-color)}
.metric-icon svg{width:21px;height:21px}
.metric-copy{min-width:0}
.metric-copy small{display:block;color:#788597;font-size:.61rem;font-weight:850;text-transform:uppercase;letter-spacing:.045em}
.metric-copy strong{display:block;margin-top:7px;color:var(--ink-strong);font-size:1.58rem;line-height:1}
.metric-copy em{display:block;margin-top:8px;overflow:hidden;text-overflow:ellipsis;white-space:nowrap;color:#8a96a7;font-size:.6rem;font-style:normal}
.metric-arrow{color:#9aa6b5;font-size:.82rem}
.tone-blue{--metric-color:#2563eb}.tone-purple{--metric-color:#7c3aed}.tone-green{--metric-color:#079669}.tone-orange{--metric-color:#ea580c}.tone-red{--metric-color:#dc2626}.tone-amber{--metric-color:#b7791f}.tone-cyan{--metric-color:#0891b2}.tone-navy{--metric-color:#123f73}
.quick-launch{margin-bottom:16px}
.quick-launch .panel-head{margin-bottom:13px}
.panel .eyebrow{display:block;margin-bottom:4px;color:var(--school-deep);font-size:.58rem;font-weight:900;letter-spacing:.1em;text-transform:uppercase}
.action-grid{display:grid;grid-template-columns:repeat(3,minmax(0,1fr));gap:11px}
.action-grid>a{min-height:116px;padding:14px;display:grid;grid-template-columns:40px minmax(0,1fr);grid-template-rows:auto 1fr;gap:2px 11px;border:1px solid #e3e8ef;border-radius:13px;background:#fbfcfe;transition:.16s ease}
.action-grid>a:hover{transform:translateY(-2px);border-color:var(--school-border);background:var(--school-tint);box-shadow:0 12px 25px rgba(16,33,61,.07)}
.action-grid>a>span{grid-row:1/3;width:40px;height:40px;display:grid;place-items:center;border-radius:11px;background:#fff;color:var(--school-deep);box-shadow:0 5px 14px rgba(16,33,61,.08)}
.action-grid svg{width:19px;height:19px}
.action-grid strong{color:var(--ink-strong);font-size:.75rem}
.action-grid small{margin-top:4px;color:#7f8b9b;font-size:.62rem;line-height:1.45}
.dashboard-grid{display:grid;grid-template-columns:repeat(2,minmax(0,1fr));gap:16px;margin-bottom:16px}
.dashboard-grid-main{grid-template-columns:minmax(0,1.08fr) minmax(0,.92fr)}
.operational-card{min-height:300px}
.attendance-overview{display:grid;grid-template-columns:150px 1fr;align-items:center;gap:22px;padding:7px 4px}
.progress-ring{--size:132px;width:var(--size);height:var(--size);padding:11px;display:grid;place-items:center;border-radius:50%;background:conic-gradient(var(--school-theme) calc(var(--progress)*1%),#e9eef5 0);box-shadow:inset 0 0 0 1px rgba(16,33,61,.04)}
.progress-ring>div{width:100%;height:100%;display:grid;place-items:center;align-content:center;border-radius:50%;background:#fff;box-shadow:0 5px 18px rgba(16,33,61,.08)}
.progress-ring strong{color:var(--ink-strong);font-size:1.45rem;line-height:1}
.progress-ring span{margin-top:4px;color:#8290a1;font-size:.61rem;font-weight:850;text-transform:uppercase}
.attendance-breakdown{display:grid;gap:7px}
.attendance-breakdown>div{padding:8px 10px;display:grid;grid-template-columns:9px 1fr auto;align-items:center;gap:8px;border-radius:9px;background:#f7f9fc}
.attendance-breakdown small{color:#69778a;font-size:.65rem}
.attendance-breakdown strong{color:var(--ink-strong);font-size:.7rem}
.status-dot{width:8px;height:8px;border-radius:50%}.status-present{background:#10b981}.status-absent{background:#ef4444}.status-late{background:#f59e0b}.status-excused{background:#3b82f6}.status-half_day{background:#8b5cf6}
.inline-note{margin-top:12px;padding:10px 12px;border-radius:10px;background:#fff8e8;color:#8a5a11;font-size:.64rem}
.service-status{padding:6px 9px;border-radius:999px;font-size:.58rem;font-weight:900;text-transform:uppercase;letter-spacing:.045em}.service-status.online{background:#e6f8ef;color:#087647}.service-status.warning{background:#fff4df;color:#9a5c0b}
.service-metrics{display:grid;grid-template-columns:repeat(3,minmax(0,1fr));gap:9px;margin:8px 0 16px}
.service-metrics>div{padding:13px 10px;text-align:center;border:1px solid #e5eaf1;border-radius:12px;background:#fafbfd}
.service-metrics span{width:34px;height:34px;margin:0 auto 7px;display:grid;place-items:center;border-radius:10px;background:var(--school-tint);color:var(--school-deep)}
.service-metrics svg{width:17px;height:17px}
.service-metrics strong{display:block;color:var(--ink-strong);font-size:1.14rem}
.service-metrics small{display:block;margin-top:2px;color:#8591a1;font-size:.58rem}
.panel-actions{display:flex;flex-wrap:wrap;gap:8px}
.compact-list,.event-list,.activity-list{display:grid;gap:3px}
.compact-item{min-height:58px;padding:8px 7px;display:grid;grid-template-columns:38px minmax(0,1fr) auto;align-items:center;gap:10px;border-bottom:1px solid #edf0f4;border-radius:9px;transition:.14s ease}
.compact-item:hover{background:#f7f9fc}
.list-avatar,.list-icon{width:38px;height:38px;display:grid;place-items:center;border-radius:11px;background:var(--school-tint);color:var(--school-deep);font-size:.63rem;font-weight:900}
.list-icon svg{width:18px;height:18px}
.compact-copy{min-width:0}
.compact-copy strong{display:block;overflow:hidden;text-overflow:ellipsis;white-space:nowrap;color:var(--ink-strong);font-size:.7rem}
.compact-copy small{display:block;margin-top:2px;overflow:hidden;text-overflow:ellipsis;white-space:nowrap;color:#8490a0;font-size:.59rem}
.empty-state{padding:28px 10px;text-align:center;color:#8995a5;font-size:.67rem}.empty-state.large{min-height:260px;display:grid;place-items:center;align-content:center;gap:8px}.empty-state.large svg{width:34px;height:34px}.empty-state.large strong{color:var(--ink-strong);font-size:.85rem}.empty-state.large p{margin:0}
.event-item{min-height:62px;padding:7px;display:grid;grid-template-columns:48px minmax(0,1fr) auto;align-items:center;gap:10px;border-bottom:1px solid #edf0f4}
.event-date{width:48px;height:48px;display:grid;place-items:center;align-content:center;border-radius:11px;background:var(--school-deep);color:#fff}.event-date strong{font-size:.95rem;line-height:1}.event-date small{margin-top:3px;font-size:.5rem;font-weight:900;letter-spacing:.08em}.event-time{color:#6e7d90;font-size:.59rem;font-weight:800}
.activity-item{min-height:55px;padding:8px 5px;display:grid;grid-template-columns:34px minmax(0,1fr);gap:9px;align-items:center;border-bottom:1px solid #edf0f4}.activity-item>span{width:34px;height:34px;display:grid;place-items:center;border-radius:10px;background:#f0f4f8;color:#52647c}.activity-item svg{width:16px;height:16px}.activity-item strong{display:block;color:var(--ink-strong);font-size:.68rem}.activity-item small{display:block;margin-top:2px;color:#8a96a6;font-size:.57rem}
.sms-table-panel{margin-bottom:0}
.page-intro{margin-bottom:16px;display:flex;align-items:center;justify-content:space-between;gap:18px}.page-intro h2{margin:0}.page-intro p{margin:5px 0 0;max-width:760px}
.notification-list{display:grid;gap:8px}
.notification-item{padding:14px;display:grid;grid-template-columns:42px minmax(0,1fr) auto;gap:12px;align-items:start;border:1px solid #e5eaf1;border-radius:13px;background:#fff}.notification-item.unread{border-color:var(--school-border);background:var(--school-tint);box-shadow:inset 3px 0 0 var(--school-theme)}
.notification-type{width:42px;height:42px;display:grid;place-items:center;border-radius:12px;background:#eef3f8;color:#53657d}.notification-type svg{width:19px;height:19px}.notification-item.unread .notification-type{background:#fff;color:var(--school-deep)}
.notification-heading{display:flex;align-items:center;gap:8px}.notification-copy strong{color:var(--ink-strong);font-size:.73rem}.notification-copy p{margin:5px 0;color:#647287;font-size:.68rem}.notification-copy small{color:#8b97a7;font-size:.57rem}.unread-dot{padding:3px 6px;border-radius:999px;background:var(--school-theme);color:#fff;font-size:.48rem;font-weight:900;text-transform:uppercase}.notification-actions{display:flex;align-items:center;gap:6px}.notification-actions form{margin:0}
.profile-layout{display:grid;grid-template-columns:300px minmax(0,1fr);gap:16px;align-items:start}.profile-summary{position:sticky;top:100px;text-align:center}.profile-school-logo{width:104px;height:104px;margin:0 auto 15px;padding:7px;display:grid;place-items:center;overflow:hidden;border:1px solid #e2e8f0;border-radius:24px;background:#fff;box-shadow:0 14px 32px rgba(16,33,61,.12)}.profile-school-logo img{width:100%;height:100%;object-fit:contain;border-radius:17px}.profile-school-logo span{font-size:1.35rem;font-weight:950;color:var(--school-deep)}.profile-summary h2{margin:5px 0 2px;font-size:1.12rem}.profile-summary>p{color:#8290a1;font-size:.68rem}.profile-facts{margin-top:18px;display:grid;gap:8px;text-align:left}.profile-facts>div{padding:10px 11px;border-radius:10px;background:#f7f9fc}.profile-facts small{display:block;color:#8a96a6;font-size:.55rem;text-transform:uppercase;letter-spacing:.055em}.profile-facts strong{display:block;margin-top:3px;overflow-wrap:anywhere;color:var(--ink-strong);font-size:.66rem}.profile-forms{display:grid;gap:16px}

@media(max-width:1320px){.dashboard-stats{grid-template-columns:repeat(2,minmax(0,1fr))}.action-grid{grid-template-columns:repeat(2,minmax(0,1fr))}}
@media(max-width:1050px){
    .backend-sidebar{transform:translateX(-103%);transition:transform .2s ease}.backend-sidebar.open{transform:translateX(0)}
    .backend-main{width:100%;margin-left:0}.menu-button{display:grid}
    .sidebar-backdrop{position:fixed;inset:0;z-index:950;background:rgba(2,8,18,.55);backdrop-filter:blur(2px)}
    body.sidebar-open .sidebar-backdrop{display:block}
    .dashboard-grid-main{grid-template-columns:1fr}
}
@media(max-width:820px){
    .backend-content{padding:16px}.backend-topbar{padding:10px 15px}.topbar-actions .topbar-link:first-child{display:none}.profile-button{min-width:auto;grid-template-columns:36px}.profile-button>span:last-child{display:none}
    .dashboard-hero{padding:23px;align-items:flex-start;flex-direction:column}.hero-actions{width:100%;grid-template-columns:repeat(3,minmax(0,1fr))}.hero-actions .button{justify-content:center}
    .dashboard-grid{grid-template-columns:1fr}.profile-layout{grid-template-columns:1fr}.profile-summary{position:static}.backend-footer{padding:12px 16px;flex-direction:column;gap:3px}
}
@media(max-width:620px){
    .backend-topbar p{display:none}.topbar-school-logo{display:none}.backend-content{padding:12px}.backend-topbar{min-height:66px}.backend-topbar h1{font-size:1rem}
    .dashboard-hero{min-height:unset;padding:20px;border-radius:16px}.hero-copy h2{font-size:1.45rem}.hero-copy>p{font-size:.72rem}.hero-meta{gap:6px}.hero-meta span{font-size:.56rem}
    .hero-actions{grid-template-columns:1fr}.dashboard-stats{grid-template-columns:1fr;gap:10px}.metric-card{min-height:112px}.action-grid{grid-template-columns:1fr}.attendance-overview{grid-template-columns:1fr}.progress-ring{margin:auto}.service-metrics{grid-template-columns:1fr 1fr}.service-metrics>div:last-child{grid-column:1/-1}
    .page-intro{align-items:flex-start;flex-direction:column}.notification-item{grid-template-columns:38px minmax(0,1fr)}.notification-type{width:38px;height:38px}.notification-actions{grid-column:2;justify-content:flex-start;flex-wrap:wrap}.panel{padding:14px}.panel-head{align-items:flex-start}.panel-head>.button{flex-shrink:0}
}
@media(max-width:420px){.profile-button{display:none}.topbar-actions{gap:5px}.backend-topbar{padding-inline:10px}.backend-content{padding:9px}.dashboard-hero{padding:17px}.metric-card{grid-template-columns:40px minmax(0,1fr) auto}.metric-icon{width:40px;height:40px}.service-metrics{grid-template-columns:1fr}.service-metrics>div:last-child{grid-column:auto}}

.backend-topbar .menu-button{display:none}
@media(max-width:1050px){.backend-topbar .menu-button{display:grid}}

/* Unified role dashboard refinements */
.role-dashboard-stats{grid-template-columns:repeat(3,minmax(0,1fr))}
.role-switcher-panel{margin-bottom:16px}
.role-switcher-panel .toolbar{align-items:center;justify-content:space-between;gap:18px}
.role-switcher-panel h2{margin:2px 0 4px;color:var(--ink-strong)}
.role-switcher-panel p{margin:0;color:#7f8b9b;font-size:.66rem}
.role-switcher-panel .search-form{min-width:min(520px,100%)}
.result-score{min-width:54px;text-align:right}
.result-score strong{display:block;color:var(--ink-strong);font-size:.76rem}
.result-score small{display:block;margin-top:2px;color:#8490a0;font-size:.55rem}
.fee-balance-display{min-height:150px;padding:18px;display:grid;place-items:center;align-content:center;text-align:center;border:1px solid #e5eaf1;border-radius:14px;background:linear-gradient(145deg,#fbfcfe,var(--school-tint))}
.fee-balance-display small{color:#7f8b9b;font-size:.61rem;font-weight:900;text-transform:uppercase;letter-spacing:.06em}
.fee-balance-display strong{display:block;margin:8px 0;color:var(--ink-strong);font-size:1.65rem;line-height:1}
.fee-balance-display span{color:#7f8b9b;font-size:.63rem}
.student-summary-card .detail-grid{margin-top:4px}
@media(max-width:1320px){.role-dashboard-stats{grid-template-columns:repeat(2,minmax(0,1fr))}}
@media(max-width:760px){.role-switcher-panel .toolbar{align-items:stretch;flex-direction:column}.role-switcher-panel .search-form{min-width:100%}}
@media(max-width:620px){.role-dashboard-stats{grid-template-columns:1fr}}

/* Student medical report and portal status tones. */
.badge.low,.badge.recovered,.badge.closed{color:var(--green);background:#e9f8f0}
.badge.moderate,.badge.open,.badge.monitoring{color:var(--orange);background:#fff6e8}
.badge.high,.badge.critical,.badge.referred{color:var(--red);background:#fff0ef}
.quick-card{display:block;transition:transform .16s ease,border-color .16s ease,box-shadow .16s ease}
.quick-card:hover{transform:translateY(-3px);border-color:var(--school-border);box-shadow:0 18px 42px rgba(7,27,56,.13)}
.quick-card h2{margin-bottom:7px}.quick-card p{margin:0;font-size:.75rem;line-height:1.55}
@media print{
    .backend-sidebar,.backend-topbar,.backend-footer,.sidebar-backdrop,.hero-actions,.form-actions,.toolbar{display:none!important}
    .backend-main,.main{width:100%!important;margin:0!important}
    .backend-content,.content{max-width:none!important;padding:0!important}
    body{background:#fff!important}
    .panel,.stat{box-shadow:none!important}
}


/* HENLEY RESPONSIVE DEVICE LAYER V13 */
html{-webkit-text-size-adjust:100%;text-size-adjust:100%}
body{min-width:0;overflow-x:hidden}
img,svg,video,canvas{max-width:100%}
.backend-main,.backend-content,.content,.panel,.field,.metric-copy,.compact-copy{min-width:0}
.table-wrap,.table-responsive,.table-container{width:100%;max-width:100%;overflow-x:auto!important;overscroll-behavior-inline:contain;-webkit-overflow-scrolling:touch;scrollbar-width:thin}
.table-wrap table,.table-responsive table,.table-container table{max-width:none}
input,select,textarea,button{max-width:100%}
.academic-period-banner{margin:0 0 18px;padding:15px 17px;display:flex;align-items:center;justify-content:space-between;gap:16px;border:1px solid var(--line);border-left:4px solid var(--green);border-radius:14px;background:#fff;box-shadow:var(--shadow)}
.academic-period-banner.holiday{border-left-color:var(--orange);background:#fffaf0}
.academic-period-banner>div:first-child{min-width:0;display:grid;gap:3px}
.academic-period-banner .eyebrow{color:var(--muted);font-size:.57rem}
.academic-period-banner strong{color:var(--navy);font-size:.92rem}
.academic-period-banner small{color:var(--muted);font-size:.65rem}
.academic-period-countdown{min-width:112px;padding:10px 13px;text-align:center;border-radius:11px;background:#f4f7fb}
.academic-period-countdown strong{display:block;font-size:1.25rem;line-height:1}
.academic-period-countdown span{display:block;margin-top:4px;color:var(--muted);font-size:.56rem;font-weight:850;text-transform:uppercase}
.check-option{padding:12px;display:flex!important;align-items:flex-start;gap:10px;border:1px solid var(--line);border-radius:11px;background:#f8fafc;cursor:pointer}
.check-option input{width:18px!important;height:18px!important;min-height:0!important;margin-top:2px;flex:0 0 auto;accent-color:var(--school-theme)}
.check-option span{display:grid;gap:3px}.check-option strong{color:var(--navy);font-size:.72rem}.check-option small{color:var(--muted);font-size:.64rem;font-weight:500;line-height:1.45}
.current-period-card{margin-bottom:13px;padding:15px;display:grid;grid-template-columns:minmax(0,1fr) auto;align-items:center;gap:14px;border:1px solid #bde4ce;border-radius:13px;background:#effbf4}
.current-period-card.holiday{border-color:#f3d69b;background:#fff8e8}
.current-period-card>div:first-child{display:grid;gap:3px}.current-period-card small{color:var(--muted);font-size:.58rem;text-transform:uppercase;letter-spacing:.05em}.current-period-card strong{color:var(--navy);font-size:.9rem}.current-period-card span{color:var(--muted);font-size:.65rem}.current-period-card>div:last-child{text-align:center}.current-period-card>div:last-child strong{display:block;font-size:1.32rem}.calendar-term-list{display:grid;gap:7px}.calendar-term-list>div{padding:9px 10px;display:grid;grid-template-columns:70px minmax(0,1fr) auto;align-items:center;gap:9px;border-radius:9px;background:#f7f9fc}.calendar-term-list span{color:var(--navy);font-size:.66rem;font-weight:900}.calendar-term-list strong{font-size:.64rem}.calendar-term-list small{color:var(--muted);font-size:.57rem}
@media(max-width:1050px){:root{--sidebar:min(86vw,300px)}.backend-sidebar,.sidebar{width:var(--sidebar);max-width:86vw}.sidebar-account{width:calc(var(--sidebar) - 24px)}.backend-main,.main{width:100%!important;margin-left:0!important}.backend-sidebar:not(.open),body.legacy-unified .backend-sidebar:not(.open){transform:translateX(-105%)}.backend-sidebar.open,body.legacy-unified .backend-sidebar.open{transform:translateX(0)!important}}
@media(max-width:900px){.stats,.dashboard-stats,.role-dashboard-stats,.grid-3,.action-grid{grid-template-columns:repeat(2,minmax(0,1fr))!important}.dashboard-grid,.dashboard-grid-main,.grid-2,.profile-layout{grid-template-columns:1fr!important}.profile-summary{position:static!important}.topbar-heading{min-width:0}.topbar-heading>div{min-width:0}.backend-topbar h1{overflow:hidden;text-overflow:ellipsis;white-space:nowrap}}
@media(max-width:760px){body{font-size:15px}.backend-content,.content{padding:12px!important}.backend-topbar,.topbar{padding:9px 11px!important;gap:8px}.topbar-actions{gap:5px}.topbar-actions .topbar-link:first-child{display:none}.profile-button{min-width:0!important;grid-template-columns:36px!important}.profile-button>span:last-child{display:none!important}.panel{padding:14px!important;border-radius:13px}.panel-head,.toolbar,.page-intro{align-items:stretch!important;flex-direction:column!important}.panel-head>.button,.toolbar>.button,.page-intro>.button{width:100%}.form-grid,.detail-grid,body.legacy-unified .form-grid,body.legacy-unified .form-row{grid-template-columns:1fr!important}.field.full,.form-actions{grid-column:1!important}.form-actions{align-items:stretch!important;flex-direction:column!important}.form-actions>.button,.form-actions>button,.form-actions>a,.form-actions>input[type=submit]{width:100%!important}.search-form{width:100%;min-width:0!important;flex-direction:column}.search-form .button,.search-form button{width:100%}input:not([type=checkbox]):not([type=radio]):not([type=hidden]),select,textarea{font-size:16px!important}.dashboard-hero{padding:18px!important;gap:15px;border-radius:15px}.hero-actions{grid-template-columns:1fr!important}.hero-actions .button{width:100%;justify-content:center!important}.stats,.dashboard-stats,.role-dashboard-stats,.grid-3,.grid-2,.action-grid{grid-template-columns:1fr!important}.stat,.metric-card{min-height:104px}.academic-period-banner{align-items:stretch;flex-direction:column}.academic-period-countdown{width:100%}.current-period-card{grid-template-columns:1fr}.current-period-card>div:last-child{text-align:left}.calendar-term-list>div{grid-template-columns:1fr;gap:2px}.data-table,body.legacy-unified table{min-width:680px!important}.modal-dialog,.modal-content,[role=dialog]{max-width:calc(100vw - 20px)!important;margin:10px!important}.auth-body{padding:10px;align-items:start}.auth-card,.install-shell{width:100%;grid-template-columns:1fr!important;border-radius:15px}.auth-brand,.install-brand{padding:22px!important}.auth-form,.install-card{padding:20px!important;max-height:none!important}.check-grid{grid-template-columns:1fr!important}.backend-footer{padding:12px!important;align-items:flex-start;flex-direction:column}}
@media(max-width:480px){.backend-topbar h1{font-size:.92rem!important}.backend-topbar p,.topbar-school-logo,.profile-button{display:none!important}.icon-button{width:38px;height:38px;min-width:38px}.backend-content,.content{padding:8px!important}.panel{padding:12px!important}.dashboard-hero{padding:15px!important}.hero-copy h2{font-size:1.28rem!important}.hero-meta span{width:100%;justify-content:flex-start}.data-table,body.legacy-unified table{min-width:620px!important}.button{min-height:42px}}
@media(orientation:landscape) and (max-height:560px) and (max-width:1050px){.backend-sidebar{padding-bottom:80px}.sidebar-account{position:sticky;left:auto;bottom:0;width:100%;margin-top:10px}}
@media print{.academic-period-banner{box-shadow:none}}

/* V14 real-time in-app notifications */
.realtime-toast-stack{position:fixed;right:18px;bottom:18px;z-index:2500;width:min(380px,calc(100vw - 28px));display:grid;gap:10px;pointer-events:none}
.realtime-toast{pointer-events:auto;display:grid;grid-template-columns:38px minmax(0,1fr) auto;gap:10px;align-items:start;padding:13px;border:1px solid rgba(148,163,184,.38);border-radius:14px;background:#fff;box-shadow:0 18px 48px rgba(15,23,42,.18);animation:realtimeToastIn .22s ease-out}
.realtime-toast-icon{width:38px;height:38px;border-radius:11px;display:grid;place-items:center;background:#eef3f8;color:var(--navy);font-weight:950}.realtime-toast-copy strong{display:block;margin-bottom:3px;color:var(--ink)}.realtime-toast-copy p{margin:0;color:var(--muted);font-size:.76rem;line-height:1.45}.realtime-toast-copy a{display:inline-flex;margin-top:7px;color:var(--school-deep);font-size:.72rem;font-weight:850;text-decoration:none}.realtime-toast-close{border:0;background:transparent;color:var(--muted);font-size:1.1rem;line-height:1;cursor:pointer;padding:2px}.realtime-toast.is-urgent{border-color:#fecaca;background:#fffafa}.realtime-toast.is-urgent .realtime-toast-icon{background:#fee2e2;color:#b91c1c}
@keyframes realtimeToastIn{from{opacity:0;transform:translateY(12px)}to{opacity:1;transform:translateY(0)}}
@media(max-width:620px){.realtime-toast-stack{right:14px;left:14px;bottom:14px;width:auto}.realtime-toast{grid-template-columns:34px minmax(0,1fr) auto}.realtime-toast-icon{width:34px;height:34px}}

/* V24.5 desktop visibility guard: keep required table fields visible on desktop. */
@media (min-width: 901px) {
  .table-wrap,
  .table-responsive,
  .table-container {
    width: 100% !important;
    max-width: 100% !important;
    overflow-x: auto !important;
    overflow-y: visible !important;
  }
  .table-wrap table,
  .table-responsive table,
  .table-container table {
    width: max-content;
    min-width: 100% !important;
    max-width: none !important;
  }
  .table-wrap table th,
  .table-wrap table td,
  .table-responsive table th,
  .table-responsive table td,
  .table-container table th,
  .table-container table td {
    display: table-cell !important;
    visibility: visible !important;
  }
}

/* V24.6 dual horizontal scrollbars: wide tables show a scrollbar above and below for desktop ease. */
.henley-scroll-top{width:100%;height:17px;overflow-x:auto;overflow-y:hidden;margin:8px 0 6px;border:1px solid var(--line,#dbe4ef);border-radius:10px;background:linear-gradient(180deg,#ffffff,#f8fafc);-webkit-overflow-scrolling:touch;scrollbar-width:thin;overscroll-behavior-inline:contain}
.henley-scroll-top .henley-scroll-spacer{height:1px;min-height:1px}
.henley-scroll-top.is-hidden{display:none!important}
.table-wrap[data-henley-scroll-ready],.table-responsive[data-henley-scroll-ready],.table-container[data-henley-scroll-ready],.students-wide-wrap[data-henley-scroll-ready],.attendance-wide-table[data-henley-scroll-ready],.timetable-table-wrap[data-henley-scroll-ready]{padding-bottom:10px;scrollbar-width:thin;-webkit-overflow-scrolling:touch}
@media print{.henley-scroll-top{display:none!important}}

/* V24.8 scroll restore: keep the normal browser page vertical scroll.
   Wide table top/bottom horizontal scrollbars remain, but the desktop shell is no longer fixed. */
@media (min-width: 901px) {
  html,
  body.backend-body {
    height: auto !important;
    min-height: 100%;
    overflow-y: auto !important;
    overflow-x: hidden;
  }
  .backend-shell,
  .backend-main,
  .backend-content {
    height: auto !important;
    min-height: auto !important;
    overflow: visible !important;
  }
}

/* V25 East Africa Time + Non-Teaching Staff Portal */
.grid-two {
    display: grid;
    grid-template-columns: repeat(2, minmax(0, 1fr));
    gap: 16px;
}
.detail-list {
    display: grid;
    grid-template-columns: 150px minmax(0, 1fr);
    gap: 10px 14px;
    margin: 0;
}
.detail-list.wide { grid-template-columns: 180px minmax(0, 1fr); }
.detail-list dt {
    margin: 0;
    font-size: .72rem;
    font-weight: 900;
    color: var(--muted, #64748b);
    text-transform: uppercase;
    letter-spacing: .05em;
}
.detail-list dd {
    margin: 0;
    color: var(--ink, #0f172a);
    font-weight: 650;
    word-break: break-word;
}
.quick-grid {
    display: grid;
    grid-template-columns: repeat(2, minmax(0, 1fr));
    gap: 12px;
}
.quick-grid.compact { grid-template-columns: repeat(2, minmax(0, 1fr)); }
.quick-card {
    display: grid;
    gap: 6px;
    text-decoration: none;
    color: var(--ink, #0f172a);
    border: 1px solid var(--line, #d8e2ef);
    border-radius: 14px;
    padding: 14px;
    background: #fff;
    min-height: 96px;
}
.quick-card svg { width: 24px; height: 24px; color: var(--school-theme, #0f766e); }
.quick-card strong { font-size: .9rem; }
.quick-card small { color: var(--muted, #64748b); line-height: 1.35; }
.profile-grid {
    display: grid;
    grid-template-columns: 280px minmax(0, 1fr);
    gap: 18px;
    align-items: start;
}
.profile-card {
    border: 1px solid var(--line, #d8e2ef);
    border-radius: 18px;
    background: #fff;
    padding: 20px;
    text-align: center;
    display: grid;
    place-items: center;
    gap: 7px;
}
.account-avatar.large {
    width: 72px;
    height: 72px;
    font-size: 1.6rem;
}
.table-actions {
    display: flex;
    gap: 8px;
    align-items: center;
    flex-wrap: nowrap;
}
.inline-form {
    display: inline-flex;
    margin: 0;
}
.button.small {
    min-height: 34px;
    padding: 7px 10px;
    font-size: .72rem;
}
.field.full,
.form-actions.full { grid-column: 1 / -1; }
@media (max-width: 900px) {
    .grid-two,
    .profile-grid,
    .quick-grid,
    .quick-grid.compact { grid-template-columns: 1fr !important; }
    .detail-list,
    .detail-list.wide { grid-template-columns: 1fr; }
    .detail-list dt { margin-top: 8px; }
    .table-actions { flex-wrap: wrap; }
}

/* V25.3 content-list vertical scrolling: long registers/tables scroll inside the list,
   with a synced vertical scrollbar on the left and the native scrollbar on the right.
   The whole page keeps its normal up/down browser scroll. */
@media (min-width: 901px) {
  .henley-vscroll-shell {
    display: grid;
    grid-template-columns: 18px minmax(0, 1fr);
    column-gap: 7px;
    align-items: start;
    width: 100%;
    max-width: 100%;
  }
  .henley-vscroll-shell > .henley-scroll-top {
    grid-column: 2;
    grid-row: 1;
    width: 100%;
    margin-left: 0;
    margin-right: 0;
  }
  .henley-vscroll-shell > .henley-side-vscroll {
    grid-column: 1;
    grid-row: 2;
    width: 18px;
    max-height: min(65vh, 620px);
    min-height: 280px;
    overflow-y: auto;
    overflow-x: hidden;
    border: 1px solid var(--line, #dbe4ef);
    border-radius: 10px;
    background: linear-gradient(180deg, #ffffff, #f8fafc);
    scrollbar-width: thin;
    -webkit-overflow-scrolling: touch;
    overscroll-behavior: contain;
  }
  .henley-side-vscroll-spacer {
    width: 1px;
    min-height: 1px;
  }
  .henley-vscroll-shell > .henley-large-list-scroll {
    grid-column: 2;
    grid-row: 2;
  }
  .henley-large-list-scroll {
    max-height: min(65vh, 620px);
    min-height: 280px;
    overflow-y: auto !important;
    overflow-x: auto !important;
    overscroll-behavior: contain;
    -webkit-overflow-scrolling: touch;
    scrollbar-width: thin;
  }
  .henley-large-list-scroll table thead th,
  .henley-large-list-scroll .data-table thead th {
    position: sticky;
    top: 0;
    z-index: 5;
    background: #f8fafc;
    box-shadow: 0 1px 0 var(--line, #dbe4ef);
  }
  .henley-vscroll-shell:not(.is-vscroll-active) {
    display: block;
  }
  .henley-vscroll-shell:not(.is-vscroll-active) > .henley-side-vscroll {
    display: none !important;
  }
  .henley-vscroll-shell:not(.is-vscroll-active) > .henley-large-list-scroll {
    max-height: none;
    min-height: 0;
    overflow-y: visible !important;
  }
}
@media (max-width: 900px), print {
  .henley-side-vscroll { display: none !important; }
  .henley-large-list-scroll { max-height: none !important; min-height: 0 !important; overflow-y: visible !important; }
}
