.portal-v2{--bg:#f3f6fb;--surface:#ffffffed;--text:#182b47;--muted:#5e7088;--line:#dce4ef;--green:#117c42;--soft:#eaf4ee;--accent:#183f94;--shadow:0 4px 24px #1c385307;background:radial-gradient(ellipse at 90% 0%, var(--soft), transparent 45%), var(--bg);color:var(--text);--lightningcss-light:initial;--lightningcss-dark: ;color-scheme:light;max-width:100%;min-height:100dvh;font-family:Segoe UI,Arial,sans-serif;font-size:14px;line-height:1.5;overflow-x:clip}.portal-v2 h1,.portal-v2 h2,.portal-v2 h3{color:var(--text);letter-spacing:-.035em;font-weight:650}.portal-v2 .main-shell{flex-direction:column;width:calc(100% - 264px);min-width:0;max-width:calc(100% - 264px);margin-left:264px;display:flex}.portal-sidebar{z-index:40;border-right:1px solid var(--line);background:var(--surface);-webkit-backdrop-filter:blur(24px);backdrop-filter:blur(24px);flex-direction:column;width:264px;padding:26px 14px 14px;display:flex;position:fixed;inset:0 auto 0 0}.portal-sidebar>.school-brand{gap:9px;margin:0 8px 24px;font-size:22px}.portal-sidebar .school-brand small{font-size:8px}.navigation-search{border:1px solid var(--line);background:var(--bg);color:var(--muted);border-radius:10px;align-items:center;gap:8px;margin:0 6px 14px;padding:0 10px;display:flex}.navigation-search input{width:100%;min-width:0;color:var(--text);background:0 0;border:0;padding:12px 0;font-size:12px}.portal-navigation{overscroll-behavior:contain;scrollbar-width:thin;padding:0 4px 8px;overflow-y:auto}.nav-group{margin:0 0 17px}.nav-group h2{letter-spacing:.11em;color:var(--muted);margin:14px 10px 7px;font-size:9px}.portal-nav-link{border:1px solid #0000;border-radius:11px;align-items:center;gap:12px;min-height:50px;padding:9px 12px;font-weight:600;transition:background .15s,color .15s;display:flex}.portal-nav-link svg{color:var(--muted);flex-shrink:0}.portal-nav-link small{color:var(--muted);margin-top:1px;font-size:10px;font-weight:400;line-height:1.4;display:block}.portal-nav-link.active{color:var(--accent);background:color-mix(in srgb,var(--accent) 8%,var(--surface));border-color:color-mix(in srgb,var(--accent) 12%,var(--line))}.portal-nav-link.active svg{color:var(--accent)}.nav-active-dot{background:var(--green);border-radius:50%;width:5px;height:5px;margin-left:auto}.sidebar-home{border-top:1px solid var(--line);color:var(--muted);justify-content:space-between;align-items:center;margin-top:auto;padding:14px 12px 3px;font-size:12px;display:flex}.nav-no-results{color:var(--muted);padding:16px;font-size:13px}.portal-mobile-bar{display:none}.navigation-dialog{background:var(--surface);width:min(360px,92vw);max-width:none;height:100dvh;max-height:100dvh;color:var(--text);border:0;border-radius:20px 0 0 20px;margin:0 0 0 auto;padding:20px 16px;box-shadow:-15px 0 80px #10234333}.navigation-dialog[open]{flex-direction:column;display:flex}.navigation-dialog::backdrop{-webkit-backdrop-filter:blur(5px);backdrop-filter:blur(5px);background:#101d4266}.navigation-dialog header{justify-content:space-between;align-items:center;margin-bottom:22px;display:flex}.navigation-dialog h2{margin:0;font-size:21px}.navigation-dialog .navigation-search{flex-shrink:0}.portal-v2 .main-shell .topbar{z-index:25;border:0;border-bottom:1px solid var(--line);background:var(--surface);min-height:88px;box-shadow:none;-webkit-backdrop-filter:blur(20px);backdrop-filter:blur(20px);border-radius:0;flex-wrap:nowrap;gap:20px;margin:0;padding:16px 32px;position:sticky;top:0}.portal-v2 .workspace-heading{color:var(--muted);flex-direction:column;flex:1;align-items:flex-start;gap:3px;font-size:11px;display:flex}.workspace-heading strong{color:var(--text);font-size:14px;font-weight:600}.portal-v2 .academic-year-badge{border:1px solid var(--line);background:var(--bg);border-radius:10px;gap:3px;width:auto;min-width:158px;padding:8px 13px}.portal-v2 .academic-year-label{letter-spacing:.04em;color:var(--muted);align-items:center;gap:5px;font-size:9px;display:flex}.portal-v2 .academic-year-badge select{width:auto;min-height:26px;color:var(--text);cursor:pointer;background:0 0;border:0;padding:0;font-size:13px;font-weight:700}.portal-v2 .academic-year-badge strong{color:var(--text);font-size:13px}.portal-v2 .user-menu{flex-shrink:0;font-size:12px}.portal-v2 .user-menu small{font-size:10px}.portal-v2 .avatar{background:var(--soft);color:var(--green);border:1px solid var(--line);flex-shrink:0;width:38px;height:38px;font-weight:700}.portal-v2 .theme-picker{border:1px solid var(--line);width:auto;min-height:40px;color:var(--muted);background:var(--bg);border-radius:10px;padding:3px;display:flex}.portal-v2 .theme-picker button{width:32px;min-height:32px;color:inherit;background:0 0;border:0;border-radius:7px;place-items:center;padding:0;display:grid}.portal-v2 .theme-picker button:hover{color:var(--text);background:color-mix(in srgb,var(--surface) 72%,var(--soft))}.portal-v2 .theme-picker button.active{color:#fff;background:var(--accent);box-shadow:0 2px 6px color-mix(in srgb,var(--accent) 28%,transparent)}.portal-v2 .dashboard{flex:1;width:100%;min-width:0;max-width:1600px;margin:0 auto;padding:28px 32px 48px;overflow-x:hidden}.portal-v2 .dashboard>*{min-width:0;max-width:100%}.portal-v2 .page-heading{flex-wrap:wrap;gap:20px;margin:22px 0 26px}.portal-v2 .page-heading h1,.portal-v2 .finance-heading h1{letter-spacing:-.04em;margin:0 0 8px;font-size:clamp(28px,3vw,38px);line-height:1.2}.portal-v2 .page-heading p,.portal-v2 .finance-heading p{max-width:720px;color:var(--muted);font-size:14px;line-height:1.65}.portal-v2 .eyebrow{letter-spacing:.13em;margin-bottom:9px;font-size:10px}.title-translation{color:var(--green);margin:0 0 6px;font-size:13px;font-weight:600;display:block}.workspace-guide{border:1px solid var(--line);background:color-mix(in srgb,var(--surface) 65%,transparent);color:var(--muted);border-radius:12px;margin-bottom:24px}.workspace-guide summary{cursor:pointer;align-items:center;gap:9px;padding:12px 16px;font-size:12px;list-style:none;display:flex}.workspace-guide summary::-webkit-details-marker{display:none}.workspace-guide summary>svg:last-child{margin-left:auto;transition:transform .2s}.workspace-guide[open] summary>svg:last-child{transform:rotate(180deg)}.workspace-guide summary span span{color:var(--green)}.workspace-guide>div{padding:0 16px 18px}.workspace-guide p{max-width:780px;font-size:14px;line-height:1.7}.workspace-guide ol{flex-wrap:wrap;gap:22px;margin:0;padding:0;list-style:none;display:flex}.workspace-guide li{align-items:center;gap:8px;font-size:12px;display:flex}.workspace-guide li span{background:var(--soft);width:24px;height:24px;color:var(--green);border-radius:50%;place-items:center;font-weight:700;display:grid}.portal-v2 :is(.primary-button,.secondary-button,.icon-button){border-radius:11px;justify-content:center;align-items:center;gap:8px;min-height:44px;font-size:13px;font-weight:600;transition:background .18s,box-shadow .18s,transform .18s;display:inline-flex}.portal-v2 .primary-button{color:#fff;background:#117c42;border:1px solid #117c42;padding:12px 19px;box-shadow:0 3px 8px #117c421e}.portal-v2 .primary-button:hover:not(:disabled){background:#0b6736;box-shadow:0 5px 14px #117c4233}.portal-v2 .secondary-button{background:var(--surface);color:var(--text);border:1px solid var(--line);padding:11px 16px}.portal-v2 .icon-button{background:var(--surface);width:44px;color:var(--muted);border-color:var(--line);flex-shrink:0}.portal-v2 :is(button,a):focus-visible,.portal-v2 summary:focus-visible,.portal-v2 :is(input,select,textarea):focus-visible{outline-offset:3px;outline:3px solid #648ded}.portal-v2 button:disabled{cursor:not-allowed;opacity:.5}.portal-v2 :is(.glass-card,.card,.stat-card,.finance-form,.finance-empty){border:1px solid var(--line);background:var(--surface);box-shadow:var(--shadow);-webkit-backdrop-filter:blur(14px);backdrop-filter:blur(14px);border-radius:18px}.portal-v2 .glass-card{margin-bottom:22px;padding:24px;overflow:hidden}.portal-v2 .card{padding:24px}.portal-v2 :is(.card,.glass-card)>p{color:var(--muted);font-size:13px;line-height:1.7}.portal-v2 .welcome-banner{background:radial-gradient(at 84% 30%,#236853aa,#0000 58%),linear-gradient(110deg,#132f72,#112b54);border-radius:20px;min-height:206px;margin:0 0 22px;padding:24px 32px;position:relative;box-shadow:0 10px 28px #142e7115}.portal-v2 .welcome-banner h2{color:#fff;margin:10px 0;font-family:inherit;font-size:32px;font-weight:650}.portal-v2 .welcome-banner p{color:#d1dfec;max-width:460px;font-size:14px}.portal-v2 .welcome-banner .small-tag{color:#acdcc2;font-size:10px}.quick-actions{grid-template-columns:repeat(3,minmax(0,1fr));gap:12px;margin:0 0 26px;display:grid}.quick-action{border:1px solid var(--line);background:var(--surface);border-radius:14px;align-items:center;gap:13px;padding:18px;transition:transform .18s,box-shadow .18s;display:flex}.quick-action>svg:first-child{color:var(--green);flex-shrink:0}.quick-action>svg:last-child{color:var(--muted);flex-shrink:0;margin-left:auto}.quick-action strong{font-size:13px;display:block}.quick-action small{color:var(--muted);margin-top:3px;font-size:11px;display:block}.portal-v2 .stat-card{padding:21px}.portal-v2 .stat-label{font-size:12px;font-weight:500}.portal-v2 .stat-label>span{background:var(--soft);color:var(--green);border-radius:11px;padding:9px}.portal-v2 .stat-card strong{font-variant-numeric:tabular-nums;margin:14px 0 9px;font-size:32px;font-weight:650;line-height:1.15}.portal-v2 .stat-card small{font-size:11px}.portal-v2 .section-heading{margin:24px 0 14px}.portal-v2 .section-heading h2{font-size:19px}.portal-v2 .section-heading>span{font-size:12px}.portal-v2 .attendance-stats{grid-template-columns:repeat(auto-fit,minmax(125px,1fr));gap:10px;margin:22px 0;display:grid}.portal-v2 .attendance-stats>div{border:1px solid var(--line);background:var(--bg);border-radius:12px;padding:16px}.portal-v2 .attendance-stats strong{color:var(--text);font-size:25px;font-weight:650}.portal-v2 .attendance-stats span{color:var(--muted);text-transform:capitalize;font-size:11px}.portal-v2 .record-toolbar{flex-wrap:wrap;gap:12px;margin-bottom:20px}.portal-v2 .search-form{background:var(--bg);border:1px solid var(--line);border-radius:11px;flex:1;min-width:180px;max-width:440px}.portal-v2 .search-form input{min-width:0;color:var(--text);background:0 0;border:0;padding:12px;font-size:14px}.portal-v2 .search-form button{background:0 0;border:0}.portal-v2 .record-count{color:var(--muted);margin-left:auto;font-size:12px}.portal-v2 .table-scroll,.portal-v2 .finance-table-wrap{overscroll-behavior-x:contain;border:1px solid var(--line);border-radius:12px;width:100%;min-width:0;max-width:100%;display:block;overflow:auto hidden}.portal-v2 .attendance-panel{min-width:0;max-width:100%}.portal-v2 .student-import-preview{scrollbar-gutter:stable;width:100%;margin:18px 0 20px}.portal-v2 .student-import-downloads{flex-wrap:wrap;gap:10px;margin:16px 0 4px;display:flex}.portal-v2 .student-import-downloads .secondary-button{justify-content:center;align-items:center;display:inline-flex}.portal-v2 .student-import-table{min-width:980px}.portal-v2 .student-import-table :is(th,td):nth-child(2){white-space:normal;min-width:210px}.portal-v2 .student-import-table :is(th,td):is(:nth-child(4),:nth-child(5),:nth-child(7)){white-space:normal;min-width:145px}.portal-v2 .records-table,.portal-v2 .finance-table{border-collapse:collapse;width:100%;font-size:13px}.portal-v2 :is(.records-table,.finance-table) th{color:var(--muted);background:var(--bg);letter-spacing:.04em;text-transform:uppercase;border-bottom:1px solid var(--line);padding:14px 16px;font-size:10px;font-weight:700}.portal-v2 :is(.records-table,.finance-table) td{color:var(--text);border-bottom:1px solid var(--line);padding:15px 16px;line-height:1.5}.portal-v2 :is(.records-table,.finance-table) tr:last-child td{border-bottom:0}.portal-v2 :is(.records-table,.finance-table) tbody tr:hover{background:color-mix(in srgb,var(--soft) 55%,transparent)}.portal-v2 .table-actions{flex-wrap:wrap;gap:7px;display:flex}.portal-v2 .table-actions :is(a,button){border-radius:8px;min-height:36px;padding:7px 10px;font-size:12px}.portal-v2 .badge{background:var(--soft);color:var(--green);text-transform:capitalize;border-radius:7px;padding:4px 9px;font-size:11px;font-weight:600;display:inline-flex}.portal-v2 .badge[data-status=archived],.portal-v2 .badge[data-status=inactive]{background:var(--bg);color:var(--muted)}.portal-v2 .record-dialog{background:var(--surface);width:calc(100% - 32px);max-width:800px;max-height:90dvh;color:var(--text);border:1px solid var(--line);border-radius:20px;padding:0}.portal-v2 .dialog-heading{border-bottom:1px solid var(--line);margin:0;padding:22px 26px}.portal-v2 .dialog-heading h2{margin:0;font-size:25px}.portal-v2 .dialog-heading .eyebrow{font-size:9px}.portal-v2 .record-dialog form>.form-introduction{color:var(--muted);margin:0;padding:18px 26px 0;font-size:12px}.portal-v2 .record-form{gap:24px;padding:24px 26px}.portal-v2 .field-translation{color:var(--muted);margin-top:3px;font-size:11px;font-weight:400;display:block}.portal-v2 .record-form label{margin-bottom:8px;font-size:13px;font-weight:600;display:block}.portal-v2 :is(.record-form,.attendance-panel,.finance-fields,.class-fee-row,.class-payment-entry) :is(input:not([type=checkbox]),select,textarea),.portal-v2 .status-filter,.portal-v2 .finance-search input{background:var(--bg);width:100%;min-width:0;max-width:100%;color:var(--text);border:1px solid var(--line);min-height:44px;font:inherit;border-radius:10px;padding:11px 12px}.portal-v2 .status-filter{width:auto}.portal-v2 .record-form textarea{resize:vertical;min-height:100px}.portal-v2 .reference-field input{margin-bottom:8px;font-size:12px}.portal-v2 .reference-field>small{margin-top:7px;font-size:11px;display:block}.portal-v2 .dialog-actions{z-index:2;border-top:1px solid var(--line);background:var(--surface);-webkit-backdrop-filter:blur(20px);backdrop-filter:blur(20px);margin:0;padding:17px 26px;position:sticky;bottom:0}.portal-v2 :is(.error-message,.finance-error){color:#902c2c;background:#fff0ef;border:1px solid #e9b4b4;border-radius:10px;padding:14px}.portal-v2 :is(.notice-message,.finance-notice){color:#17673a;background:#e9f6ee;border:1px solid #b4d9c2;border-radius:10px;padding:14px}.portal-v2 .record-dialog .error-message{margin:0 26px 16px}.portal-v2 .empty-state{padding:48px 20px}.portal-v2 .empty-state h3{font-size:18px}.portal-v2 .empty-state p{font-size:13px}.portal-v2 .finance-tabs{background:var(--surface);border:1px solid var(--line);border-radius:12px;align-items:center;gap:5px;padding:5px}.portal-v2 .finance-tabs a{border:0;border-radius:8px;padding:11px 15px;font-size:13px}.portal-v2 .finance-tabs a[aria-current=page]{color:#fff;background:#183f94}.portal-v2 .finance-tabs small{color:var(--muted);padding:8px 12px}.portal-v2 .finance-heading{margin-top:22px}.portal-v2 .finance-table td{min-width:110px}.portal-v2 .finance-form{padding:24px}.portal-v2 .finance-form h2{margin:0 0 12px;font-size:22px}.portal-v2 .finance-form h3{margin:0 0 14px;font-size:18px}.portal-v2 .finance-form>p{color:var(--muted);margin-bottom:20px;line-height:1.7}.portal-v2 .finance-empty h2{margin:0 0 10px;font-size:19px}.portal-v2 .finance-empty p{color:var(--muted);margin:0}.portal-v2 .class-fee-row{background:var(--surface)}.portal-v2 .class-fee-row>div{font-weight:600}.portal-v2 .class-fee-row small{font-weight:400}.portal-v2 .class-payment-student{background:var(--surface)}.portal-v2 .class-table :is(th,td):is(:nth-child(4),:nth-child(5),:nth-child(6)){display:none}.portal-v2 .account-form{margin-top:22px}.portal-v2 .account-form :is(input,select){border:1px solid var(--line);background:var(--bg);width:100%;min-width:0;min-height:46px;color:var(--text);border-radius:10px;padding:11px 12px}.portal-v2 .profile-details{gap:16px}.portal-v2 .profile-details>div{border:1px solid var(--line);background:var(--bg);border-radius:12px;padding:16px}.portal-v2 .profile-details dt{color:var(--muted);margin-bottom:6px;font-size:11px}.portal-v2 .profile-details dd{overflow-wrap:anywhere;margin:0}.portal-v2 .attendance-actions{flex-wrap:wrap;align-items:center;gap:10px;margin:20px 0;display:flex}.portal-v2 .exam-list button{background:var(--surface);color:var(--text);border:1px solid var(--line);border-radius:14px;min-height:140px}.portal-v2 .exam-list button[aria-pressed=true]{border-color:var(--accent);box-shadow:0 0 0 2px color-mix(in srgb,var(--accent) 15%,transparent)}.portal-v2 .workspace-footer{border-top:1px solid var(--line);color:var(--muted);flex-wrap:wrap;justify-content:space-between;gap:16px;padding:20px 32px;font-size:11px;display:flex}.skip-link{z-index:100;color:#fff;background:#183f94;border-radius:10px;padding:12px 20px;position:fixed;top:8px;left:12px;transform:translateY(-150%)}.skip-link:focus{transform:none}.school-depth{perspective:700px;flex-shrink:0;width:300px;height:220px;position:relative}.depth-stack{transform-style:preserve-3d;transform:rotateX(var(--tilt-x,0deg)) rotateY(var(--tilt-y,0deg));transition:transform .4s ease-out;position:absolute;inset:0}.depth-crest{background:#ffffff30;border:1px solid #fff8;border-radius:50%;width:132px;height:132px;padding:7px;animation:7s ease-in-out infinite crest-float;position:absolute;top:44px;left:84px;transform:translateZ(36px);box-shadow:0 18px 45px #06194b66,inset 0 2px 8px #fff8}.depth-crest img{border-radius:50%;width:100%;height:100%}.depth-orbit{border:1px solid #b7d0e657;border-radius:50%;position:absolute;inset:20px;transform:rotateX(58deg)rotate(-23deg);box-shadow:0 2px 1px #fff2}.depth-orbit-two{inset:38px 0;transform:rotateY(48deg)rotate(36deg)}.depth-tile{color:#e0f5ed;-webkit-backdrop-filter:blur(6px);backdrop-filter:blur(6px);background:linear-gradient(135deg,#ffffff45,#b9e8d511);border:1px solid #ffffff75;border-radius:16px;place-items:center;width:58px;height:58px;display:grid;position:absolute;box-shadow:0 12px 24px #071b4533,inset 0 1px #fff8}.depth-tile-one{top:35px;left:20px;transform:translateZ(55px)rotate(-14deg)}.depth-tile-two{bottom:16px;right:12px;transform:translateZ(65px)rotate(13deg)}.depth-dot{background:#e8b962;border-radius:50%;width:13px;height:13px;position:absolute;top:25px;right:27px;transform:translateZ(26px);box-shadow:0 3px 10px #e5b05455}@keyframes crest-float{50%{transform:translateZ(36px)translateY(-8px)}}@media (hover:hover) and (prefers-reduced-motion:no-preference){.quick-action:hover{transform:translateY(-3px);box-shadow:0 8px 20px #18335e10}}@media (max-width:1200px){.portal-v2 .main-shell .topbar{padding-inline:24px}.portal-v2 .user-identity{display:none}.portal-v2 .dashboard{padding-inline:24px}.quick-action{gap:9px;padding:14px}}@media (max-width:1000px){.portal-sidebar{display:none}.portal-v2{display:block}.portal-v2 .main-shell{width:100%;max-width:100%;margin-left:0}.portal-mobile-bar{background:var(--surface);border-bottom:1px solid var(--line);justify-content:space-between;align-items:center;gap:12px;padding:12px 20px;display:flex}.portal-mobile-bar .school-brand{gap:8px;font-size:22px}.portal-mobile-bar .school-brand img{width:40px;height:40px}.portal-mobile-bar .school-brand small{font-size:8px}.portal-v2 .main-shell .topbar{min-height:76px;padding:12px 20px}}@media (max-width:600px){.portal-v2 .dashboard{padding:18px 16px 32px}.portal-v2 .workspace-heading{display:none}.portal-v2 .main-shell .topbar{justify-content:space-between;gap:10px;padding:10px 16px}.portal-v2 .main-shell .topbar .academic-year-badge{width:auto;min-width:136px;padding:6px 10px}.portal-v2 .main-shell .topbar .user-menu{flex-wrap:nowrap;gap:7px;width:auto}.portal-v2 .avatar{display:none}.portal-v2 .theme-picker{width:auto}.portal-v2 .page-heading{gap:16px;margin:20px 0}.portal-v2 .page-heading p,.portal-v2 .finance-heading p{font-size:13px}.portal-v2 .page-heading>.primary-button{width:100%}.portal-v2 .welcome-banner{min-height:0;padding:24px}.portal-v2 .welcome-banner h2{font-size:27px}.portal-v2 .welcome-banner .school-depth{display:none}.quick-actions{grid-template-columns:1fr;gap:8px}.quick-action{padding:14px 16px}.quick-action strong{font-size:14px}.quick-action small{margin-top:0}.portal-v2 .stats-grid{grid-template-columns:repeat(2,minmax(0,1fr));gap:10px}.portal-v2 .stat-card{min-width:0;padding:16px}.portal-v2 .stat-label{font-size:11px}.portal-v2 .stat-label>span{padding:5px}.portal-v2 .stat-label svg{width:16px}.portal-v2 .stat-card strong{overflow-wrap:anywhere;font-size:26px}.portal-v2 :is(.glass-card,.card,.finance-form){border-radius:14px;padding:16px}.portal-v2 .record-toolbar{align-items:stretch}.portal-v2 .search-form{flex-basis:100%;max-width:none}.portal-v2 .record-count{align-self:center}.portal-v2 .table-scroll{border:0}.portal-v2 .records-table thead{display:none}.portal-v2 .records-table,.portal-v2 .records-table tbody{min-width:0;display:block}.portal-v2 .records-table tr{border:1px solid var(--line);background:var(--surface);border-radius:12px;margin:0 0 12px;padding:8px 12px;display:block}.portal-v2 .records-table td{border-bottom:1px solid var(--line);text-align:right;overflow-wrap:anywhere;justify-content:space-between;align-items:center;gap:12px;min-width:0;max-width:none;padding:10px 0;font-size:13px;display:flex}.portal-v2 .records-table td:before{content:attr(data-label);color:var(--muted);text-align:left;flex-shrink:0;max-width:40%;font-size:11px;font-weight:500}.portal-v2 .records-table td:last-child{border-bottom:0}.portal-v2 .records-table .table-actions{justify-content:flex-end}:is(.portal-v2 .records-table td:has(input),.portal-v2 .records-table td:has(select)){flex-wrap:wrap}.portal-v2 .records-table td :is(input,select){width:100%;font-size:16px}.portal-v2 .student-import-table{min-width:0}.portal-v2 .record-dialog{border-radius:16px;width:calc(100% - 16px);max-height:94dvh}.portal-v2 .dialog-heading,.portal-v2 .record-form{padding:20px}.portal-v2 .record-form{grid-template-columns:1fr;gap:20px}.portal-v2 .record-dialog form>.form-introduction{padding:16px 20px 0}.portal-v2 .dialog-actions{padding:14px 20px max(14px,env(safe-area-inset-bottom))}.portal-v2 .dialog-actions .primary-button{flex:1}.portal-v2 .finance-fields{grid-template-columns:1fr;gap:18px}.portal-v2 .attendance-filters{grid-template-columns:1fr}.portal-v2 .attendance-actions>.primary-button,.portal-v2 .student-import-downloads .secondary-button{width:100%}.portal-v2 .finance-tabs{flex-wrap:wrap}.portal-v2 .finance-tabs a{padding:10px 12px}.portal-v2 .class-fee-row{gap:12px;padding:14px}.portal-v2 .workspace-footer{padding:18px 16px;font-size:10px}.portal-v2 .workspace-footer span span{margin-top:4px;display:block}.portal-v2 input,.portal-v2 select,.portal-v2 textarea{font-size:16px!important}}@media (max-width:360px){.portal-v2 .main-shell .topbar .academic-year-badge{min-width:124px}.portal-v2 .theme-picker{width:auto}}@media (prefers-color-scheme:dark){:root:not([data-theme=light]) .portal-v2{--bg:#111b2c;--surface:#19263bed;--text:#e6edf7;--muted:#a2b3c9;--line:#2b3c53;--green:#8bd5ab;--soft:#203c37;--accent:#a5beff;--shadow:0 4px 22px #00000015;--lightningcss-light: ;--lightningcss-dark:initial;color-scheme:dark}}.portal-v2 .school-brand{color:var(--text)}.portal-v2 .school-brand .brand-accent{color:var(--green)}@media (prefers-reduced-motion:reduce){.portal-v2 *,.school-depth *{scroll-behavior:auto!important;transition:none!important;animation:none!important}.depth-stack{transform:none}}@media print{.portal-sidebar,.portal-mobile-bar,.portal-v2 .topbar,.workspace-guide,.workspace-footer,.quick-actions,.school-depth{display:none!important}.portal-v2 .main-shell{margin:0}.portal-v2{color:#000;background:#fff}}.public-navigation,.public-desktop-links{align-items:center;gap:24px;display:flex}.public-desktop-links a{color:#193b61;font-size:13px;font-weight:600}.public-signin-button{color:#fff;white-space:nowrap;background:#117c42;border-radius:30px;align-items:center;gap:8px;min-height:46px;padding:12px 21px;font-size:14px;font-weight:600;display:inline-flex;box-shadow:0 5px 12px #117c4225}.public-mobile-links{display:none;position:relative}.public-mobile-links summary{cursor:pointer;color:#193b61;border:1px solid #ccd5dd;border-radius:50%;place-items:center;width:44px;height:44px;list-style:none;display:grid}.public-mobile-links summary::-webkit-details-marker{display:none}.public-mobile-links nav{-webkit-backdrop-filter:blur(20px);backdrop-filter:blur(20px);background:#fffef9f5;border:1px solid #dae1e9;border-radius:18px;width:240px;padding:10px;position:absolute;top:56px;right:0;box-shadow:0 16px 50px #152d5522}.public-mobile-links nav a{color:#193b61;border-radius:10px;padding:13px;font-size:14px;display:block}.public-mobile-links nav a:hover{background:#eaf4ee}.sign-in-v2{--lightningcss-light:initial;--lightningcss-dark: ;color-scheme:light;color:#182b47;background:radial-gradient(at 12% 55%,#dcebe766,#0000 50%),#f3f6fb;flex-direction:column;min-height:100dvh;font-family:Segoe UI,Arial,sans-serif;display:flex}.signin-header{justify-content:space-between;align-items:center;gap:16px;width:100%;max-width:1320px;margin:auto;padding:26px 40px;display:flex}.signin-header .school-brand{gap:11px;font-size:26px}.signin-header .school-brand img{width:48px;height:48px}.signin-header .school-brand small{font-size:10px}.signin-back{background:#ffffffb0;border:1px solid #dce4ef;border-radius:10px;align-items:center;gap:8px;padding:11px 15px;font-size:13px;display:flex}.signin-layout{flex:1;grid-template-columns:1.12fr 1fr;align-items:center;gap:64px;width:100%;max-width:1240px;margin:20px auto 48px;padding:0 32px;display:grid}.signin-story{isolation:isolate;color:#fff;background:radial-gradient(at 75% 72%,#2f7569aa,#0000 65%),linear-gradient(130deg,#172e6f,#0e2949);border-radius:28px;padding:46px 40px 30px;position:relative;overflow:hidden;box-shadow:0 24px 55px #17306018}.signin-story:before{content:"";z-index:-1;filter:blur(18px);opacity:.045;background:url(/brand/school-logo.jpeg) 50%/90% no-repeat;position:absolute;inset:0}.signin-kicker{letter-spacing:.16em;color:#afdbc6;font-size:10px;font-weight:700}.signin-story h1{letter-spacing:-.045em;margin:26px 0 20px;font-size:clamp(36px,4vw,53px);font-weight:650;line-height:1.1}.signin-story h1 em{color:#b6e7c9;font-family:Georgia,serif;font-weight:400}.signin-story>p{color:#c6d8e3;max-width:440px;font-size:15px;line-height:1.8}.signin-story .school-depth{height:230px;margin:0 auto}.signin-features{border-top:1px solid #ffffff26;flex-wrap:wrap;gap:18px;padding-top:22px;display:flex}.signin-features span{color:#d7e4ed;align-items:center;gap:7px;font-size:11px;display:flex}.signin-features svg{color:#a9dfbc}.signin-form-panel{width:100%;max-width:440px;margin:auto;padding:28px 0}.signin-form-panel h2{letter-spacing:-.04em;color:#182b47;margin:8px 0 10px;font-size:31px;font-weight:650}.signin-form-panel>p{color:#62758a;font-size:14px}.signin-form-panel .title-translation{color:#117c42}.sign-in-v2 .login-form{gap:9px;margin-top:32px}.sign-in-v2 .login-form label{color:#182b47;margin-top:14px;font-size:13px;font-weight:600}.sign-in-v2 .login-form label span{color:#67798d;font-size:11px;font-weight:400}.sign-in-v2 .login-form input{color:#182b47;background:#fff;border:1px solid #d5dfea;border-radius:11px;min-height:52px;padding:15px;font-size:15px}.sign-in-v2 .login-form .password-field input{padding-right:50px}.sign-in-v2 .login-form input::placeholder{color:#78889a}.sign-in-v2 .login-form button[type=submit]{background:#117c42;border-radius:11px;min-height:52px;margin-top:24px;padding:15px 20px;font-size:14px;font-weight:600;box-shadow:0 5px 12px #117c421a}.signin-help{color:#597088;border-top:1px solid #dce4ef;gap:12px;margin-top:28px;padding:19px 0;display:flex}.signin-help svg{color:#117c42;flex-shrink:0}.signin-help p{margin:0;font-size:12px}.signin-help span{margin-top:4px;font-size:12px;line-height:1.6;display:block}.signin-footer{color:#6d7e91;border-top:1px solid #e0e7ef;flex-wrap:wrap;justify-content:space-between;gap:10px;padding:22px 40px;font-size:11px;display:flex}@media (max-width:1200px){.public-desktop-links{display:none}.public-mobile-links{display:block}.public-navigation{gap:10px}}@media (max-width:850px){.signin-layout{gap:28px;padding:0 24px}.signin-story{padding:32px 26px}.signin-story h1{font-size:37px}.signin-story .school-depth{width:260px;left:-10px}}@media (max-width:700px){.signin-header{padding:20px}.signin-header .school-brand{font-size:21px}.signin-header .school-brand img{width:39px;height:39px}.signin-header .school-brand small{font-size:8px}.signin-back{padding:11px;font-size:11px}.signin-layout{grid-template-columns:1fr;gap:0;margin:8px auto 24px;padding:0 20px}.signin-story{border-radius:20px;padding:24px}.signin-story h1{margin:16px 0 12px;font-size:33px}.signin-story>p{margin:0;font-size:13px;line-height:1.65}.signin-story .school-depth,.signin-features{display:none}.signin-form-panel{max-width:none;padding:30px 4px 0}.signin-form-panel h2{font-size:27px}.sign-in-v2 .login-form{margin-top:16px}.sign-in-v2 .login-form input{font-size:16px}.signin-footer{padding:20px;font-size:10px}}@media (max-width:400px){.public-signin-button{padding:11px 14px;font-size:12px}.public-signin-button svg{display:none}.public-navigation{gap:7px}.signin-back svg{display:none}}.student-reports{gap:20px;display:grid}.reports-page-header{justify-content:space-between;align-items:flex-start;gap:20px;display:flex}.reports-page-header h1{color:var(--text);margin:0;font-size:clamp(26px,3vw,34px)}.reports-page-header p{color:var(--muted);margin:5px 0 0}.reports-page-header nav{color:var(--muted);align-items:center;gap:9px;font-size:12px;display:flex}.reports-page-header nav a{color:var(--green)}.report-summary-grid{grid-template-columns:repeat(4,minmax(0,1fr));gap:14px;display:grid}.report-summary-grid article{border:1px solid var(--line);background:linear-gradient(135deg,color-mix(in srgb,var(--green) 9%,var(--surface)),var(--surface));min-height:105px;box-shadow:var(--shadow);border-radius:15px;align-items:center;gap:16px;padding:16px;display:flex}.report-summary-grid article:nth-child(3){background:linear-gradient(135deg,#fef3c755,var(--surface))}.report-summary-grid article:nth-child(4){background:linear-gradient(135deg,#dbeafe66,var(--surface))}.report-summary-grid article>span{background:color-mix(in srgb,var(--green) 12%,var(--surface));width:54px;height:54px;color:var(--green);border-radius:15px;flex:0 0 54px;place-items:center;display:grid}.report-summary-grid article:nth-child(3)>span{color:#a16207;background:#fef3c7}.report-summary-grid article:nth-child(4)>span{color:#1d4ed8;background:#dbeafe}.report-summary-grid svg{width:25px}.report-summary-grid small{color:var(--text);font-size:12px;display:block}.report-summary-grid strong{color:var(--text);margin-top:2px;font-size:27px;line-height:1;display:block}.report-summary-grid p{color:var(--muted);margin:5px 0 0;font-size:11px}.reports-filters{margin:0!important}.reports-filters>header,.reports-results>header,.report-form>header{align-items:center;gap:9px;margin-bottom:16px;display:flex}.reports-filters>header svg,.reports-results>header svg{width:18px;color:var(--green)}.reports-filter-grid{grid-template-columns:repeat(4,minmax(0,1fr));gap:14px 16px;display:grid}.reports-filter-grid label{color:var(--text);gap:7px;font-size:11px;font-weight:600;display:grid}.reports-filter-grid :is(input,select){border:1px solid var(--line);background:var(--surface);width:100%;min-height:44px;color:var(--text);border-radius:9px;padding:10px 12px}.reports-filter-grid label>span{display:block;position:relative}.reports-filter-grid label>span svg{width:16px;color:var(--muted);position:absolute;top:14px;left:12px}.reports-filter-grid label>span input{padding-left:38px}.report-filter-actions{grid-template-columns:1fr .8fr;align-self:end;gap:9px;display:grid}.report-filter-actions button{justify-content:center;min-height:44px}.reports-results{margin:0!important;padding:0!important;overflow:visible!important}.reports-results>header{border-bottom:1px solid var(--line);justify-content:space-between;margin:0;padding:15px 17px}.reports-results>header>div{align-items:center;gap:9px;display:flex}.reports-results>header button{min-height:38px;padding:8px 12px;font-size:11px}.report-table-wrap{overflow-x:auto}.reports-table{border-collapse:collapse;width:100%;font-size:11px}.reports-table th{background:var(--soft);color:var(--muted);text-align:left;white-space:nowrap;padding:11px 12px}.reports-table th button{color:inherit;font:inherit;align-items:center;gap:4px;font-weight:700;display:flex}.reports-table th button svg{width:13px}.reports-table td{border-top:1px solid var(--line);color:var(--text);vertical-align:middle;padding:11px 12px}.reports-table td:nth-child(2) a{color:var(--text);font-weight:600}.report-note-preview{-webkit-line-clamp:2;-webkit-box-orient:vertical;max-width:220px;line-height:1.35;display:-webkit-box;overflow:hidden}.report-badge{color:#334155;background:#e2e8f0;border-radius:8px;max-width:150px;padding:5px 9px;font-size:10px;line-height:1.2;display:inline-flex}.report-badge-positive_achievement{color:#166534;background:#dcfce7}.report-badge-classroom_participation{color:#1d4ed8;background:#dbeafe}.report-badge-behavior{color:#92400e;background:#fef3c7}.report-badge-discipline{color:#c2410c;background:#ffedd5}.report-badge-homework_responsibility,.report-badge-respect{color:#6d28d9;background:#ede9fe}.report-badge-academic_effort{color:#0369a1;background:#e0f2fe}.report-badge-attendance_concern{color:#b91c1c;background:#fee2e2}.report-row-actions{gap:3px;display:flex;position:relative}.report-row-actions>button,.report-row-actions summary{cursor:pointer;width:30px;height:30px;color:var(--muted);border-radius:8px;place-items:center;list-style:none;display:grid}.report-row-actions svg{width:16px}.report-row-actions details>div{z-index:5;border:1px solid var(--line);background:var(--surface);border-radius:10px;min-width:145px;padding:6px;position:absolute;top:34px;right:0;box-shadow:0 12px 35px #0002}.report-row-actions details button{width:100%;color:var(--text);border-radius:7px;align-items:center;gap:7px;padding:8px;font-size:11px;display:flex}.report-row-actions details button:hover{background:var(--soft)}.reports-pagination{border-top:1px solid var(--line);justify-content:space-between;align-items:center;gap:15px;padding:15px 17px;display:flex}.reports-pagination p{color:var(--muted);margin:0;font-size:11px}.reports-pagination nav{align-items:center;gap:5px;display:flex}.reports-pagination button{border:1px solid var(--line);background:var(--surface);min-width:31px;height:31px;color:var(--text);border-radius:8px;place-items:center;padding:0 8px;display:grid}.reports-pagination button.active{background:var(--green);border-color:var(--green);color:#fff}.reports-pagination button:disabled{opacity:.4}.reports-pagination svg{width:15px}.reports-mobile-list{display:none}.report-skeleton{gap:10px;padding:20px;display:grid}.report-skeleton span{background:linear-gradient(90deg,var(--soft),color-mix(in srgb,var(--soft) 40%,var(--surface)),var(--soft));background-size:200% 100%;border-radius:9px;height:48px;animation:1.3s infinite report-shimmer}@keyframes report-shimmer{to{background-position:-200% 0}}.report-detail-backdrop{z-index:100;-webkit-backdrop-filter:blur(5px);backdrop-filter:blur(5px);background:#03110ca8;place-items:center;padding:20px;display:grid;position:fixed;inset:0}.report-detail-dialog{border:1px solid var(--line);background:var(--surface);border-radius:20px;width:min(650px,100%);max-height:90dvh;padding:24px;overflow:auto;box-shadow:0 30px 90px #0005}.report-detail-dialog>header{justify-content:space-between;gap:15px;display:flex}.report-detail-dialog h2{margin:10px 0 3px}.report-detail-dialog header p{color:var(--muted);margin:0}.report-detail-dialog dl{grid-template-columns:repeat(2,1fr);gap:14px;margin:24px 0;display:grid}.report-detail-dialog dl div{background:var(--soft);border-radius:10px;padding:12px}.report-detail-dialog dt{color:var(--muted);font-size:10px}.report-detail-dialog dd{margin:4px 0 0;font-weight:600}.report-detail-dialog>section{border:1px solid var(--line);border-radius:12px;padding:16px}.report-detail-dialog>section h3{margin:0 0 8px;font-size:13px}.report-detail-dialog>section p{white-space:pre-wrap;margin:0;line-height:1.7}.report-detail-dialog>footer{justify-content:flex-end;gap:9px;margin-top:18px;display:flex}.report-form{margin:0!important}.report-form>header{justify-content:space-between}.report-form-grid{grid-template-columns:repeat(2,1fr);gap:14px;display:grid}.report-form-grid label{gap:6px;font-size:12px;font-weight:600;display:grid}.report-form-grid :is(input,select,textarea){border:1px solid var(--line);background:var(--surface);width:100%;color:var(--text);border-radius:10px;padding:11px 12px}.report-notes{grid-column:1/-1}.report-form>footer{justify-content:flex-end;gap:9px;margin-top:16px;display:flex}@media (max-width:1050px){.report-summary-grid,.reports-filter-grid{grid-template-columns:repeat(2,1fr)}}@media (max-width:700px){.reports-page-header nav{display:none}.report-summary-grid,.reports-filter-grid{grid-template-columns:1fr}.report-filter-actions{grid-template-columns:1fr 1fr}.report-table-wrap{display:none}.reports-mobile-list{gap:12px;padding:14px;display:grid}.reports-mobile-list article{border:1px solid var(--line);background:var(--surface);border-radius:13px;padding:15px}.reports-mobile-list article>header{justify-content:space-between;gap:10px;display:flex}.reports-mobile-list small{color:var(--muted);margin-top:3px;display:block}.reports-mobile-list dl{grid-template-columns:1fr 1fr;gap:10px;display:grid}.reports-mobile-list dt{color:var(--muted);font-size:9px}.reports-mobile-list dd{margin:2px 0 0}.reports-mobile-list p{-webkit-line-clamp:3;color:var(--muted);-webkit-box-orient:vertical;line-height:1.5;display:-webkit-box;overflow:hidden}.reports-mobile-list button{justify-content:center;width:100%}.reports-results>header{align-items:flex-start}.reports-results>header>div:last-child{flex-direction:column;align-items:stretch}.reports-pagination{flex-direction:column;align-items:flex-start}.report-form-grid,.report-detail-dialog dl{grid-template-columns:1fr}.report-notes{grid-column:auto}}.portal-v2 .main-shell .topbar{grid-template-columns:minmax(120px,190px) minmax(240px,620px) auto auto;align-items:center;gap:16px;display:grid}.global-search{border:1px solid var(--line);background:var(--surface);border-radius:11px;align-items:center;gap:10px;min-width:0;padding:0 13px;display:flex;position:relative}.global-search>svg{color:var(--muted);flex:none}.global-search>input{width:100%;min-height:38px;color:var(--text);padding:0;font-size:12px;box-shadow:none!important;background:0 0!important;border:0!important}.global-search-results{z-index:40;border:1px solid var(--line);background:var(--surface);border-radius:12px;gap:3px;padding:7px;display:grid;position:absolute;top:45px;left:0;right:0;box-shadow:0 18px 45px #0002}.global-search-results button{color:var(--text);text-align:left;border-radius:8px;align-items:center;gap:9px;padding:10px;display:flex}.global-search-results button:hover,.global-search-results button:focus-visible{background:var(--soft)}.portal-v2 .dashboard>*{width:min(100%,1500px);margin-left:auto;margin-right:auto}.portal-v2 .dashboard>.finance-error,.portal-v2 .dashboard>.finance-notice{margin-bottom:16px}.portal-v2 .page-heading,.portal-v2 .finance-heading{justify-content:space-between;align-items:flex-end;gap:20px;padding-bottom:2px;display:flex}.portal-v2 .page-heading h1,.portal-v2 .finance-heading h1{margin:4px 0 5px}.portal-v2 .page-heading>.primary-button,.portal-v2 .finance-heading>.primary-button{flex:none}.portal-v2 .record-toolbar{border-bottom:1px solid var(--line);grid-template-columns:minmax(260px,1fr) minmax(150px,220px) auto;align-items:center;gap:12px;padding-bottom:16px;display:grid}.portal-v2 .search-form{min-width:0}.portal-v2 .record-count{color:var(--muted);justify-self:end;font-size:11px}.portal-v2 .records-table{font-size:12px}.portal-v2 .records-table thead th{z-index:2;white-space:nowrap;position:sticky;top:0}.portal-v2 .records-table tbody tr:hover{background:color-mix(in srgb,var(--soft) 55%,transparent)}.portal-v2 .table-actions{gap:6px}.portal-v2 .table-actions :is(button,a){min-height:34px;padding:7px 10px;font-size:11px}.portal-v2 .record-loading{text-align:center;place-content:center;gap:12px;min-height:260px;display:grid}.portal-v2 .record-loading .skeleton{background:linear-gradient(90deg,var(--soft),var(--surface),var(--soft));background-size:200% 100%;border-radius:999px;width:min(460px,75vw);height:12px;animation:1.3s infinite report-shimmer}.portal-v2 .finance-heading,.portal-v2 .attendance-panel,.portal-v2 .record-form,.portal-v2 .finance-form{max-width:none}.portal-v2 .attendance-filters{align-items:end}.portal-v2 .attendance-status-buttons{flex-wrap:wrap}.portal-v2 .attendance-status{border-radius:9px;min-height:34px}.dashboard-summary-grid{grid-template-columns:1.35fr .9fr;gap:16px;display:grid}.dashboard-summary-grid>.glass-card{margin:0!important}.school-summary dl{gap:0;margin:0;display:grid}.school-summary dl div{border-bottom:1px solid var(--line);justify-content:space-between;gap:20px;padding:13px 0;display:flex}.school-summary dl div:last-child{border:0}.school-summary dt{color:var(--muted);font-size:11px}.school-summary dd{text-align:right;margin:0;font-weight:600}.school-summary a{color:var(--green)}.portal-v2 :is(.finance-error,.error-message){border:1px solid color-mix(in srgb,var(--danger) 28%,var(--line));background:color-mix(in srgb,var(--danger) 8%,var(--surface));color:var(--danger);border-radius:11px;padding:12px 14px}.portal-v2 :is(.finance-notice,.notice-message){border:1px solid color-mix(in srgb,var(--green) 28%,var(--line));background:color-mix(in srgb,var(--green) 8%,var(--surface));color:var(--green);border-radius:11px;padding:12px 14px}@media (max-width:1000px){.portal-v2 .main-shell .topbar{grid-template-columns:minmax(0,1fr) auto auto;height:auto}.portal-v2 .workspace-heading{display:none}.global-search{grid-area:2/1/auto/-1}.portal-v2 .topbar>.academic-year-badge{grid-area:1/2}.portal-v2 .topbar>.user-menu{grid-area:1/3}.dashboard-summary-grid{grid-template-columns:1fr}}@media (max-width:700px){.portal-v2 .main-shell .topbar{flex-wrap:wrap;display:flex}.global-search{flex-basis:100%;order:3}.portal-v2 .topbar>.academic-year-badge{margin-left:auto}.portal-v2 .page-heading,.portal-v2 .finance-heading{flex-direction:column;align-items:stretch}.portal-v2 .page-heading>.primary-button,.portal-v2 .finance-heading>.primary-button{justify-content:center;width:100%}.portal-v2 .record-toolbar{grid-template-columns:1fr}.portal-v2 .record-count{justify-self:start}.portal-v2 .dashboard>*{max-width:100%}}.portal-nav-link>svg{stroke-width:1.8px;flex:0 0 20px;width:20px;height:20px}.portal-nav-link.active>svg{filter:drop-shadow(0 1px 1px #064e3b55)}.icon-title{align-items:center;gap:11px;display:flex}.icon-title>span,.section-heading-icon{background:color-mix(in srgb,var(--green) 11%,var(--surface));width:42px;height:42px;color:var(--green);border-radius:13px;place-items:center;display:grid}.icon-title svg{width:21px}.portal-v2 :is(.primary-button,.secondary-button,.danger-button,.icon-button) svg{stroke-width:1.9px;flex:none}.portal-v2 .primary-button>svg:first-child,.portal-v2 .secondary-button>svg:first-child{width:17px;height:17px}.portal-v2 .student-import-downloads a{align-items:center;gap:9px;display:flex}.portal-v2 .student-import-downloads a svg:last-child{color:var(--green);margin-left:auto}.portal-v2 .stat-label>span,.portal-v2 .activity-icon{place-items:center;display:grid}.portal-v2 .stat-label>span svg,.portal-v2 .quick-action>svg:first-child{stroke-width:1.9px}.portal-v2 .records-table .table-actions .secondary-button:has(svg){align-items:center;gap:6px;display:inline-flex}.portal-v2 .academic-year-label svg{width:16px;height:16px;color:var(--green)}.portal-v2 .global-search>svg{stroke-width:2px}.portal-v2 .topbar>.academic-year-badge small{position:absolute;top:100%;right:0}@media (max-width:1000px){.portal-v2 .main-shell .topbar{grid-template-columns:minmax(0,1fr) 180px auto;height:auto;min-height:64px}.global-search{grid-column:1}.portal-v2 .topbar>.academic-year-badge{grid-column:2;min-width:180px}.portal-v2 .topbar>.user-menu{grid-column:3}.dashboard-summary-grid{grid-template-columns:1fr}}@media (max-width:700px){.portal-v2 .main-shell .topbar{grid-template-columns:minmax(0,1fr) auto;height:auto;display:grid}.global-search{grid-area:2/1/auto/-1}.portal-v2 .topbar>.academic-year-badge{grid-area:1/1;width:100%;min-width:0;margin:0}.portal-v2 .topbar>.user-menu{grid-area:1/2}.portal-v2 .user-identity{display:none}}.portal-v2{--bg:#f0f7f4;--surface:#ffffffdb;--text:#0f2318;--muted:#4b7362;--line:#15803d26;--green:#15803d;--soft:#e8f5ee;--accent:#15803d;--blue:#1e40af;--amber:#d97706;--danger:#dc2626;--shadow:0 4px 18px #0f23180b;background:radial-gradient(circle at 92% 4%,#22c55e17,transparent 30%), radial-gradient(circle at 12% 94%,#1e40af0d,transparent 28%), var(--bg);font-family:var(--font-outfit),system-ui,sans-serif;font-size:14px}.portal-v2 h1,.portal-v2 h2,.portal-v2 h3{letter-spacing:-.025em;font-weight:700}.portal-v2 .main-shell{width:calc(100% - 256px);max-width:calc(100% - 256px);height:100dvh;margin-left:256px;overflow:hidden}.portal-sidebar{background:var(--surface);border-color:var(--line);-webkit-backdrop-filter:blur(20px);backdrop-filter:blur(20px);width:256px;padding:0}.portal-sidebar>.school-brand{border-bottom:1px solid var(--line);min-height:76px;margin:0;padding:16px 20px;font-size:19px}.portal-sidebar .school-brand img{width:40px;height:40px}.sidebar-year{border:1px solid color-mix(in srgb,var(--green) 20%,transparent);background:color-mix(in srgb,var(--green) 9%,transparent);border-radius:12px;margin:12px 12px 4px;padding:10px 13px}.sidebar-year span{color:var(--muted);font-size:10px;display:block}.sidebar-year strong{color:var(--green);margin-top:1px;font-size:13px;display:block}.navigation-search{background:color-mix(in srgb,var(--soft) 76%,var(--surface));border-radius:12px;margin:10px 12px 4px;padding-inline:11px}.navigation-search input{padding:11px 0;font-size:12px}.portal-navigation{padding:6px 12px 12px}.nav-group{margin-bottom:10px}.nav-group h2{letter-spacing:.1em;margin:13px 9px 5px;font-size:9px}.portal-nav-link{border:0;border-radius:12px;gap:11px;min-height:47px;padding:8px 11px;font-size:13px}.portal-nav-link:hover{background:var(--soft)}.portal-nav-link.active{color:#fff;background:var(--green);border-color:#0000;box-shadow:0 5px 12px #15803d2e}.portal-nav-link.active svg,.portal-nav-link.active small{color:#ffffffc7}.portal-nav-link small{font-size:10px}.nav-active-dot{background:#fff}.sidebar-home{margin:0 12px 12px;padding:13px 10px 0}.portal-v2 .main-shell .topbar{background:var(--surface);border-color:var(--line);-webkit-backdrop-filter:blur(20px);backdrop-filter:blur(20px);height:56px;min-height:56px;padding:8px 24px}.portal-v2 .workspace-heading{font-size:10px}.workspace-heading strong{font-size:13px}.portal-v2 .academic-year-badge{background:color-mix(in srgb,var(--green) 8%,var(--surface));border-color:color-mix(in srgb,var(--green) 18%,var(--line));border-radius:9px;min-width:148px;padding:5px 11px}.portal-v2 .academic-year-badge strong,.portal-v2 .academic-year-badge select{color:var(--green)}.portal-v2 .theme-picker{background:var(--soft);min-height:38px}.portal-v2 .avatar{color:#fff;background:var(--green);border:0;width:34px;height:34px}.portal-v2 .dashboard{max-width:none;padding:24px;overflow:hidden auto}.portal-v2 .page-heading{margin:0 0 22px}.portal-v2 .page-heading h1,.portal-v2 .finance-heading h1{font-size:clamp(25px,2.4vw,32px)}.portal-v2 .page-heading p,.portal-v2 .finance-heading p{font-size:13px}.title-translation{color:var(--green);font-size:12px}.workspace-guide{background:color-mix(in srgb,var(--surface) 75%,transparent);border-radius:14px}.portal-v2 :is(.glass-card,.card,.stat-card,.finance-form,.finance-empty){border-color:var(--line);background:var(--surface);box-shadow:var(--shadow);-webkit-backdrop-filter:blur(20px);backdrop-filter:blur(20px);border-radius:16px}.portal-v2 .glass-card,.portal-v2 .card,.portal-v2 .finance-form{padding:20px}.portal-v2 .welcome-banner{background:radial-gradient(circle at 78% 65%,#22c55e26,#0000 35%),linear-gradient(125deg,#0d3c25,#116134);border:1px solid #15803d2b;border-radius:18px;min-height:172px;padding:25px 30px;box-shadow:0 10px 28px #0f231817}.portal-v2 .welcome-banner h2{font-family:var(--font-display),Georgia,serif;font-size:34px;font-weight:400}.portal-v2 .welcome-banner .school-depth{transform-origin:100%;transform:scale(.82)}.quick-actions{gap:12px;margin-bottom:22px}.quick-action{border-color:var(--line);background:var(--surface);min-height:76px;box-shadow:var(--shadow);border-radius:16px;padding:16px}.quick-action:hover{background:var(--soft);border-color:color-mix(in srgb,var(--green) 26%,var(--line))}.quick-action>svg:first-child{background:var(--soft);border-radius:11px;width:38px;height:38px;padding:8px}.portal-v2 .stats-grid{grid-template-columns:repeat(auto-fit,minmax(210px,1fr));gap:14px}.portal-v2 .stat-card{background:linear-gradient(135deg,#22c55e17,#10b98106),var(--surface);border-color:#22c55e2e;padding:18px 20px;display:grid;position:relative;overflow:hidden}.portal-v2 .stat-card:nth-child(4n+2){background:linear-gradient(135deg,#3b82f617,#6366f106),var(--surface);border-color:#3b82f62e}.portal-v2 .stat-card:nth-child(4n+3){background:linear-gradient(135deg,#d9770617,#f59e0b06),var(--surface);border-color:#d977062e}.portal-v2 .stat-card:nth-child(4n+4){background:linear-gradient(135deg,#a855f717,#8b5cf606),var(--surface);border-color:#a855f72e}.portal-v2 .stat-label{text-transform:uppercase;letter-spacing:.055em;font-size:10px}.portal-v2 .stat-label>span{border-radius:10px;padding:8px}.portal-v2 .stat-card strong{margin:9px 0 3px;font-size:28px}.portal-v2 :is(.primary-button,.secondary-button,.icon-button){border-radius:12px}.portal-v2 .primary-button{background:var(--green);border-color:var(--green);box-shadow:0 3px 8px #15803d29}.portal-v2 .primary-button:hover:not(:disabled){background:#126b35}.portal-v2 .secondary-button{background:var(--surface)}.portal-v2 :is(.record-form,.attendance-panel,.finance-fields,.class-fee-row,.class-payment-entry) :is(input:not([type=checkbox]),select,textarea),.portal-v2 .status-filter,.portal-v2 .finance-search input{background:var(--surface);border-color:var(--line);border-radius:12px}.portal-v2 :is(input,select,textarea):focus{border-color:color-mix(in srgb,var(--green) 55%,var(--line));box-shadow:0 0 0 3px color-mix(in srgb,var(--green) 14%,transparent);outline:0}.portal-v2 .table-scroll,.portal-v2 .finance-table-wrap{background:var(--surface);border-radius:13px}.portal-v2 :is(.records-table,.finance-table) th{background:var(--soft);color:var(--muted);padding:12px 14px}.portal-v2 :is(.records-table,.finance-table) td{padding:13px 14px}.portal-v2 .record-dialog{border-radius:18px;box-shadow:0 24px 80px #0616123d}.portal-v2 .badge{border-radius:999px}.portal-v2 .workspace-footer{padding:16px 24px}:root[data-theme=dark] .portal-v2{--bg:#061612;--surface:#0f2318db;--text:#e8f5ee;--muted:#86c9a3;--line:#22c55e26;--green:#22c55e;--soft:#0f2318;--accent:#22c55e;--shadow:0 5px 22px #00000029;--lightningcss-light: ;--lightningcss-dark:initial;color-scheme:dark}@media (prefers-color-scheme:dark){:root:not([data-theme=light]) .portal-v2{--bg:#061612;--surface:#0f2318db;--text:#e8f5ee;--muted:#86c9a3;--line:#22c55e26;--green:#22c55e;--soft:#0f2318;--accent:#22c55e;--shadow:0 5px 22px #00000029;--lightningcss-light: ;--lightningcss-dark:initial;color-scheme:dark}}@media (max-width:1000px){.portal-v2 .main-shell{width:100%;max-width:100%;height:auto;min-height:calc(100dvh - 65px);margin-left:0;overflow:visible}.portal-mobile-bar{background:var(--surface);padding:11px 16px}.portal-v2 .dashboard{overflow:visible}}@media (max-width:600px){.portal-v2 .dashboard{padding:16px}.portal-v2 .main-shell .topbar{height:auto;min-height:58px;padding:9px 14px}.portal-v2 .stats-grid{grid-template-columns:1fr 1fr}.portal-v2 .stat-card{padding:15px}.portal-v2 .stat-card strong{font-size:24px}.portal-v2 .welcome-banner{padding:22px}}.portal-v2 .main-shell .topbar{grid-template-columns:minmax(260px,1fr) 190px auto;align-items:center;gap:14px;height:64px;min-height:64px;display:grid}.portal-v2 .topbar>.academic-year-badge{border-radius:11px;grid-template-rows:auto auto;grid-template-columns:24px 1fr;align-items:center;column-gap:8px;min-width:190px;min-height:46px;margin:0;padding:6px 11px;display:grid;position:relative}.portal-v2 .topbar>.academic-year-badge .academic-year-label{letter-spacing:.055em;text-transform:uppercase;font-size:9px;display:contents}.portal-v2 .topbar>.academic-year-badge .academic-year-label svg{grid-area:1/1/3;width:20px;height:20px}.portal-v2 .topbar>.academic-year-badge :is(select,strong){width:100%;min-height:20px;box-shadow:none;background:0 0;border:0;grid-area:2/2;padding:0 22px 0 0;font-size:14px;line-height:1.2}@media (max-width:1000px){.portal-v2 .main-shell .topbar{grid-template-columns:minmax(0,1fr) 180px auto;height:auto;min-height:64px}.global-search{grid-column:1}.portal-v2 .topbar>.academic-year-badge{grid-column:2;min-width:180px}.portal-v2 .topbar>.user-menu{grid-column:3}}@media (max-width:700px){.portal-v2 .main-shell .topbar{grid-template-columns:minmax(0,1fr) auto;height:auto;display:grid}.global-search{grid-area:2/1/auto/-1}.portal-v2 .topbar>.academic-year-badge{grid-area:1/1;width:100%;min-width:0;margin:0}.portal-v2 .topbar>.user-menu{grid-area:1/2}.portal-v2 .user-identity{display:none}}.monthly-accounts{padding:22px;margin:22px 0!important}.monthly-accounts>header,.monthly-actions,.monthly-expense-list article{flex-wrap:wrap;justify-content:space-between;align-items:center;gap:12px;display:flex}.monthly-accounts h2{align-items:center;gap:9px;margin:5px 0;display:flex}.monthly-actions input,.monthly-expense-form :is(input,select){border:1px solid var(--line);background:var(--surface);min-height:42px;color:var(--text);border-radius:9px;padding:9px 11px}.monthly-summary{grid-template-columns:repeat(3,1fr);gap:12px;margin:18px 0;display:grid}.monthly-summary article{border:1px solid var(--line);background:var(--soft);border-radius:13px;padding:16px}.monthly-summary span{color:var(--muted);font-size:12px;display:block}.monthly-summary strong{margin-top:6px;font-size:22px;display:block}.monthly-expense-form{border:1px solid var(--line);border-radius:13px;grid-template-columns:1fr 2fr 1fr 1fr auto;align-items:end;gap:12px;padding:16px;display:grid}.monthly-expense-form label{gap:6px;font-size:12px;font-weight:700;display:grid}.monthly-expense-list{gap:8px;margin-top:15px;display:grid}.monthly-expense-list article{border-bottom:1px solid var(--line);padding:12px 14px}.monthly-expense-list p{margin:3px 0}.monthly-expense-list small{color:var(--muted)}@media (max-width:900px){.monthly-summary{grid-template-columns:1fr}.monthly-expense-form{grid-template-columns:1fr 1fr}.monthly-expense-form button{grid-column:1/-1}.finance-download-panel{flex-wrap:wrap}}@media print{:is(body:has(.report-detail-dialog) *,body:has(.monthly-accounts) *){visibility:hidden!important}.report-detail-dialog,.report-detail-dialog *,.monthly-accounts,.monthly-accounts *{visibility:visible!important}.report-detail-backdrop{background:#fff;padding:0;position:absolute;inset:0}.report-detail-dialog,.monthly-accounts{width:100%;max-height:none;box-shadow:none;color:#111;background:#fff;border:0;position:absolute;inset:0;overflow:visible}.report-detail-dialog button,.monthly-accounts button,.monthly-expense-form{display:none!important}}.monthly-chart{padding:22px;margin:22px 0!important}.monthly-chart>header{flex-wrap:wrap;justify-content:space-between;align-items:flex-start;gap:16px;display:flex}.monthly-chart h2{margin:5px 0}.monthly-chart-legend{gap:18px;font-size:12px;font-weight:700;display:flex}.monthly-chart-legend span{align-items:center;gap:7px;display:flex}.monthly-chart-legend span:before{content:"";background:currentColor;border-radius:3px;width:10px;height:10px}.monthly-chart-legend .income{color:#16a34a}.monthly-chart-legend .expense{color:#ef4444}.monthly-chart-totals{grid-template-columns:repeat(3,1fr);gap:12px;margin:18px 0;display:grid}.monthly-chart-totals>div{border:1px solid var(--line);background:var(--soft);border-radius:13px;padding:15px}.monthly-chart-totals span{color:var(--muted);font-size:11px;display:block}.monthly-chart-totals strong{margin-top:5px;font-size:21px;display:block}.monthly-bar-chart{grid-template-columns:repeat(12,minmax(42px,1fr));gap:10px;min-height:250px;padding:18px 8px 4px;display:grid;overflow-x:auto}.monthly-bar-chart article{text-align:center;grid-template-rows:190px auto auto;gap:5px;min-width:42px;display:grid}.bar-stage{border-bottom:1px solid var(--line);background:repeating-linear-gradient(to top,transparent 0,transparent 46px,var(--line) 47px);justify-content:center;align-items:flex-end;gap:4px;height:190px;display:flex}.monthly-bar-chart .bar{border-radius:6px 6px 2px 2px;width:min(15px,38%);min-height:0;transition:height .25s;display:block}.monthly-bar-chart .bar.income{background:linear-gradient(#22c55e,#15803d)}.monthly-bar-chart .bar.expense{background:linear-gradient(#fb7185,#dc2626)}.monthly-bar-chart article>strong{font-size:11px}.monthly-bar-chart article>small{color:var(--muted);white-space:nowrap;font-size:9px}@media (max-width:700px){.monthly-chart-totals{grid-template-columns:1fr}.monthly-bar-chart{grid-template-columns:repeat(12,52px)}}.invoice-mode-switch{border:1px solid var(--line);background:var(--surface);border-radius:13px;gap:5px;margin:0 0 14px;padding:5px;display:inline-flex}.invoice-mode-switch button{color:var(--text);background:0 0;border:0;border-radius:9px;padding:10px 16px;font-weight:700}.invoice-mode-switch button.active{background:var(--green);color:#fff}.expenses-page>.finance-heading>input,.finance-overview-filters :is(input,select),.expense-form :is(input,select,textarea){border:1px solid var(--line);background:var(--surface);min-height:44px;color:var(--text);border-radius:10px;padding:10px 12px}.expense-description{grid-column:1/-1}.expense-history{margin-top:20px!important}.expense-history>article{border-bottom:1px solid var(--line);grid-template-columns:minmax(0,1fr) auto auto;align-items:center;gap:15px;padding:14px 0;display:grid}.expense-history span,.expense-history small{color:var(--muted);display:block}.expense-history p{margin:5px 0}.finance-overview-filters{border:1px solid var(--line);background:var(--surface);border-radius:14px;flex-wrap:wrap;align-items:end;gap:12px;margin-bottom:18px;padding:15px;display:flex}.finance-overview-filters label{gap:5px;font-size:11px;font-weight:700;display:grid}.finance-kpis{grid-template-columns:repeat(4,1fr);gap:13px;margin:18px 0;display:grid}.finance-kpis article{border:1px solid var(--line);background:var(--surface);box-shadow:var(--shadow);border-radius:15px;padding:18px}.finance-kpis span,.finance-kpis small{color:var(--muted);display:block}.finance-kpis strong{margin:8px 0 4px;font-size:25px;display:block}.finance-chart-panel{padding:20px!important}.finance-grouped-chart{grid-template-columns:repeat(12,minmax(42px,1fr));gap:9px;min-height:250px;display:grid;overflow-x:auto}.finance-grouped-chart article{text-align:center;grid-template-rows:190px auto auto;min-width:42px;display:grid}.finance-grouped-chart article>div{border-bottom:1px solid var(--line);justify-content:center;align-items:flex-end;gap:4px;display:flex}.finance-grouped-chart i{border-radius:5px 5px 0 0;width:14px;min-height:2px;display:block}.finance-grouped-chart i.income{background:#16a34a}.finance-grouped-chart i.expense{background:#ef4444}.finance-grouped-chart small{color:var(--muted);font-size:9px}.chart-key{gap:18px;margin-top:14px;font-size:11px;display:flex}.chart-key span:before{content:"";background:var(--muted);border-radius:3px;width:9px;height:9px;margin-right:6px;display:inline-block}.chart-key .income:before{background:#16a34a}.chart-key .expense:before{background:#ef4444}.finance-detail-grid{grid-template-columns:minmax(260px,.7fr) 1.3fr;gap:16px;margin:16px 0;display:grid}.fee-status-visual{text-align:center;background:conic-gradient(#16a34a var(--paid),#ef4444 0);border-radius:50%;place-content:center;width:150px;height:150px;margin:18px auto;display:grid;position:relative}.fee-status-visual:after{content:"";background:var(--surface);border-radius:50%;position:absolute;inset:20px}.fee-status-visual strong,.fee-status-visual span{z-index:1;position:relative}.finance-mini-row{border-bottom:1px solid var(--line);justify-content:space-between;gap:12px;padding:11px 0;display:flex}.finance-mini-row span small{color:var(--muted);display:block}.unpaid-followup{padding:20px!important}.unpaid-followup>article{border-bottom:1px solid var(--line);grid-template-columns:1.1fr 1fr auto auto;align-items:center;gap:14px;padding:13px 0;display:grid}.unpaid-followup small{color:var(--muted);display:block}@media (max-width:900px){.finance-kpis{grid-template-columns:1fr 1fr}.finance-detail-grid,.expense-history>article,.unpaid-followup>article{grid-template-columns:1fr}.finance-grouped-chart{grid-template-columns:repeat(12,52px)}}@media (max-width:560px){.finance-kpis{grid-template-columns:1fr}.invoice-mode-switch{grid-template-columns:1fr 1fr;width:100%;display:grid}.finance-overview-filters>*{width:100%}}@media print{body:has(.exam-card-page) *{visibility:visible!important}:is(body:has(.exam-card-page) .receipt-actions,body:has(.exam-card-page) .invoice-print-help,body:has(.exam-card-page) .exam-card-selector){display:none!important}}
@media screen{.portal-v2 .attendance-panel{border:1px solid var(--line);background:var(--surface);min-width:0;max-width:100%;box-shadow:var(--shadow);border-radius:16px;margin-bottom:24px;padding:28px}.portal-v2 .attendance-panel .attendance-panel-heading{border-bottom:1px solid var(--line);align-items:center;gap:14px;margin-bottom:24px;padding-bottom:22px;display:flex}.portal-v2 .attendance-panel .attendance-heading-icon{background:var(--soft);width:48px;height:48px;color:var(--green);border-radius:12px;flex:0 0 48px;place-items:center;display:grid}.portal-v2 .attendance-panel :is(.attendance-panel-heading,.attendance-register-heading) h2{margin:0 0 6px;font-size:24px;line-height:1.3}.portal-v2 .attendance-panel :is(.attendance-panel-heading,.attendance-register-heading) p{color:var(--muted);margin:0;font-size:14px;line-height:1.65}.portal-v2 .attendance-panel .attendance-date-label{color:var(--muted);white-space:nowrap;font-variant-numeric:tabular-nums;margin-left:auto;font-size:14px}.portal-v2 .attendance-panel .attendance-filters{grid-template-columns:minmax(150px,220px) minmax(0,1fr);align-items:start;gap:22px;margin-bottom:24px;display:grid}.portal-v2 .attendance-panel .attendance-filters.attendance-subject-filters{grid-template-columns:repeat(4,minmax(0,1fr))}.portal-v2 .attendance-panel .attendance-filters label{gap:8px;font-size:14px;font-weight:600;display:grid}.portal-v2 .attendance-panel .attendance-class-picker{gap:8px;min-width:0;display:grid}.portal-v2 .attendance-panel :is(.attendance-filters,.month-filter) :is(input,select){background:var(--surface);border-radius:10px;width:100%;min-width:0;min-height:48px;padding:12px 14px;font-size:16px}.portal-v2 .attendance-panel .month-filter{gap:8px;width:min(250px,100%);font-size:14px;font-weight:600;display:grid}.portal-v2 .attendance-panel .attendance-stats{grid-template-columns:repeat(4,minmax(0,1fr));gap:14px;margin:24px 0 16px;display:grid}.portal-v2 .attendance-panel.daily-attendance .attendance-stats{grid-template-columns:repeat(5,minmax(0,1fr))}.portal-v2 .attendance-panel .attendance-stats>div{border:1px solid var(--line);border-top:3px solid var(--status-color,var(--green));background:var(--surface);border-radius:12px;padding:20px}.portal-v2 .attendance-panel .attendance-stats strong{font-variant-numeric:tabular-nums;color:var(--text);font-size:32px;font-weight:600;line-height:1.25;display:block}.portal-v2 .attendance-panel .attendance-stats span{text-transform:capitalize;color:var(--muted);margin-top:8px;font-size:14px;display:block}.status-present{--status-color:#126b45;--status-tint:#eef7f1}.status-absent{--status-color:#a72e35;--status-tint:#fff0f1}.status-late{--status-color:#865012;--status-tint:#fff7e8}.status-excused{--status-color:#2454b2;--status-tint:#eef3ff}.status-unmarked{--status-color:var(--muted)}.portal-v2 .attendance-panel .attendance-status-buttons{flex-wrap:wrap;gap:8px;display:flex}.portal-v2 .attendance-panel .attendance-status{border:1px solid color-mix(in srgb,var(--status-color) 45%,var(--line));background:var(--status-tint,var(--bg));min-height:44px;color:var(--status-color,var(--text));text-transform:capitalize;cursor:pointer;box-shadow:none;border-radius:10px;justify-content:center;align-items:center;gap:6px;padding:11px 14px;font-size:14px;font-weight:600;transition:background .18s,border-color .18s;display:inline-flex}.portal-v2 .attendance-panel .attendance-status[aria-pressed=true],.portal-v2 .attendance-panel .attendance-status[data-selected=true]{background:var(--status-color,var(--bg));color:#fff;border-color:var(--status-color);box-shadow:0 0 0 2px var(--surface),0 0 0 3px var(--status-color)}.portal-v2 .attendance-panel .attendance-status:hover:not(:disabled){border-color:var(--status-color)}.portal-v2 .attendance-panel .attendance-status svg{width:17px;height:17px}.portal-v2 .attendance-panel .attendance-actions{flex-wrap:wrap;align-items:center;gap:10px;margin-bottom:12px;padding:20px 0;display:flex}.portal-v2 .attendance-panel .attendance-save-hint{color:var(--muted);flex-basis:100%;font-size:14px;line-height:1.6}.portal-v2 .attendance-panel .attendance-register-title{color:var(--muted);margin:4px 0 0;font-size:14px;line-height:1.65}.portal-v2 .attendance-panel .attendance-register-title strong{color:var(--text)}.portal-v2 .attendance-panel .attendance-register-heading{flex-wrap:wrap;justify-content:space-between;align-items:center;gap:18px;margin-top:28px;display:flex}.portal-v2 .attendance-panel .attendance-register-heading .eyebrow{margin-bottom:8px;font-size:12px;display:block}.portal-v2 .attendance-panel .attendance-roster-count{border:1px solid var(--line);color:var(--muted);border-radius:8px;align-items:center;gap:8px;padding:9px 12px;font-size:14px;display:flex}.portal-v2 .attendance-panel .attendance-progress{border:1px solid var(--line);background:var(--bg);border-radius:12px;padding:20px}.portal-v2 .attendance-panel .attendance-progress>div{flex-wrap:wrap;justify-content:space-between;gap:14px;font-size:14px;display:flex}.portal-v2 .attendance-panel .attendance-progress span,.portal-v2 .attendance-panel .attendance-progress small{color:var(--muted)}.portal-v2 .attendance-panel .attendance-progress progress{width:100%;height:8px;accent-color:var(--green);border:0;border-radius:8px;margin:14px 0 10px;display:block;overflow:hidden}.portal-v2 .attendance-panel .attendance-progress progress::-webkit-progress-bar{background:var(--line)}.portal-v2 .attendance-panel .attendance-progress progress::-webkit-progress-value{background:var(--green)}.portal-v2 .attendance-panel .attendance-progress small{font-size:14px}.portal-v2 .attendance-panel .attendance-roster-toolbar{grid-template-columns:minmax(0,1fr) 200px auto;align-items:end;gap:18px;padding:24px 0;display:grid}.portal-v2 .attendance-panel .attendance-roster-toolbar label{gap:8px;font-size:14px;font-weight:600;display:grid}.portal-v2 .attendance-panel .attendance-roster-toolbar>span{color:var(--muted);padding-bottom:14px;font-size:14px}.portal-v2 .attendance-panel .attendance-student-search{position:relative}.portal-v2 .attendance-panel .attendance-student-search svg{color:var(--muted);position:absolute;top:16px;left:14px}.portal-v2 .attendance-panel .attendance-student-search input{padding-left:42px}.portal-v2 .attendance-panel .attendance-roster-toolbar :is(input,select){border-radius:10px;width:100%;min-height:48px;padding:12px 14px;font-size:16px}.portal-v2 .attendance-panel .attendance-error{flex-wrap:wrap;justify-content:space-between;align-items:center;gap:14px;display:flex}.portal-v2 .attendance-panel .attendance-empty{color:var(--muted);flex-wrap:wrap;align-items:center;gap:14px;padding:20px 0;font-size:16px;display:flex}.portal-v2 .attendance-panel .attendance-roster{width:100%}.portal-v2 .attendance-panel .attendance-roster th{white-space:nowrap;padding:14px 16px;font-size:12px}.portal-v2 .attendance-panel .attendance-roster td{vertical-align:middle;padding:20px 16px;font-size:14px}.portal-v2 .attendance-panel .attendance-roster td:first-child{min-width:150px;font-weight:600}.portal-v2 .attendance-panel .attendance-roster td small{color:var(--muted);margin-top:4px;font-size:12px;display:block}.portal-v2 .attendance-panel .attendance-roster input{width:100%;min-width:110px}.portal-v2 .attendance-panel.exam-workspace{padding:28px}.portal-v2 .exam-workspace .learning-page-header{border-bottom:1px solid var(--line);margin-bottom:24px;padding-bottom:24px}.portal-v2 .exam-workspace .learning-page-header h1{margin:8px 0 12px;font-size:clamp(30px,2.6vw,36px);line-height:1.2}.portal-v2 .exam-workspace .learning-page-header p{color:var(--muted);max-width:800px;margin:0;font-size:16px;line-height:1.65}.portal-v2 .exam-workspace .exam-cycle{grid-template-columns:repeat(2,minmax(0,1fr));gap:16px;margin:0 0 24px;display:grid}.portal-v2 .exam-workspace .exam-cycle article{background:var(--bg);border-radius:12px;padding:20px}.portal-v2 .exam-workspace .exam-cycle header>span{color:var(--green);font-size:16px;font-weight:600}.portal-v2 .exam-workspace .exam-cycle header>strong{font-size:12px;font-weight:500}.portal-v2 .exam-workspace .exam-cycle article>div>span{background:var(--surface);border:1px solid var(--line);border-radius:8px;flex:110px;font-size:14px;font-weight:500}.portal-v2 .exam-workspace .exam-list-heading{flex-wrap:wrap;justify-content:space-between;align-items:center;gap:14px;margin:28px 0 20px;display:flex}.portal-v2 .exam-workspace .exam-list-heading>div{align-items:center;gap:10px;display:flex}.portal-v2 .exam-workspace .exam-list-heading svg{color:var(--green)}.portal-v2 .exam-workspace .exam-list-heading h2{margin:0;font-size:24px}.portal-v2 .exam-workspace .exam-list-heading>span{color:var(--muted);font-size:14px}.portal-v2 .exam-workspace .exam-list{grid-template-columns:repeat(2,minmax(0,1fr));gap:16px}.portal-v2 .exam-workspace .exam-list button{text-align:left;border-radius:12px;flex-direction:column;justify-content:flex-start;align-items:stretch;gap:12px;min-height:180px;padding:22px;font-size:14px;font-weight:400;transition:border-color .18s,background .18s;display:flex}.portal-v2 .exam-workspace .exam-list button:hover{border-color:var(--green);background:var(--bg)}.portal-v2 .exam-workspace .exam-card-title{justify-content:space-between;align-items:start;gap:12px;display:flex}.portal-v2 .exam-workspace .exam-card-title strong{font-size:18px;font-weight:600;line-height:1.4}.portal-v2 .exam-workspace .exam-card-title svg{color:var(--muted);flex:0 0 20px}.portal-v2 .exam-workspace :is(.exam-date,.exam-state){color:var(--muted);align-items:center;gap:7px;font-size:12px;display:flex}.portal-v2 .exam-workspace .exam-state{background:var(--soft);border-radius:6px;width:fit-content;margin-top:auto;padding:7px 9px}.portal-v2 .exam-workspace .exam-state.is-published{color:var(--green)}.portal-v2 .exam-workspace .exam-result-heading{margin-top:24px}.portal-v2 .exam-workspace .exam-result-heading h2{font-size:24px}.portal-v2 .exam-workspace .exam-result-heading span{color:var(--muted);font-size:14px}.portal-v2 .exam-workspace .exam-results-table{border:1px solid var(--line);border-radius:12px;margin-top:24px}.portal-v2 .exam-workspace .exam-results-table td{font-size:14px}.portal-v2 .exam-workspace .exam-results-table td small{color:var(--muted);font-size:12px;display:block}.portal-v2 .exam-workspace .exam-results-table :is(input,select){min-height:44px;font-size:16px}.portal-v2 .learning-empty{text-align:center;color:var(--muted);border:1px dashed var(--line);border-radius:12px;margin-top:18px;padding:40px 20px}.portal-v2 .learning-empty>svg{margin-bottom:12px}.portal-v2 .learning-empty h3{color:var(--text);margin:0 0 8px;font-size:22px}.portal-v2 .learning-empty p{margin:0;font-size:16px}.portal-v2 .learning-error,.portal-v2 .learning-notice{border-radius:10px;margin:20px 0;padding:16px 18px;font-size:16px;line-height:1.6}.portal-v2 .learning-error{color:#9d2531;background:#fff2f4;border:1px solid #eac7ce}.portal-v2 .learning-notice{color:var(--green);border:1px solid color-mix(in srgb,var(--green) 25%,var(--line));background:var(--soft)}.portal-v2 .lesson-board{padding:24px}.portal-v2 .lesson-board-note{color:var(--muted);margin:0 0 24px;font-size:16px}.portal-v2 .lesson-day{margin-bottom:28px}.portal-v2 .lesson-day>header{border-bottom:1px solid var(--line);align-items:center;gap:12px;margin-bottom:18px;padding-bottom:14px;display:flex}.portal-v2 .lesson-day>header h2{margin:0;font-size:24px}.portal-v2 .lesson-day>header span{color:var(--muted);font-size:14px}.portal-v2 .lesson-day-cards{grid-template-columns:repeat(auto-fit,minmax(min(100%,270px),1fr));gap:16px;display:grid}.portal-v2 .lesson-card{border:1px solid var(--line);border-left:4px solid var(--green);background:var(--surface);border-radius:12px;min-width:0;padding:22px}.portal-v2 .lesson-time{color:var(--green);font-variant-numeric:tabular-nums;font-size:18px}.portal-v2 .lesson-card h3{overflow-wrap:anywhere;margin:12px 0 10px;font-size:18px;line-height:1.5}.portal-v2 .lesson-card .table-actions{margin-top:18px}:root[data-theme=dark] .portal-v2 .attendance-panel .attendance-status:not([aria-pressed=true]):not([data-selected=true]){background:var(--surface);color:var(--text)}:root[data-theme=dark] .portal-v2 .learning-error{color:#f6a9af;background:#632b3328;border-color:#693742}}@media screen and (prefers-color-scheme:dark){:root:not([data-theme=light]) .portal-v2 .attendance-panel .attendance-status:not([aria-pressed=true]):not([data-selected=true]){background:var(--surface);color:var(--text)}:root:not([data-theme=light]) .portal-v2 .learning-error{color:#f6a9af;background:#632b3328;border-color:#693742}}@media screen and (max-width:1100px){.portal-v2 .attendance-panel .attendance-filters.attendance-subject-filters{grid-template-columns:repeat(2,minmax(0,1fr))}.portal-v2 .attendance-panel.daily-attendance .attendance-stats{grid-template-columns:repeat(3,minmax(0,1fr))}.portal-v2 .attendance-panel .attendance-roster-toolbar{grid-template-columns:minmax(0,1fr) 180px}.portal-v2 .attendance-panel .attendance-roster-toolbar>span{grid-column:1/-1;padding:0}}@media screen and (max-width:900px){.portal-v2 .attendance-panel .attendance-roster thead{display:none}.portal-v2 .attendance-panel .attendance-roster,.portal-v2 .attendance-panel .attendance-roster tbody{display:block}.portal-v2 .attendance-panel .attendance-roster tr{border:1px solid var(--line);border-radius:12px;margin-bottom:14px;padding:18px;display:block}.portal-v2 .attendance-panel .attendance-roster td{border:0;min-width:0;padding:8px 0;display:block}.portal-v2 .attendance-panel .attendance-roster td:before{display:none}.portal-v2 .attendance-panel .attendance-status-buttons{grid-template-columns:repeat(3,minmax(0,1fr));display:grid}.portal-v2 .exam-workspace .exam-list{grid-template-columns:1fr}}@media screen and (max-width:560px){.portal-v2 .attendance-panel,.portal-v2 .attendance-panel.exam-workspace{padding:20px}.portal-v2 .attendance-panel .attendance-panel-heading{flex-wrap:wrap}.portal-v2 .attendance-panel .attendance-date-label{white-space:normal;flex-basis:100%;margin-left:62px}.portal-v2 .attendance-panel :is(.attendance-filters,.attendance-filters.attendance-subject-filters,.attendance-roster-toolbar){grid-template-columns:1fr}.portal-v2 .attendance-panel .attendance-stats,.portal-v2 .attendance-panel.daily-attendance .attendance-stats{grid-template-columns:repeat(2,minmax(0,1fr))}.portal-v2 .attendance-panel .attendance-stats>div{padding:16px}.portal-v2 .attendance-panel .attendance-stats strong{font-size:28px}.portal-v2 .attendance-panel .attendance-actions>button{flex:140px}.portal-v2 .attendance-panel .attendance-status{padding:10px 6px;font-size:12px}.portal-v2 .attendance-panel .attendance-status svg{width:15px;height:15px}.portal-v2 .exam-workspace .exam-cycle{grid-template-columns:1fr}.portal-v2 .exam-workspace .exam-list button,.portal-v2 .lesson-board{padding:18px}}@media screen and (prefers-reduced-motion:reduce){.portal-v2 .attendance-panel .attendance-status,.portal-v2 .exam-workspace .exam-list button{transition:none}}@media print{.portal-v2{color:#111;--bg:#fff!important;--surface:#fff!important;--text:#111!important;--muted:#555!important;--line:#ddd!important;--soft:#f5f5f5!important}.portal-v2 .main-shell{width:100%;max-width:none;height:auto;margin:0;overflow:visible}.portal-v2 .dashboard{padding:0;overflow:visible}.portal-v2 .record-toolbar,.portal-v2 .pagination,.portal-v2 .table-actions,.portal-v2 .record-actions-cell,.portal-v2 .reports-type-tabs,.portal-v2 .reports-filters,.portal-v2 .report-form,.portal-v2 .report-section-toolbar button,.portal-v2 .report-card-list button{display:none!important}.portal-v2 .glass-card,.portal-v2 .card{box-shadow:none;border-radius:0}.portal-v2 .table-scroll{overflow:visible}.portal-v2 .records-table{width:100%;display:table}.portal-v2 .records-table thead{display:table-header-group}.portal-v2 .records-table tbody{display:table-row-group}.portal-v2 .records-table tr{break-inside:avoid;display:table-row}.portal-v2 .records-table td{text-align:left;display:table-cell}.portal-v2 .records-table td:before{display:none}.portal-v2 .report-card-list article{break-inside:avoid}body:has(.daily-attendance) .main-shell{width:100%;max-width:none;height:auto;margin:0;overflow:visible}body:has(.daily-attendance) .dashboard{padding:0;overflow:visible}body:has(.daily-attendance) .attendance-filters{display:none!important}body:has(.daily-attendance) .attendance-edit-actions{display:none!important}body:has(.daily-attendance) .attendance-roster-toolbar{display:none!important}body:has(.daily-attendance) .attendance-progress{display:none!important}body:has(.daily-attendance) .attendance-panel:not(.daily-attendance){display:none!important}body:has(.daily-attendance) .table-scroll{overflow:visible}body:has(.daily-attendance) .attendance-roster{display:table}body:has(.daily-attendance) .attendance-roster tbody{display:table}body:has(.daily-attendance) .attendance-roster tbody{display:table-row-group}body:has(.daily-attendance) .attendance-roster thead{display:table-header-group}body:has(.daily-attendance) .attendance-roster tr{break-inside:avoid;display:table-row}body:has(.daily-attendance) .attendance-roster td{display:table-cell}body:has(.daily-attendance) .attendance-status{display:none}body:has(.daily-attendance) .attendance-status[aria-pressed=true]{color:#000;box-shadow:none;background:#fff;border:0;display:inline-flex}body:has(.daily-attendance) .attendance-roster td:last-child:not(:has([aria-pressed=true])):after{content:"Unmarked"}}
@media screen{.portal-v2{--bg:#f4f7f8;--surface:#fff;--text:#152b3c;--muted:#526477;--line:#dce5e8;--soft:#edf5f1;--green:#126b45;--accent:#126b45;--action:#126b45;--action-hover:#0d5335;--danger:#b42332;--shadow:0 2px 3px #152b3c03,0 8px 26px #152b3c05;--sidebar-width:280px;font-family:var(--font-outfit),system-ui,sans-serif;background:var(--bg);color:var(--text);--lightningcss-light:initial;--lightningcss-dark: ;color-scheme:light;min-height:100dvh;font-size:16px;line-height:1.6}:root[data-theme=dark] .portal-v2{--bg:#101a24;--surface:#182632;--text:#edf3f7;--muted:#b4c3d1;--line:#344653;--soft:#213a32;--green:#82d5ab;--accent:#82d5ab;--danger:#ff9daa;--shadow:0 6px 20px #00000018;--lightningcss-light: ;--lightningcss-dark:initial;color-scheme:dark}.portal-v2 .main-shell{margin-left:var(--sidebar-width);width:calc(100% - var(--sidebar-width));max-width:calc(100% - var(--sidebar-width));height:auto;min-height:100dvh;overflow:visible}.portal-v2 h1{letter-spacing:-.035em;text-wrap:balance;font-weight:650}.portal-v2 h2,.portal-v2 h3{letter-spacing:-.025em;text-wrap:balance;font-weight:600}.portal-v2 p{line-height:1.65}.portal-v2 small{font-size:12px;line-height:1.5}.portal-v2 :is(button,a,input,select,textarea,summary){scroll-margin-block:120px 24px}.portal-v2 :is(button,a,summary){touch-action:manipulation}.portal-v2 :is(button,a,input,select,textarea,summary):focus-visible{outline:3px solid var(--green);outline-offset:3px}.portal-v2 :is(input,textarea,select):focus{border-color:var(--green);box-shadow:0 0 0 3px color-mix(in srgb,var(--green) 12%,transparent)}.portal-v2 :is(button,[type=submit],select,summary){cursor:pointer}.portal-v2 button:disabled{cursor:not-allowed;opacity:.55}.portal-v2 input:not([type=checkbox]),.portal-v2 select,.portal-v2 textarea{border:1px solid var(--line);background:var(--surface);color:var(--text);border-radius:10px;min-width:0;max-width:100%;font-family:inherit;font-size:16px;font-weight:400}.portal-v2 :is(input,textarea)::placeholder{color:var(--muted);opacity:.85;font-weight:400}.portal-v2 :is(.primary-button,.secondary-button,.icon-button){min-height:44px;box-shadow:none;border-radius:10px;justify-content:center;align-items:center;gap:8px;padding:11px 17px;font-size:14px;font-weight:600;transition:background .16s,border-color .16s,color .16s;display:inline-flex}.portal-v2 .icon-button{flex-shrink:0;width:44px;height:44px;padding:0}.portal-v2 .primary-button{background:var(--action);border-color:var(--action);color:#fff}.portal-v2 .primary-button:hover:not(:disabled){background:var(--action-hover)}:root[data-theme] .portal-v2 .primary-button{background:var(--action);border-color:var(--action);color:#fff}:root[data-theme] .portal-v2 .primary-button:hover:not(:disabled){background:var(--action-hover)}.portal-v2 .secondary-button{color:var(--text);background:var(--surface);border:1px solid var(--line)}.portal-v2 .secondary-button:hover:not(:disabled){background:var(--soft);border-color:var(--green)}.portal-v2 :is(.glass-card,.card,.stat-card,.finance-form,.finance-empty,.attendance-panel){background:var(--surface);border:1px solid var(--line);-webkit-backdrop-filter:none;backdrop-filter:none;box-shadow:var(--shadow);border-radius:16px}.portal-v2 :is(.glass-card,.card,.finance-form){padding:28px}.portal-v2 .main-shell .topbar{background:var(--surface);border-bottom:1px solid var(--line);-webkit-backdrop-filter:none;backdrop-filter:none;grid-template-columns:minmax(180px,1fr) 200px auto;align-items:center;gap:20px;height:auto;min-height:88px;padding:14px 32px;display:grid}.portal-v2 .global-search{min-width:0}.portal-v2 .global-search input{background:var(--bg);width:100%;min-height:48px;padding-left:43px;font-size:14px}.portal-v2 .global-search-results{border:1px solid var(--line);background:var(--surface);border-radius:12px;padding:6px;box-shadow:0 12px 36px #152b3c20}.portal-v2 .global-search-results button{border-radius:8px;min-height:44px;font-size:14px}.portal-v2 .global-search-results button[aria-selected=true]{background:var(--soft);color:var(--green)}.portal-v2 .topbar>.academic-year-badge{background:var(--soft);border:1px solid var(--line);border-radius:12px;grid-template-rows:auto auto;grid-template-columns:22px minmax(0,1fr);gap:2px 9px;width:200px;min-width:0;min-height:60px;padding:9px 13px;display:grid}.portal-v2 .academic-year-label{letter-spacing:0;text-transform:none;font-size:12px}.portal-v2 .topbar>.academic-year-badge .academic-year-label svg{width:20px;height:20px}.portal-v2 .topbar>.academic-year-badge :is(select,strong){width:100%;min-height:26px;color:var(--green);box-shadow:none;background:0 0;border:0;border-radius:0;padding:0;font-size:16px;font-weight:600;line-height:1.3}.portal-v2 .theme-picker{background:var(--bg);border-radius:11px;gap:2px;padding:3px}.portal-v2 .theme-picker button{border-radius:8px;width:44px;min-height:44px}.portal-v2 .theme-picker button.active{color:#fff;background:var(--action);box-shadow:none}.portal-v2 .user-menu{gap:12px}.portal-v2 .avatar{background:var(--soft);width:42px;height:42px;color:var(--green);border:1px solid var(--line)}.portal-v2 .user-identity{overflow-wrap:anywhere;max-width:190px;font-size:14px;font-weight:600;line-height:1.4;display:block}.portal-v2 .user-identity small{color:var(--muted);text-transform:capitalize;margin-top:4px;font-size:12px;font-weight:400}.portal-sidebar{width:var(--sidebar-width);background:var(--surface);-webkit-backdrop-filter:none;backdrop-filter:none}.portal-sidebar>.school-brand{gap:10px;min-height:88px;margin:0;padding:20px;font-size:22px}.portal-sidebar .school-brand img{width:46px;height:46px}.portal-sidebar .school-brand small{letter-spacing:0;color:var(--muted);font-size:11px}.portal-sidebar>.school-brand,.portal-sidebar>.navigation-search,.sidebar-bottom{flex-shrink:0}.portal-v2 .navigation-search{background:var(--bg);border:1px solid var(--line);border-radius:10px;margin:18px 16px 8px;padding-inline:12px}.portal-v2 .navigation-search input{min-height:44px;box-shadow:none;background:0 0;border:0;padding:10px 0;font-size:14px}.portal-navigation{flex:1;min-height:0;padding:6px 14px 20px}.nav-group{margin-bottom:16px}.portal-v2 .nav-group h2{color:var(--muted);letter-spacing:.09em;margin:16px 12px 8px;font-size:11px;font-weight:600}.portal-nav-link{border-radius:10px;gap:12px;min-height:56px;padding:10px 12px;font-size:14px;font-weight:500}.portal-nav-link>span{min-width:0}.portal-nav-link small{color:var(--muted);margin-top:2px;font-size:12px;line-height:1.4}.portal-nav-link.active{color:var(--green);background:var(--soft);box-shadow:inset 3px 0 var(--green)}.portal-nav-link.active :is(svg,small){color:var(--green)}.portal-nav-link.active .nav-active-dot{background:var(--green)}.portal-v2 .sidebar-bottom{border-top:1px solid var(--line);padding:14px 16px}.portal-v2 .sidebar-account{align-items:center;gap:10px;min-width:0;display:flex}.portal-v2 .sidebar-account>span:last-child{overflow-wrap:anywhere;min-width:0;font-size:13px;font-weight:500}.portal-v2 .sidebar-account small{color:var(--muted);text-transform:capitalize;margin-top:3px;font-size:12px;display:block}.portal-v2 .sidebar-home{border:0;min-height:40px;margin:10px 0 0;padding:8px 0;font-size:12px}.portal-v2 .navigation-dialog{background:var(--surface);color:var(--text);padding:24px 16px max(24px,env(safe-area-inset-bottom))}.navigation-dialog::backdrop{-webkit-backdrop-filter:blur(2px);backdrop-filter:blur(2px);background:#101a247d}.portal-v2 .navigation-account{border:1px solid var(--line);background:var(--bg);overflow-wrap:anywhere;border-radius:12px;align-items:center;gap:12px;margin-bottom:8px;padding:16px;font-size:14px;display:flex}.navigation-account small{color:var(--muted);text-transform:capitalize;display:block}.portal-v2 .dashboard{max-width:1720px;padding:28px 32px 48px;overflow:visible}.workspace-context{color:var(--muted);justify-content:space-between;align-items:center;gap:16px;margin-bottom:20px;font-size:13px;display:flex}.workspace-breadcrumb,.workspace-breadcrumb a,.workspace-today{align-items:center;gap:8px;min-width:0;display:flex}.workspace-breadcrumb>span{color:var(--text);overflow-wrap:anywhere}.workspace-today{white-space:nowrap;font-size:12px}.portal-v2 .workspace-guide{box-shadow:none;background:0 0;border-radius:12px;margin-bottom:28px}.portal-v2 .workspace-guide summary{min-height:48px;padding:12px 16px;font-size:13px}.portal-v2 .page-heading,.portal-v2 .finance-heading{gap:24px;margin:0 0 28px}.portal-v2 .page-heading h1,.portal-v2 .finance-heading h1{margin:4px 0 10px;font-size:clamp(30px,2.6vw,38px);line-height:1.2}.portal-v2 .page-heading p,.portal-v2 .finance-heading p{max-width:760px;margin:0;font-size:16px;line-height:1.65}.portal-v2 .title-translation,.portal-v2 .eyebrow{letter-spacing:.075em;font-size:12px;font-weight:600}.portal-v2 .section-heading{flex-wrap:wrap;gap:16px;margin-bottom:20px}.portal-v2 .section-heading h2{font-size:22px}.portal-v2 .section-heading>.muted{font-size:13px}.portal-v2 :is(.record-form,.finance-fields,.class-fee-row,.class-payment-entry,.attendance-filters) label{font-size:14px;font-weight:500}.portal-v2 :is(.record-form,.finance-fields,.attendance-filters) :is(input:not([type=checkbox]),select){min-height:48px}.portal-v2 .table-scroll,.portal-v2 .finance-table-wrap{border-color:var(--line);border-radius:12px}.portal-v2 :is(.records-table,.finance-table,.attendance-roster) th{background:var(--bg);color:var(--muted);letter-spacing:.035em;padding:14px 18px;font-size:12px;font-weight:600}.portal-v2 :is(.records-table,.finance-table,.attendance-roster) td{padding:17px 18px;font-size:14px;line-height:1.6}.portal-v2 :is(.records-table,.finance-table,.attendance-roster) tbody tr:hover{background:color-mix(in srgb,var(--green) 3%,var(--surface))}.portal-v2 :is(.records-table,.finance-table,.attendance-roster) td a{font-weight:500}.portal-v2 .badge{border-radius:8px;padding:5px 10px;font-size:12px;font-weight:500}.portal-v2 :is(.profile-tabs a[aria-current=page],.reports-view-tabs button.active){background:var(--action);color:#fff;box-shadow:none}.portal-v2 .finance-tabs{background:var(--surface);border-radius:12px;gap:4px;padding:6px}.portal-v2 .finance-tabs a{border-radius:8px;min-height:44px;padding:10px 16px;font-size:14px}.portal-v2 .finance-tabs a[aria-current=page]{color:var(--green);background:var(--soft);box-shadow:none}.portal-v2 .finance-kpis article{background:var(--surface);border-color:var(--line);box-shadow:none;border-radius:14px}.portal-v2 .finance-kpis article strong{letter-spacing:-.03em;font-variant-numeric:tabular-nums;font-size:30px;font-weight:600}.portal-v2 .finance-kpis article span{color:var(--muted);font-size:14px;font-weight:500}.portal-v2 .finance-kpis article small{font-size:12px}.portal-v2 :is(.finance-error,.finance-notice,.error-message,.notice-message){border-radius:12px;padding:16px 20px;font-size:14px}.portal-v2 .attendance-stats>div{background:var(--surface);border-radius:12px;padding:18px}.portal-v2 .attendance-stats strong{font-size:30px;font-weight:600}.portal-v2 .attendance-stats span{font-size:13px}.portal-v2 .workspace-footer{background:var(--surface);border-top:1px solid var(--line);padding:20px 32px;font-size:12px}.portal-v2 .date-chip{border-radius:10px;padding:10px 14px;font-size:13px}.overview-briefing{border:1px solid var(--line);color:#fff;background:#152b3c;border-radius:16px;justify-content:space-between;align-items:center;gap:32px;margin-bottom:28px;padding:28px 32px;display:flex}.portal-v2 .overview-briefing h2{color:#fff;margin:8px 0 12px;font-size:28px}.overview-briefing p{color:#cedde5;max-width:650px;margin:0;font-size:15px}.overview-briefing .eyebrow{color:#a0e2bd}.overview-context{border-left:1px solid #ffffff29;gap:20px;min-width:180px;padding-left:28px;display:grid}.overview-context>span{color:#a0e2bd;align-items:center;gap:12px;display:flex}.overview-context>span>span{color:#cedde5;font-size:12px}.overview-context strong{color:#fff;text-transform:capitalize;font-size:15px;font-weight:500;display:block}.portal-v2 .quick-actions{grid-template-columns:repeat(4,minmax(0,1fr));gap:14px;margin-bottom:28px}.portal-v2 .quick-action{border:1px solid var(--line);background:var(--surface);min-height:96px;box-shadow:none;border-radius:14px;padding:20px;transform:none}.portal-v2 .quick-action:hover{background:var(--soft);border-color:var(--green);box-shadow:none;transform:none}.portal-v2 .quick-action strong{font-size:14px;font-weight:500;line-height:1.4}.portal-v2 .quick-action small{font-size:12px}.portal-v2 .quick-action>svg:first-child{background:var(--soft);width:42px;height:42px;color:var(--green);border-radius:11px;padding:9px}.portal-v2 .stats-grid{grid-template-columns:repeat(auto-fit,minmax(200px,1fr));gap:16px;margin-bottom:24px}.portal-v2 .stat-card{padding:22px;background:var(--surface)!important;border-color:var(--line)!important}.portal-v2 .stat-label{color:var(--muted);text-transform:none;letter-spacing:0;font-size:14px;font-weight:500}.portal-v2 .stat-label>span{background:var(--soft);color:var(--green);border-radius:10px;padding:9px}.portal-v2 .stat-card strong{letter-spacing:-.035em;font-variant-numeric:tabular-nums;margin:10px 0 6px;font-size:36px;font-weight:600}.portal-v2 .stat-card small{font-size:12px}.portal-v2 .dashboard-finance-kpis{gap:14px;margin-bottom:24px}.portal-v2 .dashboard-summary-grid{grid-template-columns:1.2fr 1fr;gap:24px;margin:28px 0}.portal-v2 .activity-list li{gap:12px;padding:17px 0}.portal-v2 .activity-list strong{text-transform:capitalize;font-size:14px;font-weight:500}.portal-v2 .activity-list :is(small,time){color:var(--muted);font-size:12px}.portal-v2 .school-summary dl div{padding:16px 0}.portal-v2 .school-summary dt{font-size:13px}.portal-v2 .school-summary dd{max-width:65%;font-size:14px}.portal-v2 .monthly-chart{margin:28px 0!important}.portal-v2 .monthly-chart h2{max-width:620px;font-size:24px}.portal-v2 .monthly-chart p{font-size:14px}.portal-v2 .monthly-chart-legend{font-size:13px}.portal-v2 .monthly-chart-legend .income{color:var(--green)}.portal-v2 .monthly-chart-legend .expense{color:var(--danger)}.portal-v2 .monthly-chart-totals{gap:16px;margin:24px 0}.portal-v2 .monthly-chart-totals>div{background:var(--bg);border-radius:12px;padding:20px}.portal-v2 .monthly-chart-totals span{font-size:13px}.portal-v2 .monthly-chart-totals strong{font-variant-numeric:tabular-nums;font-size:28px;font-weight:600}.portal-v2 .monthly-bar-chart{grid-template-columns:repeat(12,minmax(54px,1fr));padding:16px 0}.portal-v2 .monthly-bar-chart article{min-width:54px}.portal-v2 .monthly-bar-chart article>strong{font-size:13px}.portal-v2 .monthly-bar-chart article>small{font-size:12px}.portal-v2 .monthly-bar-chart .bar.income{background:var(--action)}.portal-v2 .monthly-bar-chart .bar.expense{background:#bd5361}.portal-v2 .chart-data{border-top:1px solid var(--line);margin-top:14px;padding-top:14px;font-size:14px}.portal-v2 .chart-data summary{color:var(--green);cursor:pointer;min-height:44px}.portal-v2 .overview-class-heading{flex-wrap:wrap;justify-content:space-between;align-items:center;gap:16px;margin-bottom:24px;display:flex}.portal-v2 .overview-class-heading h2{margin:5px 0 8px;font-size:24px}.portal-v2 .overview-class-heading p{color:var(--muted);max-width:650px;margin:0;font-size:14px}.portal-v2 .empty-state p{font-size:14px}}@media screen and (prefers-color-scheme:dark){:root:not([data-theme=light]) .portal-v2{--bg:#101a24;--surface:#182632;--text:#edf3f7;--muted:#b4c3d1;--line:#344653;--soft:#213a32;--green:#82d5ab;--accent:#82d5ab;--danger:#ff9daa;--shadow:0 6px 20px #00000018;--lightningcss-light: ;--lightningcss-dark:initial;color-scheme:dark}}@media screen and (max-width:1350px){.portal-v2{--sidebar-width:260px}.portal-v2 .user-identity{display:none}.portal-v2 .main-shell .topbar{gap:14px;padding-inline:24px}.portal-v2 .quick-actions{grid-template-columns:repeat(2,minmax(0,1fr))}.portal-v2 .dashboard{padding-inline:24px}}@media screen and (max-width:1100px){.portal-v2 .main-shell .topbar{grid-template-columns:minmax(0,1fr) 180px auto;gap:12px}.portal-v2 .topbar>.academic-year-badge{width:180px}.portal-v2 .user-menu>.avatar{display:none}.portal-v2 .dashboard-summary-grid{grid-template-columns:1fr}}@media screen and (max-width:1000px){.portal-v2 .main-shell{width:100%;max-width:100%;min-height:calc(100dvh - 76px);margin-left:0}.portal-v2 .portal-mobile-bar{padding:14px 20px}.portal-v2 .portal-mobile-bar .school-brand{font-size:22px}.portal-v2 .portal-mobile-bar .school-brand small{font-size:11px}}@media screen and (max-width:700px){.portal-v2 .dashboard{padding:22px 16px 32px}.portal-v2 .main-shell .topbar{grid-template-columns:minmax(0,1fr) auto;gap:12px;min-height:0;padding:12px 16px}.portal-v2 .topbar>.academic-year-badge{grid-area:1/1;width:100%;min-width:0}.portal-v2 .topbar>.user-menu{grid-area:1/2;gap:8px}.portal-v2 .topbar>.global-search{grid-area:2/1/auto/-1}.portal-v2 .theme-picker button{width:36px;min-height:44px}.portal-v2 .main-shell .topbar{position:relative}.workspace-context{margin-bottom:16px;font-size:12px}.workspace-today{display:none}.portal-v2 .workspace-guide{margin-bottom:24px}.portal-v2 :is(.glass-card,.card,.finance-form){padding:20px}.portal-v2 .page-heading h1,.portal-v2 .finance-heading h1{font-size:30px}.portal-v2 .page-heading p,.portal-v2 .finance-heading p{font-size:16px}.portal-v2 .stats-grid{grid-template-columns:repeat(2,minmax(0,1fr));gap:12px}.portal-v2 .stat-card{padding:18px}.portal-v2 .stat-label{align-items:flex-start;font-size:13px}.portal-v2 .stat-label>span{padding:4px}.portal-v2 .stat-card strong{overflow-wrap:anywhere;font-size:30px}.overview-briefing{flex-direction:column;align-items:stretch;gap:24px;padding:24px}.portal-v2 .overview-briefing h2{font-size:25px}.overview-context{border-top:1px solid #ffffff29;border-left:0;grid-template-columns:1fr 1fr;gap:16px;min-width:0;padding:18px 0 0}.portal-v2 .quick-actions{grid-template-columns:repeat(2,minmax(0,1fr));gap:12px}.portal-v2 .quick-action{flex-direction:column;align-items:flex-start;gap:10px;padding:16px}.portal-v2 .quick-action>svg:last-child{display:none}.portal-v2 .monthly-chart-totals{grid-template-columns:1fr;gap:12px}.portal-v2 .monthly-chart-totals>div{padding:16px}.portal-v2 .workspace-footer{padding:18px 16px}.portal-v2 .school-summary dl div{flex-direction:column;gap:4px}.portal-v2 .school-summary dd{text-align:left;max-width:100%}.portal-v2 :is(.records-table,.finance-table,.attendance-roster) td{padding:12px 0}.portal-v2 .records-table td:before{font-size:12px}}@media screen and (max-width:430px){.portal-v2 .topbar>.academic-year-badge{grid-area:1/1/auto/-1}.portal-v2 .topbar>.global-search{grid-area:3/1/auto/-1}.portal-v2 .topbar>.user-menu{grid-area:2/1/auto/-1;justify-content:flex-end}.portal-v2 .theme-picker button{width:44px}.portal-v2 .user-menu>.avatar{margin-right:auto;display:grid}}@media screen and (prefers-reduced-motion:reduce){.portal-v2 *,.portal-v2 :before,.portal-v2 :after{scroll-behavior:auto!important;transition:none!important;animation:none!important}}@media print{.workspace-context,.sidebar-bottom{display:none}}
@media screen{.portal-v2 .record-directory{padding:0;overflow:hidden}.portal-v2 .record-directory .directory-header{border-bottom:1px solid var(--line);align-items:center;gap:16px;padding:24px;display:flex}.record-directory .directory-icon,.record-directory .directory-empty-icon{background:var(--soft);width:48px;height:48px;color:var(--green);border-radius:12px;flex:none;place-items:center;display:grid}.record-directory .directory-header>div{min-width:0}.portal-v2 .record-directory .directory-header h2{letter-spacing:-.025em;margin:0;font-size:22px}.record-directory .directory-header p{max-width:660px;color:var(--muted);margin:5px 0 0;font-size:14px;line-height:1.6}.record-directory .directory-total{border:1px solid var(--line);background:var(--bg);color:var(--muted);border-radius:9px;flex-shrink:0;align-items:center;gap:7px;margin-left:auto;padding:8px 12px;font-size:13px;display:inline-flex}.record-directory .directory-total strong{color:var(--text);font-variant-numeric:tabular-nums}.portal-v2 .record-directory .record-toolbar{background:var(--surface);grid-template-columns:minmax(0,1fr) minmax(160px,210px) auto;align-items:center;gap:16px;margin:0;padding:20px 24px}.portal-v2 .record-directory .record-toolbar:not(:has(.status-filter)){grid-template-columns:minmax(0,1fr) auto}.record-directory .search-form{width:100%;min-width:0;max-width:650px}.record-directory .search-form input{min-width:0;min-height:48px;font-size:16px}.portal-v2 .record-directory .status-filter{width:100%;min-width:0;min-height:48px;font-size:16px}.record-directory .record-count{font-variant-numeric:tabular-nums;white-space:nowrap;font-size:13px}.record-directory .directory-applied-filters{border-bottom:1px solid var(--line);color:var(--muted);flex-wrap:wrap;align-items:center;gap:8px;padding:0 24px 20px;font-size:13px;display:flex}.record-directory .directory-applied-filters>span:first-child{align-items:center;gap:6px;display:inline-flex}.record-directory .directory-filter-chip{border:1px solid var(--line);background:var(--bg);overflow-wrap:anywhere;border-radius:8px;max-width:100%;padding:6px 10px}.record-directory .directory-filter-chip strong{color:var(--text);font-weight:600}.record-directory .directory-clear{border:1px solid var(--line);background:var(--surface);min-height:44px;color:var(--green);cursor:pointer;border-radius:9px;justify-content:center;align-items:center;gap:6px;margin-left:auto;padding:8px 12px;font-size:13px;font-weight:600;display:inline-flex}.record-directory .directory-clear:hover{background:var(--soft)}.portal-v2 .record-directory .table-scroll{border:0;border-radius:0;margin:0}.portal-v2 .record-directory .records-table{width:100%;font-size:14px}.portal-v2 .record-directory .records-table th{background:var(--bg);color:var(--muted);letter-spacing:.025em;text-transform:none;padding:15px 20px;font-size:12px;font-weight:650}.portal-v2 .record-directory .records-table td{vertical-align:middle;padding:18px 20px;font-size:14px;line-height:1.6}.record-directory .records-table td:not(.record-actions-cell){white-space:normal;overflow-wrap:anywhere;min-width:100px}.record-directory .directory-name-cell{max-width:320px;color:var(--text);font-weight:600;min-width:200px!important}.record-directory .directory-name-link{color:var(--text);text-decoration:none}.record-directory .directory-name-link:hover{color:var(--green);text-underline-offset:3px;text-decoration:underline}.portal-v2 .record-directory .records-table .directory-id-cell{min-width:155px;color:var(--muted);font-variant-numeric:tabular-nums;font-size:13px}.record-directory .directory-student-count{font-variant-numeric:tabular-nums;align-items:center;gap:8px;font-weight:600;display:inline-flex}.record-directory .directory-student-count svg{color:var(--muted)}.portal-v2 .record-directory .records-table .badge{white-space:nowrap;text-transform:capitalize;font-size:12px}.record-directory .record-actions-heading{text-align:right}.portal-v2 .record-directory .record-actions-cell .table-actions{flex-wrap:wrap;justify-content:flex-end;align-items:center;gap:8px}.portal-v2 .record-directory .table-actions :is(button,a){white-space:nowrap;min-height:44px;padding:9px 12px;font-size:13px}.portal-v2 .record-directory .table-actions .directory-view-button{color:var(--green);border-color:color-mix(in srgb,var(--green) 25%,var(--line));background:var(--soft)}.portal-v2 .record-directory .table-actions .directory-delete-button{color:var(--danger,#b91c1c);background:0 0}.portal-v2 .record-directory .directory-delete-button:hover:not(:disabled){background:color-mix(in srgb,var(--danger,#b91c1c) 7%,var(--surface))}.portal-v2 .record-directory .class-table :is(th,td):nth-child(n+4){display:table-cell}.portal-v2 .record-directory .class-table td:nth-child(5){min-width:200px}.portal-v2 .record-directory .notice-message{margin:16px 24px}.portal-v2 .record-directory .empty-state{padding:48px 24px}.record-directory .directory-empty-icon{border-radius:16px;width:60px;height:60px;margin:0 auto 16px}.portal-v2 .record-directory .directory-empty h3{margin:0 0 8px;font-size:22px}.portal-v2 .record-directory .directory-empty p{max-width:460px;color:var(--muted);margin:0 auto 20px;font-size:16px}.portal-v2 .record-directory .directory-pagination{border-top:1px solid var(--line);justify-content:space-between;align-items:center;gap:16px;margin:0;padding:20px 24px;display:flex}.record-directory .directory-showing,.record-directory .directory-page-number{color:var(--muted);font-variant-numeric:tabular-nums;font-size:13px}.record-directory .directory-page-controls{align-items:center;gap:12px;display:flex}.record-directory .directory-page-number{white-space:nowrap}.portal-v2 .record-directory .directory-page-controls button{min-height:44px;padding:9px 12px;font-size:13px}.portal-v2 .record-dialog{max-width:880px;max-height:90dvh;color:var(--text);background:var(--surface);border-radius:16px}.portal-v2 .record-dialog .dialog-heading{border-bottom:1px solid var(--line);background:var(--surface);margin:0;padding:24px 28px}.portal-v2 .record-dialog .dialog-heading h2{margin:6px 0 0;font-size:28px}.portal-v2 .record-dialog .dialog-heading .eyebrow{margin:0;font-size:12px}.portal-v2 .record-dialog form>.form-introduction{padding:20px 28px 0;font-size:14px;line-height:1.6}.record-form-sections{gap:28px;padding:24px 28px;display:grid}.record-form-section{min-width:0}.record-form-section+section{border-top:1px solid var(--line);padding-top:24px}.record-form-section>header h3{margin:0 0 4px;font-size:18px}.record-form-section>header p{color:var(--muted);margin:0;font-size:14px;line-height:1.6}.portal-v2 .record-form-section .record-form{gap:20px 24px;padding:20px 0 0}.portal-v2 .record-form-section .record-form label{font-size:14px}.portal-v2 .record-form-section .record-form :is(input,select,textarea){border-radius:10px;min-height:48px;font-size:16px}.portal-v2 .record-form-section .record-form :is(small,.field-translation,.field-error){font-size:12px;line-height:1.6}.portal-v2 :is(.record-form-section,.student-import-workspace) .field-error{color:var(--danger);overflow-wrap:anywhere}.portal-v2 .record-form-section .field-translation{color:var(--muted);margin-top:3px;font-weight:400;display:block}.portal-v2 .record-dialog .dialog-actions{z-index:1;background:var(--surface);border-top:1px solid var(--line);flex-wrap:wrap;align-items:center;margin:0;padding:20px 28px;position:sticky;bottom:0}.record-save-hint{max-width:290px;color:var(--muted);margin-right:auto;font-size:12px;line-height:1.6}.portal-v2 .record-dialog .dialog-actions button{min-height:44px;font-size:14px}.profile-workspace{gap:24px;display:grid}.profile-back-link{width:max-content;min-height:44px;color:var(--muted);align-items:center;gap:8px;font-size:14px;font-weight:500;display:inline-flex}.profile-back-link:hover{color:var(--green)}.portal-v2 .profile-workspace .profile-heading{border:1px solid var(--line);background:var(--surface);border-radius:16px;gap:24px;margin:0;padding:28px}.profile-identity{align-items:center;gap:20px;min-width:0;display:flex}.profile-identity>div{min-width:0}.profile-identity-icon{width:64px;height:64px;color:var(--green);background:var(--soft);border-radius:16px;flex:0 0 64px;place-items:center;display:grid}.profile-identity-icon svg{width:30px;height:30px}.portal-v2 .profile-identity h1{overflow-wrap:anywhere;margin:8px 0 12px;font-size:clamp(27px,2.8vw,36px);line-height:1.25}.portal-v2 .profile-identity .badge{text-transform:capitalize;font-size:12px}.portal-v2 .profile-workspace .profile-attendance{border-left:1px solid var(--line);justify-items:end;gap:4px;min-width:180px;padding-left:24px}.profile-workspace .profile-attendance>svg{color:var(--green);margin-bottom:5px}.profile-workspace .profile-attendance strong{color:var(--text);font-variant-numeric:tabular-nums;font-size:34px;font-weight:650}.profile-workspace .profile-attendance span{font-size:13px;line-height:1.5}.portal-v2 .profile-workspace .profile-tabs{width:100%;box-shadow:none;background:var(--surface);border-radius:12px;gap:8px;margin:0;padding:6px}.profile-workspace .profile-tabs a{border-radius:9px;align-items:center;gap:8px;min-height:44px;padding:10px 18px;font-size:14px;font-weight:600;display:inline-flex}.portal-v2 .profile-workspace .profile-tabs a[aria-current=page]{background:var(--soft);color:var(--green);box-shadow:none}.profile-section-heading h2{margin:0 0 5px;font-size:24px}.profile-section-heading p{color:var(--muted);margin:0;font-size:14px}.portal-v2 .profile-workspace .profile-details{grid-template-columns:repeat(3,minmax(0,1fr));gap:0 24px;margin:20px 0 0}.portal-v2 .profile-workspace .profile-details>div{border:0;border-bottom:1px solid var(--line);background:0 0;border-radius:0;min-width:0;padding:18px 0}.portal-v2 .profile-workspace .profile-details dt{margin-bottom:7px;font-size:12px;line-height:1.5}.portal-v2 .profile-workspace .profile-details dd{color:var(--text);font-size:16px;line-height:1.6}.portal-v2 .profile-workspace .profile-history{margin:0;padding:0;overflow:hidden}.profile-workspace .profile-history .section-heading{border-bottom:1px solid var(--line);flex-wrap:wrap;gap:8px 16px;margin:0;padding:22px 24px}.profile-workspace .profile-history .section-heading h2{margin:0;font-size:22px}.profile-workspace .profile-history .section-heading span{font-size:13px}.profile-workspace .profile-history .table-scroll{border:0;border-radius:0;margin:0}.portal-v2 .profile-workspace .profile-history .records-table th{text-transform:none;padding:14px 20px;font-size:12px}.portal-v2 .profile-workspace .profile-history .records-table td{white-space:normal;overflow-wrap:anywhere;padding:18px 20px;font-size:14px;line-height:1.6}.profile-workspace .profile-history .empty-state{padding:36px 24px;font-size:16px}.student-import-workspace{gap:24px;display:grid}.portal-v2 .student-import-workspace .page-heading{margin:0}.import-page-icon{background:var(--soft);width:60px;height:60px;color:var(--green);border-radius:16px;flex-shrink:0;place-items:center;display:grid}.import-page-icon svg{width:28px;height:28px}.import-progress{grid-template-columns:repeat(3,minmax(0,1fr));gap:16px;margin:0;padding:0;list-style:none;display:grid}.import-progress li{border:1px solid var(--line);background:var(--surface);color:var(--muted);border-radius:12px;align-items:center;gap:12px;padding:16px;display:flex}.import-progress li>span{border:1px solid var(--line);background:var(--bg);border-radius:50%;flex:0 0 36px;place-items:center;width:36px;height:36px;font-size:14px;font-weight:600;display:grid}.import-progress li>span svg{width:20px;height:20px}.import-progress li.current{border-color:color-mix(in srgb,var(--green) 40%,var(--line))}.import-progress li.current>span{background:var(--green);color:var(--surface);border-color:#0000}:root[data-theme=dark] .import-progress li.current>span{color:#101a24}.import-progress li.complete>span{color:var(--green);background:var(--soft)}.import-progress strong{color:var(--text);font-size:14px;font-weight:600;display:block}.import-progress small{color:var(--muted);margin-top:3px;font-size:12px;line-height:1.5;display:block}.import-section-heading{align-items:flex-start;gap:14px;margin-bottom:20px;display:flex}.import-section-heading>span{width:44px;height:44px;color:var(--green);background:var(--soft);border-radius:10px;flex:0 0 44px;place-items:center;display:grid}.import-section-heading>span svg{width:22px;height:22px}.import-section-heading h2{margin:0 0 5px;font-size:22px}.import-section-heading p{color:var(--muted);margin:0;font-size:14px;line-height:1.6}.portal-v2 .student-import-workspace .student-import-downloads{gap:12px;margin:0}.student-import-workspace .student-import-downloads a{min-height:48px;font-size:14px}.import-guidelines{border-top:1px solid var(--line);color:var(--muted);margin:20px 0 0;padding:20px 0 0 18px;font-size:14px;line-height:1.8}.import-guidelines li+li{margin-top:5px}.portal-v2 .student-import-workspace .import-upload-fields{grid-template-columns:minmax(0,1fr) minmax(0,1fr);align-items:start;gap:24px;margin:0}.portal-v2 .student-import-workspace .import-upload-fields :is(label,.reference-field>label){font-size:14px;font-weight:600}.portal-v2 .student-import-workspace .reference-field :is(input,select){min-height:48px;font-size:16px}.student-import-workspace .reference-field small{font-size:12px}.portal-v2 .import-file-field{gap:8px;min-width:0;display:grid}.portal-v2 .import-file-field input{border:1px dashed var(--line);background:var(--bg);border-radius:12px;width:100%;min-width:0;max-width:100%;min-height:106px;padding:20px;font-size:14px}.import-file-field input::file-selector-button{border:1px solid var(--line);background:var(--surface);color:var(--text);font:inherit;cursor:pointer;border-radius:8px;margin-right:12px;padding:10px 12px;font-weight:600}.import-file-field small{color:var(--muted);overflow-wrap:anywhere;font-size:12px;font-weight:400}.import-upload-actions{border-top:1px solid var(--line);flex-wrap:wrap;justify-content:space-between;align-items:center;gap:16px;margin-top:24px;padding-top:20px;display:flex}.import-upload-actions>span{color:var(--muted);font-size:13px}.import-upload-actions>button{min-height:48px;font-size:14px}.import-feedback{border:1px solid var(--line);color:var(--text);background:var(--surface);overflow-wrap:anywhere;border-radius:12px;margin:0;padding:16px 20px;font-size:16px}.student-import-workspace .student-import-preview{border:1px solid var(--line);border-radius:10px;margin:0}.portal-v2 .student-import-workspace .student-import-table th{text-transform:none;font-size:12px}.portal-v2 .student-import-workspace .student-import-table td{padding:16px;font-size:14px}.accounts-workspace{gap:24px;display:grid}.account-panel-heading{align-items:center;gap:14px;margin:0 0 24px;display:flex}.account-panel-heading>div{min-width:0}.account-panel-icon{width:48px;height:48px;color:var(--green);background:var(--soft);border-radius:12px;flex:0 0 48px;place-items:center;display:grid}.account-panel-heading h2{margin:0 0 5px;font-size:22px}.account-panel-heading p{color:var(--muted);margin:0;font-size:14px}.portal-v2 .accounts-workspace .account-form{grid-template-columns:repeat(2,minmax(0,1fr));gap:20px 24px}.accounts-workspace .account-form label{gap:8px;min-width:0;font-size:14px;font-weight:600;display:grid}.portal-v2 .accounts-workspace .account-form :is(input,select){min-height:48px;font-size:16px}.account-create-footer{border-top:1px solid var(--line);grid-column:1/-1;justify-content:space-between;align-items:center;gap:20px;margin-top:4px;padding-top:20px;display:flex}.account-create-footer p{color:var(--muted);align-items:flex-start;gap:8px;margin:0;font-size:13px;line-height:1.6;display:flex}.account-create-footer p>svg{flex-shrink:0;margin-top:2px}.account-create-footer button{flex-shrink:0;min-height:48px}.portal-v2 .account-directory{padding:0;overflow:hidden}.account-directory .account-panel-heading{border-bottom:1px solid var(--line);margin:0;padding:24px}.account-total{color:var(--muted);white-space:nowrap;margin-left:auto;font-size:13px}.account-total strong{color:var(--text);font-variant-numeric:tabular-nums}.account-directory .table-scroll{border:0;border-radius:0;margin:0}.portal-v2 .account-directory .records-table th{text-transform:none;padding:15px 20px;font-size:12px}.portal-v2 .account-directory .records-table td{white-space:normal;overflow-wrap:anywhere;min-width:130px;padding:18px 20px;font-size:14px;line-height:1.6}.portal-v2 .account-directory .records-table .account-name-cell{min-width:190px}.account-name-cell strong{color:var(--text);font-weight:600}.account-name-cell small{color:var(--muted);margin-top:4px;font-size:12px;display:block}.account-role{color:var(--muted);font-size:13px}.portal-v2 .account-directory .records-table .badge{font-size:12px}.account-directory .table-actions{justify-content:flex-start;gap:8px;min-width:260px}.portal-v2 .account-directory .table-actions button{min-height:44px;padding:8px 11px;font-size:13px}.account-directory .pagination{border-top:1px solid var(--line);gap:12px;margin:0;padding:20px 24px}.account-directory .pagination span{font-size:13px}.account-directory .pagination button{min-height:44px}@media (max-width:1100px){.portal-v2 .profile-workspace .profile-details{grid-template-columns:repeat(2,minmax(0,1fr))}.import-progress{gap:10px}.import-progress li{align-items:flex-start;padding:14px}.portal-v2 .record-directory .record-toolbar{grid-template-columns:minmax(0,1fr) minmax(150px,200px)}.portal-v2 .record-directory .record-count{grid-column:1/-1;justify-self:start}}@media (max-width:768px){.profile-identity-icon{border-radius:12px;flex-basis:52px;width:52px;height:52px}.portal-v2 .profile-workspace .profile-heading{flex-direction:column;align-items:stretch;padding:22px}.portal-v2 .profile-workspace .profile-attendance{border-left:0;border-top:1px solid var(--line);text-align:left;grid-template-columns:auto 1fr;justify-items:start;gap:4px 12px;padding:18px 0 0}.profile-workspace .profile-attendance>svg{grid-row:1/3;align-self:center;margin:0}.profile-workspace .profile-attendance strong{font-size:28px}.portal-v2 .profile-workspace .profile-history .section-heading{padding:20px}.import-progress{grid-template-columns:1fr}.import-progress li{align-items:center;padding:14px 16px}.portal-v2 .student-import-workspace .import-upload-fields{grid-template-columns:1fr}.import-upload-actions{flex-direction:column;align-items:stretch}.import-upload-actions>button{width:100%}.account-panel-heading{flex-wrap:wrap}.account-total{margin-left:62px}.account-create-footer{flex-direction:column;align-items:stretch;gap:16px}.account-create-footer button{width:100%}}@media (max-width:600px){.portal-v2 .record-directory .directory-header{flex-wrap:wrap;align-items:flex-start;gap:12px;padding:20px}.record-directory .directory-header>div{flex:1}.record-directory .directory-total{margin-left:60px}:is(.portal-v2 .record-directory .record-toolbar,.portal-v2 .record-directory .record-toolbar:not(:has(.status-filter))){grid-template-columns:1fr;padding:20px}.record-directory .directory-applied-filters{padding:0 20px 20px}.record-directory .directory-clear{margin-left:0}.portal-v2 .record-directory .table-scroll{padding:0 16px}.portal-v2 .record-directory .records-table tr{background:var(--surface);grid-template-columns:repeat(2,minmax(0,1fr));gap:16px;padding:20px;display:grid}.portal-v2 .record-directory .records-table td,.portal-v2 .record-directory .class-table td:nth-child(n+4){text-align:left;border:0;max-width:none;padding:0;font-size:14px;display:block;min-width:0!important}.portal-v2 .record-directory .records-table td:before{max-width:none;margin-bottom:5px;font-size:12px;display:block}.portal-v2 .record-directory .records-table .directory-name-cell{grid-column:1/-1;font-size:18px}.portal-v2 .record-directory .record-actions-cell{grid-column:1/-1;border-top:1px solid var(--line)!important;padding-top:16px!important}.portal-v2 .record-directory .record-actions-cell:before{display:none}.portal-v2 .record-directory .record-actions-cell .table-actions{justify-content:flex-start;gap:8px}.portal-v2 .record-directory .table-actions :is(button,a){flex:auto;min-height:44px}.portal-v2 .record-directory .directory-pagination{flex-direction:column;align-items:flex-start;gap:16px;padding:20px}.record-directory .directory-page-controls{justify-content:space-between;gap:8px;width:100%}.portal-v2 .record-directory .notice-message{margin:16px 20px}.portal-v2 .record-dialog{width:calc(100% - 16px);max-height:94dvh}.portal-v2 .record-dialog .dialog-heading{padding:20px}.portal-v2 .record-dialog form>.form-introduction{padding:20px 20px 0}.record-form-sections{padding:24px 20px}.portal-v2 .record-form-section .record-form{grid-template-columns:1fr}.portal-v2 .record-dialog .dialog-actions{padding:16px 20px max(16px,env(safe-area-inset-bottom))}.record-save-hint{flex-basis:100%;max-width:none}.portal-v2 .record-dialog .dialog-actions button{flex:1}.portal-v2 .profile-workspace .profile-details{grid-template-columns:1fr}.portal-v2 .profile-workspace .profile-tabs a{flex:1;justify-content:center}.portal-v2 .profile-workspace .profile-history .table-scroll{padding:12px 16px 0}.portal-v2 .profile-workspace .profile-history .records-table td{padding:12px 0}.portal-v2 .profile-workspace .profile-history .records-table td:before{font-size:12px}.import-page-icon{display:none}.import-section-heading h2{font-size:20px}.import-section-heading>span{flex-basis:40px;width:40px;height:40px}.portal-v2 .student-import-workspace .student-import-downloads a{width:100%}.portal-v2 .student-import-workspace .student-import-table td{padding:10px 0}.portal-v2 .accounts-workspace .account-form{grid-template-columns:1fr}.account-directory .account-panel-heading{padding:20px}.portal-v2 .account-directory .table-scroll{padding:12px 16px 0}.portal-v2 .account-directory .records-table td{min-width:0;padding:12px 0}.portal-v2 .account-directory .records-table td:before{font-size:12px}.portal-v2 .account-directory .records-table td:last-child{text-align:left;display:block}.portal-v2 .account-directory .records-table td:last-child:before{max-width:none;margin-bottom:10px;display:block}.account-directory .table-actions{gap:8px;min-width:0}.portal-v2 .account-directory .records-table .table-actions{justify-content:flex-start}.account-directory .table-actions button{flex:auto}.account-directory .pagination{flex-wrap:wrap;justify-content:space-between;padding:16px}.account-directory .pagination span{text-align:center;order:3;width:100%}}}@media print{.portal-v2 .record-directory .directory-applied-filters{display:none}.portal-v2 .record-directory .directory-header{padding:12px 0}.portal-v2 .record-directory .table-scroll{padding:0}.portal-v2 .record-directory .records-table td,.portal-v2 .record-directory .class-table :is(th,td):nth-child(n+4){padding:8px;font-size:10px;display:table-cell;min-width:0!important}.portal-v2 .record-directory .record-actions-heading{display:none!important}}
