:root{
 --bg:#f6f7fb;--panel:#fff;--text:#202735;--muted:#7a8495;--line:#e7e9ef;
 --brand:#4d5ff5;--brand-dark:#3d4edf;--brand-soft:#eef0ff;--danger:#e05260;--warn:#ad7414;--ok:#1f8b5b;
 --sidebar:#fbfcfe;--shadow:0 8px 28px rgba(31,41,55,.055);--radius:15px
}
*{box-sizing:border-box}html{background:var(--bg)}body{margin:0;font-family:var(--app-font,Tahoma,Arial,sans-serif);background:var(--bg);color:var(--text);font-size:14px}a{color:var(--brand);text-decoration:none}svg{display:block}
.app-shell{display:flex;flex-direction:row;min-height:100vh;direction:ltr}.sidebar{width:236px;flex:0 0 236px;direction:ltr}.main{flex:1 1 auto;min-width:0;direction:ltr}html[dir="rtl"] .app-shell,body.dir-rtl .app-shell{flex-direction:row-reverse}html[dir="rtl"] .sidebar,body.dir-rtl .sidebar{direction:rtl}html[dir="rtl"] .main,body.dir-rtl .main{direction:rtl}
.sidebar{background:var(--sidebar);border-inline-end:1px solid var(--line);height:100vh;position:sticky;top:0;overflow:auto;padding:12px 14px;display:flex;flex-direction:column}.brand-wrap{padding:0 2px 14px}.brand-link{display:flex;align-items:center;gap:10px;color:var(--text);min-height:55px}.brand-mark{display:grid;place-items:center;width:42px;height:42px;border-radius:13px;background:linear-gradient(145deg,#5367ff,#6e78ff);color:#fff;font-weight:800;font-size:20px;box-shadow:0 8px 18px rgba(77,95,245,.2)}.school-logo{width:45px;height:45px;object-fit:contain;border-radius:10px;background:#fff;padding:3px}.brand-copy{display:flex;flex-direction:column;min-width:0}.brand-copy b{font-size:14px}.brand-copy small{font-size:11px;color:var(--muted);white-space:nowrap;overflow:hidden;text-overflow:ellipsis;max-width:150px}
.nav{display:flex;flex-direction:column;gap:2px;flex:1}.nav-section{font-size:10px;text-transform:uppercase;letter-spacing:.07em;color:#a0a7b4;font-weight:700;padding:18px 12px 7px}.nav a{display:flex;align-items:center;gap:11px;color:#50596b;padding:10px 12px;border-radius:11px;font-weight:600;transition:.15s}.nav a:hover{background:#f1f3f8;color:#323a4a}.nav a.active{background:var(--brand-soft);color:var(--brand)}.nav-ico{width:19px;height:19px;display:inline-flex;flex:none}.nav-ico svg{width:19px;height:19px;fill:none;stroke:currentColor;stroke-width:1.7;stroke-linecap:round;stroke-linejoin:round}.sidebar-foot{border-top:1px solid var(--line);padding:12px 10px 4px;display:flex;flex-direction:column;gap:5px;font-size:11px;color:var(--muted)}.sidebar-foot a{font-weight:700}.version-chip{font-size:9px;letter-spacing:.03em;color:#9aa3b2;direction:ltr;text-align:start}html[dir="rtl"] .sidebar,body.dir-rtl .sidebar{border-inline-end:1px solid var(--line)}
.main{min-width:0}.topbar{height:65px;background:rgba(246,247,251,.93);backdrop-filter:blur(10px);padding:9px 22px;display:flex;align-items:center;gap:16px;justify-content:space-between;position:sticky;top:0;z-index:10;border-bottom:1px solid rgba(231,233,239,.8)}.top-search{flex:1;max-width:330px}.top-search form{position:relative}.top-search input{height:43px;padding-inline-start:40px;background:#fff;box-shadow:0 2px 8px rgba(31,41,55,.03)}.search-symbol{position:absolute;inset-inline-start:14px;top:8px;font-size:23px;color:#687385;z-index:1}.top-actions{display:flex;align-items:center;gap:10px;margin-inline-start:auto}.compact-form{margin:0}.compact-form select{width:auto;min-width:112px;height:43px;background:#fff;padding-inline:11px;border-radius:11px}.school-switch select{min-width:225px}.user-chip{display:flex;align-items:center;gap:8px;padding-inline-start:5px}.avatar{width:38px;height:38px;border-radius:50%;display:grid;place-items:center;background:#e95f83;color:white;font-weight:700;font-size:12px}.user-meta{display:flex;flex-direction:column;line-height:1.25;max-width:150px}.user-meta b{font-size:12px;white-space:nowrap;overflow:hidden;text-overflow:ellipsis}.user-meta small{font-size:10px;color:var(--muted)}
.content{padding:22px 24px 45px;max-width:1560px;margin:auto}.page-heading{display:flex;justify-content:space-between;align-items:flex-end;margin-bottom:14px}.page-heading h1{font-size:24px;margin:0;font-weight:750;letter-spacing:-.02em}.page-heading p{margin:4px 0 0;color:var(--muted);font-size:12px}
.card{background:var(--panel);border:1px solid var(--line);border-radius:var(--radius);padding:19px;margin-bottom:18px;box-shadow:var(--shadow)}.cards{display:grid;grid-template-columns:repeat(4,minmax(0,1fr));gap:14px;margin-bottom:18px}.stat{background:#fff;border:1px solid var(--line);padding:17px;border-radius:14px;box-shadow:0 3px 14px rgba(31,41,55,.035)}.stat .n{font-size:27px;font-weight:780;margin-top:7px;letter-spacing:-.03em}.muted{color:var(--muted)}h1{font-size:24px}h2{font-size:17px;margin:0 0 14px;font-weight:750}h3{font-weight:700}.toolbar{display:flex;gap:8px;align-items:center;flex-wrap:wrap;margin-bottom:14px}.toolbar form{display:flex;gap:8px;align-items:center;flex-wrap:wrap}.btn,button{display:inline-flex;align-items:center;justify-content:center;gap:6px;border:0;border-radius:10px;padding:9px 14px;min-height:38px;cursor:pointer;font-family:inherit;font-size:13px;font-weight:650;background:var(--brand);color:#fff;box-shadow:none}.btn:hover,button:hover{background:var(--brand-dark);color:#fff}.btn.secondary{background:#fff;color:#4d5667;border:1px solid #dfe3ea}.btn.secondary:hover{background:#f7f8fa;color:#333}.btn.danger{background:#fff0f1;color:#c33c4a;border:1px solid #ffdadd}.btn.small{padding:6px 9px;min-height:30px;font-size:11px}.add-new{height:43px;padding-inline:15px;font-size:13px}.add-new span{font-size:18px;line-height:1}
input,select,textarea{width:100%;padding:9px 10px;border:1px solid #dfe3ea;border-radius:10px;background:#fff;color:var(--text);font:inherit;outline:none;transition:.15s}input:focus,select:focus,textarea:focus{border-color:#a9b0fb;box-shadow:0 0 0 3px rgba(77,95,245,.08)}textarea{min-height:90px;resize:vertical}.form-grid{display:grid;grid-template-columns:repeat(2,minmax(0,1fr));gap:13px}.form-grid .full{grid-column:1/-1}label{display:block;font-weight:680;margin-bottom:6px;font-size:12px;color:#40495a}.table-wrap{overflow:auto;border-radius:11px;border:1px solid #edf0f4}table{width:100%;border-collapse:separate;border-spacing:0;background:#fff}th,td{padding:11px 12px;border-bottom:1px solid #eff1f5;text-align:start;white-space:nowrap}th{background:#f8f9fb;font-size:11px;color:#6f7889;font-weight:700;position:sticky;top:0;z-index:1}tbody tr:hover td{background:#fbfcff}tr:last-child td{border-bottom:0}.badge{display:inline-flex;align-items:center;padding:4px 8px;border-radius:999px;background:#f0f2f5;color:#667080;font-size:10px;font-weight:700}.badge.ok{background:#e9f8ef;color:var(--ok)}.badge.warn{background:#fff4d9;color:var(--warn)}.badge.danger{background:#fdecee;color:var(--danger)}
.flash{padding:11px 14px;border-radius:10px;margin-bottom:13px;background:#eef2ff;border:1px solid #e1e6ff}.flash.success{background:#ebf8f0;color:#14673f;border-color:#d5efdf}.flash.error{background:#fdecee;color:#a23440;border-color:#f7d8dc}.flash.warning{background:#fff6df;color:#7c570d;border-color:#f5e6b6}.split{display:grid;grid-template-columns:1fr 1fr;gap:18px}.search{max-width:360px}.logo-preview{max-width:100px;max-height:70px}.code{direction:ltr;text-align:left;font-family:ui-monospace,SFMono-Regular,Consolas,monospace}.notice{background:#f4f7ff;border:1px solid #dfe6ff;padding:13px;border-radius:11px;line-height:1.65}.danger-text{color:var(--danger)}.ok-text{color:var(--ok)}.role-chip{display:inline-flex;padding:4px 8px;border-radius:999px;background:#edf0ff;color:#4e5ed5;font-size:10px;margin-inline-end:6px}.readonly-note{background:#fff9e9;border:1px solid #f0e1ad;padding:11px 13px;border-radius:10px;margin-bottom:14px}.permission-grid{display:grid;grid-template-columns:repeat(2,minmax(0,1fr));gap:10px}.permission-item{border:1px solid var(--line);border-radius:11px;padding:12px;background:#fbfcfe}.font-preview{font-size:19px;padding:14px;border:1px dashed #cbd1dc;border-radius:10px;background:#fafbfc;margin-top:8px}
.import-issues{margin-top:5px;white-space:normal;max-width:520px;font-size:11px;color:var(--warn);line-height:1.7}.export-field-groups{display:grid;grid-template-columns:repeat(3,minmax(0,1fr));gap:14px}.export-field-group{border:1px solid var(--line);border-radius:12px;padding:13px;background:#fbfcfe}.export-field-group h3{font-size:14px;margin:0 0 10px}.check-row{display:flex;align-items:center;gap:8px;font-weight:500;padding:5px 0}.check-row input{width:auto;flex:0 0 auto}
/* Login */.login-page{min-height:100vh;background:radial-gradient(circle at 20% 10%,#eef0ff 0,transparent 35%),var(--bg);display:grid;place-items:center;padding:20px}.login-shell{width:min(440px,100%)}.login-card{background:#fff;border:1px solid var(--line);border-radius:20px;padding:27px;box-shadow:0 22px 60px rgba(31,41,55,.09)}.login-brand{display:flex;align-items:center;gap:13px;margin-bottom:18px}.login-brand h1{font-size:20px;margin:0}.login-brand p{font-size:11px;color:var(--muted);margin:4px 0 0}.login-language{display:flex;gap:6px;background:#f4f5f8;padding:4px;border-radius:10px;margin-bottom:20px}.login-language a{flex:1;text-align:center;padding:7px 5px;border-radius:8px;color:#667080;font-size:11px;font-weight:700}.login-language a.active{background:#fff;color:var(--brand);box-shadow:0 2px 7px rgba(31,41,55,.07)}.login-card form label{margin-top:12px}.login-button{width:100%;margin-top:18px;height:43px}
@media(max-width:1150px){.cards{grid-template-columns:repeat(2,1fr)}.sidebar{width:210px;flex-basis:210px}.user-meta{display:none}.school-switch select{min-width:180px}.export-field-groups{grid-template-columns:repeat(2,1fr)}}
@media(max-width:820px){.app-shell,html[dir="rtl"] .app-shell,body.dir-rtl .app-shell{display:block}.sidebar{position:relative;height:auto;border-inline-end:0;border-bottom:1px solid var(--line);padding:9px 12px}.brand-wrap{padding-bottom:7px}.nav{display:grid;grid-template-columns:repeat(2,minmax(0,1fr));gap:4px}.nav-section{grid-column:1/-1;padding-top:9px}.sidebar-foot{display:none}.topbar{position:relative;height:auto;min-height:62px;align-items:stretch;flex-direction:column;padding:10px 12px}.top-search{max-width:none}.top-actions{width:100%;flex-wrap:wrap}.school-switch{flex:1}.school-switch select{width:100%;min-width:150px}.content{padding:14px 12px 35px}.cards,.split,.form-grid{grid-template-columns:1fr}.form-grid .full{grid-column:auto}.export-field-groups{grid-template-columns:1fr}.user-chip{display:none}}
@media(max-width:520px){.cards{grid-template-columns:1fr}.nav{grid-template-columns:1fr 1fr}.top-actions .add-new{order:3;flex:1}.compact-form select{min-width:100px}.page-heading h1{font-size:20px}.card{padding:14px}.toolbar form{width:100%}.toolbar .search{max-width:none;flex:1}}

/* ===== Responsive tablet / iPad / mobile — v1.2.8 ===== */
html{-webkit-text-size-adjust:100%;text-size-adjust:100%}body{min-width:0;overflow-x:hidden}.mobile-menu-toggle,.sidebar-backdrop{display:none}
button,input,select,textarea,a{-webkit-tap-highlight-color:transparent}.btn,button{touch-action:manipulation}.table-wrap{max-width:100%;-webkit-overflow-scrolling:touch;scrollbar-width:thin}.table-wrap table{min-width:max-content}.topbar,.sidebar{padding-top:max(9px,env(safe-area-inset-top))}.content{padding-bottom:max(45px,env(safe-area-inset-bottom))}

@media (max-width:1024px){
  .app-shell,.dir-rtl .app-shell,html[dir="rtl"] .app-shell{display:block!important;min-height:100dvh}
  .sidebar{position:fixed!important;top:0;bottom:0;left:0;right:auto;width:min(84vw,300px)!important;max-width:300px;flex-basis:auto!important;height:100dvh!important;z-index:70;transform:translateX(-105%);transition:transform .24s ease;box-shadow:0 18px 50px rgba(20,28,45,.18);border-inline-end:1px solid var(--line);border-bottom:0!important;padding:12px 14px max(12px,env(safe-area-inset-bottom));overflow-y:auto;overscroll-behavior:contain;background:var(--sidebar);display:flex!important}
  html[dir="rtl"] .sidebar,body.dir-rtl .sidebar{right:0;left:auto;transform:translateX(105%);border-inline-start:1px solid var(--line);border-inline-end:0}
  body.menu-open .sidebar,html[dir="rtl"] body.menu-open .sidebar,body.dir-rtl.menu-open .sidebar{transform:translateX(0)}
  body.menu-open{overflow:hidden;touch-action:none}
  .sidebar-backdrop{display:block;position:fixed;inset:0;background:rgba(18,25,38,.42);backdrop-filter:blur(1px);z-index:65;opacity:0;visibility:hidden;pointer-events:none;transition:opacity .2s ease,visibility .2s ease}
  body.menu-open .sidebar-backdrop{opacity:1;visibility:visible;pointer-events:auto}
  .nav{display:flex!important;grid-template-columns:none!important}.nav-section{padding:17px 12px 7px!important}.sidebar-foot{display:flex!important;margin-top:8px}
  .mobile-menu-toggle{display:inline-flex;flex:0 0 44px;width:44px;height:44px;min-height:44px;padding:0;border:1px solid #dfe3ea;background:#fff;color:var(--text);border-radius:12px;align-items:center;justify-content:center;flex-direction:column;gap:4px;box-shadow:0 2px 8px rgba(31,41,55,.04)}
  .mobile-menu-toggle:hover{background:#f7f8fb;color:var(--text)}.mobile-menu-toggle span{display:block;width:19px;height:2px;border-radius:2px;background:currentColor}
  .main{width:100%;min-width:0}.topbar{position:sticky!important;top:0;z-index:40;height:auto!important;min-height:64px;display:flex!important;flex-wrap:wrap;align-items:center!important;gap:10px!important;padding-inline:max(12px,env(safe-area-inset-left)) max(12px,env(safe-area-inset-right))!important;padding-bottom:10px!important}
  .top-search{order:3;flex:1 0 100%;max-width:none!important}.top-search input{height:44px}.top-actions{order:2;flex:1;min-width:0;width:auto!important;justify-content:flex-end;flex-wrap:nowrap!important;gap:7px!important;margin-inline-start:0!important}.top-actions .add-new{white-space:nowrap}.school-switch{min-width:0;flex:1}.school-switch select{min-width:0!important;width:100%;max-width:250px}.compact-form select{height:44px}.user-chip{display:none!important}
  .content{max-width:none!important;padding:18px 16px max(34px,env(safe-area-inset-bottom))!important}.page-heading{margin-bottom:12px}.page-heading h1{font-size:22px}
  .cards{grid-template-columns:repeat(2,minmax(0,1fr))!important}.split{grid-template-columns:1fr!important;gap:14px!important}.form-grid{grid-template-columns:repeat(2,minmax(0,1fr))!important}.export-field-groups{grid-template-columns:repeat(2,minmax(0,1fr))!important}.permission-grid{grid-template-columns:1fr!important}
  .card{max-width:100%;padding:17px;margin-bottom:14px}.toolbar{gap:7px}.toolbar form{max-width:100%}.toolbar input,.toolbar select{min-width:0}
  .table-wrap{overflow-x:auto!important;overscroll-behavior-inline:contain}.table-wrap table{min-width:680px}.card>table{display:block;max-width:100%;overflow-x:auto;-webkit-overflow-scrolling:touch;white-space:nowrap}.card>table tbody,.card>table thead{width:100%}
  th,td{padding:10px 11px}.btn,button{min-height:42px}.btn.small{min-height:36px;padding:7px 10px}
}

@media (max-width:700px){
  body{font-size:14px}.content{padding:14px 10px max(30px,env(safe-area-inset-bottom))!important}.topbar{padding-inline:10px!important}.mobile-menu-toggle{flex-basis:42px;width:42px;height:42px;min-height:42px}
  .top-actions{gap:5px!important}.top-actions .add-new{font-size:0;width:44px;padding:0;flex:0 0 44px}.top-actions .add-new span{font-size:22px}.compact-form select{font-size:13px;padding-inline:8px}.school-switch select{max-width:190px}.compact-form:not(.school-switch) select{max-width:108px}
  .cards{grid-template-columns:1fr!important;gap:10px!important}.form-grid,.export-field-groups{grid-template-columns:1fr!important}.form-grid .full{grid-column:auto!important}
  .page-heading{align-items:flex-start}.page-heading h1{font-size:20px}.page-heading p{font-size:11px}.card{padding:14px;border-radius:13px}.stat{padding:14px}.stat .n{font-size:24px}
  input,select,textarea{font-size:16px!important;min-height:44px}input[type="checkbox"],input[type="radio"]{min-height:0;width:auto}.check-row input{min-height:0}.login-card{padding:20px 17px}.login-page{padding:12px}.login-language a{padding:9px 4px}.login-button{height:46px}
  .toolbar{align-items:stretch}.toolbar form{width:100%!important}.toolbar form>*{flex:1 1 140px}.toolbar>.btn,.toolbar>button{flex:0 0 auto}.search{max-width:none!important;width:100%}
  .table-wrap{margin-inline:-2px;border-radius:9px}.table-wrap table{min-width:620px}th,td{padding:10px;font-size:12px}.table-wrap:after{content:"↔";position:sticky;inset-inline-end:8px;bottom:6px;float:inline-end;margin-top:-24px;background:rgba(32,39,53,.72);color:#fff;border-radius:999px;padding:2px 7px;font-size:11px;pointer-events:none;opacity:.55}
  .notice,.readonly-note,.flash{font-size:12px}.logo-preview{max-width:82px;max-height:60px}
}

@media (max-width:420px){
  .top-actions .school-switch{flex:1 1 145px}.school-switch select{max-width:none}.compact-form:not(.school-switch){flex:0 0 94px}.compact-form:not(.school-switch) select{width:94px}.page-heading h1{font-size:19px}.brand-copy small{max-width:175px}.sidebar{width:min(90vw,300px)!important}.card{padding:12px}.btn,button{padding-inline:11px}
}

@media (orientation:landscape) and (max-height:520px) and (max-width:1024px){
  .sidebar{padding-top:8px}.brand-wrap{padding-bottom:5px}.nav-section{padding-top:10px!important}.nav a{padding-block:8px}.sidebar-foot{padding-top:7px}.topbar{position:relative!important}
}

@media (prefers-reduced-motion:reduce){.sidebar,.sidebar-backdrop{transition:none!important}}

/* ===== Teacher ↔ class assignment — v1.3.0 ===== */
.teacher-class-grid{display:grid;grid-template-columns:repeat(2,minmax(0,1fr));gap:8px}.teacher-class-item{display:flex;align-items:flex-start;gap:9px;border:1px solid var(--line);border-radius:10px;padding:10px;background:#fbfcfe;margin:0;cursor:pointer}.teacher-class-item:hover{border-color:#cfd5ff;background:#f8f9ff}.teacher-class-item input{width:auto;min-height:0;margin-top:3px;flex:0 0 auto}.teacher-class-item span{display:flex;flex-direction:column;min-width:0}.teacher-class-item b{font-size:12px}.teacher-class-item small{font-size:10px;color:var(--muted);margin-top:2px;line-height:1.45}
@media(max-width:700px){.teacher-class-grid{grid-template-columns:1fr}.teacher-class-item{padding:10px}}
/* V1.4.0 tenant/domain mode */
.tenant-school-chip{display:inline-flex;align-items:center;min-height:38px;padding:7px 12px;border:1px solid var(--line,#dfe6e3);border-radius:10px;background:#fff;font-weight:700;font-size:12px;white-space:nowrap}
@media(max-width:700px){.tenant-school-chip{max-width:160px;overflow:hidden;text-overflow:ellipsis}}

/* ===== V1.5.0 Teacher workspace ===== */
.teacher-page-intro,.lesson-plan-banner,.teacher-welcome{display:flex;justify-content:space-between;align-items:center;gap:18px;background:linear-gradient(135deg,#eef4ff,#f8fbff);border:1px solid #dfe8f7;border-radius:18px;padding:20px;margin-bottom:16px}.teacher-page-intro h2,.lesson-plan-banner h2,.teacher-welcome h2{margin:0 0 5px}.teacher-page-intro p,.lesson-plan-banner p,.teacher-welcome p{margin:0;color:var(--muted);max-width:760px}.teacher-kicker{display:inline-block;color:var(--brand);font-weight:800;font-size:11px;margin-bottom:4px}.teacher-quick-actions{display:flex;gap:8px;flex-wrap:wrap}.stat-link{text-decoration:none;color:inherit;transition:.18s transform,.18s box-shadow}.stat-link:hover{transform:translateY(-2px);box-shadow:0 10px 24px rgba(31,41,55,.08)}.teacher-dashboard-grid{align-items:start}.teacher-class-cards,.task-list,.report-list,.message-list,.mini-task-list{display:grid;gap:10px}.teacher-class-card,.task-card,.report-card,.message-card{border:1px solid var(--line);background:#fff;border-radius:13px;padding:13px}.teacher-class-card{display:grid;grid-template-columns:1fr auto auto;align-items:center;gap:12px}.teacher-class-card>div:first-child{display:flex;flex-direction:column}.teacher-class-card span,.teacher-class-meta{font-size:11px;color:var(--muted)}.teacher-class-meta{display:flex;gap:10px;flex-wrap:wrap}.mini-task-list a{display:flex;flex-direction:column;border:1px solid var(--line);border-radius:10px;padding:10px;text-decoration:none;color:inherit}.mini-task-list span{font-size:11px;color:var(--muted);margin-top:3px}.teacher-workflow .workflow-steps{display:grid;grid-template-columns:repeat(4,1fr);gap:10px}.workflow-steps div{display:flex;align-items:center;gap:9px;border:1px solid var(--line);border-radius:11px;padding:11px}.workflow-steps span{width:28px;height:28px;border-radius:50%;background:var(--brand);color:#fff;display:inline-flex;align-items:center;justify-content:center;font-weight:800;flex:0 0 28px}.task-card{display:grid;grid-template-columns:1fr minmax(260px,420px);gap:15px;border-inline-start:4px solid #94a3b8}.task-card.priority-high{border-inline-start-color:#ef4444}.task-card.priority-low{border-inline-start-color:#22c55e}.task-title{display:flex;gap:8px;align-items:center;flex-wrap:wrap}.task-main p{margin-bottom:0}.task-status-form{display:grid;grid-template-columns:140px 1fr auto;gap:7px;align-items:center}.teacher-control-bar{padding:13px}.attendance-list{display:grid;gap:7px;margin-bottom:14px}.attendance-row{display:grid;grid-template-columns:minmax(180px,1.1fr) minmax(360px,1.5fr) minmax(160px,1fr);gap:10px;align-items:center;border:1px solid var(--line);border-radius:11px;padding:10px;background:#fbfcfe}.attendance-student{display:flex;flex-direction:column}.attendance-student small{color:var(--muted)}.attendance-status{display:flex;gap:9px;flex-wrap:wrap}.attendance-status label{font-size:12px;display:flex;align-items:center;gap:4px}.attendance-status input{width:auto;min-height:0}.lesson-segments-head{display:flex;justify-content:space-between;align-items:center;margin:18px 0 10px}.lesson-segment{border:1px solid #dce4ef;border-radius:14px;padding:14px;margin-bottom:10px;background:#fbfdff}.segment-top{display:flex;justify-content:space-between;align-items:center;margin-bottom:9px}.remove-segment{width:32px;height:32px;min-height:32px;border-radius:9px;background:#fff0f0;color:#c24141;border:1px solid #f5caca;padding:0;font-size:20px}.lesson-actions{margin-top:14px}.success-btn{background:#1f9d63}.review-inline{margin-top:9px;display:grid;grid-template-columns:1fr auto auto;gap:6px;align-items:end}.review-inline textarea{min-height:60px}.report-card.urgent{border-inline-start:4px solid #ef4444}.report-head{display:flex;justify-content:space-between;gap:10px;align-items:flex-start}.admin-reply,.parent-contact{background:#f4f7fb;border-radius:9px;padding:9px 11px;margin-top:9px;font-size:12px}.row-actions{display:flex;gap:5px;flex-wrap:wrap}.empty-state{text-align:center;padding:24px;color:var(--muted)}
@media(max-width:1024px){.teacher-workflow .workflow-steps{grid-template-columns:repeat(2,1fr)}.teacher-class-card{grid-template-columns:1fr auto}.teacher-class-card .row-actions{grid-column:1/-1}.task-card{grid-template-columns:1fr}.attendance-row{grid-template-columns:1fr}.task-status-form{grid-template-columns:1fr 1fr auto}}
@media(max-width:700px){.teacher-page-intro,.lesson-plan-banner,.teacher-welcome{align-items:flex-start;flex-direction:column;padding:15px}.teacher-quick-actions{width:100%}.teacher-quick-actions .btn{flex:1}.teacher-workflow .workflow-steps{grid-template-columns:1fr}.teacher-class-card{grid-template-columns:1fr}.attendance-status{display:grid;grid-template-columns:repeat(2,1fr)}.task-status-form,.review-inline{grid-template-columns:1fr}.lesson-segments-head{align-items:flex-start;gap:8px;flex-direction:column}.lesson-segments-head .btn{width:100%}.report-head{flex-direction:column}.message-card,.report-card,.task-card{padding:11px}}

/* ===== V1.5.1 Attention center, smart boards & touch polish ===== */
.warning-btn{background:#fff7e6!important;color:#a66300!important;border:1px solid #f6d7a6!important}.warning-btn:hover{background:#ffefcf!important;color:#8a5300!important}
.board-mode-toggle{width:43px;height:43px;min-height:43px;padding:0;background:#fff;color:#4d5667;border:1px solid #dfe3ea;border-radius:11px;font-size:19px}.board-mode-toggle:hover,.board-mode-toggle.active{background:var(--brand-soft);color:var(--brand);border-color:#cfd5ff}
.attention-center{position:relative}.attention-center summary{list-style:none;width:43px;height:43px;border:1px solid #dfe3ea;background:#fff;border-radius:11px;display:grid;place-items:center;cursor:pointer;position:relative}.attention-center summary::-webkit-details-marker{display:none}.attention-bell{font-size:18px;line-height:1}.attention-badge{position:absolute;inset-inline-end:-6px;top:-6px;min-width:21px;height:21px;padding:0 5px;border-radius:999px;background:#e23c48;color:#fff;display:grid;place-items:center;font-size:10px;font-weight:800;border:2px solid var(--bg)}.attention-center.has-alert summary{border-color:#ffc3c8;background:#fff1f2;color:#b42330;box-shadow:0 0 0 4px rgba(224,82,96,.08)}.attention-center.has-alert .attention-bell{animation:attention-ring 2.5s ease-in-out infinite}.attention-popover{position:absolute;top:51px;inset-inline-end:0;width:min(360px,88vw);background:#fff;border:1px solid var(--line);border-radius:14px;box-shadow:0 18px 44px rgba(31,41,55,.15);padding:9px;z-index:80}.attention-title{font-weight:800;padding:8px 9px 10px;border-bottom:1px solid var(--line)}.attention-empty{padding:18px 10px;color:var(--muted);text-align:center;font-size:12px}.attention-item{display:flex;align-items:center;justify-content:space-between;gap:10px;padding:11px 10px;border-radius:10px;color:var(--text);margin-top:5px;background:#f8fafc}.attention-item:hover{background:#f1f5f9;color:var(--text)}.attention-item b{min-width:27px;height:27px;border-radius:999px;background:#e8edf5;display:grid;place-items:center}.attention-item.urgent{background:#fff1f2;border:1px solid #ffd8dc}.attention-item.urgent b{background:#e23c48;color:#fff}
@keyframes attention-ring{0%,78%,100%{transform:rotate(0)}82%{transform:rotate(12deg)}86%{transform:rotate(-10deg)}90%{transform:rotate(7deg)}94%{transform:rotate(-4deg)}}
.admin-attention-banner{display:flex;align-items:center;gap:13px;background:linear-gradient(135deg,#fff1f2,#fff8ed);border:1px solid #ffc9ce;border-inline-start:5px solid #e23c48;border-radius:14px;padding:14px 16px;margin-bottom:16px;box-shadow:0 6px 20px rgba(226,60,72,.08)}.admin-attention-banner .attention-icon{width:38px;height:38px;border-radius:50%;display:grid;place-items:center;background:#e23c48;color:#fff;font-weight:900;font-size:21px;flex:0 0 38px}.admin-attention-banner b{font-size:15px}.admin-attention-banner p{margin:3px 0 0;color:#7b4650;font-size:12px}.admin-attention-banner .attention-total{margin-inline-start:auto;min-width:39px;height:39px;border-radius:999px;background:#fff;color:#c12e3b;border:1px solid #ffc3c8;display:grid;place-items:center;font-size:17px;font-weight:900}.attention-card{border-color:#ffd4d7;box-shadow:0 8px 28px rgba(226,60,72,.07)}.attention-stat{border-color:#ffc9ce!important;background:linear-gradient(180deg,#fff,#fff7f7)!important}.attention-stat .n{color:#c52e3b}.pdf-btn{background:#b42318!important;color:#fff!important;border-color:#b42318!important}

/* Touch-friendly attendance controls on tablets, iPads and smart boards. */
.attendance-status label{padding:8px 10px;border:1px solid #dfe3ea;border-radius:10px;background:#fff;cursor:pointer;user-select:none;min-height:39px}.attendance-status label:has(input:checked){border-color:#8995ff;background:#eef0ff;color:#3544c7;box-shadow:0 0 0 2px rgba(77,95,245,.08)}.attendance-status input{accent-color:var(--brand);transform:scale(1.08)}

/* Smart board mode: automatically enabled on coarse-pointer large screens, and manually toggled from the top bar. */
body.board-mode{font-size:16px}body.board-mode .sidebar{width:286px;flex-basis:286px;padding:16px 17px}body.board-mode .brand-link{min-height:66px}body.board-mode .school-logo{width:54px;height:54px}body.board-mode .brand-mark{width:50px;height:50px}body.board-mode .brand-copy b{font-size:16px}body.board-mode .nav a{min-height:50px;padding:12px 14px;font-size:15px;border-radius:13px}body.board-mode .nav-ico,body.board-mode .nav-ico svg{width:23px;height:23px}body.board-mode .nav-section{font-size:11px;padding-top:21px}body.board-mode .topbar{height:78px;padding:12px 26px}body.board-mode .top-search{max-width:440px}body.board-mode .top-search input,body.board-mode .compact-form select{height:52px;font-size:15px}body.board-mode .btn,body.board-mode button{min-height:48px;font-size:15px;padding:11px 17px}body.board-mode .board-mode-toggle,body.board-mode .attention-center summary{width:50px;height:50px;min-height:50px}body.board-mode .content{max-width:1800px;padding:28px 30px 55px}body.board-mode .page-heading h1{font-size:29px}body.board-mode .card{padding:23px;border-radius:18px}body.board-mode .stat{padding:21px}body.board-mode .stat .n{font-size:33px}body.board-mode input,body.board-mode select,body.board-mode textarea{font-size:16px;min-height:50px;padding:11px 13px}body.board-mode textarea{min-height:112px}body.board-mode th,body.board-mode td{padding:14px 15px;font-size:14px}body.board-mode th{font-size:12px}body.board-mode .attendance-row{grid-template-columns:minmax(230px,1fr) minmax(540px,1.8fr) minmax(220px,1fr);padding:15px;gap:14px;border-radius:14px}body.board-mode .attendance-student b{font-size:17px}body.board-mode .attendance-student small{font-size:12px}body.board-mode .attendance-status{gap:10px}body.board-mode .attendance-status label{min-height:50px;padding:11px 15px;font-size:15px;justify-content:center;min-width:112px}body.board-mode .attendance-status input{transform:scale(1.25)}body.board-mode .teacher-class-card,body.board-mode .task-card,body.board-mode .report-card,body.board-mode .message-card{padding:17px;border-radius:16px}body.board-mode .lesson-segment{padding:18px}
@media (pointer:coarse) and (min-width:1100px){.btn,button{min-height:46px}.nav a{min-height:46px}.attendance-status label{min-height:47px;padding:10px 13px}.attendance-status input{transform:scale(1.2)}input,select{min-height:47px}}
@media(max-width:1024px){.board-mode-toggle{display:none}.attention-center summary{width:42px;height:42px}.attention-popover{position:fixed;top:64px;inset-inline:12px;width:auto}.admin-attention-banner{padding:12px}.admin-attention-banner p{font-size:11px}}
@media(max-width:700px){.attention-center{order:-1}.attention-center summary{width:40px;height:40px}.attention-badge{top:-5px;inset-inline-end:-4px}.admin-attention-banner{align-items:flex-start}.admin-attention-banner .attention-total{min-width:34px;height:34px}.attendance-status label{justify-content:center;min-height:45px}}

/* V1.5.2 — returned parent message editing */
.message-card.message-needs-edit{border:1px solid rgba(220,53,69,.28);background:linear-gradient(180deg,rgba(255,248,249,.95),#fff)}
.message-card.message-needs-edit .admin-reply{border-inline-start:4px solid #dc3545}

/* ===== V1.6.0 Executive finance, parent portal & analytics ===== */
.dashboard-kpis .stat{position:relative;overflow:hidden}.dashboard-kpis .stat:after{content:"";position:absolute;width:78px;height:78px;border-radius:50%;inset-inline-end:-24px;top:-24px;background:currentColor;opacity:.045}.stat-blue{border-color:#cfdcff}.stat-violet{border-color:#ddd2ff}.stat-green{border-color:#c9eed2}.stat-orange{border-color:#f4d5a7}.stat small{display:block;color:var(--muted);margin-top:7px;font-size:11px}
.analytics-grid{display:grid;grid-template-columns:1fr 1fr;gap:16px;margin-bottom:16px}.analytics-card{min-width:0}.chart-title{display:flex;align-items:flex-start;justify-content:space-between;gap:12px;margin-bottom:16px}.chart-title h2{margin:0 0 3px}.chart-title p{margin:0}.hbar-chart{display:grid;gap:12px}.hbar-row{display:grid;grid-template-columns:minmax(90px,150px) 1fr 36px;gap:10px;align-items:center}.hbar-track,.progress{height:11px;background:#eef1f6;border-radius:999px;overflow:hidden}.hbar-track i,.progress i{display:block;height:100%;border-radius:999px;background:linear-gradient(90deg,#6074f7,#4661e8)}.hbar-row b{text-align:end}.occupancy-list{display:grid;gap:13px}.occupancy-item{display:grid;grid-template-columns:minmax(110px,190px) 1fr 44px;gap:11px;align-items:center}.occupancy-item>div:first-child{display:flex;flex-direction:column}.occupancy-item span{color:var(--muted);font-size:11px}.occupancy-item strong{text-align:end}.finance-bars{display:grid;gap:16px}.finance-bars>div{display:grid;grid-template-columns:150px 120px 1fr;gap:12px;align-items:center}.finance-bars b{font-size:15px}.progress.green i{background:#49a65c}.progress.orange i{background:#e6a23c}.progress.red i{background:#dc5a5a}.overdue-dashboard-number{font-size:54px;font-weight:900;color:#d94d57;line-height:1;margin:22px 0 12px}.attendance-trend{display:grid;gap:12px}.attendance-day{display:grid;grid-template-columns:115px 1fr minmax(180px,auto);gap:12px;align-items:center}.attendance-day small{color:var(--muted)}.stacked-bar{display:flex;height:13px;border-radius:999px;overflow:hidden;background:#eef1f6}.stacked-bar i{height:100%}.stacked-bar .present{background:#4da35b}.stacked-bar .late{background:#e7a437}.stacked-bar .absent{background:#dc5a5a}
.overdue-summary .n-date{font-size:24px}.overdue-money{border-color:#f0c7c9}.overdue-count{border-color:#f1d1b3}.overdue-toolbar form{display:flex;gap:8px;flex-wrap:wrap;width:100%}.overdue-toolbar .search{flex:1;min-width:220px}.overdue-table .urgent-row{background:#fff9f9}.overdue-actions{display:flex;gap:6px;align-items:center;flex-wrap:wrap}.inline-action{position:relative}.inline-action summary{cursor:pointer;list-style:none;border:1px solid #dfe3ea;border-radius:8px;padding:7px 10px;background:#fff;font-weight:700;color:#555}.inline-action summary::-webkit-details-marker{display:none}.inline-action[open] form{position:absolute;z-index:30;inset-inline-end:0;top:36px;width:260px;padding:10px;background:#fff;border:1px solid var(--line);border-radius:11px;box-shadow:0 12px 32px rgba(31,41,55,.15);display:grid;gap:7px}.inline-action input{min-width:0}
.parent-portal{background:#f4f6fb;min-height:100vh}.parent-shell{min-height:100vh}.parent-topbar{height:74px;background:#fff;border-bottom:1px solid var(--line);display:flex;align-items:center;justify-content:space-between;padding:10px clamp(16px,4vw,55px);position:sticky;top:0;z-index:20}.parent-brand{display:flex;align-items:center;gap:11px}.parent-brand div{display:flex;flex-direction:column}.parent-brand small{color:var(--muted)}.parent-top-actions{display:flex;align-items:center;gap:8px}.parent-top-actions select{min-width:120px}.parent-content{max-width:1250px;margin:0 auto;padding:28px 18px 60px}.parent-welcome{margin-bottom:18px}.parent-welcome h1{margin:0}.parent-welcome p{color:var(--muted)}.parent-login-card{width:min(520px,calc(100% - 30px));margin:7vh auto;background:#fff;border:1px solid var(--line);border-radius:20px;padding:28px;box-shadow:0 18px 50px rgba(31,41,55,.08)}.parent-login-card form{display:grid;gap:8px}.parent-login-card label{margin-top:7px}.parent-login-card input{height:48px}.parent-grid{display:grid;grid-template-columns:1fr 1fr;gap:16px}.parent-child{display:flex;justify-content:space-between;gap:12px;padding:12px 0;border-bottom:1px solid var(--line)}.parent-child:last-child{border-bottom:0}.parent-child span{display:flex;gap:8px;align-items:center;color:var(--muted)}.portal-list{display:grid;gap:8px}.portal-list>div{display:flex;align-items:center;gap:12px;padding:10px 12px;background:#f8fafc;border-radius:10px}.portal-list>div span{color:var(--muted);margin-inline-start:auto}.parent-password-card{border-color:#f2d49d}.parent-stats .stat.attention-stat{background:#fff7f7}
@media(max-width:1000px){.analytics-grid,.parent-grid{grid-template-columns:1fr}.attendance-day{grid-template-columns:100px 1fr}.attendance-day small{grid-column:1/-1}.finance-bars>div{grid-template-columns:130px 1fr}.finance-bars .progress{grid-column:1/-1}.inline-action[open] form{position:fixed;left:14px;right:14px;top:25%;width:auto}.parent-child{flex-direction:column}.parent-child span{flex-wrap:wrap}}
@media(max-width:620px){.hbar-row{grid-template-columns:90px 1fr 32px}.occupancy-item{grid-template-columns:100px 1fr 40px}.parent-topbar{height:auto;align-items:flex-start;gap:10px;flex-direction:column}.parent-top-actions{width:100%;flex-wrap:wrap}.parent-top-actions select{flex:1}.parent-content{padding:18px 12px 45px}.parent-login-card{padding:18px;margin-top:3vh}.portal-list>div{align-items:flex-start;flex-direction:column}.portal-list>div span{margin-inline-start:0}.attendance-day{grid-template-columns:1fr}.attendance-day small{grid-column:auto}}

/* ===== V1.6.1 Registration repair & amount privacy ===== */
.money-privacy-toggle{height:43px;min-height:43px;padding:0 11px;background:#fff!important;color:#4d5667!important;border:1px solid #dfe3ea!important;border-radius:11px;box-shadow:none!important;gap:7px}
.money-privacy-toggle:hover{background:#f7f8fa!important;color:#333!important}.money-privacy-toggle.active{border-color:#a9b0fb!important;background:#eef0ff!important;color:#3544c7!important}.money-eye{font-size:16px;line-height:1}.money-toggle-label{font-size:11px;white-space:nowrap}
.money-value{display:inline-block;vertical-align:baseline;min-width:1.4em}.money-hidden .money-value{font-size:0!important;line-height:1!important;min-width:4.2em}.money-hidden .money-value::after{content:"••••";font-size:14px;letter-spacing:.16em;color:currentColor;opacity:.72;vertical-align:baseline}
.money-hidden input[name*="amount"],.money-hidden input[name="monthly_amount"],.money-hidden input[name*="total"]{filter:blur(5px);transition:filter .15s}.money-hidden input[name*="amount"]:focus,.money-hidden input[name="monthly_amount"]:focus,.money-hidden input[name*="total"]:focus{filter:none}
body.board-mode .money-privacy-toggle{height:50px;min-height:50px;font-size:14px}.board-mode .money-hidden .money-value::after{font-size:17px}
@media(max-width:1024px){.money-toggle-label{display:none}.money-privacy-toggle{width:42px;padding:0}.money-privacy-toggle .money-eye{font-size:18px}}



/* V1.7.0 — student sorting + teaching day / smart-classroom start */
.student-filter-card{padding:16px}.student-filter-form{display:grid;grid-template-columns:minmax(220px,1.5fr) repeat(4,minmax(140px,.8fr)) auto;gap:10px;align-items:end}.student-filter-form label{font-size:11px}.student-filter-actions{display:flex;gap:7px}.student-filter-summary{margin-top:10px;color:var(--muted);font-size:12px}.student-filter-summary b{color:var(--text);font-size:16px}
.teaching-days-picker{display:flex;gap:8px;flex-wrap:wrap;margin:7px 0}.teaching-days-picker label{display:flex;align-items:center;gap:6px;border:1px solid var(--line);background:#fbfcfe;padding:9px 12px;border-radius:11px;cursor:pointer}.teaching-days-picker input{width:auto;min-height:0}
.teaching-day-btn{background:linear-gradient(135deg,#645df6,#8b5cf6)}.teaching-day-hero{display:flex;justify-content:space-between;align-items:center;gap:20px;border-radius:24px;padding:26px 30px;margin-bottom:18px;color:#fff;background:linear-gradient(135deg,#4f46e5,#7c3aed 58%,#a855f7);box-shadow:0 18px 45px rgba(79,70,229,.18)}.teaching-day-greeting span{font-size:13px;font-weight:800;opacity:.9}.teaching-day-greeting h2{font-size:30px;margin:5px 0}.teaching-day-greeting p{margin:0;max-width:760px;opacity:.92}.teaching-day-date{min-width:150px;text-align:center;background:rgba(255,255,255,.15);border:1px solid rgba(255,255,255,.25);padding:15px 18px;border-radius:18px;backdrop-filter:blur(6px)}.teaching-day-date b{display:block;font-size:22px}.teaching-day-date span{display:block;margin-top:4px;opacity:.9}
.teaching-class-tabs{display:flex;gap:8px;flex-wrap:wrap;margin-bottom:14px}.teaching-class-tabs a{display:flex;flex-direction:column;text-decoration:none;color:var(--text);border:1px solid var(--line);background:#fff;border-radius:14px;padding:11px 18px;min-width:130px}.teaching-class-tabs a.active{border-color:var(--brand);background:var(--brand-soft);color:var(--brand)}.teaching-class-tabs small{color:var(--muted);margin-top:2px}
.teaching-day-headline{display:flex;justify-content:space-between;align-items:end;gap:18px;margin:8px 0 13px}.teaching-day-headline>div:first-child span{color:var(--muted);font-size:11px}.teaching-day-headline h2{font-size:28px;margin:1px 0}.rollcall-summary{display:flex;gap:8px;flex-wrap:wrap}.rollcall-summary span{display:flex;align-items:center;gap:7px;border-radius:999px;padding:8px 13px;font-size:12px;font-weight:700}.rollcall-summary b{font-size:17px}.rollcall-summary .present{background:#eaf8ef;color:#19713d}.rollcall-summary .absent{background:#fff0f0;color:#bb3232}.rollcall-summary .late{background:#fff7e6;color:#a36600}.rollcall-summary .excused{background:#eef4ff;color:#315ea8}
.teaching-attendance-card{padding:20px}.teaching-attendance-title{display:flex;justify-content:space-between;align-items:center;gap:14px;margin-bottom:15px}.teaching-attendance-title h2{margin:0 0 3px}.teaching-attendance-title p{margin:0;color:var(--muted);font-size:12px}.rollcall-grid{display:grid;grid-template-columns:repeat(2,minmax(0,1fr));gap:11px}.rollcall-card{border:2px solid #e7eaf0;border-radius:17px;padding:14px;background:#fff;transition:.15s box-shadow,.15s border-color}.rollcall-card[data-status=present]{border-color:#bfe8ce;background:#fbfffc}.rollcall-card[data-status=absent]{border-color:#f1b8b8;background:#fffafa}.rollcall-card[data-status=late]{border-color:#f3d39a;background:#fffdfa}.rollcall-card[data-status=excused]{border-color:#bfd0ef;background:#fbfdff}.rollcall-student{display:flex;justify-content:space-between;gap:8px;align-items:center;margin-bottom:10px}.rollcall-student b{font-size:16px}.rollcall-student small{color:var(--muted)}.rollcall-options{display:grid;grid-template-columns:repeat(4,1fr);gap:6px}.rollcall-options label{cursor:pointer}.rollcall-options input{position:absolute;opacity:0;pointer-events:none}.rollcall-options span{display:flex;align-items:center;justify-content:center;min-height:46px;border:1px solid var(--line);border-radius:11px;font-weight:750;font-size:13px;background:#f8fafc;transition:.12s}.rollcall-options input:checked+span{box-shadow:inset 0 0 0 2px currentColor}.rollcall-options .status-present input:checked+span{background:#def5e6;color:#16713a;border-color:#8fd4aa}.rollcall-options .status-absent input:checked+span{background:#fee2e2;color:#b91c1c;border-color:#f3a7a7}.rollcall-options .status-late input:checked+span{background:#fff1c9;color:#945d00;border-color:#edc363}.rollcall-options .status-excused input:checked+span{background:#e5efff;color:#2b5fac;border-color:#a9c0ea}.rollcall-note{margin-top:9px!important;min-height:42px!important}.teaching-session-notes{margin-top:14px}.teaching-save-bar{display:flex;justify-content:space-between;align-items:center;gap:12px;position:sticky;bottom:10px;margin-top:15px;padding:11px;background:rgba(255,255,255,.94);border:1px solid var(--line);border-radius:14px;backdrop-filter:blur(8px);z-index:4}.teaching-save-btn,.teaching-start-btn{font-size:16px!important;min-height:52px!important;padding-inline:24px!important}.lesson-start-card{display:flex;justify-content:space-between;align-items:center;gap:18px;margin-top:15px}.lesson-start-card h2{margin:7px 0 4px}.lesson-start-card p{margin:0}
.today-attendance-admin{margin-top:16px}.today-attendance-grid{display:grid;grid-template-columns:repeat(2,minmax(0,1fr));gap:10px}.today-attendance-class{display:flex;justify-content:space-between;gap:12px;border:1px solid var(--line);border-radius:13px;padding:13px}.today-attendance-class>div:first-child{display:flex;flex-direction:column}.today-attendance-class>div:first-child span{font-size:11px;color:var(--muted);margin-top:3px}.today-attendance-counts{display:flex;gap:6px;flex-wrap:wrap;justify-content:flex-end}.today-attendance-counts span{border-radius:999px;padding:6px 9px;font-size:11px}.today-attendance-counts .present{background:#eaf8ef;color:#19713d}.today-attendance-counts .absent{background:#fff0f0;color:#bb3232}.today-attendance-counts .late{background:#fff7e6;color:#a36600}.today-attendance-counts .excused{background:#eef4ff;color:#315ea8}
body.board-mode .teaching-day-hero{padding:32px 38px;border-radius:28px}body.board-mode .teaching-day-greeting h2{font-size:38px}body.board-mode .teaching-day-greeting p{font-size:18px}body.board-mode .rollcall-grid{grid-template-columns:repeat(2,minmax(0,1fr));gap:16px}body.board-mode .rollcall-card{padding:20px;border-radius:20px}body.board-mode .rollcall-student b{font-size:21px}body.board-mode .rollcall-options span{min-height:64px;font-size:17px;border-radius:14px}body.board-mode .rollcall-note{font-size:15px!important}body.board-mode .rollcall-summary span{padding:11px 17px;font-size:15px}body.board-mode .rollcall-summary b{font-size:22px}
@media(max-width:1250px){.student-filter-form{grid-template-columns:repeat(3,minmax(0,1fr))}.student-filter-actions{align-self:end}.rollcall-grid{grid-template-columns:1fr}.today-attendance-grid{grid-template-columns:1fr}}
@media(max-width:760px){.student-filter-form{grid-template-columns:1fr 1fr}.student-filter-actions{grid-column:1/-1}.teaching-day-hero,.teaching-day-headline,.teaching-attendance-title,.lesson-start-card{align-items:flex-start;flex-direction:column}.teaching-day-date{width:100%}.rollcall-summary{width:100%}.rollcall-options{grid-template-columns:repeat(2,1fr)}.teaching-save-bar{align-items:stretch;flex-direction:column}.teaching-save-btn{width:100%}.lesson-start-card .row-actions{width:100%}.lesson-start-card .row-actions .btn{flex:1}.today-attendance-class{flex-direction:column}.today-attendance-counts{justify-content:flex-start}}
@media(max-width:480px){.student-filter-form{grid-template-columns:1fr}.student-filter-actions{grid-column:auto;flex-direction:column}.student-filter-actions .btn,.student-filter-actions button{width:100%}.rollcall-options{grid-template-columns:1fr 1fr}.teaching-day-greeting h2{font-size:25px}}


/* V1.7.1 PWA + Classroom mode */
.pwa-install-toggle{display:inline-flex;align-items:center;justify-content:center;min-width:46px;height:46px;border:1px solid #b9d7ca;background:#eef7f2;color:#1d5f4b!important;border-radius:14px;cursor:pointer;font-size:21px;font-weight:900;box-shadow:0 4px 12px rgba(29,95,75,.10);transition:.15s background,.15s border-color,.15s transform}.pwa-install-toggle:hover,.pwa-install-toggle:focus{background:#dff0e8;border-color:#85bda8;transform:translateY(-1px);outline:3px solid rgba(52,132,102,.13)}.pwa-install-icon{display:block;line-height:1;font-family:Arial,sans-serif;font-weight:900;color:inherit}
.classroom-session .sidebar,.classroom-session .topbar{display:none!important}.classroom-session .main{margin:0!important;width:100%!important;min-width:0}.classroom-session .content{max-width:1800px;margin:0 auto;padding:24px 34px 50px}.classroom-session .page-heading{display:none}.classroom-session .app-shell{display:block}.classroom-session-bar{position:sticky;top:0;z-index:50;display:flex;align-items:center;justify-content:space-between;gap:18px;padding:12px 16px;margin:-8px 0 18px;border:1px solid #dfe9e5;border-radius:16px;background:rgba(255,255,255,.96);box-shadow:0 8px 22px rgba(15,64,50,.08);backdrop-filter:blur(8px)}.classroom-session-bar>div:first-child{display:flex;gap:10px;align-items:center}.classroom-session-bar span{color:#687872;font-size:13px}.btn.danger{background:#a6373b!important;border-color:#a6373b!important;color:#fff!important}
.classroom-teaching-tools{margin-top:20px}.teaching-tools-heading{display:flex;justify-content:space-between;align-items:flex-start;gap:20px;margin-bottom:18px}.teaching-tools-heading h2{margin:4px 0 4px}.teaching-tools-grid{display:grid;grid-template-columns:repeat(auto-fit,minmax(190px,1fr));gap:16px}.teaching-tool-card{display:flex;min-height:160px;flex-direction:column;align-items:center;justify-content:center;gap:10px;padding:18px;border:1px solid #dbe8e3;border-radius:20px;background:linear-gradient(180deg,#fff,#f7fbf9);text-decoration:none;color:#163d31;box-shadow:0 8px 20px rgba(21,77,59,.06);transition:.15s transform,.15s box-shadow}.teaching-tool-card:hover,.teaching-tool-card:focus{transform:translateY(-2px);box-shadow:0 12px 28px rgba(21,77,59,.13);outline:3px solid #cfe8df}.teaching-tool-card-icon{font-size:44px;line-height:1}.teaching-tool-card b{font-size:18px;text-align:center}.teaching-tool-card small{color:#587269}.classroom-secondary-actions{display:flex;flex-wrap:wrap;gap:10px;margin-top:18px;padding-top:16px;border-top:1px solid #e6eeeb}.classroom-teaching-tools.locked{opacity:.85}.classroom-teaching-tools.locked .teaching-tools-grid{display:none}
.teaching-tool-list-admin{display:flex;flex-direction:column;gap:10px}.teaching-tool-row{display:grid;grid-template-columns:48px minmax(0,1fr) auto auto;gap:12px;align-items:center;padding:12px;border:1px solid #e3ebe8;border-radius:14px}.teaching-tool-icon{font-size:28px;text-align:center}.teaching-tool-row small{display:block;direction:ltr;text-align:left;color:#6d7c77;white-space:nowrap;overflow:hidden;text-overflow:ellipsis;max-width:620px}.teaching-tool-row .row-actions form{margin:0}
.classroom-lock-page{margin:0;min-height:100vh;background:radial-gradient(circle at 50% 0,#e7f5ef,#f4f7f6 46%,#eef3f1);color:#173b30}.classroom-lock-shell{min-height:100vh;display:grid;place-items:center;padding:max(28px,env(safe-area-inset-top)) max(24px,env(safe-area-inset-right)) max(28px,env(safe-area-inset-bottom)) max(24px,env(safe-area-inset-left))}.classroom-lock-card{width:min(760px,100%);padding:44px;border-radius:30px;background:#fff;border:1px solid #d9e8e2;box-shadow:0 24px 70px rgba(17,77,59,.13);text-align:center}.classroom-lock-logo{max-width:170px;max-height:130px;object-fit:contain;margin-bottom:10px}.classroom-lock-card h1{font-size:clamp(30px,4vw,52px);margin:8px 0 12px}.classroom-lock-card p{font-size:clamp(17px,2vw,24px);color:#60756d;line-height:1.8}.classroom-lock-actions{display:flex;flex-wrap:wrap;justify-content:center;gap:12px;margin:26px 0}.classroom-enter-btn{font-size:20px!important;padding:15px 28px!important}.classroom-install-btn{display:inline-flex!important;align-items:center;justify-content:center;gap:9px!important;background:#eef7f2!important;border:1px solid #b9d7ca!important;color:#1d5f4b!important;font-weight:800!important;box-shadow:0 5px 14px rgba(29,95,75,.09)}.classroom-install-btn:hover,.classroom-install-btn:focus{background:#dff0e8!important;border-color:#85bda8!important;outline:3px solid rgba(52,132,102,.12)}.classroom-install-btn[hidden]{display:none!important}.classroom-install-icon{font-family:Arial,sans-serif;font-size:21px;line-height:1}.classroom-lock-card small{color:#73847e}
.board-mode .teaching-tools-grid,.classroom-session .teaching-tools-grid{grid-template-columns:repeat(auto-fit,minmax(230px,1fr));gap:20px}.board-mode .teaching-tool-card,.classroom-session .teaching-tool-card{min-height:190px;padding:24px}.board-mode .teaching-tool-card-icon,.classroom-session .teaching-tool-card-icon{font-size:54px}.board-mode .teaching-tool-card b,.classroom-session .teaching-tool-card b{font-size:22px}.board-mode .classroom-session-bar,.classroom-session .classroom-session-bar{font-size:18px}
@media(max-width:800px){.classroom-session .content{padding:14px}.classroom-session-bar{align-items:stretch;flex-direction:column}.classroom-session-bar .row-actions{display:grid;grid-template-columns:1fr 1fr}.teaching-tools-heading{flex-direction:column}.teaching-tools-grid{grid-template-columns:repeat(2,minmax(0,1fr))}.teaching-tool-card{min-height:145px}.teaching-tool-row{grid-template-columns:42px 1fr auto}.teaching-tool-row>.row-actions{grid-column:2/-1}.classroom-lock-card{padding:28px 20px}.classroom-lock-actions{flex-direction:column}.classroom-lock-actions .btn{width:100%}}
@media(max-width:500px){.teaching-tools-grid{grid-template-columns:1fr 1fr}.teaching-tool-card{min-height:130px;padding:14px}.teaching-tool-card-icon{font-size:36px}.teaching-tool-card b{font-size:16px}}

/* V1.7.3 - safe teaching-day preview */
.classroom-preview-banner{display:flex;align-items:center;justify-content:space-between;gap:18px;margin:0 0 16px;padding:15px 18px;border:1px solid #d7ccff;border-radius:16px;background:linear-gradient(135deg,#f4f0ff,#fff);box-shadow:0 8px 22px rgba(99,70,200,.07)}
.classroom-preview-banner>div{display:flex;flex-direction:column;gap:3px}.classroom-preview-banner b{font-size:15px;color:#5b3bb7}.classroom-preview-banner span{font-size:12px;color:#665e7a}.classroom-preview-picker{padding:14px 18px;margin-bottom:16px}.preview-class-form{display:flex;align-items:end;gap:12px;flex-wrap:wrap}.preview-class-form label{min-width:min(520px,100%);margin:0}.preview-class-form select{margin-top:6px}.preview-day-btn{border-color:#cfc2ff!important;background:#f7f4ff!important;color:#5b3bb7!important}.teaching-day-date small{display:block;margin-top:5px;font-size:10px;opacity:.84}.classroom-teaching-tools.ready{opacity:1}.classroom-teaching-tools.ready .teaching-tools-grid{display:grid}.classroom-teaching-tools [hidden]{display:none!important}
body.board-mode .classroom-preview-banner{padding:20px 24px}body.board-mode .classroom-preview-banner b{font-size:20px}body.board-mode .classroom-preview-banner span{font-size:16px}body.board-mode .preview-class-form label{font-size:17px}body.board-mode .preview-class-form select{font-size:18px;min-height:58px}
@media(max-width:760px){.classroom-preview-banner{align-items:stretch;flex-direction:column}.classroom-preview-banner .btn{width:100%}.preview-class-form{align-items:stretch;flex-direction:column}.preview-class-form label{min-width:0;width:100%}}


/* V1.7.5 — Philips Android 8 / legacy Chromium classroom fit + lesson-plan workflow */
html,body{max-width:100%;}
body.classroom-session{width:100vw!important;max-width:100vw!important;min-width:0!important;overflow-x:hidden!important;overscroll-behavior-x:none}
body.classroom-session .app-shell,body.classroom-session .main,body.classroom-session .content{width:100%!important;max-width:none!important;min-width:0!important;margin:0!important;transform:none!important;left:auto!important;right:auto!important}
body.classroom-session .content{padding:18px 22px 48px!important;overflow-x:hidden!important}
body.classroom-session .content>*{width:100%;max-width:100%;min-width:0}
body.classroom-session .teaching-day-hero,body.classroom-session .teaching-day-headline,body.classroom-session .teaching-attendance-card,body.classroom-session .classroom-teaching-tools,body.classroom-session .classroom-preview-banner,body.classroom-session .classroom-preview-picker,body.classroom-session .classroom-session-bar{max-width:100%!important;min-width:0!important}
body.classroom-session.display-fit-mode{zoom:1!important}
body.classroom-session.display-fit-mode .content{width:100vw!important;max-width:100vw!important;margin:0!important;padding-inline:18px!important}
body.classroom-session.display-fit-mode .rollcall-grid{grid-template-columns:repeat(2,minmax(0,1fr))!important}
body.classroom-session.display-fit-mode .rollcall-options{grid-template-columns:repeat(4,minmax(0,1fr))!important}
body.classroom-session.display-fit-mode .rollcall-card,body.classroom-session.display-fit-mode .teaching-tool-card{min-width:0!important}
body.classroom-session.display-fit-mode .teaching-day-greeting{min-width:0;flex:1 1 auto}
body.classroom-session.display-fit-mode .teaching-day-date{flex:0 0 170px}
@media(max-width:1100px){body.classroom-session.display-fit-mode .rollcall-grid{grid-template-columns:1fr!important}}
@media(max-width:700px){body.classroom-session.display-fit-mode .rollcall-options{grid-template-columns:1fr 1fr!important}body.classroom-session .content{padding:12px!important}}
/* Older Chromium versions on the Philips board predate flex-gap support. */
@supports not (gap: 10px){.classroom-session-bar>*{margin:4px}.rollcall-summary>*{margin:3px}.row-actions>*{margin:3px}.teaching-tools-grid>*{margin:6px}}
.classroom-install-help[hidden]{display:none!important}.classroom-install-help{position:fixed;inset:0;z-index:9999;background:rgba(14,31,26,.6);display:grid;place-items:center;padding:24px}.classroom-install-help-card{position:relative;width:94%;max-width:760px;background:#fff;border-radius:24px;padding:28px;box-shadow:0 26px 80px rgba(0,0,0,.25);text-align:center}.install-help-close{position:absolute;top:10px;inset-inline-end:12px;width:40px;height:40px;min-height:40px;border-radius:50%;background:#f1f4f3;color:#27483e;font-size:24px;padding:0}.classroom-install-url{direction:ltr;text-align:left;word-break:break-all;background:#f4f7f6;border:1px solid #dce6e2;border-radius:12px;padding:12px;margin:16px 0;font-family:ui-monospace,monospace}
.lesson-changes-alert{border:2px solid #f1b5b5;background:#fff4f4;color:#8d2727;border-radius:16px;padding:16px 18px;margin-bottom:16px}.lesson-changes-alert b{display:block;font-size:16px}.lesson-changes-alert p{margin:8px 0 4px;font-weight:700}.lesson-changes-alert span{font-size:12px}.resubmit-btn{background:#d94b55!important;color:#fff!important}.lesson-list-heading{display:flex;align-items:center;justify-content:space-between;gap:12px;margin-bottom:12px}.lesson-list-heading h2{margin:0 0 3px}.lesson-list-heading p{margin:0}.teacher-plan-list{display:grid;gap:9px}.teacher-plan-item{display:flex;justify-content:space-between;align-items:center;gap:14px;border:1px solid var(--line);border-radius:13px;padding:12px 13px;background:#fbfcfe}.teacher-plan-item.needs-changes{border-color:#efb3b6;background:#fff7f7}.teacher-plan-item>div:first-child{display:flex;flex-direction:column;min-width:0}.teacher-plan-item>div:first-child span,.teacher-plan-item>div:first-child small{color:var(--muted);font-size:11px;margin-top:3px}.teacher-plan-item.needs-changes>div:first-child small{color:#a23b42;font-weight:700}.teacher-plan-item .row-actions{justify-content:flex-end}@media(max-width:760px){.lesson-list-heading,.teacher-plan-item{align-items:flex-start;flex-direction:column}.teacher-plan-item .row-actions{width:100%}.teacher-plan-item .row-actions .btn{flex:1}}


/* V1.7.6 — hard viewport clamp for Philips 75BDL3052E / Android 8 Chromium.
   The document/root stays LTR in classroom mode so legacy Chromium never starts
   at the RTL horizontal edge. RTL is applied only to the inner app content. */
html.classroom-root,html.classroom-root body{width:100%!important;max-width:100%!important;height:100%!important;max-height:100%!important;margin:0!important;padding:0!important;overflow:hidden!important;direction:ltr!important}
html.classroom-root body.classroom-session{position:fixed!important;top:0!important;right:0!important;bottom:0!important;left:0!important;width:auto!important;max-width:none!important;height:auto!important;max-height:none!important;margin:0!important;padding:0!important;overflow:hidden!important;direction:ltr!important}
html.classroom-root body.classroom-session .app-shell{position:absolute!important;top:0!important;right:0!important;bottom:0!important;left:0!important;width:auto!important;max-width:none!important;height:auto!important;min-height:0!important;margin:0!important;padding:0!important;overflow:hidden!important;direction:ltr!important;display:block!important}
html.classroom-root body.classroom-session .main{position:absolute!important;top:0!important;right:0!important;bottom:0!important;left:0!important;width:auto!important;max-width:none!important;height:auto!important;min-height:0!important;margin:0!important;padding:0!important;overflow-y:auto!important;overflow-x:hidden!important;-webkit-overflow-scrolling:touch;direction:rtl!important}
html.classroom-root body.classroom-session.dir-ltr .main{direction:ltr!important}
html.classroom-root body.classroom-session .content,html.classroom-root body.classroom-session.display-fit-mode .content{display:block!important;width:auto!important;max-width:none!important;min-width:0!important;margin:0!important;padding:18px 22px 48px!important;overflow:visible!important;direction:inherit!important;transform:none!important;zoom:1!important}
html.classroom-root body.classroom-session .content>*{width:auto!important;max-width:100%!important;min-width:0!important;margin-left:0!important;margin-right:0!important}
html.classroom-root body.classroom-session .classroom-session-bar,html.classroom-root body.classroom-session .teaching-day-hero,html.classroom-root body.classroom-session .teaching-day-headline,html.classroom-root body.classroom-session .teaching-attendance-card,html.classroom-root body.classroom-session .classroom-teaching-tools,html.classroom-root body.classroom-session .classroom-preview-banner,html.classroom-root body.classroom-session .classroom-preview-picker{width:auto!important;max-width:none!important;min-width:0!important;left:auto!important;right:auto!important;transform:none!important}
@media(max-width:700px){html.classroom-root body.classroom-session .content,html.classroom-root body.classroom-session.display-fit-mode .content{padding:12px!important}}

/* V1.9.0 Operations upgrade */
.quick-add-menu{position:relative}.quick-add-menu>summary{list-style:none}.quick-add-menu>summary::-webkit-details-marker{display:none}.quick-add-popover{position:absolute;top:50px;inset-inline-end:0;width:250px;padding:8px;background:#fff;border:1px solid var(--line);border-radius:14px;box-shadow:0 18px 50px rgba(31,41,55,.16);display:grid;grid-template-columns:1fr 1fr;gap:6px;z-index:40}.quick-add-popover a{display:flex;align-items:center;gap:8px;padding:10px;border-radius:10px;color:#3f4858;font-weight:650}.quick-add-popover a:hover{background:#f4f6fb}.quick-add-popover b{font-size:18px}.quick-add-popover span{font-size:12px}
.student-center-tabs{display:flex;gap:6px;flex-wrap:wrap;margin-bottom:12px}.student-center-tabs a{padding:9px 13px;border:1px solid var(--line);border-radius:10px;background:#fff;color:#586273;font-weight:700}.student-center-tabs a.active{background:var(--brand-soft);border-color:#cfd4ff;color:var(--brand)}.student-center-tabs b{display:inline-flex;margin-inline-start:4px;font-size:10px;background:#eef0f4;padding:2px 6px;border-radius:999px}.student-bulk-bar{position:sticky;top:73px;z-index:8;padding:10px 14px;border-color:#cfd4ff;background:#f8f9ff}.student-bulk-bar form{display:flex;align-items:center;gap:8px;flex-wrap:wrap}.student-bulk-bar select{width:auto;min-width:160px}.student-center-table input[type=checkbox]{width:16px;height:16px}
.calendar-toolbar{display:flex;align-items:center;justify-content:space-between;gap:14px}.calendar-nav,.calendar-filters{display:flex;align-items:center;gap:8px;flex-wrap:wrap}.calendar-filters select{width:auto;min-width:180px}.calendar-add>summary{cursor:pointer;font-weight:750;color:var(--brand)}.week-calendar{display:grid;grid-template-columns:repeat(7,minmax(0,1fr));gap:9px;align-items:start;margin-bottom:22px}.calendar-day{background:#fff;border:1px solid var(--line);border-radius:14px;min-height:260px;overflow:hidden;box-shadow:var(--shadow)}.calendar-day.today{border-color:#aeb7ff;box-shadow:0 8px 26px rgba(77,95,245,.12)}.calendar-day>header{padding:11px 12px;background:#f8f9fb;border-bottom:1px solid var(--line);display:flex;justify-content:space-between;gap:8px}.calendar-day.today>header{background:#eef0ff;color:#3949d8}.calendar-day-body{padding:8px;display:grid;gap:7px}.calendar-item{border:1px solid #e4e7ed;border-radius:10px;padding:9px;background:#fff;display:grid;gap:4px}.calendar-item.class-item{border-inline-start:4px solid #5668f7}.calendar-item.event-item{border-inline-start:4px solid #e3a43b;background:#fffaf0}.calendar-item.type-holiday{border-inline-start-color:#e15b65;background:#fff4f5}.calendar-item.type-meeting{border-inline-start-color:#8a64d6;background:#faf7ff}.calendar-item.type-activity{border-inline-start-color:#3ea675;background:#f3fff9}.calendar-time{font-size:10px;color:var(--muted);direction:ltr;text-align:start}.calendar-item b{font-size:12px}.calendar-item span{font-size:10px;color:#697386}.calendar-flags{display:flex;gap:4px;flex-wrap:wrap}.calendar-flags span{border-radius:999px;background:#f0f2f5;padding:3px 6px}.calendar-flags .ok{background:#eaf8ef;color:#287a55}.calendar-flags .warn{background:#fff3d7;color:#8c6414}.calendar-empty{text-align:center;color:#b0b6c0;padding:30px 4px}
.finance-tabs{display:flex;gap:6px;flex-wrap:wrap;margin-bottom:15px}.finance-tabs a{padding:9px 12px;background:#fff;border:1px solid var(--line);border-radius:10px;color:#596274;font-weight:700}.finance-tabs a.active{color:var(--brand);background:var(--brand-soft);border-color:#cfd5ff}.quick-operation-list{display:grid;gap:8px}.quick-operation-list a{padding:12px;border:1px solid var(--line);border-radius:11px;background:#fafbfe;font-weight:650}.inline-details{position:relative;display:inline-block}.inline-details>summary{list-style:none}.inline-details>summary::-webkit-details-marker{display:none}.refund-popover{position:absolute;z-index:20;inset-inline-end:0;top:36px;width:300px;background:#fff;border:1px solid var(--line);border-radius:13px;padding:12px;box-shadow:0 18px 45px rgba(31,41,55,.16);display:grid;gap:8px}.refund-popover label{white-space:normal}
.communication-stats .stat .n{font-size:24px}.communication-preview .message-body{padding:16px;border:1px solid var(--line);background:#fafbfc;border-radius:12px;line-height:1.9}.recipient-chips{display:flex;flex-wrap:wrap;gap:6px;margin-top:10px}.recipient-chips span{padding:5px 8px;border-radius:999px;background:#eef1f6;font-size:11px}
.operations-dashboard-grid{display:grid;grid-template-columns:1.2fr 1fr 1fr;gap:16px;margin-bottom:18px}.today-lessons-list,.birthday-list,.announcement-list{display:grid;gap:7px}.today-lessons-list>div,.birthday-list>div,.announcement-list>a{display:grid;grid-template-columns:auto 1fr;gap:2px 10px;align-items:center;border-bottom:1px solid #edf0f4;padding:8px 0;color:inherit}.today-lessons-list .time{grid-row:1/3;direction:ltr;background:#eef0ff;color:#4656d8;border-radius:8px;padding:6px 8px;font-weight:800}.today-lessons-list small,.birthday-list small,.announcement-list small{color:var(--muted)}.birthday-list>div>span{grid-row:1/3;font-size:22px}.announcement-list>a b{grid-column:1/-1}.announcement-list>a small{grid-column:1/-1}
@media(max-width:1200px){.week-calendar{grid-template-columns:repeat(4,minmax(0,1fr))}.operations-dashboard-grid{grid-template-columns:1fr 1fr}.announcements-card{grid-column:1/-1}}
@media(max-width:820px){.quick-add-popover{position:fixed;top:70px;inset-inline:14px;width:auto}.calendar-toolbar{align-items:stretch;flex-direction:column}.calendar-filters{display:grid;grid-template-columns:1fr 1fr}.calendar-filters select{width:100%;min-width:0}.week-calendar{grid-template-columns:1fr 1fr}.student-bulk-bar{top:68px}.student-bulk-bar form{align-items:stretch;flex-direction:column}.student-bulk-bar select,.student-bulk-bar button{width:100%}.operations-dashboard-grid{grid-template-columns:1fr}.announcements-card{grid-column:auto}.refund-popover{position:fixed;inset:20% 16px auto;width:auto}}
@media(max-width:520px){.week-calendar{grid-template-columns:1fr}.calendar-filters{grid-template-columns:1fr}.finance-tabs{display:grid;grid-template-columns:1fr 1fr}.student-center-tabs{display:grid;grid-template-columns:1fr 1fr}}
/* V1.9 calendar day/week/month views */
.calendar-view-switch{display:flex;align-items:center;gap:4px;background:var(--surface,#fff);border:1px solid var(--line,#e3e7ee);padding:4px;border-radius:12px}.calendar-view-switch a{padding:8px 13px;border-radius:9px;text-decoration:none;color:var(--muted,#667085);font-weight:700}.calendar-view-switch a.active{background:#eef0ff;color:#4d5ff5}.month-calendar{display:grid;gap:8px}.month-weekdays,.month-grid{display:grid;grid-template-columns:repeat(7,minmax(0,1fr));gap:7px}.month-weekdays b{text-align:center;color:var(--muted,#667085);padding:8px}.month-day{min-height:135px;background:#fff;border:1px solid #e5e8ef;border-radius:13px;padding:10px;overflow:hidden}.month-day.today{border:2px solid #5968f5;background:#fafaff}.month-day header{display:flex;justify-content:flex-end;margin-bottom:8px}.month-day header a{display:inline-grid;place-items:center;width:30px;height:30px;border-radius:50%;text-decoration:none;font-weight:800;color:#242b3a}.month-day.today header a{background:#5968f5;color:#fff}.month-mini{font-size:12px;border-radius:8px;padding:5px 7px;margin:4px 0;white-space:nowrap;overflow:hidden;text-overflow:ellipsis}.month-mini.class{background:#eef4ff;color:#284d93}.month-mini.event{background:#fff6df;color:#805b0d}.month-mini span{font-weight:800}.day-calendar-list{display:grid;grid-template-columns:repeat(auto-fit,minmax(240px,1fr));gap:12px;margin-top:16px}.day-calendar .calendar-item{min-height:140px}.calendar-toolbar{flex-wrap:wrap}.calendar-toolbar .calendar-view-switch{margin-inline-start:auto}@media(max-width:900px){.month-weekdays{display:none}.month-grid{grid-template-columns:1fr}.month-day{min-height:auto}.month-day[style]{grid-column-start:auto!important}.calendar-view-switch{order:3;width:100%;justify-content:center}.calendar-toolbar .calendar-view-switch{margin-inline-start:0}.day-calendar-list{grid-template-columns:1fr}}
.payment-agreement-hint{margin-top:8px;padding:10px 12px;border:1px solid #dfe4ff;background:#f7f8ff;border-radius:10px;color:#4a5568;font-size:13px}.payment-agreement-hint span{margin:0 7px;color:#a0a6b2}
.student-view-tools{display:flex;gap:8px;align-items:center;justify-content:flex-end;flex-wrap:wrap;margin:10px 0}.student-column-picker{position:relative}.student-column-picker>summary{list-style:none}.student-column-picker>summary::-webkit-details-marker{display:none}.student-column-popover{position:absolute;z-index:30;inset-inline-end:0;top:calc(100% + 8px);min-width:220px;background:#fff;border:1px solid #e2e6ee;border-radius:14px;padding:12px;box-shadow:0 18px 45px rgba(25,35,60,.16);display:grid;gap:8px}.student-column-popover label{display:flex;gap:8px;align-items:center;white-space:nowrap}.saved-view-select{min-width:170px}@media(max-width:700px){.student-view-tools{justify-content:stretch}.student-view-tools>*{flex:1 1 auto}.saved-view-select{width:100%}}

/* ===== V1.9.1 Unified family finance & cashier ===== */
.cashier-hero{display:flex;justify-content:space-between;align-items:flex-end;gap:20px;margin-bottom:18px}.cashier-hero h1{margin:0 0 5px;font-size:28px}.cashier-hero p{margin:0;color:var(--muted)}.cashier-steps{display:flex;gap:7px;flex-wrap:wrap}.cashier-steps span{padding:7px 11px;border-radius:999px;background:#eef1f6;color:#7b8493;font-size:12px;font-weight:700}.cashier-steps span.active{background:var(--brand-soft);color:var(--brand)}
.cashier-search-row{display:grid;grid-template-columns:1fr auto;gap:9px;margin-top:7px}.family-search-results{display:grid;grid-template-columns:repeat(2,minmax(0,1fr));gap:8px;margin-top:13px}.family-search-results a{display:flex;flex-direction:column;gap:4px;padding:13px;border:1px solid var(--line);border-radius:12px;background:#fafbfe;color:var(--text)}.family-search-results a:hover{border-color:#bdc7ff;background:#f4f6ff}.family-search-results span{color:var(--muted);font-size:12px}
.family-account-head,.family-finance-title{display:flex;align-items:center;justify-content:space-between;gap:18px;flex-wrap:wrap;background:#fff;border:1px solid var(--line);border-radius:16px;padding:18px;margin-bottom:18px;box-shadow:var(--shadow)}.family-account-head h2,.family-finance-title h1{margin:3px 0 5px}.family-account-head p,.family-finance-title p{margin:0;color:var(--muted)}.eyebrow{font-size:11px;color:var(--brand);font-weight:800}.family-child-chips{display:flex;gap:7px;flex-wrap:wrap}.family-child-chips>span{display:flex;flex-direction:column;gap:2px;padding:8px 11px;border-radius:11px;background:#f5f7fb;border:1px solid #e7ebf2}.family-child-chips small{color:var(--muted);font-size:10px}
.cashier-grid{display:grid;grid-template-columns:minmax(0,1.5fr) minmax(330px,.7fr);gap:18px;align-items:start}.due-selector{display:grid;gap:9px}.due-select-card{display:grid;grid-template-columns:auto 1fr minmax(170px,auto);gap:12px;align-items:center;padding:13px;border:1px solid var(--line);border-radius:13px;background:#fff;cursor:pointer;transition:.15s}.due-select-card:hover{border-color:#c9d0ff}.due-select-card.selected{border-color:#7d8aff;background:#f6f7ff}.due-select-card.overdue{box-shadow:inset 4px 0 0 #dc5a5a}.dir-rtl .due-select-card.overdue{box-shadow:inset -4px 0 0 #dc5a5a}.due-select-card>input[type=checkbox]{width:20px;height:20px}.due-main{display:flex;flex-direction:column;gap:4px}.due-main>span,.due-main>small{color:var(--muted);font-size:11px}.due-main small .money-value{font-size:11px}.due-amount{display:grid;grid-template-columns:auto;justify-items:end;gap:3px}.due-amount>span{font-size:10px;color:var(--muted)}.due-amount strong{font-size:17px}.due-amount input{width:125px;text-align:center}.cashier-payment-card{position:sticky;top:88px}.cashier-total{padding:16px;border-radius:13px;background:linear-gradient(135deg,#f3f5ff,#fbfbff);border:1px solid #e0e5ff;margin-bottom:15px}.cashier-total>span{display:block;color:var(--muted);font-size:12px}.cashier-total input{font-size:28px;font-weight:800;height:58px;margin:7px 0}.cashier-total small{color:var(--muted)}.cashier-submit{width:100%;min-height:52px;font-size:16px;margin-top:14px}.finance-operation-grid{display:grid;grid-template-columns:repeat(4,minmax(0,1fr));gap:12px;margin-bottom:18px}.finance-operation{display:flex;align-items:center;gap:12px;padding:17px;background:#fff;border:1px solid var(--line);border-radius:15px;color:var(--text);box-shadow:var(--shadow)}.finance-operation>span{font-size:26px}.finance-operation div{display:flex;flex-direction:column;gap:4px}.finance-operation small{color:var(--muted)}.finance-operation.primary{background:linear-gradient(135deg,#5365f5,#6d5ce7);color:#fff;border:0}.finance-operation.primary small{color:#e9ebff}
@media(max-width:1050px){.cashier-grid{grid-template-columns:1fr}.cashier-payment-card{position:static}.finance-operation-grid{grid-template-columns:1fr 1fr}.family-search-results{grid-template-columns:1fr}}
@media(max-width:620px){.cashier-hero{align-items:flex-start;flex-direction:column}.cashier-search-row{grid-template-columns:1fr}.due-select-card{grid-template-columns:auto 1fr}.due-amount{grid-column:2;justify-items:stretch}.due-amount input{width:100%}.finance-operation-grid{grid-template-columns:1fr}}

/* ===== V2.0 Modern Application Shell ===== */
body.modern-app-v2{
 --bg:#f4f6f1;--panel:#ffffff;--text:#20312d;--muted:#7b8a84;--line:#e6e9e2;
 --brand:#1d6a54;--brand-dark:#155340;--brand-soft:#eaf4ef;--danger:#c84d4d;--warn:#b67b22;--ok:#2c805d;
 --sidebar:#173f34;--shadow:0 10px 34px rgba(30,55,46,.06);--radius:18px;
 background:linear-gradient(180deg,#f7f8f4 0,#f2f5ef 100%);
}
.modern-app-v2 .sidebar{background:linear-gradient(180deg,#173f34,#11382e);border-inline-end:0;padding:16px 13px;color:#fff;box-shadow:8px 0 28px rgba(22,60,49,.08)}
.modern-app-v2 .brand-link{color:#fff;padding:4px 4px 13px}.modern-app-v2 .brand-copy b{font-size:15px}.modern-app-v2 .brand-copy small{color:#b9d0c8}.modern-app-v2 .school-logo{background:#fff;border-radius:14px;width:48px;height:48px}.modern-app-v2 .brand-mark{background:linear-gradient(145deg,#d7ad55,#f0cd7e);color:#173f34}
.modern-app-v2 .nav{gap:7px}.modern-app-v2 .nav>a{color:#dce9e4;padding:12px 13px;border-radius:13px;font-weight:750}.modern-app-v2 .nav>a:hover{background:rgba(255,255,255,.08);color:#fff}.modern-app-v2 .nav>a.active{background:#f0c86f;color:#173f34;box-shadow:0 7px 18px rgba(0,0,0,.12)}
.modern-app-v2 .nav-cluster{border-radius:14px;overflow:hidden}.modern-app-v2 .nav-cluster>summary{list-style:none;display:flex;align-items:center;gap:11px;padding:12px 13px;color:#dce9e4;font-weight:750;cursor:pointer;user-select:none}.modern-app-v2 .nav-cluster>summary::-webkit-details-marker{display:none}.modern-app-v2 .nav-cluster>summary:hover{background:rgba(255,255,255,.06)}.modern-app-v2 .nav-cluster>summary>b{margin-inline-start:auto;font-size:14px;transition:.2s}.modern-app-v2 .nav-cluster[open]>summary>b{transform:rotate(180deg)}
.modern-app-v2 .nav-cluster-items{padding:4px 7px 9px;display:grid;gap:3px}.modern-app-v2 .nav-cluster-items a{display:flex;align-items:center;gap:10px;padding:9px 11px;border-radius:11px;color:#bdd0c9;font-weight:650;font-size:12px}.modern-app-v2 .nav-cluster-items a:hover{background:rgba(255,255,255,.07);color:#fff}.modern-app-v2 .nav-cluster-items a.active{background:rgba(240,200,111,.16);color:#f7d88f;box-shadow:inset 3px 0 0 #f0c86f}.dir-rtl.modern-app-v2 .nav-cluster-items a.active{box-shadow:inset -3px 0 0 #f0c86f}
.modern-app-v2 .sidebar-foot{border-top-color:rgba(255,255,255,.12);color:#aac2b9}.modern-app-v2 .sidebar-foot a{color:#f2d88e}.modern-app-v2 .version-chip{color:#86a79c}
.modern-app-v2 .topbar{height:72px;background:rgba(247,248,244,.88);border-bottom:1px solid rgba(225,231,223,.92);padding:10px 26px}.modern-app-v2 .top-search input,.modern-app-v2 .compact-form select,.modern-app-v2 .money-privacy-toggle,.modern-app-v2 .board-mode-toggle,.modern-app-v2 .pwa-install-toggle{border-radius:14px;border:1px solid #e2e7df;background:#fff;min-height:46px}.modern-app-v2 .add-new{background:linear-gradient(135deg,#1d6a54,#2d846a);border-radius:14px;min-height:46px;box-shadow:0 8px 18px rgba(29,106,84,.17)}
.modern-app-v2 .pwa-install-toggle{background:#eef7f2!important;border-color:#b9d7ca!important;color:#1d5f4b!important;box-shadow:0 4px 12px rgba(29,95,75,.10)!important}.modern-app-v2 .pwa-install-toggle:hover,.modern-app-v2 .pwa-install-toggle:focus{background:#dff0e8!important;border-color:#85bda8!important}
.modern-app-v2 .content{padding:28px 30px 55px;max-width:1680px}.modern-app-v2 .page-heading{margin-bottom:18px}.modern-app-v2 .page-heading h1{font-size:28px;color:#183b31}.modern-app-v2 .card,.modern-app-v2 .stat{border-color:#e5eae3;border-radius:20px;box-shadow:0 10px 32px rgba(26,59,48,.045)}.modern-app-v2 .stat .n{color:#173f34}.modern-app-v2 .btn,.modern-app-v2 button{border-radius:12px}.modern-app-v2 .btn.secondary{border-color:#dde4dc;background:#fff;color:#3d514b}.modern-app-v2 input,.modern-app-v2 select,.modern-app-v2 textarea{border-radius:12px;border-color:#dfe6df;background:#fff}.modern-app-v2 input:focus,.modern-app-v2 select:focus,.modern-app-v2 textarea:focus{border-color:#7bb39f;box-shadow:0 0 0 3px rgba(29,106,84,.09)}
.modern-app-v2 .finance-tabs{background:#eef2ec;border:1px solid #e2e7df;padding:5px;border-radius:16px;gap:5px}.modern-app-v2 .finance-tabs a{border:0;background:transparent;border-radius:11px;padding:10px 14px;color:#64736e}.modern-app-v2 .finance-tabs a.active{background:#fff;color:#173f34;box-shadow:0 3px 12px rgba(32,49,45,.08)}
.modern-app-v2 .finance-operation.primary{background:linear-gradient(135deg,#173f34,#28765e)}.modern-app-v2 .cashier-total{background:linear-gradient(135deg,#edf6f1,#fbfdfb);border-color:#d7e9e1}.modern-app-v2 .due-select-card.selected{border-color:#63a58d;background:#f1f8f5}.modern-app-v2 .due-select-card:hover{border-color:#9cc6b6}
.modern-app-v2 .attention-center.has-alert>summary{background:#fff6dd;border-color:#f0c86f}.modern-app-v2 .attention-badge{background:#c44c45}
@media(max-width:1024px){.modern-app-v2 .sidebar{box-shadow:0 18px 50px rgba(18,50,41,.32)}}

/* V2 unified finance/payment source cards */
.finance-hub-hero{display:grid;grid-template-columns:1.35fr .65fr;gap:16px;margin-bottom:18px}.finance-hub-hero .card{margin:0}.finance-hub-title{display:flex;align-items:flex-start;justify-content:space-between;gap:16px}.finance-hub-title h2{font-size:22px;margin-bottom:6px}.finance-hub-title p{margin:0;color:var(--muted);line-height:1.7}.finance-kpi-strip{display:grid;grid-template-columns:repeat(4,minmax(0,1fr));gap:12px}.finance-kpi{background:#fff;border:1px solid var(--line);border-radius:17px;padding:16px}.finance-kpi span{display:block;color:var(--muted);font-size:11px}.finance-kpi b{display:block;font-size:22px;margin-top:8px}.finance-kpi.danger b{color:var(--danger)}
.payment-link-grid{display:grid;grid-template-columns:repeat(2,minmax(0,1fr));gap:12px}.payment-link-card{border:1px solid var(--line);border-radius:17px;padding:15px;background:linear-gradient(145deg,#fff,#f8fbf9);display:grid;gap:12px}.payment-link-card.primary{border-color:#b7d5c9;box-shadow:0 8px 25px rgba(29,106,84,.08)}.payment-link-head{display:flex;align-items:center;justify-content:space-between;gap:10px}.payment-link-head b{font-size:15px}.payment-link-actions{display:flex;gap:7px;flex-wrap:wrap}.payment-qr-box{display:grid;grid-template-columns:132px 1fr;gap:15px;align-items:center}.payment-qr-box img{width:132px;height:132px;border-radius:13px;border:1px solid var(--line);background:#fff;padding:5px}.payment-url-preview{direction:ltr;text-align:left;font-size:11px;color:var(--muted);overflow-wrap:anywhere;background:#f2f5f2;padding:9px;border-radius:9px}.payment-share-panel{margin-top:16px;padding:15px;border-radius:17px;border:1px dashed #bad2c8;background:#f6fbf8}.payment-share-panel h3{margin:0 0 8px}.payment-share-buttons{display:flex;gap:8px;flex-wrap:wrap}.payment-share-buttons .btn{min-width:120px}
.expense-form-grid{display:grid;grid-template-columns:repeat(3,minmax(0,1fr));gap:12px}.expense-form-grid .full{grid-column:1/-1}.expense-total-card{background:linear-gradient(145deg,#fff9eb,#fff);border-color:#f1dfb5}.expense-total-card .n{color:#b67b22}

/* classroom fullscreen gate */
.classroom-fullscreen-gate{position:fixed;inset:0;z-index:9999;background:rgba(10,35,28,.74);backdrop-filter:blur(8px);display:grid;place-items:center;padding:24px}.classroom-fullscreen-gate[hidden]{display:none}.classroom-fullscreen-gate>div{width:min(520px,94vw);background:#fff;border-radius:26px;padding:34px;text-align:center;box-shadow:0 30px 90px rgba(0,0,0,.25)}.classroom-fullscreen-gate span{display:block;font-size:48px;color:#1d6a54}.classroom-fullscreen-gate b{display:block;font-size:24px;margin:12px 0 7px}.classroom-fullscreen-gate small{display:block;color:#77847f;line-height:1.7;margin-bottom:18px}.classroom-fullscreen-gate button{width:100%;min-height:58px;font-size:18px;background:#1d6a54}
@media(max-width:900px){.finance-hub-hero{grid-template-columns:1fr}.finance-kpi-strip{grid-template-columns:1fr 1fr}.payment-link-grid{grid-template-columns:1fr}.expense-form-grid{grid-template-columns:1fr 1fr}}
@media(max-width:600px){.finance-kpi-strip,.expense-form-grid{grid-template-columns:1fr}.payment-qr-box{grid-template-columns:1fr}.payment-qr-box img{margin:auto}.payment-share-buttons>*{flex:1}.modern-app-v2 .content{padding:18px 14px 40px}}
.finance-super-tabs{overflow-x:auto;flex-wrap:nowrap;scrollbar-width:thin}.finance-super-tabs a{white-space:nowrap;flex:0 0 auto}

/* ===== V2.0.1 Payment QR layout + amount propagation ===== */
.payment-share-panel{overflow:hidden}
.payment-share-title{display:flex;align-items:flex-start;justify-content:space-between;gap:14px;margin-bottom:14px}
.payment-share-title h3{margin:0 0 6px}
.payment-share-title p{margin:0}
.payment-live-pill{display:flex;flex-direction:column;align-items:center;justify-content:center;gap:2px;min-width:135px;padding:10px 14px;border:1px solid #d6e6df;background:#fff;border-radius:14px;white-space:nowrap}
.payment-live-pill small{color:var(--muted);font-size:10px}.payment-live-pill b{font-size:16px;color:#184a3a}
.payment-link-card{min-width:0}
.payment-live-amount{display:flex;align-items:center;justify-content:space-between;gap:12px;padding:10px 12px;border-radius:12px;background:#edf7f2;border:1px solid #d7e9e1}
.payment-live-amount span{font-size:11px;color:var(--muted)}.payment-live-amount strong{font-size:18px;color:#174c3a;white-space:nowrap}
.payment-qr-stage{display:grid;grid-template-columns:minmax(150px,190px) minmax(0,1fr);gap:16px;align-items:center}
.payment-qr-frame{display:flex;flex-direction:column;align-items:center;gap:7px;padding:10px;border:1px solid var(--line);background:#fff;border-radius:15px}
.payment-qr-frame img{display:block;width:min(100%,180px);height:auto;aspect-ratio:1/1;border:0!important;padding:0!important;border-radius:8px!important;background:#fff}
.payment-qr-frame small{font-size:10px;color:var(--muted);text-align:center}
.payment-link-content{min-width:0;display:flex;flex-direction:column;gap:10px}
.payment-url-preview{width:100%;max-width:100%;box-sizing:border-box;white-space:normal;word-break:break-all;overflow-wrap:anywhere;line-height:1.6}
.payment-share-buttons{display:grid;grid-template-columns:repeat(2,minmax(0,1fr));gap:8px}
.payment-share-buttons .btn{min-width:0;width:100%;justify-content:center;text-align:center;box-sizing:border-box}
.payment-link-note{font-size:10px;color:var(--muted);line-height:1.6}
.disabled-link{opacity:.55;pointer-events:none}
/* The cashier lives in the narrow right column: keep QR/action layout vertical there. */
.cashier-payment-card .payment-share-title{flex-direction:column}
.cashier-payment-card .payment-live-pill{width:100%;box-sizing:border-box;flex-direction:row;justify-content:space-between}
.cashier-payment-card .payment-qr-stage{grid-template-columns:1fr}
.cashier-payment-card .payment-qr-frame{width:100%;box-sizing:border-box}
.cashier-payment-card .payment-qr-frame img{width:min(240px,78vw)}
@media(max-width:700px){.payment-share-title{flex-direction:column}.payment-live-pill{width:100%;box-sizing:border-box;flex-direction:row;justify-content:space-between}.payment-qr-stage{grid-template-columns:1fr}.payment-share-buttons{grid-template-columns:1fr 1fr}}

/* V2.1.0 SmartPay */
.smartpay-admin-hero{align-items:center}.smartpay-state{display:inline-flex;align-items:center;gap:8px;padding:9px 13px;border-radius:999px;background:#f4f5f6;color:#6c7880;font-weight:800}.smartpay-state span{width:9px;height:9px;border-radius:50%;background:#9ba5aa}.smartpay-state.on{background:#eaf7f1;color:#23634f}.smartpay-state.on span{background:#2e8b69}.smartpay-admin-grid{display:grid;grid-template-columns:minmax(0,1.25fr) minmax(300px,.75fr);gap:16px;margin-bottom:16px}.smartpay-launch-card{min-width:0}.smartpay-admin-qr{display:grid;grid-template-columns:210px minmax(0,1fr);gap:24px;align-items:center;margin-top:18px}.smartpay-admin-qr>img{width:210px;max-width:100%;background:#fff;border:1px solid var(--line);border-radius:18px;padding:10px}.smartpay-url-box{direction:ltr;text-align:left;overflow:auto;white-space:nowrap;background:#f4f7f5;border:1px solid var(--line);padding:11px 12px;border-radius:11px;font-family:ui-monospace,SFMono-Regular,Menlo,monospace}.toggle-row{display:flex!important;justify-content:space-between;align-items:center;gap:20px;padding:12px 0;border-bottom:1px solid var(--line)}.toggle-row span{display:grid;gap:4px}.toggle-row small{color:var(--muted);font-weight:400}.toggle-row input{width:20px;height:20px}.smartpay-stats{margin:16px 0}.smartpay-stats .n{font-size:25px}
@media(max-width:820px){.smartpay-admin-grid{grid-template-columns:1fr}.smartpay-admin-qr{grid-template-columns:160px minmax(0,1fr)}.smartpay-admin-qr>img{width:160px}}
@media(max-width:560px){.smartpay-admin-qr{grid-template-columns:1fr}.smartpay-admin-qr>img{width:220px;margin:auto}.smartpay-state{align-self:flex-start}}


/* v2.1.9 — compact finance navigation: keep the daily actions visible and move
   secondary financial tools into one accessible dropdown instead of a horizontal
   scrollbar. */
.finance-super-tabs.finance-compact-tabs{overflow:visible;flex-wrap:wrap;align-items:center;scrollbar-width:none}
.finance-super-tabs.finance-compact-tabs>a{flex:0 0 auto;white-space:nowrap}
.finance-more{position:relative;flex:0 0 auto}
.finance-more>summary{list-style:none;cursor:pointer;padding:10px 14px;border-radius:11px;color:#64736e;font-weight:700;display:flex;align-items:center;gap:7px;white-space:nowrap}
.finance-more>summary::-webkit-details-marker{display:none}
.finance-more.active>summary,.finance-more[open]>summary{background:#fff;color:#173f34;box-shadow:0 3px 12px rgba(32,49,45,.08)}
.finance-more-menu{position:absolute;z-index:80;top:calc(100% + 8px);inset-inline-end:0;min-width:220px;padding:7px;background:#fff;border:1px solid #e1e6e2;border-radius:14px;box-shadow:0 18px 45px rgba(31,41,55,.15);display:grid;gap:3px}
.modern-app-v2 .finance-more-menu a{display:block;padding:10px 12px;border-radius:9px;background:transparent;color:#52625c}
.modern-app-v2 .finance-more-menu a:hover,.modern-app-v2 .finance-more-menu a.active{background:#eef5f1;color:#173f34}
@media(max-width:760px){.finance-super-tabs.finance-compact-tabs{display:grid;grid-template-columns:repeat(2,minmax(0,1fr))}.finance-super-tabs.finance-compact-tabs>a,.finance-more{width:100%}.finance-more>summary{justify-content:center}.finance-more-menu{position:fixed;inset:auto 16px 18px 16px;min-width:0;max-height:60vh;overflow:auto}}


.family-picker-enhanced{position:relative;width:100%}.family-picker-input{width:100%}.family-picker-native{position:absolute!important;width:1px!important;height:1px!important;opacity:0!important;pointer-events:none!important;overflow:hidden!important}

/* v2.4.2 — compact student row actions */
.student-actions-cell{min-width:390px}
.student-primary-actions{display:flex;align-items:center;gap:7px;flex-wrap:nowrap}
.student-primary-actions .btn{white-space:nowrap}
.student-row-action{width:auto;min-width:132px;max-width:175px;padding:7px 30px 7px 10px;border-radius:10px;background:#f7faf8;border-color:#dbe5df;color:#30443c;font-weight:750;cursor:pointer}
html[dir="rtl"] .student-row-action{padding:7px 10px 7px 30px}
.student-row-action:focus{border-color:#8fbaa8;box-shadow:0 0 0 3px rgba(58,126,96,.10)}
@media(max-width:760px){.student-actions-cell{min-width:330px}.student-primary-actions{gap:5px}.student-primary-actions .btn{padding:7px 9px}.student-row-action{min-width:118px;max-width:145px;font-size:12px}}


/* v2.4.5 — unified table filtering/sorting */
.auto-table-tools{display:grid;grid-template-columns:minmax(180px,1.2fr) minmax(150px,.8fr) minmax(120px,.55fr) auto auto;gap:8px;align-items:center;margin:0 0 10px;padding:10px 12px;border:1px solid #e2e8e3;border-radius:14px;background:#f8faf8}
.auto-table-tools input,.auto-table-tools select{min-height:40px;margin:0;background:#fff}
.auto-table-tools .auto-table-count{white-space:nowrap;font-size:11px;text-align:center;min-width:76px}
.auto-sortable-head{cursor:pointer;user-select:none;position:relative;padding-inline-end:24px!important}
.auto-sortable-head::after{content:'↕';position:absolute;inset-inline-end:8px;top:50%;transform:translateY(-50%);font-size:11px;opacity:.34}
.auto-sortable-head.sorted-column::after{content:attr(data-sort-dir);font-size:0;opacity:1}
.auto-sortable-head.sorted-column[data-sort-dir="asc"]::after{content:'↑';font-size:13px;color:#1d6a54}
.auto-sortable-head.sorted-column[data-sort-dir="desc"]::after{content:'↓';font-size:13px;color:#1d6a54}
.auto-sortable-head:focus{outline:2px solid rgba(29,106,84,.25);outline-offset:-2px}
@media(max-width:900px){.auto-table-tools{grid-template-columns:1fr 1fr}.auto-table-tools .auto-table-search{grid-column:1/-1}.auto-table-tools .auto-table-count{text-align:start}}
@media(max-width:520px){.auto-table-tools{grid-template-columns:1fr}.auto-table-tools .auto-table-search{grid-column:auto}.auto-table-tools>*{width:100%}.auto-table-tools .auto-table-count{text-align:center}}

/* v2.6.0 — Safe PWA launcher, improved tablet and mobile layout. */
.app-entry-page{min-height:100dvh;padding:clamp(14px,4vw,42px);background:radial-gradient(circle at 88% 7%,#deefe6 0,transparent 38%),#f4f7f4;display:grid;place-items:center}
.app-entry-shell{width:min(760px,100%);background:#fff;border:1px solid #dce8df;border-radius:26px;box-shadow:0 16px 60px rgba(22,60,49,.09);padding:clamp(20px,4vw,36px);min-width:0}
.app-entry-brand{display:flex;align-items:center;gap:18px;margin-bottom:18px}.app-entry-brand h1{font-size:clamp(24px,3vw,32px);margin:4px 0}.app-entry-brand p{margin:0;color:#66766b}.app-entry-logo{width:94px;height:82px;object-fit:contain;flex:0 0 auto}.entry-eyebrow{color:#346f58;font-size:12px;font-weight:800}
.app-entry-languages{display:flex;flex-wrap:wrap;gap:7px;margin:0 0 22px}.app-entry-languages a{border:1px solid #e0e7e2;border-radius:9px;padding:7px 12px;color:#456258;font-weight:650}.app-entry-languages a.active{background:#173f34;color:#fff}
.app-entry-cards{display:grid;gap:11px}.app-entry-option{min-width:0;display:flex;gap:14px;align-items:center;padding:18px 16px;border-radius:16px;border:1px solid #dae7df;background:#fbfdfb;color:#183b31;text-decoration:none;transition:background .15s,border-color .15s}.app-entry-option:hover,.app-entry-option:focus-visible{background:#edf7f0;border-color:#65a181}.app-entry-option>span:nth-child(2){display:grid;gap:5px;flex:1;min-width:0}.app-entry-option strong{font-size:17px}.app-entry-option small{color:#617569;line-height:1.6}.entry-symbol{width:46px;height:46px;display:grid;place-items:center;border-radius:13px;background:#e8f4ed;color:#236b4d;font-size:25px;flex:0 0 auto}.entry-arrow{font-size:23px;color:#4e836a}.entry-footnote{margin:20px 0 0;color:#627266;line-height:1.7;font-size:12px}.entry-current-user{display:grid;gap:14px;padding:16px;border-radius:14px;background:#f2f8f4}.entry-current-user .btn{text-align:center}.entry-switch-link{font-size:13px}.login-mode-head{display:flex;flex-wrap:wrap;align-items:center;justify-content:space-between;gap:8px;margin:0 0 15px}.entry-back{color:#386e56;font-size:13px}
.cashier-smartpay-details{padding:12px 16px!important}.cashier-smartpay-details>summary{cursor:pointer;display:flex;align-items:center;justify-content:space-between;gap:10px;flex-wrap:wrap;list-style:none;color:#205744}.cashier-smartpay-details>summary::-webkit-details-marker{display:none}.cashier-smartpay-details>summary:after{content:'⌄';font-size:20px}.cashier-smartpay-details[open]>summary:after{content:'⌃'}.cashier-smartpay-details>summary small{color:#667568}.cashier-smartpay-inside{padding-top:14px}.cashier-smartpay-details .payment-qr-stage{min-width:0}
@media(max-width:1024px){.modern-app-v2:not(.classroom-session) .main,.modern-app-v2:not(.classroom-session) .content{min-width:0;max-width:100%;overflow-wrap:anywhere}.modern-app-v2:not(.classroom-session) .card,.modern-app-v2:not(.classroom-session) .cashier-grid,.modern-app-v2:not(.classroom-session) .finance-operation-grid{min-width:0}.modern-app-v2 .top-actions>*,.modern-app-v2 .topbar>*{min-width:0}.modern-app-v2 .payment-qr-stage{min-width:0}}
@media(max-width:700px){.app-entry-brand{align-items:flex-start;gap:12px}.app-entry-logo{width:70px;height:68px}.app-entry-option{padding:14px 11px;gap:10px}.app-entry-option strong{font-size:15px}.app-entry-option small{font-size:12px}.entry-symbol{width:40px;height:40px;flex-basis:40px}.app-entry-shell{border-radius:18px}.modern-app-v2:not(.classroom-session) .topbar{gap:6px!important}.modern-app-v2:not(.classroom-session) .top-actions .school-switch{flex:1 1 130px}.modern-app-v2:not(.classroom-session) .top-actions .school-switch select{max-width:100%!important}.modern-app-v2:not(.classroom-session) .top-actions .user-chip{display:none}.modern-app-v2 .payment-share-buttons{display:grid;grid-template-columns:repeat(2,minmax(0,1fr));gap:8px}.modern-app-v2 .payment-share-buttons>*{min-width:0;overflow-wrap:anywhere}.modern-app-v2 .payment-qr-frame img{max-width:100%;height:auto}.modern-app-v2:not(.classroom-session) .table-wrap{max-width:100%;overflow-x:auto}.modern-app-v2:not(.classroom-session) .table-wrap>table{min-width:600px}.cashier-smartpay-details>summary{align-items:flex-start;flex-direction:column}}
@media(max-width:420px){.app-entry-logo{width:54px;height:54px}.app-entry-option .entry-arrow{display:none}.modern-app-v2 .payment-share-buttons{grid-template-columns:1fr}.modern-app-v2 .finance-kpi-strip{grid-template-columns:1fr!important}}

/* v2.7.14.6 — global search and unified registration-link sharing */
.registration-share-box{margin-top:10px}.registration-share-box>label{display:block;font-weight:850;margin-bottom:7px}.registration-share-row{display:grid;grid-template-columns:minmax(220px,1fr) auto auto auto auto auto;gap:8px;align-items:center}.registration-share-input{direction:ltr;text-align:left;min-width:0}.registration-share-status{min-height:18px;margin-top:5px;font-size:12px;color:#267052}.registration-native-share[hidden]{display:none!important}
.global-search-page{display:grid;gap:16px}.global-search-hero{display:grid;grid-template-columns:minmax(0,1fr) minmax(380px,.9fr);gap:24px;align-items:center}.global-search-hero h2{margin:4px 0 7px;font-size:26px}.global-search-form{display:grid;grid-template-columns:auto minmax(0,1fr) auto;gap:8px;align-items:center}.global-search-form>span{font-size:26px;color:var(--muted)}.global-search-form input{min-width:0}.global-search-summary{font-size:13px;color:var(--muted);padding-inline:4px}.global-search-groups{display:grid;grid-template-columns:repeat(2,minmax(0,1fr));gap:16px;align-items:start}.global-search-group{padding:0;overflow:hidden}.global-search-group-head{display:flex;align-items:center;justify-content:space-between;gap:12px;padding:16px 18px;border-bottom:1px solid var(--line);background:#fafcfb}.global-search-group-head h2{margin:0;font-size:18px;display:flex;gap:8px;align-items:center}.global-search-results{display:grid}.global-search-result{display:flex;justify-content:space-between;align-items:center;gap:16px;padding:14px 18px;border-bottom:1px solid #edf1ef;text-decoration:none;color:inherit;background:#fff}.global-search-result:last-child{border-bottom:0}.global-search-result:hover{background:#f7fbf9}.global-search-result-main{display:grid;gap:3px;min-width:0}.global-search-result-main b{font-size:15px}.global-search-result-main small,.global-search-result-main span{color:var(--muted);font-size:12px;overflow-wrap:anywhere}.global-search-result-side{display:flex;align-items:center;gap:10px;white-space:nowrap}.global-search-result-side em{font-style:normal;font-size:11px;padding:4px 8px;border-radius:999px;background:#eef5f2;color:#2b6753;font-weight:800}.global-search-result-side strong{font-size:12px;color:#2d7158}
@media(max-width:1050px){.registration-share-row{grid-template-columns:1fr auto auto auto}.registration-share-input{grid-column:1/-1}.global-search-hero{grid-template-columns:1fr}.global-search-groups{grid-template-columns:1fr}}
@media(max-width:640px){.registration-share-row{grid-template-columns:1fr 1fr}.registration-share-input{grid-column:1/-1}.registration-share-row .btn{width:100%;text-align:center}.global-search-form{grid-template-columns:1fr}.global-search-form>span{display:none}.global-search-result{align-items:flex-start;flex-direction:column}.global-search-result-side{width:100%;justify-content:space-between}}

/* v2.8.2 — task center and urgent reminders */
.task-center-list{display:grid;gap:10px}.task-center-card{display:grid;grid-template-columns:minmax(0,1fr) auto;gap:16px;align-items:center;padding:15px;border:1px solid var(--line);border-radius:15px;background:#fff}.task-center-card.priority-important{border-inline-start:4px solid #d6a740;background:#fffdf7}.task-center-card.priority-urgent{border-inline-start:4px solid #d94a55;background:#fff8f8}.task-center-card.is-late{box-shadow:0 0 0 2px rgba(217,74,85,.06)}.task-center-title{display:flex;align-items:center;gap:8px;flex-wrap:wrap}.task-center-title b{font-size:15px}.task-priority-chip{font-size:11px;font-weight:800;padding:4px 8px;border-radius:999px;background:#eef4f1;color:#31584b}.priority-important .task-priority-chip{background:#fff0c8;color:#805b00}.priority-urgent .task-priority-chip{background:#ffe0e3;color:#a22631}.task-center-main p{margin:8px 0;color:var(--text);line-height:1.7}.task-center-meta{display:flex;gap:12px;flex-wrap:wrap;margin-top:7px;color:var(--muted);font-size:12px}.task-center-actions{display:flex;align-items:center;justify-content:flex-end;gap:7px;flex-wrap:wrap}.task-center-actions form{margin:0}.urgent-task-overlay{position:fixed;inset:0;background:rgba(13,30,25,.42);backdrop-filter:blur(3px);z-index:1000;display:grid;place-items:center;padding:18px}.urgent-task-dialog{width:min(620px,96vw);background:#fff;border:1px solid #f2c3c7;border-radius:22px;box-shadow:0 24px 80px rgba(0,0,0,.22);padding:24px;display:grid;grid-template-columns:auto 1fr;gap:16px;align-items:start}.urgent-task-icon{width:48px;height:48px;border-radius:50%;background:#d94a55;color:#fff;display:grid;place-items:center;font-size:25px;font-weight:900}.urgent-task-copy h2{margin:4px 0 8px}.urgent-task-copy p{margin:0;line-height:1.75}.urgent-task-actions{grid-column:1/-1;display:flex;gap:8px;justify-content:flex-end;flex-wrap:wrap}.urgent-task-actions form{margin:0}@media(max-width:720px){.task-center-card{grid-template-columns:1fr}.task-center-actions{justify-content:flex-start}.urgent-task-dialog{grid-template-columns:1fr}.urgent-task-icon{width:42px;height:42px}.urgent-task-actions{justify-content:stretch}.urgent-task-actions>*{flex:1}.urgent-task-actions .btn,.urgent-task-actions button{width:100%}}
