@font-face{font-family:Vazir;src:url(/fonts/Vazir-Thin.woff2)format("woff2");font-style:normal;font-weight:100;font-display:swap}@font-face{font-family:Vazir;src:url(/fonts/Vazir-Light.woff2)format("woff2");font-style:normal;font-weight:300;font-display:swap}@font-face{font-family:Vazir;src:url(/fonts/Vazir-Regular.woff2)format("woff2");font-style:normal;font-weight:400;font-display:swap}@font-face{font-family:Vazir;src:url(/fonts/Vazir-Medium.woff2)format("woff2");font-style:normal;font-weight:500;font-display:swap}@font-face{font-family:Vazir;src:url(/fonts/Vazir-Bold.woff2)format("woff2");font-style:normal;font-weight:700;font-display:swap}@font-face{font-family:Vazir;src:url(/fonts/Vazir-Black.woff2)format("woff2");font-style:normal;font-weight:900;font-display:swap}:root{--lightningcss-light:initial;--lightningcss-dark: ;color-scheme:light;--ink:#182a35;--ink-soft:#38505b;--paper:#f5f3ea;--white:#fffefa;--teal:#177e78;--teal-soft:#e4f1ee;--saffron:#d29a35;--saffron-soft:#f8efd9;--coral:#c65f4d;--coral-soft:#f9eae5;--slate:#77858a;--line:#e6e5dd;--shadow:0 10px 36px #182a350e;font-synthesis:none;text-rendering:optimizelegibility;font-family:Vazir,Tahoma,sans-serif}*{box-sizing:border-box}body{background:var(--paper);color:var(--ink);margin:0;font-size:14px}button,input,select,textarea{font:inherit}button{color:inherit}button:focus-visible,input:focus-visible,select:focus-visible,textarea:focus-visible,a:focus-visible{outline-offset:2px;outline:3px solid #177e786b}button:disabled{cursor:not-allowed;opacity:.5}.app-shell{grid-template-columns:252px minmax(0,1fr);min-height:100vh;display:grid}.sidebar{background:var(--ink);color:#eaf0ec;flex-direction:column;height:100vh;min-height:100vh;padding:27px 16px 15px;display:flex;position:sticky;top:0}.brand{color:inherit;align-items:center;gap:12px;padding:0 9px 24px;text-decoration:none;display:flex}.brand strong{letter-spacing:-.4px;font-size:16px;font-weight:800;display:block}.brand small{color:#a7b8b7;margin-top:2px;font-size:11px;display:block}.brand-mark{background:#f0bd57;border-radius:11px 11px 11px 3px;justify-content:center;align-items:end;gap:3px;width:38px;height:38px;padding:9px 7px;display:flex;transform:rotate(-4deg)}.brand-mark i{background:var(--ink);border-radius:5px;width:5px;display:block}.brand-mark i:first-child{height:11px}.brand-mark i:nth-child(2){height:18px}.brand-mark i:nth-child(3){height:14px}.school-year{color:#b4c2c0;background:#213640;border:1px solid #3b515a;border-radius:11px;grid-template-columns:8px 1fr;align-items:center;gap:5px 8px;margin:0 4px 22px;padding:12px 13px;font-size:10px;display:grid}.school-year strong{color:#f2f2e9;grid-column:2;font-size:12px;font-weight:600}.pulse{background:#6dc1a5;border-radius:50%;width:7px;height:7px;box-shadow:0 0 0 4px #6dc1a51c}.nav-list{scrollbar-width:thin;scrollbar-color:#49616a transparent;flex-direction:column;gap:3px;display:flex;overflow:auto}.nav-caption{color:#82959a;letter-spacing:.2px;margin-top:2px;padding:0 12px 7px;font-size:10px}.nav-item{text-align:right;color:#bcc9c8;cursor:pointer;background:0 0;border:0;border-radius:8px;align-items:center;gap:11px;width:100%;padding:10px 12px;font-size:12px;transition:background .18s,color .18s;display:flex}.nav-icon{text-align:center;color:#8cc4b5;width:19px;font-size:17px;line-height:1}.nav-count{color:#9ab1b0;direction:ltr;margin-right:auto;font-size:10px}.sidebar-foot{border-top:1px solid #364a54;align-items:center;gap:9px;margin-top:auto;padding:14px 5px 1px;display:flex}.avatar{width:32px;height:32px;color:var(--ink);background:#b0d5c8;border-radius:50%;place-items:center;font-weight:700;display:grid}.user-label{gap:2px;font-size:10px;display:grid}.local-dot{background:#68bd96;border-radius:50%;width:7px;height:7px;margin-right:auto}.main-column{flex-direction:column;min-width:0;min-height:100vh;display:flex}.topbar{border-bottom:1px solid var(--line);background:#fffefabf;align-items:center;gap:23px;min-height:72px;padding:0 34px;display:flex}.topbar-context{white-space:nowrap;font-size:12px}.topbar-context strong{font-weight:700}.breadcrumb b{color:#c4c8c2;margin:0 7px;font-weight:400}.global-search{color:#8a9697;border:1px solid var(--line);background:#fffefa;border-radius:7px;align-items:center;gap:8px;width:min(420px,42vw);height:38px;margin-right:auto;padding:0 10px;display:flex;position:relative}.global-search>span{font-size:20px;transform:rotate(-18deg)}.global-search input{min-width:0;color:var(--ink);background:0 0;border:0;outline:0;flex:1;font-size:11px}.global-search kbd{color:#97a0a0;background:#f8f7f1;border:1px solid #ebe9e1;border-radius:4px;padding:2px 6px;font:10px Vazir,sans-serif}.topbar-actions{white-space:nowrap;align-items:center;gap:14px;display:flex}.save-state{color:var(--teal);font-size:10px}.save-state i,.app-footer i{background:#4aa58c;border-radius:50%;width:6px;height:6px;margin-left:4px;display:inline-block}.save-state.saving i{background:var(--saffron);animation:.8s infinite alternate blink}.icon-button{background:var(--teal-soft);width:32px;height:32px;color:var(--teal);cursor:pointer;border:1px solid #c8ded6;border-radius:7px;font-size:22px}.today{color:var(--slate);font-size:10px}#app{flex:1;width:100%;max-width:1540px;margin:0 auto;padding:30px 36px 45px}.app-footer{border-top:1px solid var(--line);color:#8a9697;justify-content:space-between;padding:14px 36px;font-size:10px;display:flex}.app-footer b{color:var(--saffron);margin:0 4px}.loading-state{min-height:52vh;color:var(--slate);place-content:center;justify-items:center;font-size:12px;display:grid}.loader{border:2px solid #dbe5dd;border-top-color:var(--teal);border-radius:50%;width:27px;height:27px;animation:1s linear infinite spin}.loading-state p{margin-top:15px}@keyframes spin{to{transform:rotate(360deg)}}@keyframes blink{to{opacity:.25}}.page-head{justify-content:space-between;align-items:flex-end;gap:16px;margin-bottom:23px;display:flex}.page-kicker{color:var(--teal);margin-bottom:5px;font-size:10px;font-weight:700}.page-head h1{letter-spacing:-.6px;margin:0;font-size:23px}.page-head p{color:var(--slate);margin:6px 0 0;font-size:11px}.page-actions{align-items:center;gap:8px;display:flex}.btn{border:1px solid var(--line);background:var(--white);height:36px;color:var(--ink);cursor:pointer;border-radius:6px;justify-content:center;align-items:center;gap:7px;padding:0 13px;font-size:11px;text-decoration:none;transition:transform .15s,background .15s,border-color .15s;display:inline-flex}.btn:hover{border-color:#c4d2cd;transform:translateY(-1px)}.btn-primary{background:var(--teal);color:#fff;border-color:var(--teal)}.btn-primary:hover{background:#126e69}.btn-quiet{background:0 0}.btn-danger{color:var(--coral)}.btn-small{height:29px;padding:0 9px;font-size:10px}.grid{gap:15px;display:grid}.stat-grid{grid-template-columns:repeat(4,minmax(0,1fr));margin-bottom:16px}.stat-card{background:var(--white);border:1px solid var(--line);border-radius:9px;min-height:112px;padding:16px;position:relative;overflow:hidden}.stat-card:after{content:"";background:var(--wash,var(--teal-soft));opacity:.75;border-radius:50%;width:80px;height:80px;position:absolute;inset:auto -14px -24px auto}.stat-top{color:var(--slate);justify-content:space-between;align-items:center;font-size:10px;display:flex}.stat-icon{color:var(--tone,var(--teal));font-size:18px}.stat-value{letter-spacing:-.5px;direction:rtl;margin-top:13px;font-size:22px;font-weight:700}.stat-note{color:#9aa3a0;margin-top:3px;font-size:9px}.dash-layout{grid-template-columns:minmax(0,1.5fr) minmax(270px,.85fr);gap:15px;display:grid}.panel{background:var(--white);border:1px solid var(--line);border-radius:9px;overflow:hidden}.panel-head{border-bottom:1px solid #eeede6;justify-content:space-between;align-items:center;gap:12px;min-height:56px;padding:14px 17px;display:flex}.panel-head h2{margin:0;font-size:13px}.panel-head p{color:var(--slate);margin:4px 0 0;font-size:9px}.link-button{color:var(--teal);cursor:pointer;background:0 0;border:0;font-family:inherit;font-size:10px}.class-strip{align-items:stretch;gap:6px;padding:1px 0 6px;display:flex;overflow-x:auto}.class-chip{text-align:right;border:1px solid var(--line);cursor:pointer;background:#fffefa;border-radius:6px;flex:1;min-width:74px;padding:8px 9px}.class-chip:hover{background:#f6fbf8;border-color:#a4cabe}.class-chip span{white-space:nowrap;color:var(--ink-soft);font-size:9px;display:block}.class-chip b{margin-top:6px;font-size:15px;display:block}.class-chip i{height:3px;width:var(--fill,50%);background:var(--chip,var(--teal));border-radius:5px;margin-top:7px;display:block}.mini-list{gap:0;display:grid}.mini-row{border-bottom:1px solid #f0efe9;justify-content:space-between;align-items:center;gap:10px;padding:9px 0;font-size:10px;display:flex}.mini-row:last-child{border-bottom:0}.mini-row strong{font-weight:600;display:block}.mini-row small{color:var(--slate);margin-top:3px;font-size:9px;display:block}.mini-amount{color:var(--coral);white-space:nowrap;direction:ltr;font-size:10px}.empty-note{color:#9aa3a0;text-align:center;padding:20px 10px;font-size:10px}.table-wrap{width:100%;overflow:auto}.data-table{border-collapse:collapse;white-space:nowrap;width:100%}.data-table th{text-align:right;color:#859294;border-bottom:1px solid var(--line);background:#faf9f4;padding:10px 13px;font-size:9px;font-weight:500}.data-table td{border-bottom:1px solid #f0efe9;padding:10px 13px;font-size:10px}.data-table tr:last-child td{border-bottom:0}.person-cell{align-items:center;gap:9px;display:flex}.person-avatar{width:27px;height:27px;color:var(--teal);background:#e7f1ec;border-radius:8px 8px 8px 2px;flex:0 0 27px;place-items:center;font-size:10px;font-weight:700;display:grid}.person-cell strong{font-size:10px;font-weight:600;display:block}.person-cell small{color:#97a09e;margin-top:2px;font-size:8px;display:block}.class-badge,.tag{color:#49616a;background:#eef1ed;border-radius:4px;align-items:center;padding:3px 7px;font-size:9px;display:inline-flex}.money{text-align:right;font-variant-numeric:tabular-nums;direction:ltr}.debt-positive{color:var(--coral)}.debt-clear{color:var(--teal)}.row-actions{gap:5px;display:flex}.icon-link{border:1px solid var(--line);width:27px;height:26px;color:var(--ink-soft);cursor:pointer;background:#fff;border-radius:5px;place-items:center;font-size:12px;display:inline-grid}.icon-link:hover{color:var(--teal);border-color:#add2c5}.toolbar{border-bottom:1px solid var(--line);flex-wrap:wrap;align-items:center;gap:8px;padding:12px 14px;display:flex}.toolbar select,.toolbar input,.field input,.field select,.field textarea{height:35px;color:var(--ink);background:#fffefa;border:1px solid #e5e5dc;border-radius:5px;min-width:130px;padding:0 10px;font-size:10px}.toolbar .result-count{color:var(--slate);margin-right:auto;font-size:9px}.select-control{border:1px solid var(--line);height:34px;color:var(--ink-soft);background:#fffefa;border-radius:5px;padding:0 10px;font-family:inherit;font-size:10px}.attendance-strip{flex-wrap:wrap;gap:7px;display:flex}.attendance-mark{border:1px solid var(--line);background:#fffefa;border-radius:6px;flex:1;min-width:102px;padding:8px 10px}.attendance-mark span{color:var(--slate);font-size:9px}.attendance-mark strong{margin-top:4px;font-size:16px;display:block}.attendance-mark.present strong{color:var(--teal)}.attendance-mark.absent strong{color:var(--coral)}.attendance-mark.late strong{color:#a17518}.table-empty{text-align:center;color:var(--slate);padding:34px 12px;font-size:11px}.table-empty strong{color:var(--ink-soft);margin-bottom:6px;display:block}.profile-layout{grid-template-columns:minmax(0,1.3fr) minmax(260px,.7fr);gap:14px;display:grid}.profile-card{background:var(--white);border:1px solid var(--line);border-radius:9px;padding:17px}.profile-heading{border-bottom:1px solid var(--line);align-items:center;gap:12px;padding-bottom:15px;display:flex}.profile-heading .person-avatar{width:42px;height:42px;font-size:15px}.profile-heading h2{margin:0;font-size:16px}.profile-heading p{color:var(--slate);margin:4px 0 0;font-size:10px}.detail-grid{grid-template-columns:repeat(2,1fr);gap:13px;margin-top:14px;display:grid}.detail-item small{color:var(--slate);font-size:9px;display:block}.detail-item strong{margin-top:4px;font-size:11px;font-weight:600;display:block}.detail-item.wide{grid-column:1/-1}.meter{margin:12px 0}.meter-label{color:var(--slate);justify-content:space-between;font-size:9px;display:flex}.meter-rail{background:#efeee7;border-radius:10px;height:7px;margin-top:6px;overflow:hidden}.meter-fill{height:100%;width:var(--width);background:var(--teal);border-radius:inherit}.balance-hero{background:#f6f3e9;border-radius:8px;padding:15px}.balance-hero small{color:var(--slate);font-size:9px}.balance-hero strong{margin-top:5px;font-size:19px;display:block}.form-grid{grid-template-columns:repeat(2,minmax(0,1fr));gap:13px 12px;display:grid}.form-grid.cols-3{grid-template-columns:repeat(3,minmax(0,1fr))}.field{gap:5px;min-width:0;display:grid}.field.full{grid-column:1/-1}.field label{color:var(--ink-soft);font-size:9px}.field input,.field select,.field textarea{width:100%}.field textarea{resize:vertical;min-height:78px;padding:9px 10px}.field input[type=number]{text-align:right;direction:ltr}.form-section-title{color:var(--teal);border-top:1px solid var(--line);grid-column:1/-1;margin:5px 0 -4px;padding-top:8px;font-size:10px}.form-hint{color:var(--slate);font-size:9px;line-height:1.8}.modal{border:1px solid var(--line);width:min(700px,100% - 24px);max-height:min(88vh,900px);color:var(--ink);background:var(--white);border-radius:12px;padding:0;box-shadow:0 22px 90px #10222c40}.modal::backdrop{-webkit-backdrop-filter:blur(2px);backdrop-filter:blur(2px);background:#0f1f2785}.modal-head{border-bottom:1px solid var(--line);justify-content:space-between;align-items:flex-start;padding:17px 20px;display:flex}.modal-head h2{margin:0;font-size:15px}.modal-head p{color:var(--slate);margin:5px 0 0;font-size:9px}.modal-close{color:var(--slate);cursor:pointer;background:0 0;border:0;font-size:20px}.modal-body{padding:18px 20px;overflow:auto}.modal-foot{border-top:1px solid var(--line);justify-content:space-between;align-items:center;gap:10px;padding:12px 20px;display:flex}.modal-foot>div{gap:7px;display:flex}.toast{opacity:0;z-index:20;background:var(--ink);color:#fff;box-shadow:var(--shadow);pointer-events:none;border-radius:7px;padding:10px 15px;font-size:10px;transition:all .2s;position:fixed;inset:auto 26px 22px auto;transform:translateY(15px)}.toast.show{opacity:1;transform:translateY(0)}.toast.error{background:#8e3f37}.report-grid{grid-template-columns:1fr 1fr;gap:14px;display:grid}.bar-list{gap:12px;display:grid}.bar-row{grid-template-columns:minmax(90px,1fr) 2fr 40px;align-items:center;gap:10px;font-size:9px;display:grid}.bar-row span{text-overflow:ellipsis;white-space:nowrap;overflow:hidden}.bar-track{background:#eeeee6;border-radius:10px;height:8px;overflow:hidden}.bar-track i{height:100%;width:var(--width);background:var(--bar,var(--teal));border-radius:inherit;display:block}.bar-row b{text-align:left;direction:ltr;font-size:10px}.action-grid{grid-template-columns:repeat(3,minmax(0,1fr));gap:8px;display:grid}.action-tile{text-align:right;border:1px solid var(--line);min-height:86px;color:var(--ink);cursor:pointer;background:#fffefa;border-radius:7px;flex-direction:column;justify-content:space-between;align-items:flex-start;padding:12px;text-decoration:none;display:flex}.action-tile b{color:var(--teal);font-size:16px;font-weight:500}.action-tile span{font-size:10px;font-weight:600}.action-tile small{color:var(--slate);font-size:8px}.notice{color:#725b27;background:#fbf6e9;border:1px solid #eadcb5;border-radius:6px;padding:11px 13px;font-size:10px;line-height:1.9}.settings-layout{grid-template-columns:1fr 1fr;gap:14px;display:grid}.sms-settings-form{gap:14px;max-width:680px;display:grid}.sms-settings-form .field label{color:var(--ink-soft);font-size:11px}.sms-settings-form .field small{color:var(--slate);font-size:9px}.sms-state{border:1px solid var(--line);color:var(--slate);white-space:nowrap;border-radius:999px;align-items:center;gap:7px;padding:6px 9px;font-size:10px;display:inline-flex}.sms-state i{background:#a3aaa4;border-radius:50%;width:7px;height:7px}.sms-state.connected{color:#256b58;background:#eff8f3;border-color:#c7e2d8}.sms-state.connected i{background:#34936c}.sms-actions{flex-wrap:wrap;align-items:center;gap:9px;margin-top:14px;display:flex}.sms-check-panel{gap:14px;display:grid}.sms-feedback{border-radius:6px;padding:10px 12px;font-size:11px;line-height:1.7}.sms-feedback.error{color:#9b4437;background:#fbefec;border:1px solid #efc8c0}.sms-feedback.success{color:#256b58;background:#eff8f3;border:1px solid #c7e2d8}.sms-security-note{border-top:1px solid var(--line);color:var(--slate);gap:4px;padding-top:13px;font-size:10px;line-height:1.8;display:grid}.sms-security-note strong{color:var(--ink-soft)}.section-loading{min-height:110px;color:var(--slate);justify-content:center;align-items:center;gap:11px;font-size:11px;display:flex}@media (max-width:1080px){.app-shell{grid-template-columns:215px minmax(0,1fr)}.sidebar{padding-inline:11px}.topbar{gap:15px;padding-inline:22px}.today{display:none}#app,.app-footer{padding-inline:23px}.stat-grid{grid-template-columns:repeat(2,minmax(0,1fr))}}@media (max-width:760px){.app-shell{display:block}.sidebar{z-index:10;height:auto;min-height:0;padding:9px 12px;position:sticky;top:0}.brand{padding:0}.brand-mark{width:31px;height:31px;padding:7px 6px}.brand strong{font-size:13px}.brand small,.school-year,.sidebar-foot,.nav-caption{display:none}.nav-list{flex-direction:row;margin-top:9px;padding-bottom:2px;overflow-x:auto}.nav-item{flex:none;gap:6px;width:auto;padding:8px 10px;font-size:10px}.nav-item.active{box-shadow:inset 0 -2px #62b7a1}.nav-icon{font-size:14px}.nav-count{display:none}.topbar{gap:10px;min-height:56px;padding-inline:14px}.topbar-context{display:none}.global-search{flex:1;width:auto;height:34px}.global-search kbd{display:none}.topbar-actions{gap:8px}.save-state{font-size:0}.save-state i{width:8px;height:8px}.icon-button{width:30px;height:30px}#app{padding:20px 13px 32px}.page-head{flex-direction:column;align-items:flex-start;margin-bottom:15px}.page-head h1{font-size:20px}.page-head p{line-height:1.8}.page-actions{align-self:stretch}.page-actions .btn{flex:1}.stat-grid{gap:8px}.stat-card{min-height:99px;padding:12px}.stat-value{font-size:19px}.dash-layout,.profile-layout,.report-grid,.settings-layout{grid-template-columns:1fr}.panel-head{min-height:50px;padding:12px}.panel-body{padding:12px}.app-footer{padding:11px 13px;font-size:8px}.form-grid,.form-grid.cols-3{grid-template-columns:1fr 1fr}.action-grid{grid-template-columns:repeat(2,1fr)}.toast{text-align:center;inset:auto 13px 14px}.toolbar{gap:6px;padding:9px}.toolbar select,.toolbar input{flex:1;min-width:115px}}@media (max-width:410px){.form-grid,.form-grid.cols-3{grid-template-columns:1fr}.form-section-title,.field.full{grid-column:auto}.stat-card{padding:10px}.stat-top{font-size:9px}.stat-value{font-size:17px}.today{display:none}}@media (prefers-reduced-motion:reduce){*,:before,:after{scroll-behavior:auto!important;transition-duration:.01ms!important;animation-duration:.01ms!important}}@media print{body{background:#fff}.sidebar,.topbar,.app-footer,.page-actions,.toolbar,.row-actions,.icon-button,.nav-list,.toast{display:none!important}.app-shell,.main-column{display:block}#app{max-width:none;padding:0}.panel{box-shadow:none;border-color:#ddd;break-inside:auto!important;page-break-inside:auto!important}.profile-card,.stat-card{break-inside:avoid;box-shadow:none;border-color:#ddd}.page-head{break-after:avoid-page;page-break-after:avoid;margin-bottom:8px}.panel-head{break-after:avoid-page;page-break-after:avoid}.attendance-roster{overflow:visible}.attendance-roster-row,.teacher-student-row,.data-table tr{break-inside:avoid;page-break-inside:avoid}.data-table th,.data-table td{padding:6px 8px;font-size:9pt}.print-title{text-align:center;margin:0 0 16px;display:block}.panel,.table-wrap{overflow:visible}}.class-overview{grid-template-columns:repeat(4,minmax(0,1fr));gap:10px;padding:14px;display:grid}.class-tile{border:1px solid var(--line);text-align:right;cursor:pointer;background:#fffefa;border-radius:8px;min-height:130px;padding:13px;transition:transform .15s,border-color .15s;position:relative;overflow:hidden}.class-tile:hover{border-color:var(--class-color);transform:translateY(-2px)}.class-tile-mark{background:var(--class-color);border-radius:3px;width:22px;height:3px;margin-bottom:9px;display:block}.class-tile-name{color:var(--ink-soft);white-space:nowrap;text-overflow:ellipsis;font-size:10px;display:block;overflow:hidden}.class-tile b{margin-top:7px;font-size:21px;display:inline-block}.class-tile small{color:var(--slate);margin-right:5px;font-size:8px}.class-tile-foot{border-top:1px solid var(--line);color:var(--slate);margin-top:9px;padding-top:7px;font-size:8px;display:block}.status-select{border:1px solid var(--line);min-width:96px;height:29px;color:var(--ink-soft);background:#fffefa;border-radius:5px;padding:0 8px;font-family:inherit;font-size:9px}.status-select.status-present{color:var(--teal);background:var(--teal-soft);border-color:#d1e5df}.status-select.status-absent{color:var(--coral);background:var(--coral-soft);border-color:#f0d4cb}.status-select.status-late{color:#936d1c;background:var(--saffron-soft);border-color:#eee0bd}.signature-cell{min-width:100px;border-bottom:1px dotted #c4c8c2!important}.mini-row-button{color:inherit;text-align:right;cursor:pointer;background:0 0;border:0;width:100%;font-family:inherit}.mini-row-button:hover{background:#f9f8f2}.stage-grid{grid-template-columns:repeat(3,minmax(0,1fr));gap:7px;display:grid}.stage-card{border:1px solid var(--line);background:#fbfaf5;border-radius:6px;padding:9px}.stage-card small{color:var(--slate);font-size:8px;display:block}.stage-card strong{margin-top:5px;font-size:16px;display:block}.grade-list{margin-top:11px}.grade-list .mini-row{font-size:9px}.grade-list b{font-size:10px}.modal-backdrop{z-index:30;-webkit-backdrop-filter:blur(2px);backdrop-filter:blur(2px);background:#0f1f2785;place-items:center;padding:12px;display:grid;position:fixed;inset:0}.modal{border:1px solid var(--line);width:min(700px,100% - 4px);max-height:min(88vh,900px);color:var(--ink);background:var(--white);border-radius:12px;overflow:auto;box-shadow:0 22px 90px #10222c40}.modal-profile{width:min(600px,100% - 4px)}.modal-invoice{width:min(640px,100% - 4px)}.invoice-preview{background:#fbfaf5}.invoice-copy{color:#243841;background:#fff;border:1px solid #deddd4;padding:15px 17px}.invoice-head{border-bottom:1px solid #e4e2d8;justify-content:space-between;align-items:center;padding-bottom:8px;display:flex}.invoice-brand{color:var(--teal);font-size:13px;font-weight:800}.invoice-copy h2{text-align:center;margin:10px 0;font-size:13px}.invoice-meta{grid-template-columns:2fr 1fr 1fr;gap:10px;margin-bottom:8px;display:grid}.invoice-meta span{gap:3px;display:grid}.invoice-meta small{color:var(--slate);font-size:8px}.invoice-meta b{font-size:9px}.invoice-table{border-collapse:collapse;width:100%}.invoice-table td{border-bottom:1px solid #eeede6;padding:4px 7px;font-size:9px}.invoice-table td:last-child{text-align:left;direction:ltr}.invoice-total td,.invoice-balance td{font-weight:700}.invoice-balance td{color:var(--coral)}.invoice-foot{color:var(--slate);justify-content:space-between;gap:15px;margin-top:9px;font-size:8px;display:flex}.invoice-cut{border-top:1px dashed #b6b9b3;margin:14px 0}.print-only{display:none}.loading-screen,.error-screen{background:var(--paper);min-height:100vh;color:var(--slate);place-content:center;justify-items:center;font-size:12px;display:grid}.error-card{border:1px solid var(--line);background:var(--white);border-radius:10px;width:min(480px,100% - 34px);padding:28px}.error-card h1{color:var(--ink);font-size:21px}.error-card p{font-size:11px;line-height:1.9}.error-card code{direction:ltr;display:inline-block}.invoice-instruction{background:#f8f6ef;border-radius:4px;margin:7px 0 0;padding:5px 7px;font-size:8px;line-height:1.6}@media (max-width:900px){.class-overview{grid-template-columns:repeat(3,minmax(0,1fr))}}@media (max-width:760px){.class-overview{grid-template-columns:repeat(2,minmax(0,1fr))}.invoice-meta{grid-template-columns:1fr 1fr}.invoice-meta span:first-child{grid-column:1/-1}}@media print{.modal-backdrop,.toast,body.invoice-printing .app-shell,.attendance-class-picker,.attendance-save-row,.teacher-attendance-save-row{display:none!important}.print-only{display:block!important}.invoice-print{color:#111;padding:8mm;position:absolute;inset:0}.invoice-copy{margin:0;padding:7mm}.invoice-cut{margin:8mm 0}.invoice-head .tag{color:#333;background:#fff;border:1px solid #bbb}}.attendance-print-title{color:#111;text-align:center;border-bottom:1px solid #888;margin:0 0 12px;padding:0 0 9px}.attendance-print-title strong,.attendance-print-title span{display:block}.attendance-print-title strong{font-size:14pt}.attendance-print-title span{margin-top:5px;font-size:10pt}.settings-tabs{scrollbar-width:thin;border-bottom:1px solid #dfe6de;align-items:stretch;gap:5px;margin:0 0 16px;padding:0 3px;display:flex;overflow-x:auto}.settings-tab{color:#73817b;min-height:46px;font:inherit;cursor:pointer;background:0 0;border:0;flex:none;padding:0 17px;font-size:11px;font-weight:600;transition:color .16s,background .16s;position:relative}.settings-tab:hover{color:#176c64;background:#eaf4ef8c}.settings-tab.active{color:#176c64;font-weight:700}.settings-tab.active:after{content:"";inset-inline:12px;background:#25877b;border-radius:4px 4px 0 0;height:3px;position:absolute;bottom:-1px}.settings-tab:focus-visible{outline-offset:-3px;border-radius:7px 7px 0 0;outline:2px solid #77bba8}.settings-tab-content{min-width:0}@media (max-width:760px){.settings-tabs{margin-bottom:12px}.settings-tab{min-height:43px;padding-inline:14px;font-size:10px}}.auth-shell{background:var(--white);grid-template-columns:minmax(0,1.05fr) minmax(420px,.95fr);min-height:100vh;display:grid}.auth-intro{background:var(--ink);color:#f5f3ea;isolation:isolate;flex-direction:column;justify-content:space-between;min-height:100vh;padding:clamp(28px,6vw,76px);display:flex;position:relative;overflow:hidden}.auth-intro:before{content:"";z-index:-1;aspect-ratio:1;border:1px solid #deeae11f;border-radius:50%;width:min(52vw,690px);position:absolute;bottom:-38%;left:-20%;box-shadow:0 0 0 42px #deeae106,0 0 0 84px #deeae106,0 0 0 126px #deeae106}.auth-brand{align-items:center;gap:13px;display:flex}.auth-brand .brand-mark{width:43px;height:43px}.auth-brand strong{font-size:17px;display:block}.auth-brand small{color:#a7b8b7;margin-top:4px;font-size:10px;display:block}.auth-copy{max-width:560px;margin-block:auto;padding-block:72px}.auth-copy .page-kicker{color:#f0bd57;letter-spacing:.08em}.auth-copy h1{letter-spacing:-.05em;max-width:520px;margin:15px 0;font-size:clamp(34px,5vw,62px);line-height:1.35}.auth-copy p{color:#c0ccca;max-width:420px;font-size:14px;line-height:2.1}.auth-ledger{opacity:.58;background:linear-gradient(145deg,#ffffff12,#ffffff04);border:1px solid #f2efdc42;border-radius:7px 22px 22px 7px;width:170px;height:215px;padding:24px 18px;position:absolute;top:24%;left:clamp(28px,6vw,76px);transform:rotate(-8deg)}.auth-ledger:before{content:"";inset-block:0;border-right:1px solid #f0bd577a;position:absolute;right:28px}.auth-ledger span{color:#f0bd57;margin:0 23px 22px 0;font-size:8px;display:block}.auth-ledger i{background:#eff1e33d;height:1px;margin:14px 23px 0 0;display:block}.auth-ledger i:nth-of-type(2){width:80%}.auth-ledger i:nth-of-type(3){width:65%}.auth-ledger i:nth-of-type(4){width:73%}.auth-proof{border-top:1px solid #ebf1eb29;align-items:flex-start;gap:12px;max-width:410px;padding-top:20px;display:flex}.auth-proof-mark{color:#86d0bc;background:#177e7857;border-radius:50%;flex:0 0 25px;place-items:center;width:25px;height:25px;display:grid}.auth-proof strong,.auth-proof small{display:block}.auth-proof strong{font-size:11px}.auth-proof small{color:#a7b8b7;margin-top:5px;font-size:9px;line-height:1.8}.auth-panel{place-self:center;width:min(100%,580px);padding:clamp(30px,6vw,76px)}.auth-form-head{margin-bottom:27px}.auth-overline{color:var(--teal);font-size:10px;font-weight:700}.auth-form-head h2{letter-spacing:-.04em;margin:8px 0 5px;font-size:28px}.auth-form-head p{color:var(--slate);margin:0;font-size:11px;line-height:1.9}.auth-form{gap:15px;display:grid}.auth-field{color:var(--ink-soft);gap:7px;font-size:10px;font-weight:600;display:grid}.auth-field>span{justify-content:space-between;align-items:baseline;display:flex}.auth-field small{color:#929d9c;font-size:8px;font-weight:400}.auth-field input{width:100%;height:43px;color:var(--ink);background:#fffefa;border:1px solid #dedfd8;border-radius:5px;padding:0 12px;font-size:12px;transition:border-color .15s,box-shadow .15s}.auth-field input:focus{border-color:var(--teal);outline:none;box-shadow:0 0 0 3px #177e781a}.auth-field input::placeholder{color:#aeb7b2}.auth-submit{background:var(--teal);color:#fff;cursor:pointer;border:0;border-radius:5px;justify-content:space-between;align-items:center;height:46px;margin-top:5px;padding:0 15px;font-size:11px;font-weight:700;transition:background .16s,transform .16s;display:flex}.auth-submit:hover{background:#126e69;transform:translateY(-1px)}.auth-submit span{font-size:16px}.auth-error{background:var(--coral-soft);color:#8e3f37;border:1px solid #f0d4cb;border-radius:5px;padding:10px 12px;font-size:10px;line-height:1.8}.auth-switch{color:var(--slate);margin-top:20px;font-size:10px}.auth-switch button{color:var(--teal);font:inherit;cursor:pointer;background:0 0;border:0;padding:0;font-weight:700}.auth-foot{border-top:1px solid var(--line);color:#929d9c;align-items:center;gap:7px;margin-top:34px;padding-top:14px;font-size:8px;display:flex}.auth-foot-dot{background:var(--teal);border-radius:50%;width:6px;height:6px}@media (max-width:820px){.auth-shell{grid-template-columns:1fr}.auth-intro{min-height:auto;padding:25px clamp(22px,7vw,52px) 22px}.auth-copy{padding-block:33px 27px}.auth-copy h1{max-width:430px;font-size:clamp(30px,8vw,43px)}.auth-copy p{max-width:500px;font-size:11px}.auth-ledger{transform-origin:0 0;opacity:.35;top:18%;left:6%;transform:scale(.68)rotate(-8deg)}.auth-proof{display:none}.auth-panel{padding:36px clamp(22px,7vw,52px) 44px}.auth-foot{margin-top:23px}}@media (max-width:480px){.auth-intro{padding-top:19px}.auth-brand .brand-mark{width:36px;height:36px}.auth-brand strong{font-size:14px}.auth-copy{padding-block:25px 17px}.auth-copy h1{max-width:300px;font-size:31px}.auth-copy p{max-width:300px;font-size:10px}.auth-ledger{top:16%;left:-9%;transform:scale(.54)rotate(-8deg)}.auth-panel{padding-top:28px}.auth-form-head h2{font-size:24px}}.session-exit{border:1px solid var(--line);background:var(--white);height:30px;color:var(--ink-soft);cursor:pointer;border-radius:5px;padding:0 10px;font-size:9px}.session-exit:hover{color:var(--coral);border-color:#d7aaa0}.modal-head{z-index:4;background:var(--white);padding:20px 24px;position:sticky;top:0}.modal-head h2{font-size:18px}.modal-head p{font-size:10px;line-height:1.8}.entry-form .modal-body{padding:24px}.entry-form .modal-foot{z-index:3;background:var(--white);justify-content:flex-start;gap:9px;padding:14px 24px;position:sticky;bottom:0}.entry-form .modal-foot .btn{min-width:126px;height:42px;font-size:11px}.entry-form .modal-foot .btn-primary{order:-1}.form-grid{gap:18px 16px}.field{gap:7px}.field label{color:var(--ink-soft);font-size:10px;font-weight:600}.field input,.field select,.field textarea{min-width:0;height:42px;min-height:42px;color:var(--ink);background:#fffefa;border:1px solid #dedfd8;border-radius:5px;padding:0 12px;font-size:12px;transition:border-color .15s,box-shadow .15s}.field input:focus,.field select:focus,.field textarea:focus{border-color:var(--teal);outline:none;box-shadow:0 0 0 3px #177e781a}.field textarea{height:auto;min-height:105px;padding:10px 12px;line-height:1.8}.field input::placeholder,.field textarea::placeholder{color:#aeb7b2}.sms-composer-backdrop{z-index:80;padding:20px}.sms-composer{width:min(1060px,100%);max-height:min(850px,100dvh - 40px);color:var(--ink);background:#f9fbf8;border:1px solid #ffffffc2;border-radius:18px;flex-direction:column;display:flex;overflow:hidden;box-shadow:0 28px 100px #0c1c1b61}.sms-composer-head{background:#ffffffc2;border-bottom:1px solid #e6ebe4;justify-content:space-between;gap:20px;padding:23px 27px 19px;display:flex}.sms-composer-head h2{letter-spacing:-.03em;margin:5px 0 3px;font-size:21px}.sms-composer-head p{color:var(--slate);margin:0;font-size:11px}.sms-composer-kicker{color:#278277;letter-spacing:.08em;font-size:9px;font-weight:700}.sms-composer-layout{flex:1;grid-template-columns:minmax(330px,.9fr) minmax(360px,1.1fr);gap:16px;min-height:0;padding:18px;display:grid;overflow:auto}.sms-recipient-panel,.sms-message-panel{background:#fff;border:1px solid #e4eae3;border-radius:13px;min-width:0}.sms-recipient-panel{flex-direction:column;min-height:380px;max-height:550px;padding:15px;display:flex}.sms-recipient-title{justify-content:space-between;align-items:center;gap:10px;margin-bottom:12px;display:flex}.sms-recipient-title>div{gap:4px;display:grid}.sms-recipient-title strong{font-size:13px}.sms-recipient-title small,.sms-recipient-hint{color:var(--slate);font-size:9px}.sms-recipient-search{width:100%;height:38px;color:var(--ink);font:inherit;background:#fbfcfa;border:1px solid #e2e8e0;border-radius:8px;flex:none;padding:0 11px;font-size:10px}.sms-recipient-search:focus{border-color:#8abdb0;outline:0;box-shadow:0 0 0 3px #177e7817}.sms-recipient-list{flex:1;min-height:0;margin-top:9px;overflow-y:auto}.sms-recipient{cursor:pointer;border-bottom:1px solid #eff2ed;grid-template-columns:17px minmax(0,1fr) auto;align-items:center;gap:10px;min-height:52px;transition:background .14s;display:grid}.sms-recipient:hover{background:#f6faf6}.sms-recipient input{accent-color:#177e78;cursor:pointer;width:15px;height:15px;margin:0}.sms-recipient-copy{gap:4px;min-width:0;display:grid}.sms-recipient-copy strong{color:var(--ink);text-overflow:ellipsis;white-space:nowrap;font-size:10px;overflow:hidden}.sms-recipient-copy small{color:var(--slate);font-size:9px}.sms-recipient-class{color:#818d87;text-overflow:ellipsis;white-space:nowrap;max-width:110px;font-size:8px;overflow:hidden}.sms-recipient.needs-phone-review .sms-recipient-class{color:#a56b40}.sms-recipient-empty{color:var(--slate);text-align:center;font-size:10px}.sms-recipient-hint{padding-top:9px}.sms-message-panel{grid-template-columns:1fr;align-content:start;gap:9px;padding:18px;display:grid}.sms-form-label{color:var(--ink-soft);margin-top:3px;font-size:10px;font-weight:700}.sms-message-panel select,.sms-message-panel textarea{width:100%;min-width:0;color:var(--ink);font:inherit;background:#fbfcfa;border:1px solid #e0e7de;border-radius:8px;font-size:11px}.sms-message-panel select{height:40px;padding:0 11px}.sms-message-panel textarea{resize:vertical;min-height:195px;padding:12px;line-height:1.9}.sms-message-panel select:focus,.sms-message-panel textarea:focus{border-color:#8abdb0;outline:0;box-shadow:0 0 0 3px #177e7814}.sms-message-meta{color:var(--slate);justify-content:space-between;gap:12px;font-size:9px;display:flex}.sms-message-meta small{font-size:inherit;text-align:left}.sms-send-note{background:#f1f8f4;border:1px solid #dcebe5;border-radius:9px;gap:3px;margin-top:4px;padding:12px 13px;display:grid}.sms-send-note strong{color:#216b5d;font-size:10px}.sms-send-note span{color:#607a70;font-size:9px}.sms-composer-alert{color:#785a2a;background:#fff8ea;border:1px solid #efd7ae;border-radius:8px;margin:14px 18px 0;padding:10px 12px;font-size:10px}.sms-composer-alert a{color:#177e78;font-weight:700}.sms-composer-foot{background:#ffffffd1;border-top:1px solid #e5ebe3;justify-content:flex-start;gap:9px;padding:14px 20px;display:flex}.sms-composer-foot .btn{min-width:120px;height:42px}.sms-composer-foot .btn-primary{order:-1}.sms-composer-foot .btn:disabled{cursor:not-allowed;opacity:.55}@media (max-width:760px){.sms-composer-backdrop{align-items:flex-end;padding:0}.sms-composer{border-radius:18px 18px 0 0;width:100%;max-height:94dvh}.sms-composer-head{padding:17px 16px 14px}.sms-composer-head h2{font-size:18px}.sms-composer-layout{grid-template-columns:1fr;gap:11px;padding:11px}.sms-recipient-panel{min-height:230px;max-height:310px}.sms-message-panel textarea{min-height:130px}.sms-composer-foot{padding:11px}.sms-composer-foot .btn{flex:1}.sms-message-meta{flex-direction:column;align-items:flex-start;gap:3px}}.required-mark{color:var(--coral);margin-inline-start:4px}.finance-input-grid{grid-column:1/-1;grid-template-columns:repeat(2,minmax(0,1fr));gap:15px 16px;display:grid}.form-section-title{margin-top:10px;padding-top:13px;font-size:11px;font-weight:700}@media (max-width:760px){.entry-form .modal-body{padding:18px 16px}.entry-form .modal-foot{padding:12px 16px}.entry-form .modal-foot .btn{flex:1;min-width:0}.form-grid{grid-template-columns:1fr}.form-section-title{grid-column:1/-1}}@media (max-width:430px){.modal-backdrop{padding:0}.modal{border:0;border-radius:0;width:100%;min-height:100dvh;max-height:100dvh}.modal-head{padding:15px 16px}.finance-input-grid{gap:13px 10px}.finance-input-grid .field input{padding-inline:8px}}:root{--line:#e3e7e0;--shadow:0 12px 32px #1b31360e;--shadow-hover:0 16px 38px #1b313616}body{background:#f2f4ef}.sidebar{background:#1b3039;border-inline-start:1px solid #ffffff0f;padding:25px 15px 17px}.brand-mark{box-shadow:0 5px 14px #f0bd5726}.school-year{background:#ffffff0b;border-color:#deece617;border-radius:9px;margin-bottom:25px;padding:13px 14px}.nav-list{gap:5px}.nav-caption{color:#91a3a5;letter-spacing:.035em;padding-inline:12px;font-size:9px}.nav-item{color:#c2cecb;border-radius:9px;gap:10px;min-height:43px;padding:5px 9px;font-size:11px}.nav-item:hover{background:#ffffff13}.nav-icon{color:#a7d4c5;background:#ffffff0e;border-radius:8px;flex:0 0 29px;place-items:center;width:29px;height:29px;font-size:15px;display:grid}.sidebar-foot{border-color:#ffffff1a;margin-inline:3px;padding-top:16px}.avatar{background:#c3e0d4;border-radius:10px}.topbar{z-index:8;-webkit-backdrop-filter:blur(14px);backdrop-filter:blur(14px);background:#f8f9f5e0;border-bottom-color:#dfe4ded9;min-height:74px;padding-inline:clamp(20px,3vw,44px);position:sticky;top:0}.topbar-context{font-size:11px}.global-search{background:#edf0eb;border-color:#0000;border-radius:9px;height:41px;transition:background .18s,border-color .18s,box-shadow .18s}.global-search kbd{background:#ffffffb8;border-color:#e1e6e0}#app{max-width:1640px;padding:37px clamp(20px,3vw,46px) 52px}.page-head{margin-bottom:26px}.page-kicker{letter-spacing:.035em;margin-bottom:7px;font-size:9px}.page-head h1{letter-spacing:-.8px;text-wrap:balance;font-size:clamp(24px,2.1vw,31px);line-height:1.35}.page-head p{color:#6d7e81;max-width:62ch;margin-top:8px;font-size:11px;line-height:1.9}.btn{border-color:#dce2dc;border-radius:8px;height:39px;min-height:39px;padding-inline:15px;font-size:10px;transition:transform .18s,background .18s,border-color .18s,box-shadow .18s}.btn:hover{border-color:#b9cec4;box-shadow:0 4px 12px #1b313612}.btn:active,.icon-button:active,.nav-item:active{transform:translateY(1px)scale(.985)}.btn-primary{background:#177e78;box-shadow:0 5px 13px #177e7829}.btn-primary:hover{background:#126e69;box-shadow:0 7px 17px #177e7836}.stat-card{background:#fff;border:1px solid #e8ebe5;border-radius:12px;min-height:126px;padding:19px 20px;transition:transform .2s,box-shadow .2s,border-color .2s;box-shadow:0 4px 17px #1b313606}.stat-card:hover{box-shadow:var(--shadow);border-color:#d9e4dc;transform:translateY(-2px)}.stat-card:after{background:var(--wash,var(--teal-soft));opacity:.42;width:94px;height:94px;inset:auto -26px -35px auto}.stat-top{z-index:1;color:#718184;font-size:10px;position:relative}.stat-icon{background:var(--wash,#e6f1ed);width:29px;height:29px;color:var(--tone,var(--teal));border-radius:8px;place-items:center;font-size:14px;font-weight:500;display:grid}.stat-value{z-index:1;font-variant-numeric:tabular-nums;letter-spacing:-.6px;margin-top:14px;font-size:26px;position:relative}.stat-note{z-index:1;color:#8b9999;margin-top:4px;font-size:9px;line-height:1.7;position:relative}.panel{background:#fff;border:1px solid #e5e9e3;border-radius:12px;transition:box-shadow .2s,border-color .2s;box-shadow:0 4px 18px #1b313607}.panel-head{border-bottom-color:#edf0eb;min-height:68px;padding:17px 20px}.panel-head h2{letter-spacing:-.15px;font-size:13px;font-weight:700}.panel-head p{color:#839091;margin-top:5px;font-size:9px;line-height:1.7}.link-button{border-radius:6px;padding:7px 9px;font-size:9px;transition:background .16s,color .16s}.link-button:hover{color:#126e69;background:#edf5f1}.class-strip{gap:8px;padding-bottom:3px}.class-chip{background:#fafbf8;border-color:#e8ece6;border-radius:8px;min-width:84px;padding:11px;transition:border-color .18s,background .18s,transform .18s}.class-chip:hover{background:#f4faf6;border-color:#b8d8cb;transform:translateY(-2px)}.class-chip span{color:#647679;font-size:9px}.class-chip b{font-variant-numeric:tabular-nums;margin-top:8px;font-size:17px}.mini-row{border-bottom-color:#eef0ec;min-height:48px;padding:11px 2px;font-size:10px}.mini-row strong{font-size:10px}.mini-row small{color:#899697;font-size:9px}.mini-amount{color:#a95143;font-variant-numeric:tabular-nums;background:#fbefea;border-radius:6px;padding:5px 8px;font-size:10px}.action-tile{background:#fbfcf9;border-color:#e8ece6;border-radius:9px;min-height:102px;padding:12px;transition:transform .18s,border-color .18s,background .18s,box-shadow .18s}.action-tile:hover{background:#f4faf6;border-color:#b9d8cb;transform:translateY(-2px);box-shadow:0 5px 13px #177e7812}.action-tile b{color:#177e78;background:#e8f2ee;border-radius:8px;place-items:center;width:29px;height:29px;font-size:14px;display:grid}.action-tile span{margin-top:10px;font-size:9px}.action-tile small{color:#879394;margin-top:4px;font-size:8px}.data-table th{color:#778789;background:#f7f9f6;padding:12px 14px;font-size:9px;font-weight:700}.data-table td{border-bottom-color:#edf0eb;padding:12px 14px;font-size:10px}.data-table tbody tr{transition:background .15s}.person-avatar{border-radius:9px}.class-badge,.tag{color:#536a69;background:#eef3ef;border-radius:5px;padding:4px 8px}.toolbar{background:#fbfcf9;border-bottom-color:#edf0eb;gap:9px;padding:14px 17px}.toolbar select,.toolbar input{background:#fff;border-color:#e4e9e3;border-radius:8px;height:39px;font-size:10px}.toolbar select:focus,.toolbar input:focus{border-color:#a8cfc1;outline:0;box-shadow:0 0 0 3px #177e7814}.result-count{color:#78888a;font-size:9px}.bar-track{background:#edf0eb;height:6px}.table-empty{color:#819091;padding:42px 14px;line-height:1.8}.table-empty strong{font-size:12px}.empty-note{color:#748486;background:#f7f9f6;border-radius:8px;padding:24px 12px;line-height:1.8}.app-footer{color:#7f8d8e;border-top-color:#e1e6df;padding:16px clamp(20px,3vw,46px)}.session-exit{border-color:#e1e6df;border-radius:8px;height:34px}@media (max-width:1080px){.app-shell{grid-template-columns:220px minmax(0,1fr)}.dash-layout{grid-template-columns:minmax(0,1fr) minmax(250px,.8fr);gap:13px}#app{padding-inline:23px}.panel-body{padding:16px}}@media (max-width:760px){body,.main-column{background:#f2f4ef}.sidebar{background:#1b3039;padding:9px 12px}.nav-list{gap:4px}.nav-item{min-height:37px}.nav-icon{flex-basis:25px;width:25px;height:25px}.topbar{border-bottom-color:#e1e6df;min-height:59px}#app{padding:24px 14px 36px}.page-head{gap:13px;margin-bottom:19px}.page-head h1{font-size:23px}.stat-grid{gap:9px;margin-bottom:13px}.stat-card{border-radius:10px;min-height:108px;padding:13px}.stat-value{font-size:22px}.dash-layout{gap:12px}.panel{border-radius:10px}.panel-head{min-height:60px;padding:13px 15px}.panel-body{padding:14px}.action-grid{gap:7px}.action-tile{min-height:95px;padding:10px}.app-footer{padding:12px 14px}}@media (prefers-reduced-motion:reduce){.panel,.stat-card,.class-chip,.action-tile,.btn,.nav-item{transition:none}}.app-shell{grid-template-columns:272px minmax(0,1fr)}.sidebar{color:#20343b;background:#fbfcfa;border-inline-start:1px solid #e7ebe5;padding:25px 17px 17px}.brand{padding:0 8px 23px}.brand strong{color:#20343b;font-size:15px}.brand small{color:#899697;font-size:10px}.nav-list{scrollbar-color:#d1dcd5 transparent;gap:4px}.nav-caption{color:#94a09e;letter-spacing:.02em;font-size:9px;font-weight:700}.nav-caption-lower{margin-top:20px}.nav-item{color:#66787b;border-radius:9px;gap:11px;min-height:43px;padding:6px 9px;font-size:10px;font-weight:600}.nav-icon{color:#718482;background:#f0f3ef;border-radius:9px;flex:0 0 31px;place-items:center;width:31px;height:31px;display:grid}.topbar{background:#fafbf8e8}#app{max-width:1720px;padding-top:30px}.overview-hero{background:linear-gradient(112deg,#eff7f1 0%,#f7f8f1 56%,#f3f5eb 100%);border:1px solid #dce7de;border-radius:18px;justify-content:space-between;align-items:center;gap:28px;min-height:190px;margin-bottom:19px;padding:28px 34px;display:flex;position:relative;overflow:hidden}.overview-hero:before,.overview-hero:after{content:"";pointer-events:none;border:1px solid #23786517;border-radius:50%;position:absolute}.overview-hero:before{width:390px;height:390px;inset:auto auto -260px -60px;box-shadow:0 0 0 32px #23786506,0 0 0 66px #23786505}.overview-hero:after{width:250px;height:250px;inset:-166px 25% auto auto}.overview-hero-copy,.overview-hero-action{z-index:1;position:relative}.overview-hero .page-kicker{color:#708480;align-items:center;gap:8px;margin-bottom:10px;font-size:9px;display:flex}.live-indicator{background:#39977c;border-radius:50%;width:7px;height:7px;box-shadow:0 0 0 4px #39977c1c}.hero-divider{color:#c0cbc1}.overview-hero h1{color:#213c3a;letter-spacing:-.04em;margin:0;font-size:clamp(23px,2.2vw,31px);font-weight:750}.overview-hero p{color:#718482;margin:8px 0 14px;font-size:10px}.hero-meta{color:#58716c;flex-wrap:wrap;gap:16px;display:flex}.hero-meta span{align-items:center;gap:6px;font-size:9px;display:inline-flex}.hero-meta svg{color:#278275}.overview-hero-action{background:#ffffffa3;border:1px solid #d3e1d6e6;border-radius:13px;justify-items:start;gap:6px;min-width:208px;padding:16px 18px;display:grid}.hero-date-label{color:#8b9995;font-size:9px}.hero-date{color:#324e4b;margin-bottom:6px;font-size:11px;font-weight:700}.overview-hero-action .btn{gap:7px}.stat-grid{gap:12px;margin-bottom:18px}.stat-card{border-radius:13px;min-height:119px;padding:16px 18px}.stat-card.stat-primary{background:#fff;border-color:#dce9df}.stat-top{font-size:9px}.stat-icon{border-radius:9px}.stat-icon svg{display:block}.stat-primary .stat-value{color:#1d5f56}.stat-caption{inset-inline-end:18px;color:#a2b2aa;font-size:8px;position:absolute;bottom:15px}.dash-layout{grid-template-columns:repeat(12,minmax(0,1fr));gap:15px}.dash-classes{grid-column:span 7}.dash-dues,.dash-quick{grid-column:span 5}.dash-recent{grid-column:span 7}.panel{border-radius:14px}.panel-head{min-height:67px;padding:16px 19px}.panel-head h2{color:#263d3f;font-size:12px}.panel-head p{font-size:9px}.panel-body{padding:18px 19px}.action-grid{grid-template-columns:1fr;gap:8px}.action-tile{text-align:right;border-radius:10px;grid-template-rows:auto auto;grid-template-columns:34px minmax(0,1fr) 18px;align-items:center;column-gap:10px;min-height:63px;padding:10px 12px;display:grid;position:relative}.action-tile b{border-radius:10px;grid-row:1/3;width:32px;height:32px}.action-tile span{color:#354c4d;align-self:end;margin:0;font-size:9px}.action-tile small{align-self:start;margin-top:3px;font-size:8px}.action-tile i{color:#8ca49a;grid-area:1/3/3;font-size:13px;font-style:normal}.action-tile:hover{transform:translate(-2px)}.dash-recent .table-wrap{border-radius:0 0 14px 14px}.data-table th{letter-spacing:.01em}@media (max-width:1120px){.app-shell{grid-template-columns:238px minmax(0,1fr)}.dash-layout{grid-template-columns:repeat(2,minmax(0,1fr))}.dash-classes,.dash-dues,.dash-quick,.dash-recent{grid-column:auto}}@media (max-width:760px){.sidebar{background:#fbfcfa}.nav-item{color:#66787b}.nav-item.active{box-shadow:inset 0 -2px #25877b}.nav-icon{flex-basis:27px;width:27px;height:27px}.overview-hero{border-radius:14px;flex-direction:column;align-items:flex-start;gap:15px;min-height:0;padding:21px 19px}.overview-hero h1{font-size:23px}.overview-hero-action{grid-template-columns:1fr auto;align-items:center;column-gap:12px;width:100%;min-width:0;padding:11px 13px}.hero-date-label{grid-column:1;align-self:end}.hero-date{grid-area:2/1;align-self:start;margin:0}.overview-hero-action .btn{grid-area:1/2/3}.dash-layout{grid-template-columns:minmax(0,1fr)}.dash-classes,.dash-dues,.dash-quick,.dash-recent{grid-column:1}.action-grid{grid-template-columns:1fr}}.panel,.stat-card{isolation:isolate;-webkit-backdrop-filter:blur(18px)saturate(135%);background:linear-gradient(135deg,#ffffffc7,#f9fcfa82);border:1px solid #ffffffc7;position:relative;overflow:hidden;box-shadow:0 12px 34px #273d3f11,inset 0 1px #ffffffe0}.panel:before,.stat-card:before{content:"";z-index:-1;pointer-events:none;border-radius:inherit;background:linear-gradient(125deg,#ffffff85,#0000 42%,#d8ebe11f);position:absolute;inset:0}.panel:hover{border-color:#fffffff5;box-shadow:0 16px 40px #273d3f16,inset 0 1px #fffffff2}.stat-card{border-color:#ffffffd1}.quick-panel .panel-body{background:#f5faf729}.action-tile{-webkit-backdrop-filter:blur(12px);background:linear-gradient(130deg,#ffffffb8,#f7fbf87d);border-color:#ffffffd9;box-shadow:inset 0 1px #ffffffe0,0 4px 14px #2a424009}.data-table th{background:#eff5f19e}@media (max-width:760px){.main-column{background:#f1f4f2}.panel,.stat-card{-webkit-backdrop-filter:blur(12px)}}@media (prefers-reduced-transparency:reduce){.panel,.stat-card,.action-tile{-webkit-backdrop-filter:none;background:#fff}}.main-column{background:radial-gradient(at 83% 2%,#a5beff47,#0000 34rem),radial-gradient(at 8% 34%,#c6b1f433,#0000 30rem),radial-gradient(at 68% 76%,#97d6de33,#0000 36rem),#f2f4f9}.panel,.stat-card{background:linear-gradient(135deg,#ffffffd1 0%,#f7f9ffb0 54%,#eff5ff94 100%);border-color:#ffffffe6;box-shadow:0 14px 38px #404d7d17,inset 0 1px #fffffff5}.panel:before,.stat-card:before{background:linear-gradient(125deg,#ffffffb3,#e1e8ff1f 48%,#bedef430)}.panel:hover{box-shadow:0 18px 44px #404d7d21,inset 0 1px #fffffffa}.panel-head{background:linear-gradient(100deg,#f4f7ff94,#fafbff4d);border-bottom-color:#c1cce77a}.panel-head h2{color:#303e60}.panel-head p{color:#7783a0}.stat-card.stat-primary{background:linear-gradient(135deg,#ffffffe0,#ebf1ffb8)}.stat-top{color:#687694}.stat-note{color:#8792aa}.action-tile{background:linear-gradient(135deg,#ffffffd1,#eff4ffad);border-color:#ffffffeb;box-shadow:inset 0 1px #fffffffa,0 5px 16px #404d7d0e}.action-tile b{color:#526cbd;background:#e0eaffdb}.action-tile span{color:#344260}.action-tile small{color:#7e89a2}.action-tile i{color:#788bc0}.action-tile:hover{background:linear-gradient(135deg,#fffffff5,#e5ecffd6);border-color:#8ea4e7b3}.data-table th{color:#697695;background:#e8edfaad}.data-table td{border-bottom-color:#c7cfe473}.data-table tbody tr:hover{background:#e1e9ff75}.table-wrap{background:#ffffff2e}@media (max-width:760px){.main-column{background:#f2f4f9}}.sidebar{background:linear-gradient(#f6f8fff0,#eff3fde8);border-inline-start-color:#aebbe26b;box-shadow:8px 0 28px #424f800b,inset -1px 0 #fffc}.brand-mark{background:#e8dfff}.topbar{background:linear-gradient(100deg,#f7f9ffe6,#f0f4fdd1);border-bottom-color:#b4bfe07a;box-shadow:0 5px 24px #414f8209}.global-search{background:#ffffffad;border-color:#b8c3e380;box-shadow:inset 0 1px #ffffffe6}@media (max-width:760px){.sidebar{background:linear-gradient(100deg,#f6f8fffa,#edf2fdf7)}.nav-item{color:#697795}.nav-item.active{box-shadow:inset 0 -2px #7776cc}.topbar{background:#f5f7fef5}}.sidebar{color:#e8ebf7;background:radial-gradient(at 8% 8%,#6671be40,#0000 23rem),linear-gradient(160deg,#1b223ffa,#181f36fa 54%,#1d263efa);border-inline-start-color:#bfc7f21f;box-shadow:10px 0 32px #141b3521,inset -1px 0 #ffffff12}.brand strong{color:#f2f3fb}.brand small{color:#aab2cf}.brand-mark{background:linear-gradient(145deg,#f3d58e,#dcb968);box-shadow:0 5px 18px #dcb96829}.brand-mark i{background:#29324f}.school-year{color:#aeb8d3;background:linear-gradient(125deg,#ffffff13,#ffffff09);border-color:#ccd5f521}.school-year strong{color:#f0f1f8}.school-year .pulse{background:#72d0af;box-shadow:0 0 0 4px #72d0af1f}.nav-caption{color:#8792b3}.nav-item{color:#c0c8de}.nav-item:hover{color:#fff;background:#ffffff13}.nav-item.active{color:#fff;background:linear-gradient(100deg,#6f6fbe47,#5b73ad33);box-shadow:inset -3px 0 #a99be9,inset 0 1px #ffffff12}.nav-icon{color:#abb7e5;background:#ffffff12}.nav-item.active .nav-icon{color:#d0c7ff;background:#c4b8ff29}.nav-count{color:#a6b1ce}.sidebar-foot{border-color:#d2dbf624}.avatar{color:#30395e;background:linear-gradient(145deg,#d9d3ff,#b9c9f2)}.user-label{color:#eef0f9}.user-label small{color:#9ea9c6}.local-dot{background:#71d0ae}.topbar{color:#eff1fb;background:radial-gradient(at 12% 0,#6e72bb33,#0000 26rem),linear-gradient(105deg,#1f2746fa,#1b233ef7);border-bottom-color:#c3ccf321;box-shadow:0 8px 28px #141b351f,inset 0 1px #ffffff0a}.topbar-context{color:#e5e8f5}.breadcrumb{color:#a4aecb}.breadcrumb b{color:#687397}.global-search{color:#aab5d3;background:#0c132b5e;border-color:#ced7f829;box-shadow:inset 0 1px #ffffff0b}.global-search input{color:#f4f5fc}.global-search input::placeholder{color:#a0abc9}.global-search:focus-within{background:#0c132b8f;border-color:#b2a8f4a8;box-shadow:0 0 0 3px #a99be921}.global-search kbd{color:#c1c9df;background:#ffffff13;border-color:#d3dbf826}.topbar-actions{color:#c0c8de}.save-state{color:#a9e2cb}.save-state i{background:#78d4b1}.save-state.saving i{background:#e7c47c}.save-state.error{color:#ffb6ae}.icon-button{color:#e0dbff;background:linear-gradient(140deg,#9184db52,#6885c642);border-color:#c2b9fc45}.icon-button:hover{background:#9184db66;border-color:#d5ceff8c}.today{color:#aeb8d3}@media (max-width:760px){.sidebar{background:linear-gradient(100deg,#1b223ffc,#1d2642fc)}.nav-item{color:#c0c8de}.nav-item.active{box-shadow:inset 0 -2px #a99be9}.topbar{background:linear-gradient(105deg,#1f2746fc,#1b233efc)}}.sidebar .brand{text-align:right;cursor:pointer;background:linear-gradient(135deg,#ffffff13,#ffffff06);border:1px solid #d3dbfa1f;border-radius:14px;grid-template-columns:42px minmax(0,1fr) 7px;align-items:center;gap:0 11px;width:100%;min-width:0;margin:0 0 15px;padding:11px 10px;transition:background .18s,border-color .18s,transform .18s;display:grid}.sidebar .brand:hover{background:linear-gradient(135deg,#ffffff1c,#ffffff0b);border-color:#d3dbfa38}.sidebar .brand:active{transform:translateY(1px)}.sidebar .brand-mark{color:#efd894;background:linear-gradient(145deg,#e6cc8938,#cbb2771a);border:1px solid #f1dca652;border-radius:12px;place-items:center;width:42px;height:42px;padding:0;display:grid;transform:none;box-shadow:inset 0 1px #ffffff21,0 5px 16px #0c11241f}.sidebar .brand-mark svg{display:block}.sidebar .brand-copy{gap:4px;min-width:0;display:grid}.sidebar .brand-copy strong{color:#f4f5fb;letter-spacing:-.2px;text-overflow:ellipsis;white-space:nowrap;font-size:13px;font-weight:750;overflow:hidden}.sidebar .brand-copy small{color:#aeb8d1;text-overflow:ellipsis;white-space:nowrap;margin:0;font-size:9px;line-height:1.5;display:block;overflow:hidden}.brand-indicator{background:#75d1ae;border-radius:50%;width:7px;height:7px;box-shadow:0 0 0 4px #75d1ae1a,0 0 12px #75d1ae52}@media (max-width:760px){.sidebar .brand{width:auto;box-shadow:none;background:0 0;border:0;border-radius:0;gap:9px;margin:0;padding:0;display:flex}.sidebar .brand:hover{background:0 0}.sidebar .brand-mark{border-radius:10px;width:34px;height:34px}.sidebar .brand-copy small,.sidebar .brand-indicator{display:none}}@media screen{.panel .data-table th{padding:15px 17px;font-size:11px;font-weight:700}.panel .data-table td{padding:15px 17px;font-size:12px}.panel .person-cell{gap:11px}.panel .person-avatar{border-radius:11px;flex-basis:35px;width:35px;height:35px;font-size:12px}.panel .person-cell strong{font-size:12px;font-weight:650}.panel .person-cell small{margin-top:3px;font-size:10px}.panel .class-badge,.panel .tag{padding:5px 9px;font-size:10px}.panel .money{font-size:12px}.panel .icon-link{border-radius:8px;width:31px;height:31px;font-size:14px}.panel .row-actions{gap:6px}}@media screen and (max-width:760px){.panel .data-table th{padding:12px 13px;font-size:10px}.panel .data-table td{padding:13px;font-size:11px}.panel .person-avatar{flex-basis:32px;width:32px;height:32px}.panel .person-cell strong{font-size:11px}.panel .person-cell small{font-size:9px}}.mobile-menu-toggle,.mobile-nav-backdrop{display:none}@media (max-width:760px){.sidebar{z-index:31;overscroll-behavior:contain;width:min(88vw,310px);height:100dvh;min-height:100dvh;padding:20px 16px 16px;transition:transform .28s cubic-bezier(.2,.75,.25,1),box-shadow .28s;inset-block:0;inset-inline-start:0;overflow-y:auto;transform:translate(110%);box-shadow:18px 0 48px #0f142b40;position:fixed!important}.sidebar.mobile-open{transform:translate(0)}.sidebar .brand{background:linear-gradient(135deg,#ffffff13,#ffffff06);border:1px solid #d3dbfa1f;border-radius:14px;grid-template-columns:42px minmax(0,1fr) 7px;gap:0 11px;width:100%;margin:0 0 15px;padding:11px 10px;display:grid}.sidebar .brand:hover{background:linear-gradient(135deg,#ffffff1c,#ffffff0b)}.sidebar .brand-mark{border-radius:12px;width:42px;height:42px}.sidebar .brand-copy small,.sidebar .brand-indicator{display:block}.sidebar .school-year{margin-bottom:20px;display:grid}.sidebar .sidebar-foot{display:flex}.sidebar .nav-caption{display:block}.sidebar .nav-list{flex-direction:column;gap:4px;margin-top:0;padding-bottom:10px;overflow:visible}.sidebar .nav-item{flex:initial;gap:11px;width:100%;min-height:45px;padding:7px 9px;font-size:11px}.sidebar .nav-item.active{box-shadow:inset -3px 0 #a99be9,inset 0 1px #ffffff12}.sidebar .nav-icon{flex-basis:31px;width:31px;height:31px}.sidebar .nav-count{display:inline}.mobile-nav-backdrop.open{z-index:30;-webkit-backdrop-filter:blur(3px);cursor:pointer;background:#0d122687;border:0;width:100%;height:100%;animation:.2s ease-out both nav-backdrop-in;display:block;position:fixed;inset:0}.mobile-menu-toggle{color:#e0dbff;cursor:pointer;background:#ffffff12;border:1px solid #c2b9fc3d;border-radius:11px;flex:0 0 38px;place-items:center;width:38px;height:38px;display:grid}.mobile-menu-toggle:active{transform:scale(.96)}}@keyframes nav-backdrop-in{0%{opacity:0}to{opacity:1}}@media (prefers-reduced-motion:reduce){.sidebar,.mobile-nav-backdrop.open{transition:none;animation:none}}.class-tile-card{background:linear-gradient(145deg,#ffffffd1,#eff4ff9e);border:1px solid #c0cce88c;border-radius:13px;min-width:0;overflow:hidden;box-shadow:inset 0 1px #fffffff2,0 7px 20px #35436f0d}.class-tile-card .class-tile{width:100%;min-height:123px;box-shadow:none;background:0 0;border:0;border-radius:0}.class-tile-card .class-tile:hover{background:#eef3ff61;border-color:#0000;transform:none}.class-tile-card .class-tile-name{color:#354363;font-size:12px;font-weight:700}.class-tile-card .class-tile b{color:#2f3e60;font-size:23px}.class-tile-card .class-tile small,.class-tile-card .class-tile-foot{font-size:10px}.class-tile-card .class-tile-foot{border-color:#bec9e58a}.class-teacher-row{background:#eef3ff61;border-top:1px solid #bec9e57a;justify-content:space-between;align-items:center;gap:7px;min-height:47px;padding:8px 11px;display:flex}.class-teacher-names{color:#697795;text-overflow:ellipsis;white-space:nowrap;min-width:0;font-size:9px;overflow:hidden}.class-assign-button{color:#5869aa;cursor:pointer;background:#ffffffa3;border:1px solid #97a4d566;border-radius:7px;flex:none;padding:5px 8px;font-size:9px;font-weight:650}.class-assign-button:hover{background:#f2f2ff;border-color:#9394d4}.selected-class-teachers{background:#ebf1ff61;border-bottom:1px solid #c1cce77a;justify-content:space-between;align-items:center;gap:15px;padding:14px 17px;display:flex}.selected-class-teachers>div{gap:4px;display:grid}.selected-class-teachers strong{color:#354363;font-size:11px}.selected-class-teachers span{color:#7783a0;font-size:10px}.class-teacher-picker>p{color:#74819e;margin:0 0 13px;font-size:11px}.class-roster-actions{flex-wrap:wrap;justify-content:flex-end;gap:7px;display:flex}.class-roster-actions .btn{min-height:32px}.class-roster-manager{gap:12px;display:grid}.class-roster-search{color:#84918b;background:#fff;border:1px solid #dce3dc;border-radius:8px;align-items:center;gap:9px;height:40px;padding:0 11px;display:flex}.class-roster-search input{color:#253a3a;background:0 0;border:0;outline:0;width:100%;font-size:11px}.class-roster-picker{align-content:start;gap:6px;max-height:min(52vh,440px);padding:1px 3px 1px 1px;display:grid;overflow:auto}.class-roster-choice{cursor:pointer;background:#fbfcf8;border:1px solid #e4e9e2;border-radius:8px;align-items:center;gap:11px;min-height:50px;padding:8px 11px;display:flex}.class-roster-choice:has(input:checked){background:#f1f7f1;border-color:#77a797}.class-roster-choice input{accent-color:#357b69;width:17px;height:17px;margin:0}.class-roster-choice>span{gap:4px;min-width:0;display:grid}.class-roster-choice strong{color:#334845;font-size:11px}.class-roster-choice small{color:#87938d;text-overflow:ellipsis;white-space:nowrap;font-size:9px;overflow:hidden}.class-checkbox-grid{grid-template-columns:repeat(2,minmax(0,1fr));gap:9px;display:grid}.class-checkbox{color:#3b496b;cursor:pointer;background:#f6f8ffa3;border:1px solid #bbc7e585;border-radius:10px;align-items:center;gap:10px;min-width:0;min-height:46px;padding:9px 11px;font-size:11px;display:flex}.class-checkbox:has(input:checked){background:#eae9ffbd;border-color:#7d80c7a6}.class-checkbox input{accent-color:#706fc1;flex:none;width:16px;height:16px;margin:0}.class-checkbox span{gap:3px;min-width:0;display:grid}.class-checkbox strong{color:#344260;font-size:11px}.class-checkbox small{color:#8490a8;font-size:9px}.class-teacher-empty{justify-items:start;gap:10px;padding:10px 0;display:grid}.class-teacher-empty strong{color:#354363;font-size:12px}.class-teacher-empty span{color:#7783a0;font-size:10px}.teacher-directory{grid-template-columns:repeat(2,minmax(0,1fr));gap:14px;padding:18px;display:grid}.teacher-card{background:linear-gradient(145deg,#ffffffe6,#f1f5ffb3);border:1px solid #c0cce894;border-radius:14px;gap:16px;min-width:0;padding:18px;display:grid;box-shadow:inset 0 1px #fffffff2,0 8px 22px #35436f0e}.teacher-card-head{align-items:center;gap:12px;display:flex}.teacher-avatar{color:#465483;background:linear-gradient(145deg,#e7eaff,#dfeeea);border:1px solid #7782c430;border-radius:14px;flex:none;place-items:center;width:46px;height:46px;font-size:14px;font-weight:750;display:grid}.teacher-identity{gap:5px;min-width:0;display:grid}.teacher-identity h3{color:#27354e;text-overflow:ellipsis;white-space:nowrap;margin:0;font-size:14px;overflow:hidden}.teacher-identity>span{color:#78839a;font-size:11px}.teacher-identity b{font-weight:500}.teacher-card-head .row-actions{margin-inline-start:auto}.teacher-card-section{border-top:1px solid #bec9e57a;gap:8px;padding-top:13px;display:grid}.teacher-section-label{color:#576582;font-size:10px;font-weight:750}.teacher-card-section p{color:#46536b;overflow-wrap:anywhere;margin:0;font-size:12px;line-height:1.9}.teacher-card-section p.teacher-description-empty,.teacher-description-empty{color:#929bb0;font-size:11px}.teacher-class-list{flex-wrap:wrap;align-items:center;gap:7px;display:flex}.teacher-class-list .class-badge{margin:0;padding:5px 9px;font-size:11px}.field textarea{resize:vertical;border:1px solid var(--line);width:100%;min-height:112px;color:var(--ink);background:#fffefa;border-radius:7px;padding:10px 12px;font-size:12px;line-height:1.8}.teacher-access-row{border-top:1px solid #bec9e57a;justify-content:space-between;align-items:center;gap:10px;padding-top:12px;display:flex}.teacher-access-status{color:#9098aa;overflow-wrap:anywhere;align-items:center;gap:7px;min-width:0;font-size:10px;display:flex}.teacher-access-status i{background:#c2c7d2;border-radius:50%;flex:none;width:7px;height:7px}.teacher-access-status.connected{color:#357867}.teacher-access-status.connected i{background:#44a186;box-shadow:0 0 0 3px #44a1861f}.teacher-portal{color:#142b32;background-color:#f2f3ed;background-image:linear-gradient(#24585306 1px,#0000 1px),linear-gradient(90deg,#24585306 1px,#0000 1px);background-position:0 0;background-repeat:repeat;background-size:28px 28px;background-attachment:scroll;background-origin:padding-box;background-clip:border-box;min-height:100vh;font-family:Vazir,Tahoma,sans-serif}.teacher-portal-top{background:#fafbf7eb;border-bottom:1px solid #dce3dc;justify-content:space-between;align-items:center;min-height:74px;padding:12px max(24px,50vw - 560px);display:flex}.teacher-portal-brand{color:inherit;align-items:center;gap:11px;text-decoration:none;display:flex}.teacher-portal-brand>span:last-child{gap:3px;display:grid}.teacher-portal-brand strong{font-size:14px}.teacher-portal-brand small{color:#768582;font-size:10px}.teacher-portal-mark{color:#f5f1df;background:#1c5953;border-radius:11px 11px 11px 3px;place-items:center;width:37px;height:37px;font-size:18px;font-weight:750;display:grid}.teacher-portal-exit{color:#455c59;cursor:pointer;background:#fff;border:1px solid #dce3dc;border-radius:7px;padding:8px 12px;font-size:11px}.teacher-portal-exit:hover{background:#f8fbf7;border-color:#8eaaa1}.teacher-portal-content{width:min(1050px,100% - 40px);margin:0 auto;padding:38px 0 22px}.teacher-welcome{color:#f8f7ed;background:#173c40;border-radius:15px;justify-content:space-between;align-items:center;gap:20px;min-height:176px;padding:30px 34px;display:flex;box-shadow:0 18px 36px #1434351f}.teacher-overline{color:#6b9c8d;letter-spacing:.04em;font-size:10px;font-weight:700}.teacher-welcome .teacher-overline{color:#a0c2ae}.teacher-welcome h1{letter-spacing:-.04em;margin:11px 0 7px;font-size:clamp(23px,4vw,32px)}.teacher-welcome p{color:#bdceca;margin:0;font-size:12px}.teacher-welcome-count{background:#eef6e70f;border:1px solid #c2ddc938;border-radius:11px;justify-items:center;gap:5px;min-width:125px;padding:16px 18px;display:grid}.teacher-welcome-count strong{color:#e9cb79;font-size:31px;line-height:1.2}.teacher-welcome-count span{color:#ccdbd4;font-size:10px}.teacher-class-selector,.teacher-roster{background:#fffffce8;border:1px solid #dfe5dc;border-radius:12px;margin-top:19px;padding:23px 25px;box-shadow:0 8px 25px #1f3d3509}.teacher-section-heading,.teacher-roster-head{justify-content:space-between;align-items:end;gap:14px;margin-bottom:17px;display:flex}.teacher-section-heading h2,.teacher-roster-head h2{letter-spacing:-.025em;margin:4px 0 0;font-size:18px}.teacher-total-students{color:#7a8985;font-size:10px}.teacher-classes-grid{grid-template-columns:repeat(3,minmax(0,1fr));gap:9px;display:grid}.teacher-class-option{text-align:right;cursor:pointer;background:#fbfcf8;border:1px solid #e1e6df;border-radius:9px;grid-template-rows:auto auto;grid-template-columns:38px 1fr auto;align-items:center;gap:3px 11px;min-width:0;padding:13px 14px;transition:border-color .16s,background .16s,transform .16s;display:grid}.teacher-class-option:hover{border-color:#b6cfc2;transform:translateY(-1px)}.teacher-class-option.active{background:#f0f6ee;border-color:#528c7a;box-shadow:inset -3px 0 #347b69}.teacher-class-symbol{color:#336758;background:#e5eee3;border-radius:8px;grid-row:span 2;place-items:center;width:38px;height:38px;font-size:15px;font-weight:700;display:grid}.teacher-class-name{color:#243d3d;text-overflow:ellipsis;white-space:nowrap;min-width:0;font-size:12px;font-weight:700;overflow:hidden}.teacher-class-student-count{color:#85928c;font-size:9px}.teacher-class-arrow{color:#668579;grid-area:1/3/span 2;font-size:16px}.teacher-roster-head{border-bottom:1px solid #e6eae3;align-items:center;padding-bottom:16px}.teacher-roster-title{justify-items:start;gap:4px;display:grid}.teacher-group-message-button{color:#286b58;min-height:36px;font:inherit;cursor:pointer;background:#f6faf4;border:1px solid #d7e4d9;border-radius:8px;margin-top:7px;padding:0 11px;font-size:10px;font-weight:650}.teacher-group-message-button:hover:not(:disabled){background:#edf6ed;border-color:#9fc4ae}.teacher-group-message-button:disabled{opacity:.5;cursor:not-allowed}.teacher-student-search{color:#87938d;background:#fff;border:1px solid #dfe5dc;border-radius:7px;align-items:center;gap:7px;width:min(250px,48%);height:38px;padding:0 10px;display:flex}.teacher-student-search input{color:#243d3d;background:0 0;border:0;outline:0;width:100%;min-width:0;font-size:11px}.teacher-student-search input::placeholder{color:#929d98}.teacher-roster-labels,.teacher-student-row{grid-template-columns:42px minmax(0,1fr) 150px;align-items:center;gap:10px;display:grid}.teacher-roster-labels{color:#89958e;padding:10px 9px;font-size:9px}.teacher-student-row{border-top:1px solid #eef0eb;min-height:51px;padding:8px 9px}.teacher-student-row strong{color:#2f4644;font-size:12px;font-weight:600}.teacher-student-index{color:#a0aaa2;font-size:10px}.teacher-student-code{color:#778781;text-align:center;font-size:10px}.teacher-empty-state{color:#48605b;text-align:center;border:1px dashed #d8e0d7;border-radius:8px;align-content:center;justify-items:center;gap:7px;min-height:105px;padding:20px;display:grid}.teacher-empty-state strong{font-size:12px}.teacher-empty-state span{color:#84918b;font-size:10px}.teacher-portal-footer{color:#87928b;justify-content:space-between;gap:10px;padding:19px 3px 0;font-size:9px;display:flex}.teacher-roster-tools{align-items:center;gap:9px;display:flex}.teacher-date-field{color:#84928b;gap:4px;font-size:8px;display:grid}.teacher-date-field input{color:#314743;height:36px;font:inherit;background:#fff;border:1px solid #dfe5dc;border-radius:7px;padding:0 8px;font-size:10px}.teacher-roster-list{overflow-x:auto}.teacher-roster-labels span:nth-child(2){text-align:center;grid-column:3}.teacher-roster-labels span:last-child{text-align:center;grid-column:4}.teacher-attendance-select{color:#53645d;width:100%;min-height:35px;font:inherit;background:#fff;border:1px solid #dfe5dc;border-radius:7px;padding:0 8px;font-size:10px}.teacher-attendance-select.present{color:#287259;background:#eff8f3;border-color:#b9decf}.teacher-attendance-select.absent{color:#a94c3d;background:#fff1ed;border-color:#eac5bc}.teacher-attendance-select:disabled{opacity:.55;cursor:wait}.teacher-attendance-feedback{border-radius:7px;margin-bottom:12px;padding:10px 12px;font-size:10px;line-height:1.7}.teacher-attendance-feedback.success{color:#256b58;background:#eff8f3;border:1px solid #c7e2d8}.teacher-attendance-feedback.pending{color:#5d716a;background:#f4f7f4;border:1px solid #d8e3de}.teacher-attendance-feedback.warning{color:#785a2a;background:#fff8ea;border:1px solid #efd7ae}.teacher-attendance-feedback.error{color:#9b4437;background:#fbefec;border:1px solid #efc8c0}@media (max-width:760px){.teacher-directory{grid-template-columns:1fr;gap:10px;padding:12px}.teacher-card{gap:13px;padding:14px}.teacher-portal-top{min-height:62px;padding-inline:14px}.teacher-portal-content{width:calc(100% - 24px);padding-top:16px}.teacher-welcome{border-radius:11px;min-height:145px;padding:19px 17px}.teacher-welcome h1{font-size:22px}.teacher-welcome p{max-width:230px;font-size:10px;line-height:1.8}.teacher-welcome-count{min-width:83px;padding:11px}.teacher-welcome-count strong{font-size:24px}.teacher-welcome-count span{font-size:8px}.teacher-class-selector,.teacher-roster{padding:15px 13px}.teacher-classes-grid{grid-template-columns:repeat(2,minmax(0,1fr));gap:7px}.teacher-class-option{grid-template-columns:31px 1fr auto;gap:3px 7px;padding:10px 8px}.teacher-class-symbol{width:31px;height:33px}.teacher-class-name{font-size:10px}.teacher-section-heading h2,.teacher-roster-head h2{font-size:15px}.teacher-roster-labels,.teacher-student-row{grid-template-columns:27px minmax(130px,1fr) 75px 125px;gap:7px}.teacher-roster-tools{flex-direction:column;align-items:stretch}.teacher-date-field{grid-template-columns:auto 1fr;align-items:center;gap:7px}.teacher-student-row strong{font-size:10px}.teacher-portal-footer{font-size:8px}.class-checkbox-grid{grid-template-columns:1fr}.selected-class-teachers{padding:12px}.class-overview{gap:9px;padding:12px}.class-teacher-row{flex-direction:column;align-items:flex-start}}.sort-header{color:inherit;font:inherit;white-space:nowrap;cursor:pointer;background:0 0;border:0;align-items:center;gap:6px;padding:0;font-weight:650;display:inline-flex}.sort-header span{color:#9aa69f;font-size:11px}.sort-header.active,.sort-header.active span{color:var(--teal,#177e78)}.sort-select,.teacher-sort-select{border:1px solid var(--line,#dfe5dc);min-height:36px;color:var(--ink-soft,#53645d);font:inherit;background:#ffffffb8;border-radius:8px;padding:0 10px;font-size:11px}.school-date-picker,.school-date-picker .rmdp-container{width:100%;display:block}.school-date-picker-trigger{color:#455b56;width:100%;min-height:39px;font:inherit;text-align:right;cursor:pointer;background:#fff;border:1px solid #dfe5dc;border-radius:8px;justify-content:space-between;align-items:center;gap:12px;padding:0 11px;font-size:11px;transition:border-color .16s,box-shadow .16s,background .16s;display:flex}.school-date-picker-trigger:hover{background:#fcfefc;border-color:#a8cfc1}.school-date-picker-trigger:focus-visible{border-color:#75ad9d;outline:0;box-shadow:0 0 0 3px #177e781a}.school-date-picker-trigger svg{fill:none;stroke:#64847a;stroke-width:1.6px;stroke-linecap:round;stroke-linejoin:round;flex:none;width:17px;height:17px}.rmdp-wrapper{color:#304641;overflow:hidden;background:#fff!important;border:1px solid #e0e8e1!important;border-radius:13px!important;font-family:Vazir,Tahoma,sans-serif!important;box-shadow:0 18px 50px #19352e2e!important}.rmdp-header{padding:11px 12px 6px!important}.rmdp-header-values{font-weight:700;color:#304641!important;font-size:13px!important}.rmdp-week{padding:0 7px}.rmdp-week-day{color:#87968e!important;font-size:10px!important}.rmdp-day span{font-size:11px;border-radius:9px!important}.rmdp-day:not(.rmdp-disabled):not(.rmdp-day-hidden) span:hover{color:#176c64!important;background:#eaf4ef!important}.rmdp-day.rmdp-today span{color:#176c64!important;background:#edf5ef!important}.rmdp-day.rmdp-selected span:not(.highlight){color:#fff!important;background:#177e78!important;box-shadow:0 3px 9px #177e7833!important}.rmdp-arrow{border-color:#49766b!important}.rmdp-arrow-container{border-radius:8px!important}.rmdp-arrow-container:hover{box-shadow:none!important;background:#eff6f1!important}.rmdp-ep-arrow{display:none!important}.attendance-roster{border:1px solid var(--line,#e3e8e1);background:#ffffff8c;border-radius:10px;overflow:hidden}.attendance-class-picker{background:#f9fbf7e0;border:1px solid #e3e9e2;border-radius:12px;margin:12px 0 16px;padding:15px}.attendance-class-picker-head{justify-content:space-between;align-items:center;gap:14px;margin-bottom:12px;display:flex}.attendance-class-picker-head>div{gap:4px;display:grid}.attendance-class-picker-head strong{color:#344a43;font-size:12px}.attendance-class-picker-head span{color:#7b8981;font-size:10px}.attendance-class-picker-head input{color:#344a43;width:min(280px,42%);min-height:38px;font:inherit;background:#fff;border:1px solid #dfe6de;border-radius:8px;padding:0 11px;font-size:11px}.attendance-class-picker-head input:focus{border-color:#80b4a0;outline:0;box-shadow:0 0 0 3px #177e781a}.attendance-class-mobile-select{display:none}.panel.attendance-panel{overflow:visible}.attendance-class-mobile-select:focus-within{z-index:60}.class-dropdown{width:100%;position:relative}.class-dropdown-trigger{color:#344a43;text-align:right;width:100%;min-height:58px;font:inherit;cursor:pointer;background:#fff;border:1px solid #d8e2d8;border-radius:10px;justify-content:space-between;align-items:center;gap:12px;padding:8px 15px;display:flex}.class-dropdown-trigger:focus-visible{outline-offset:2px;outline:3px solid #21827133}.class-dropdown-trigger:disabled{opacity:.6;cursor:wait}.class-dropdown-trigger-copy,.class-dropdown-option-copy{gap:4px;min-width:0;display:grid}.class-dropdown-trigger-copy strong{font-size:15px;font-weight:700}.class-dropdown-trigger-copy small{color:#78877f;font-size:11px}.class-dropdown-trigger>svg{fill:none;stroke:#51756a;stroke-width:1.8px;stroke-linecap:round;stroke-linejoin:round;flex:none;width:20px;height:20px}.class-dropdown-menu{z-index:50;background:#fff;border:1px solid #dce6dc;border-radius:12px;position:absolute;inset:calc(100% + 6px) 0 auto;overflow:hidden;box-shadow:0 16px 36px #1d392f2e}.class-dropdown-search{color:#344a43;width:calc(100% - 20px);min-height:46px;font:inherit;background:#fbfcfa;border:1px solid #dfe6de;border-radius:8px;margin:10px;padding:0 12px;font-size:14px}.class-dropdown-search:focus{border-color:#80b4a0;outline:0;box-shadow:0 0 0 3px #177e781a}.class-dropdown-options{overscroll-behavior:contain;max-height:min(58vh,420px);padding:4px 8px 8px;overflow-y:auto}.class-dropdown-option{color:#344a43;text-align:right;width:100%;min-height:64px;font:inherit;cursor:pointer;background:#fff;border:1px solid #0000;border-radius:9px;justify-content:space-between;align-items:center;gap:12px;margin:2px 0;padding:9px 12px;display:flex}.class-dropdown-option:hover,.class-dropdown-option:focus-visible{background:#f5f9f3;border-color:#dbe9df;outline:0}.class-dropdown-option.selected{background:#eef6ef;border-color:#d7e8dc}.class-dropdown-option-copy strong{font-size:15px;font-weight:700}.class-dropdown-option-copy small{color:#77867e;font-size:12px}.class-dropdown-option-check{color:#287661;font-size:18px;font-weight:800}.class-dropdown-empty{color:#78877f;text-align:center;padding:18px 12px;font-size:13px}.attendance-class-options{grid-template-columns:repeat(auto-fill,minmax(175px,1fr));gap:8px;display:grid}.attendance-class-option{color:#354a43;text-align:right;cursor:pointer;background:#fff;border:1px solid #e1e8df;border-radius:10px;grid-template-columns:36px minmax(0,1fr) 18px;align-items:center;gap:9px;min-width:0;min-height:62px;padding:9px 11px;transition:border-color .16s,background .16s,box-shadow .16s,transform .16s;display:grid}.attendance-class-option:hover:not(:disabled){background:#fcfefb;border-color:#a9c7b8;transform:translateY(-1px)}.attendance-class-option:focus-visible{outline-offset:2px;outline:3px solid #21827133}.attendance-class-option.active{background:#eef6ef;border-color:#528c7a;box-shadow:inset -3px 0 #347b69,0 3px 10px #1f513f0f}.attendance-class-option:disabled{opacity:.65;cursor:wait}.attendance-class-option-mark{color:#467565;background:#edf3ed;border-radius:10px;place-items:center;width:36px;height:36px;font-size:13px;font-weight:750;display:grid}.attendance-class-option.active .attendance-class-option-mark{color:#286b58;background:#dcece0}.attendance-class-option-info{gap:4px;min-width:0;display:grid}.attendance-class-option-info strong{color:#394e47;text-overflow:ellipsis;white-space:nowrap;font-size:11px;overflow:hidden}.attendance-class-option-info small{color:#7e8d84;font-size:9px}.attendance-class-option-arrow{color:#71867c;text-align:center;font-size:14px}.attendance-class-option.active .attendance-class-option-arrow{color:#347b69;font-weight:800}.attendance-class-empty{color:#849087;text-align:center;grid-column:1/-1;padding:15px;font-size:11px}.attendance-readonly-note{color:#786638;background:#fbf7eb;border:1px solid #e6dfc7;border-radius:8px;margin:12px 14px;padding:10px 12px;font-size:10px;line-height:1.8}.attendance-summary-after-list{padding-top:16px}.attendance-roster-head,.attendance-roster-row{grid-template-columns:38px minmax(180px,1fr) minmax(180px,1fr);align-items:center;gap:12px;display:grid}.attendance-roster-head{border-bottom:1px solid var(--line,#e7ebe5);min-height:43px;color:var(--slate,#75837b);background:#f0f5f09e;padding:0 13px;font-size:10px}.attendance-roster-row{border-bottom:1px solid #edf0eb;min-height:64px;padding:8px 13px}.attendance-roster-row:last-child{border-bottom:0}.attendance-row-index{color:#87948d;font-size:11px}.attendance-exception-buttons,.teacher-attendance-buttons{justify-content:center;gap:7px;display:flex}.attendance-exception,.teacher-attendance-button{color:#65756e;min-width:82px;min-height:39px;font:inherit;cursor:pointer;background:#fff;border:1px solid #e2e7e1;border-radius:9px;padding:0 12px;font-size:11px;font-weight:650;transition:background .15s,border-color .15s,color .15s,transform .15s}.attendance-exception:hover,.teacher-attendance-button:hover{transform:translateY(-1px)}.attendance-exception.absent.selected,.teacher-attendance-button.absent.selected{color:#a7483a;background:#fff0ec;border-color:#e7b7ad}.attendance-exception.late.selected,.teacher-attendance-button.late.selected{color:#8a681b;background:#fff7df;border-color:#e6d29d}.attendance-exception:focus-visible,.teacher-attendance-button:focus-visible{outline-offset:2px;outline:3px solid #21827138}.teacher-attendance-button:disabled{opacity:.5;cursor:wait}.teacher-attendance-feedback.readonly{color:#786638;background:#fbf7eb;border:1px solid #e6dfc7}.teacher-class-heading-tools{align-items:center;gap:10px;display:flex}.teacher-class-search{color:#354a43;width:min(320px,100%);min-height:40px;font:inherit;background:#fff;border:1px solid #dfe6de;border-radius:9px;margin:0 0 11px;padding:0 12px;font-size:11px}.teacher-class-search:focus{border-color:#80b4a0;outline:0;box-shadow:0 0 0 3px #177e781a}.teacher-mobile-class-select{display:none}.attendance-save-row,.teacher-attendance-save-row{color:#788780;background:#f7faf6eb;border:1px solid #e2eae3;border-radius:10px;justify-content:space-between;align-items:center;gap:12px;margin:13px 0 0;padding:12px 14px;font-size:10px;display:flex}.teacher-save-attendance{color:#fff;min-height:42px;font:inherit;cursor:pointer;background:#177e78;border:0;border-radius:8px;padding:0 17px;font-size:11px;font-weight:700;box-shadow:0 4px 12px #177e7829}.teacher-save-attendance:hover:not(:disabled){background:#126e69}.teacher-save-attendance:disabled{opacity:.48;cursor:not-allowed;box-shadow:none}.teacher-roster-labels,.teacher-student-row{grid-template-columns:35px minmax(0,1fr) 190px;min-width:0}.teacher-roster-labels span:first-child{grid-column:1}.teacher-roster-labels button:first-of-type{grid-column:2;justify-self:start}.teacher-roster-labels button:nth-of-type(2){grid-column:3;justify-self:center}.teacher-sort-button{color:inherit;font:inherit;cursor:pointer;white-space:nowrap;background:0 0;border:0;align-items:center;gap:5px;padding:0;display:inline-flex}.teacher-sort-button.active{color:#347b69}.teacher-attendance-select,.teacher-roster-sort{display:none}@media (max-width:760px){.attendance-toolbar{grid-template-columns:1fr;gap:8px;display:grid}.attendance-toolbar input,.attendance-toolbar select{width:100%;min-width:0;min-height:42px}.attendance-toolbar .school-date-picker-trigger{min-height:42px}.attendance-class-picker{margin:10px 0 13px;padding:11px}.attendance-class-picker-head{flex-direction:column;align-items:stretch;gap:9px}.attendance-class-picker-head input,.attendance-class-options{display:none}.attendance-class-mobile-select,.teacher-mobile-class-select{display:block}.teacher-classes-grid,.teacher-class-search,.teacher-class-heading-tools .teacher-sort-select{display:none}.attendance-roster{background:0 0;border:0;overflow:visible}.attendance-roster-head{display:none}.attendance-roster-row{background:#ffffffd1;border:1px solid #e5eae4;border-radius:11px;grid-template-columns:minmax(0,1fr);gap:10px;margin-bottom:9px;padding:13px;position:relative;box-shadow:0 2px 8px #23392e09}.attendance-roster-person{grid-area:1/1;min-width:0}.attendance-row-index{display:none}.attendance-exception-buttons{flex-direction:row;grid-area:2/1;width:100%}.attendance-exception{white-space:nowrap;flex:1 1 0;min-width:0;min-height:42px}.attendance-save-row,.teacher-attendance-save-row{flex-direction:column;align-items:stretch;padding:11px}.attendance-save-row .btn,.teacher-save-attendance{width:100%;min-height:44px}.teacher-roster-head{flex-direction:column;align-items:stretch;gap:12px}.teacher-roster-tools{grid-template-columns:1fr 1fr;gap:8px;width:100%;display:grid}.teacher-date-field,.teacher-student-search{width:100%;min-width:0}.teacher-date-field{grid-template-columns:1fr;gap:4px}.teacher-date-field input,.teacher-student-search,.teacher-date-field .school-date-picker-trigger{min-height:42px}.teacher-roster-sort{grid-column:1/-1;width:100%;min-height:42px;display:block}.teacher-roster-list{overflow:visible}.teacher-roster-labels{display:none}.teacher-student-row{background:#fff;border:1px solid #e8ece6;border-radius:9px;grid-template-columns:25px minmax(0,1fr);gap:8px 9px;min-width:0;margin-bottom:8px;padding:11px}.teacher-student-row strong{grid-area:1/2;font-size:12px}.teacher-student-index{grid-area:1/1}.teacher-attendance-buttons{flex-direction:row;grid-area:2/2;width:100%}.teacher-attendance-button{white-space:nowrap;flex:1 1 0;min-width:0;min-height:42px;padding-inline:7px}.teacher-class-heading-tools{flex-direction:column;align-items:flex-end;gap:6px}}
