:root{--navy:#0a1f3b;--blue:#1769e0;--cyan:#15b9c2;--bg:#f3f6fa;--line:#e5ebf2;--muted:#748398;--white:#fff;--green:#15a77f;--red:#e85e68}*{box-sizing:border-box}body{margin:0;background:var(--bg);color:#17243a;font-family:Manrope,Inter,system-ui,sans-serif}a{text-decoration:none;color:inherit}button,input,select{font:inherit}.brand{display:flex;align-items:center;gap:11px}.brand img{width:44px;height:50px;object-fit:contain}.brand span{display:flex;flex-direction:column}.brand strong{font-size:15px}.brand small{font-size:9px;color:#8799b0}
.portal-body{min-height:100vh;background:#071a31;color:white;padding:0 7vw;overflow:hidden;position:relative}.portal-body:before{content:"";position:fixed;inset:0;background:radial-gradient(circle at 76% 35%,#1769e04c,transparent 28%),linear-gradient(120deg,transparent 64%,#0d2949 64%);pointer-events:none}.portal-nav,.portal-hero{position:relative}.portal-nav{height:90px;border-bottom:1px solid #ffffff16;display:flex;align-items:center;justify-content:space-between}.portal-nav>span{font-size:11px;color:#90a6c0}.portal-hero{padding:10vh 0;max-width:830px}.portal-hero>p{color:#45d3d6;font-size:10px;font-weight:800;letter-spacing:2px}.portal-hero h1{font-size:clamp(42px,5vw,73px);line-height:1.05;letter-spacing:-3px;margin:18px 0 25px}.portal-hero h1 em{color:#45d3d6;font-style:normal}.portal-hero .lead{max-width:680px;color:#a0b1c6;font-size:16px;line-height:1.8}.portal-cards{display:grid;grid-template-columns:1fr 1fr;gap:15px;margin-top:34px}.portal-cards>a{display:flex;align-items:center;gap:15px;border:1px solid #ffffff19;background:#ffffff0c;border-radius:17px;padding:20px;transition:.2s}.portal-cards>a:hover{transform:translateY(-3px);background:#ffffff15;border-color:#40d4d66b}.portal-cards>a>i{font-style:normal;width:52px;height:52px;border-radius:14px;background:#1769e037;display:grid;place-items:center;color:#52dadc;font-size:24px}.portal-cards>a>span{display:flex;flex-direction:column;flex:1}.portal-cards small{font-size:8px;letter-spacing:1.2px;color:#56cdd0;font-weight:800}.portal-cards b{font-size:16px;margin:5px 0}.portal-cards em{font-style:normal;font-size:9px;color:#8fa4bd}.portal-features{display:flex;gap:25px;margin-top:29px;color:#8298b2;font-size:10px}
.login-body{min-height:100vh;background:#071a31;display:grid;place-items:center;padding:24px}.login-card{width:min(940px,96vw);min-height:590px;background:white;border-radius:24px;display:grid;grid-template-columns:1fr 1fr;overflow:hidden;box-shadow:0 30px 80px #0006}.login-identity{background:linear-gradient(150deg,#0d2b50,#0a1c33);color:white;padding:55px;display:flex;flex-direction:column;justify-content:center;position:relative;overflow:hidden}.login-identity:after{content:"";position:absolute;width:400px;height:400px;border:50px solid #ffffff07;border-radius:50%;right:-190px;bottom:-130px}.login-identity img{width:105px;height:120px;object-fit:contain;margin-bottom:30px;filter:drop-shadow(0 15px 25px #0007)}.login-identity p,.login-form>p{font-size:9px;letter-spacing:1.8px;color:#3dd1d3;font-weight:800}.login-identity h1{font-size:34px;line-height:1.2;margin:10px 0 18px}.login-identity>span{font-size:11px;line-height:1.8;color:#9db0c6;max-width:330px}.login-form{padding:60px 55px;display:flex;flex-direction:column;justify-content:center}.login-form>p{color:var(--blue);margin:0}.login-form h2{font-size:28px;margin:8px 0}.login-form>span{font-size:10px;color:var(--muted);margin-bottom:25px}.login-form form>label{display:flex;flex-direction:column;font-size:10px;font-weight:700;gap:7px;margin-bottom:15px}.login-form input:not([type=checkbox]){height:45px;border:1px solid #dfe6ee;border-radius:9px;padding:0 13px;outline:0}.login-form input:focus{border-color:var(--blue);box-shadow:0 0 0 3px #1769e017}.form-row{display:flex;justify-content:space-between;align-items:center;font-size:9px;margin-bottom:17px}.remember{display:flex!important;flex-direction:row!important;align-items:center;margin:0!important}.form-row a{color:var(--blue);font-weight:700}.login-form form>button{width:100%;height:45px;border:0;border-radius:10px;background:var(--blue);color:#fff;font-size:11px;font-weight:800;display:flex;align-items:center;justify-content:center;gap:10px}.login-form>small{text-align:center;color:#9aa6b5;font-size:8px;margin-top:18px}.flash{font-size:10px;border-radius:8px;padding:10px;margin-bottom:15px}.flash.error{background:#ffedf0;color:#bd4053}
.app-shell{min-height:100vh}.sidebar{position:fixed;inset:0 auto 0 0;width:255px;background:var(--navy);color:#95a8bf;padding:18px 15px;display:flex;flex-direction:column;z-index:20}.sidebar .brand{color:white;padding:0 8px 16px;border-bottom:1px solid #ffffff15}.system-online{display:flex;align-items:center;gap:10px;background:#ffffff08;border:1px solid #ffffff0b;border-radius:10px;padding:10px 12px;margin:15px 5px}.system-online>i{width:8px;height:8px;background:#24cd99;border-radius:50%;box-shadow:0 0 0 4px #24cd9916}.system-online>span{display:flex;flex-direction:column}.system-online small{font-size:8px;color:#6d83a0}.system-online b{font-size:9px;color:#c7d4e3}.sidebar nav{overflow:auto}.sidebar nav p{font-size:8px;letter-spacing:1.3px;color:#5e7591;font-weight:800;margin:16px 12px 7px}.sidebar nav a{display:flex;align-items:center;gap:11px;padding:10px 12px;border-radius:9px;font-size:11px;margin:2px 0}.sidebar nav a:hover{color:#fff;background:#ffffff09}.sidebar nav a.active{background:linear-gradient(90deg,#1769e0,#155fcf);color:#fff;box-shadow:0 7px 17px #0002}.sidebar nav a>span{font-size:17px;width:19px}.sidebar nav a>em{margin-left:auto;background:#ec5268;color:#fff;font-style:normal;border-radius:20px;padding:2px 6px;font-size:7px}.sidebar-user{margin-top:auto;border-top:1px solid #ffffff13;padding:14px 5px 0;display:flex;align-items:center;gap:8px}.sidebar-user>span,.avatar{width:34px;height:34px;border-radius:9px;background:linear-gradient(145deg,var(--cyan),var(--blue));color:white;display:grid;place-items:center;font-size:9px;font-weight:800}.sidebar-user>div{display:flex;flex:1;min-width:0;flex-direction:column}.sidebar-user b{font-size:9px;color:#e2eaf4}.sidebar-user small{font-size:8px;color:#667e99}.sidebar-user>a{font-size:17px}.main{margin-left:255px;min-height:100vh}.topbar{height:68px;background:white;border-bottom:1px solid var(--line);display:flex;align-items:center;justify-content:space-between;padding:0 30px;position:sticky;top:0;z-index:10}.menu-toggle{display:none;border:0;background:none}.search{height:37px;width:350px;background:#f6f8fb;border:1px solid #e6ebf1;border-radius:9px;display:flex;align-items:center;gap:8px;padding:0 10px;color:#8593a5}.search input{border:0;background:transparent;outline:0;flex:1;font-size:10px}.search kbd{background:white;border:1px solid #dfe5ec;padding:3px 5px;border-radius:4px;font-size:8px}.top-actions{display:flex;align-items:center;gap:14px}.wita{font-size:9px;color:#6d7c8f}.wita i{display:inline-block;width:6px;height:6px;background:#20bf8f;border-radius:50%}.notification{border:0;background:#f5f7fa;width:34px;height:34px;border-radius:9px;position:relative}.notification em{position:absolute;right:-3px;top:-4px;background:#ee526a;color:#fff;font-style:normal;width:16px;height:16px;border-radius:50%;font-size:7px;display:grid;place-items:center}.page{padding:26px 30px 0;max-width:1500px;margin:auto}.page-title{display:flex;justify-content:space-between;align-items:flex-end;margin-bottom:22px}.page-title p{font-size:8px;letter-spacing:1.5px;color:var(--blue);font-weight:900;margin:0 0 6px}.page-title h1{font-size:25px;margin:0 0 5px}.page-title span{font-size:9px;color:var(--muted)}.page-title>div:last-child{display:flex;gap:8px}.page-title button{height:34px;border:1px solid #dfe6ed;background:white;border-radius:8px;padding:0 12px;font-size:9px;font-weight:700;color:#647386}.page-title button.primary{background:var(--blue);color:#fff;border-color:var(--blue)}.stat-grid{display:grid;grid-template-columns:repeat(4,1fr);gap:13px}.stat,.panel{background:#fff;border:1px solid var(--line);border-radius:13px;box-shadow:0 5px 17px #28466d08}.stat{padding:17px;display:flex;align-items:flex-start;gap:11px}.stat>i{width:39px;height:39px;border-radius:10px;background:color-mix(in srgb,var(--accent) 11%,white);color:var(--accent);display:grid;place-items:center;font-style:normal;font-size:19px}.stat>div{display:flex;flex-direction:column;flex:1}.stat small{font-size:9px;color:var(--muted)}.stat b{font-size:23px;margin:3px 0}.stat span{font-size:8px;color:#92a0b0}.stat>em{font-style:normal;color:#a1adbb;font-size:9px}.approval-alert{display:flex;align-items:center;gap:12px;border:1px solid #f4dda8;background:#fff9e9;border-radius:12px;padding:12px 15px;margin:14px 0}.approval-alert>i{width:35px;height:35px;border-radius:9px;background:#ffe7a8;display:grid;place-items:center;color:#c87b13}.approval-alert>div{display:flex;flex-direction:column;flex:1}.approval-alert b{font-size:10px}.approval-alert span{font-size:8px;color:#8b7755;margin-top:3px}.approval-alert a{font-size:8px;font-weight:800;color:#af670a}.dashboard-grid{display:grid;grid-template-columns:1.6fr 1fr;gap:14px}.panel>header{display:flex;justify-content:space-between;align-items:center;padding:15px 17px 11px}.panel>header>div{display:flex;flex-direction:column}.panel>header b{font-size:11px}.panel>header span{font-size:8px;color:#8996a6;margin-top:3px}.panel>header select{font-size:8px;border:1px solid #e1e6ed;border-radius:7px;padding:6px}.bar-chart{height:205px;border-bottom:1px solid #edf1f5;margin:0 25px 18px;display:flex;align-items:flex-end;justify-content:space-around;background:repeating-linear-gradient(to bottom,#edf1f5 0,#edf1f5 1px,transparent 1px,transparent 42px)}.bar-chart>div{height:100%;display:flex;flex-direction:column;justify-content:flex-end;align-items:center;gap:7px}.bar-chart i{width:19px;background:linear-gradient(#2c7ee9,#1769e0);border-radius:4px 4px 0 0;display:block}.bar-chart span{font-size:8px;color:#7f8da0}.monitor header>em{font-size:7px;color:#16916c;background:#e7faf4;border-radius:20px;padding:4px 7px;font-style:normal}.monitor>a{display:flex;align-items:center;gap:9px;padding:12px 17px;border-top:1px solid #eef1f5}.monitor>a>i{width:30px;height:30px;border-radius:8px;background:#eaf2ff;color:var(--blue);display:grid;place-items:center;font-style:normal}.monitor>a>b{font-size:9px;flex:1}.monitor>a>strong{font-size:12px}.monitor>a>span{color:#91a0b1}.table-panel{margin-top:14px}.table-panel header>a{font-size:8px;color:var(--blue);font-weight:800}.table-scroll{overflow:auto}.table-panel table{border-collapse:collapse;width:100%;min-width:600px}.table-panel th{background:#f8fafc;border-block:1px solid #edf1f5;color:#8996a6;font-size:7px;text-align:left;padding:9px 17px}.table-panel td{font-size:9px;color:#68778a;padding:11px 17px;border-bottom:1px solid #edf1f5}.status{background:#e8faf4;color:#158e69;border-radius:20px;padding:4px 7px;font-size:7px}.empty{text-align:center!important;color:#93a0b0!important;padding:25px!important}.empty-state{text-align:center;padding:80px 25px}.empty-state>i{font-style:normal;font-size:40px;color:var(--blue)}.empty-state h2{font-size:20px}.empty-state p{font-size:10px;color:var(--muted)}.page>footer{height:55px;display:flex;align-items:center;justify-content:space-between;color:#8d99a8;font-size:8px}
.attendance-body{min-height:100vh;background:#f2f6fa}.attendance-nav{height:76px;background:white;border-bottom:1px solid var(--line);display:flex;align-items:center;justify-content:space-between;padding:0 5vw}.attendance-nav>div{display:flex;align-items:center;gap:14px}.location-state{font-size:9px;color:var(--green)}.attendance-main{width:min(1050px,92vw);margin:34px auto}.welcome{background:linear-gradient(120deg,#0a2342,#104d83);color:white;border-radius:19px;padding:28px 34px;display:flex;align-items:center;justify-content:space-between;position:relative;overflow:hidden;box-shadow:0 14px 35px #0b28462a}.welcome:after{content:"";position:absolute;width:320px;height:320px;border:45px solid #ffffff08;border-radius:50%;right:-120px}.welcome p{font-size:8px;letter-spacing:1.5px;color:#45d2d4;font-weight:900}.welcome h1{font-size:24px;margin:7px 0 12px}.welcome div>span{font-size:9px;color:#b1bfd0}.welcome>strong{font-size:32px;z-index:1}.welcome>strong small{font-size:7px;letter-spacing:1.3px;color:#7e94ab;display:block;text-align:right}.location-card{display:flex;align-items:center;gap:12px;border-radius:12px;padding:13px 16px;margin:14px 0}.location-card>i{width:35px;height:35px;border-radius:9px;display:grid;place-items:center;font-style:normal}.location-card>div{display:flex;flex-direction:column}.location-card b{font-size:10px}.location-card span{font-size:8px;margin-top:3px}.location-card.checking{background:#fff7e7;color:#997128;border:1px solid #f3dfb3}.location-card.ok{background:#e8faf4;color:#147b5e;border:1px solid #c6ecdf}.location-card.error{background:#ffebed;color:#b64152;border:1px solid #f3c9cf}.attendance-buttons{display:grid;grid-template-columns:1fr 1fr;gap:14px}.attendance-buttons>button{border:0;border-radius:16px;color:white;padding:22px;display:flex;align-items:center;gap:14px;text-align:left;cursor:pointer;transition:.2s}.attendance-buttons>button:hover{transform:translateY(-3px)}.attendance-buttons .in{background:linear-gradient(125deg,#129b78,#21c69a)}.attendance-buttons .out{background:linear-gradient(125deg,#dc5262,#ef7170)}.attendance-buttons>button>i{font-style:normal;width:50px;height:50px;border-radius:14px;background:#ffffff1e;display:grid;place-items:center;font-size:25px}.attendance-buttons>button>span{display:flex;flex-direction:column;flex:1}.attendance-buttons small{font-size:7px;letter-spacing:1.2px;color:#ffffffb8}.attendance-buttons b{font-size:20px;margin:3px 0}.attendance-buttons em{font-style:normal;font-size:8px;color:#ffffffc7}.camera-modal{position:fixed;inset:0;background:#081727c7;z-index:40;display:grid;place-items:center;padding:20px}.camera-modal[hidden]{display:none}.camera-card{width:min(500px,96vw);background:#fff;border-radius:20px;padding:25px;text-align:center;position:relative}.camera-card>button:first-child{position:absolute;right:14px;top:12px;border:0;background:#f2f4f7;width:30px;height:30px;border-radius:50%}.camera-card p{font-size:8px;letter-spacing:1.4px;color:var(--blue);font-weight:900}.camera-card h2{margin:5px 0 18px}.camera-card video{width:100%;height:330px;object-fit:cover;background:#0b1d31;border-radius:14px;transform:scaleX(-1)}.camera-card .capture{width:100%;height:44px;border:0;border-radius:10px;background:var(--green);color:white;font-size:10px;font-weight:800;margin-top:13px}
@media(max-width:1050px){.sidebar{transform:translateX(-100%);transition:.2s}.sidebar.open{transform:none}.main{margin-left:0}.menu-toggle{display:block}.stat-grid{grid-template-columns:1fr 1fr}}@media(max-width:700px){.portal-body{padding:0 22px}.portal-nav{height:78px}.portal-nav>span{display:none}.portal-hero{padding:7vh 0}.portal-hero h1{font-size:42px;letter-spacing:-2px}.portal-cards{grid-template-columns:1fr}.portal-features{flex-wrap:wrap;gap:13px}.login-card{grid-template-columns:1fr}.login-identity{display:none}.login-form{padding:40px 28px}.topbar{padding:0 15px}.search{display:none}.page{padding:20px 15px 0}.stat-grid,.dashboard-grid,.attendance-buttons{grid-template-columns:1fr}.page-title>div:last-child button:first-child{display:none}.welcome{align-items:flex-start;flex-direction:column;gap:20px;padding:24px}.welcome>strong small{text-align:left}.attendance-nav{padding:0 16px}.location-state{display:none}.page>footer{flex-direction:column;justify-content:center;gap:4px}.camera-card video{height:280px}}@media print{.sidebar,.topbar,.page-title button{display:none!important}.main{margin:0}.page{padding:10px}.panel,.stat{break-inside:avoid}}
.flash.success{background:#e8faf4;color:#15795d;border:1px solid #c8eee2}.status.off{background:#eef1f5;color:#7f8b99}.table-search{height:32px;border:1px solid #e1e7ee;background:#f8fafc;border-radius:8px;padding:0 9px;display:flex;align-items:center;gap:6px;color:#8a97a7}.table-search input{border:0;outline:0;background:transparent;font-size:9px}.table-action{border:1px solid #dce4ed;background:#fff;border-radius:7px;padding:5px 9px;font-size:8px;color:#50627a}.table-action.danger{color:#c74659;border-color:#f0cfd4}.form-dialog{width:min(620px,94vw);border:0;border-radius:18px;padding:0;box-shadow:0 25px 80px #071a3159}.form-dialog.wide{width:min(800px,94vw)}.form-dialog::backdrop{background:#071a31a8;backdrop-filter:blur(3px)}.form-dialog form>header{padding:22px 24px 15px;display:flex;justify-content:space-between;align-items:flex-start;border-bottom:1px solid var(--line)}.form-dialog header p{font-size:8px;letter-spacing:1.3px;color:var(--blue);font-weight:900;margin:0 0 4px}.form-dialog h2{font-size:20px;margin:0}.form-dialog header>button{border:0;background:#f1f4f7;width:30px;height:30px;border-radius:50%;font-size:17px}.form-grid{display:grid;grid-template-columns:1fr 1fr;gap:14px;padding:21px 24px}.form-grid label{display:flex;flex-direction:column;gap:6px;font-size:9px;font-weight:700;color:#52637a}.form-grid input,.form-grid select,.inline-form select,.finish-kbm textarea,.table-panel td select,.table-panel td input{height:40px;border:1px solid #dde5ed;border-radius:8px;background:#fff;padding:0 10px;outline:0;font-size:10px;color:#26364b}.form-grid input:focus,.form-grid select:focus{border-color:var(--blue);box-shadow:0 0 0 3px #1769e014}.form-grid .switch{flex-direction:row;align-items:center}.form-grid .switch input{height:auto}.form-dialog form>footer{border-top:1px solid var(--line);padding:14px 24px;display:flex;justify-content:flex-end;gap:8px}.form-dialog footer button,.inline-form button,.finish-kbm button,.compact{height:35px;border:1px solid #dce4ec;background:#fff;color:#64748a;padding:0 13px;border-radius:8px;font-size:9px;font-weight:800}.form-dialog footer .primary,.inline-form .primary,.finish-kbm .primary,.compact.primary{background:var(--blue);color:#fff;border-color:var(--blue)}.class-grid,.schedule-cards{display:grid;grid-template-columns:repeat(3,1fr);gap:14px}.class-grid>a,.schedule-cards>article{background:#fff;border:1px solid var(--line);border-radius:14px;padding:18px;box-shadow:0 5px 17px #28466d08;transition:.2s}.class-grid>a:hover,.schedule-cards>article:hover{transform:translateY(-2px);border-color:#bdd3f0}.class-grid>a>span,.schedule-cards article>span{font-size:8px;letter-spacing:1.1px;color:var(--blue);font-weight:900}.class-grid h3,.schedule-cards h3{font-size:18px;margin:6px 0}.class-grid p,.schedule-cards p{font-size:9px;color:var(--muted);margin:0 0 16px}.class-grid>a>div{background:#f7f9fc;border-radius:9px;padding:10px;display:flex;flex-direction:column}.class-grid small{font-size:7px;color:#8c99a9}.class-grid b{font-size:9px;margin-top:3px}.class-grid>a>em{font-style:normal;color:var(--blue);font-size:8px;font-weight:800;display:block;margin-top:14px}.schedule-cards{margin-bottom:14px}.schedule-cards article form button{width:100%;height:34px;border:0;background:#eaf2ff;color:var(--blue);border-radius:8px;font-size:9px;font-weight:800}.class-detail{grid-template-columns:1.7fr 1fr;margin-bottom:14px}.inline-form{display:flex;gap:9px;padding:10px 17px 18px}.inline-form select{flex:1}.class-summary{text-align:center;padding-bottom:15px}.class-summary>strong{font-size:30px;color:var(--blue);display:block}.class-summary>span{font-size:8px;color:var(--muted)}.finish-kbm{margin-top:14px;background:#fff;border:1px solid var(--line);border-radius:13px;padding:18px;display:flex;align-items:flex-end;gap:14px}.finish-kbm label{display:flex;flex:1;flex-direction:column;gap:7px;font-size:9px;font-weight:700}.finish-kbm textarea{height:auto;padding:10px;resize:vertical}
@media(max-width:800px){.class-grid,.schedule-cards{grid-template-columns:1fr 1fr}.form-grid{grid-template-columns:1fr}}@media(max-width:600px){.class-grid,.schedule-cards{grid-template-columns:1fr}.form-dialog form>header,.form-grid,.form-dialog form>footer{padding-left:17px;padding-right:17px}.finish-kbm{flex-direction:column;align-items:stretch}}
.date-input,.type-filter{height:35px;border:1px solid #dfe6ed;background:#fff;border-radius:8px;padding:0 10px;font-size:9px;color:#53647a}.barcode-entry{display:flex;align-items:center;gap:12px;background:#fff;border:1px solid var(--line);border-radius:13px;padding:14px 17px;margin-top:14px;box-shadow:0 5px 17px #28466d08}.barcode-entry>i{width:38px;height:38px;border-radius:10px;background:#eaf2ff;color:var(--blue);display:grid;place-items:center;font-style:normal;font-size:20px}.barcode-entry>span{display:flex;flex:1;flex-direction:column}.barcode-entry b{font-size:10px}.barcode-entry small{font-size:8px;color:var(--muted);margin-top:3px}.barcode-entry strong{color:var(--blue)}.barcode-kiosk{width:min(560px,92vw);margin:55px auto;background:#fff;border:1px solid var(--line);border-radius:22px;padding:35px;text-align:center;box-shadow:0 20px 50px #18365418}.barcode-kiosk>p{font-size:8px;letter-spacing:1.5px;color:var(--blue);font-weight:900}.barcode-kiosk h1{font-size:27px;margin:7px 0}.barcode-kiosk>span{font-size:10px;color:var(--muted)}.scan-frame{height:180px;background:#091b31;color:#42d5d7;border-radius:15px;margin:23px 0;display:grid;place-items:center;font-size:55px;position:relative;overflow:hidden}.scan-frame i{position:absolute;width:70%;height:2px;background:#ef5c6a;box-shadow:0 0 10px #ef5c6a;animation:scanner 2s ease-in-out infinite}@keyframes scanner{0%,100%{transform:translateY(-55px)}50%{transform:translateY(55px)}}.barcode-kiosk form{display:grid;grid-template-columns:130px 1fr;gap:9px}.barcode-kiosk input,.barcode-kiosk select{height:43px;border:1px solid #dbe3ec;border-radius:9px;padding:0 11px;font-size:10px}.barcode-kiosk button{grid-column:1/-1;height:43px;border:0;border-radius:9px;background:var(--blue);color:#fff;font-size:10px;font-weight:800}.barcode-kiosk #scan-result{margin-top:13px;border-radius:9px;padding:11px;display:none;flex-direction:column}.barcode-kiosk #scan-result.success{display:flex;background:#e7faf3;color:#157a5e}.barcode-kiosk #scan-result.error{display:flex;background:#ffebed;color:#b84051}.barcode-kiosk #scan-result b{font-size:10px}.barcode-kiosk #scan-result span{font-size:8px;margin-top:3px}.map-layout{display:grid;grid-template-columns:1.7fr 1fr;gap:14px}.map-panel{overflow:hidden}.map-search{width:calc(100% - 34px);height:40px;margin:0 17px 12px;border:1px solid #dae3ec;border-radius:9px;padding:0 11px;font-size:10px;position:relative;z-index:2}.map-panel #school-map{height:490px;background:#e9eef4}.map-placeholder{height:100%;display:grid;place-items:center;color:#8290a1;font-size:10px}.setting-form form{padding:8px 17px 17px;display:flex;flex-direction:column;gap:11px}.setting-form label{display:flex;flex-direction:column;gap:6px;font-size:9px;font-weight:700;color:#52637a}.setting-form input{height:40px;border:1px solid #dbe3eb;border-radius:8px;padding:0 10px;font-size:10px;background:#f9fbfd}.setting-form button{height:38px;border:1px solid #dce4ed;background:#fff;border-radius:8px;font-size:9px;font-weight:800;color:#617187}.setting-form button.primary{background:var(--blue);border-color:var(--blue);color:#fff}.setting-form #radius-result{margin:0 17px 17px;padding:10px;border-radius:8px;font-size:9px;display:none}.setting-form #radius-result.success{display:block;background:#e7faf3;color:#157a5e}.setting-form #radius-result.error{display:block;background:#ffebed;color:#b84051}.setting-form #radius-result.checking{display:block;background:#fff7e7;color:#8b6a2b}
@media(max-width:850px){.map-layout{grid-template-columns:1fr}.map-panel #school-map{height:380px}}@media(max-width:560px){.barcode-kiosk{padding:25px 19px}.barcode-kiosk form{grid-template-columns:1fr}.barcode-kiosk button{grid-column:auto}}
.form-grid .full{grid-column:1/-1}.form-grid textarea{border:1px solid #dde5ed;border-radius:8px;padding:10px;resize:vertical;font:inherit;font-size:10px}.status-pending{background:#fff3dd;color:#ad6a12}.status-approved{background:#e7faf3;color:#15815f}.status-rejected,.status-cancelled{background:#ffebed;color:#b74354}.approval-detail{display:grid;grid-template-columns:1.45fr 1fr;gap:14px;margin-bottom:14px}.request-info dl{display:grid;grid-template-columns:110px 1fr;gap:12px;padding:10px 18px 20px;margin:0;font-size:10px}.request-info dt{color:#8996a6}.request-info dd{margin:0;font-weight:600;line-height:1.6}.decision-box form{padding:10px 17px 18px}.decision-box label{display:flex;flex-direction:column;gap:7px;font-size:9px;font-weight:700}.decision-box textarea{border:1px solid #dce4ec;border-radius:9px;padding:10px;resize:vertical;font:inherit;font-size:10px}.decision-box form>div{display:grid;grid-template-columns:1fr 1fr;gap:8px;margin-top:12px}.decision-box button{height:38px;border-radius:8px;font-size:9px;font-weight:800}.decision-box .reject{border:1px solid #efc7ce;background:#fff;color:#c34558}.decision-box .approve{border:0;background:var(--green);color:#fff}.flow-grid{display:grid;grid-template-columns:repeat(2,1fr);gap:14px}.flow-card header>button{border:1px solid #dce5ee;background:#fff;border-radius:7px;color:var(--blue);font-size:8px;padding:6px 9px}.flow-card ol{list-style:none;padding:8px 17px 18px;margin:0}.flow-card li{display:flex;align-items:center;gap:10px;border-top:1px solid #edf1f5;padding:10px 0}.flow-card li>i{width:28px;height:28px;border-radius:50%;display:grid;place-items:center;background:#eaf2ff;color:var(--blue);font-style:normal;font-size:9px;font-weight:900}.flow-card li>span{display:flex;flex:1;flex-direction:column}.flow-card li b{font-size:9px}.flow-card li small{font-size:7px;color:var(--muted)}.flow-card li form button{border:0;background:#ffedf0;color:#c44759;border-radius:50%;width:25px;height:25px}.flow-card ol>p{font-size:9px;color:var(--muted);text-align:center;padding:15px}.announcement-grid{display:grid;grid-template-columns:repeat(3,1fr);gap:14px}.announcement{padding:18px}.announcement>span{font-size:7px;letter-spacing:1px;color:var(--blue);background:#eaf2ff;border-radius:20px;padding:4px 7px;text-transform:uppercase;font-weight:800}.announcement h3{font-size:15px;margin:12px 0 8px}.announcement>p{font-size:9px;color:#65758a;line-height:1.7;min-height:65px}.announcement>footer{display:flex;justify-content:space-between;align-items:center;border-top:1px solid #edf1f5;padding-top:11px}.announcement footer small{font-size:7px;color:#8b98a8}.announcement footer button{border:0;border-radius:20px;padding:4px 8px;font-size:7px}.announcement footer button.active{background:#e7faf3;color:#167d5f}.org-chart{display:flex;flex-direction:column;gap:10px;max-width:850px;margin:auto}.org-chart>article{display:flex;align-items:center;gap:13px;background:#fff;border:1px solid var(--line);border-radius:13px;padding:13px 16px;box-shadow:0 5px 16px #29466708}.org-chart article>i{width:42px;height:42px;border-radius:11px;background:linear-gradient(145deg,#15b9c2,#1769e0);color:#fff;display:grid;place-items:center;font-style:normal;font-size:10px;font-weight:800}.org-chart article>div{display:flex;flex:1;flex-direction:column}.org-chart small{font-size:7px;letter-spacing:1px;color:var(--blue);font-weight:900}.org-chart h3{font-size:12px;margin:3px 0}.org-chart p{font-size:8px;color:var(--muted);margin:0}.org-chart article>span{width:27px;height:27px;background:#f2f5f8;border-radius:8px;display:grid;place-items:center;font-size:8px;color:#788798}
@media(max-width:900px){.announcement-grid{grid-template-columns:1fr 1fr}}@media(max-width:700px){.approval-detail,.flow-grid,.announcement-grid{grid-template-columns:1fr}.request-info dl{grid-template-columns:1fr;gap:4px}.request-info dd{margin-bottom:8px}}
.dashboard-announcement{display:flex;align-items:flex-start;gap:10px;background:#eaf5ff;border:1px solid #cfe3f7;border-radius:11px;padding:11px 14px;margin-bottom:12px}.dashboard-announcement>i{font-style:normal;color:var(--blue)}.dashboard-announcement>div{display:flex;flex-direction:column}.dashboard-announcement b{font-size:10px}.dashboard-announcement span{font-size:8px;color:#62758c;margin-top:3px;white-space:nowrap;overflow:hidden;text-overflow:ellipsis;max-width:850px}
.page-head{display:flex;align-items:flex-end;justify-content:space-between;gap:20px;margin-bottom:20px}.page-head .eyebrow{font-size:8px;letter-spacing:1.5px;color:var(--blue);font-weight:900;margin:0 0 6px}.page-head h1{font-size:25px;margin:0}.page-head>div>p:last-child{font-size:9px;color:var(--muted)}.content-card,.stat-card{background:#fff;border:1px solid var(--line);border-radius:13px;box-shadow:0 5px 17px #28466d08}.stat-card{padding:17px;display:flex;flex-direction:column}.stat-card span{font-size:9px;color:var(--muted)}.stat-card strong{font-size:24px;margin:5px 0}.stat-card small{font-size:8px;color:#91a0b1}.card-title{display:flex;justify-content:space-between;padding:16px 18px;border-bottom:1px solid var(--line)}.card-title h2{font-size:13px;margin:0}.card-title p{font-size:8px;color:var(--muted);margin:4px 0 0}.table-wrap{overflow:auto}.content-card table{width:100%;border-collapse:collapse;min-width:700px}.content-card th{background:#f8fafc;color:#8492a4;font-size:8px;text-align:left;padding:10px 14px}.content-card td{font-size:9px;padding:11px 14px;border-top:1px solid #edf1f5}.badge{display:inline-block;background:#eaf2ff;color:var(--blue);border-radius:20px;padding:4px 7px;font-size:7px}.filter-bar{display:flex;align-items:flex-end;gap:9px;padding:16px 18px;border-bottom:1px solid var(--line)}.filter-bar label{display:flex;flex-direction:column;gap:5px;font-size:8px;color:var(--muted)}.filter-bar input,.inline-form input{height:36px;border:1px solid #dce4ed;border-radius:8px;padding:0 9px;font-size:9px}.btn{display:inline-flex;align-items:center;justify-content:center;height:36px;border:1px solid #dce4ed;background:#fff;border-radius:8px;padding:0 12px;font-size:8px;font-weight:800;color:#52647a;cursor:pointer}.btn.primary{background:var(--blue);border-color:var(--blue);color:white}.btn.danger{color:#bd4053;border-color:#efcbd1}.content-card .inline-form{display:inline-flex;padding:0;margin-left:7px}.content-card .inline-form input{width:145px}@media(max-width:700px){.page-head,.filter-bar{align-items:stretch;flex-direction:column}.filter-bar .btn{width:100%}}
.spaced{margin-top:14px}.admin-grid{display:grid;grid-template-columns:1fr 1.5fr;gap:14px}.stack-form{padding:16px 18px;display:flex;flex-direction:column;gap:9px}.stack-form input,.stack-form select,.stack-form textarea,.filter-bar select,.settings-grid input,.settings-grid select,.settings-grid textarea{border:1px solid #dce4ed;border-radius:8px;padding:0 10px;font:inherit;font-size:9px;background:#fff}.stack-form input,.stack-form select,.filter-bar select,.settings-grid input,.settings-grid select{height:38px}.stack-form textarea,.settings-grid textarea{min-height:75px;padding:10px}.stack-form .two{display:grid;grid-template-columns:1fr 1fr;gap:8px}.role-permission-grid{display:grid;grid-template-columns:repeat(3,1fr);gap:12px;padding:15px}.role-box{border:1px solid var(--line);border-radius:11px;padding:14px}.role-box h3{font-size:12px;margin:0}.role-box>small{font-size:7px;color:var(--muted)}.role-box>div{max-height:230px;overflow:auto;margin:10px 0}.role-box label{display:flex;align-items:flex-start;gap:7px;border-top:1px solid #eef1f5;padding:7px 0}.role-box label span{display:flex;flex-direction:column;font-size:8px}.role-box label em{font-style:normal;color:var(--muted);font-size:7px}.settings-grid{display:grid;grid-template-columns:1fr 1fr;gap:12px;padding:18px}.settings-grid h2,.settings-grid .full{grid-column:1/-1}.settings-grid h2{font-size:13px;border-bottom:1px solid var(--line);padding-bottom:8px;margin:10px 0 0}.settings-grid label{display:flex;flex-direction:column;gap:6px;font-size:8px;font-weight:700}.settings-grid .helper{font-size:8px;color:var(--muted)}.timeline-list article{display:grid;grid-template-columns:110px 1fr auto;gap:13px;align-items:center;padding:14px;border-top:1px solid var(--line)}.timeline-list time{font-size:9px;font-weight:800;color:var(--blue)}.timeline-list time small{display:block;color:var(--muted);font-weight:400;margin-top:4px}.timeline-list article span{font-size:7px;color:var(--blue);text-transform:uppercase}.timeline-list h3{font-size:11px;margin:3px 0}.timeline-list p{font-size:8px;color:var(--muted);margin:0}.notification-list form{border-top:1px solid var(--line)}.notification-list form.unread{background:#f1f7ff}.notification-list form>button{width:100%;display:flex;gap:12px;padding:15px 18px;border:0;background:transparent;text-align:left;cursor:pointer}.notification-list form i{font-style:normal;width:35px;height:35px;background:#e7f0ff;color:var(--blue);border-radius:9px;display:grid;place-items:center}.notification-list form button>div{display:flex;flex-direction:column}.notification-list span{font-size:7px;color:var(--blue)}.notification-list h3{font-size:11px;margin:4px 0}.notification-list p{font-size:8px;color:var(--muted);margin:0}.logout-button{border:0;background:transparent;color:#95a8bf;font-size:17px;cursor:pointer}@media(max-width:900px){.admin-grid,.role-permission-grid{grid-template-columns:1fr 1fr}}@media(max-width:650px){.admin-grid,.role-permission-grid,.settings-grid{grid-template-columns:1fr}.settings-grid h2,.settings-grid .full{grid-column:auto}.timeline-list article{grid-template-columns:1fr}}
.portal-cards-six{grid-template-columns:repeat(3,1fr);max-width:1100px}.portal-cards-six>a{padding:15px}.portal-cards-six>a>i{width:45px;height:45px}.portal-hero:has(.portal-cards-six){max-width:1150px;padding:5vh 0}.portal-hero:has(.portal-cards-six) h1{font-size:clamp(38px,4vw,62px)}
.role-portal-body{margin:0;background:#f2f6fa;color:#17243a;font-family:Manrope,Inter,system-ui,sans-serif}.role-nav{height:76px;background:#fff;border-bottom:1px solid var(--line);padding:0 max(24px,5vw);display:flex;align-items:center;gap:35px;position:sticky;top:0;z-index:10}.role-nav nav{display:flex;gap:25px;flex:1}.role-nav nav a{font-size:10px;color:#62748b;font-weight:700}.role-profile{display:flex;align-items:center;gap:9px}.role-profile>span{width:36px;height:36px;border-radius:10px;background:linear-gradient(145deg,var(--cyan),var(--blue));display:grid;place-items:center;color:#fff;font-size:9px;font-weight:800}.role-profile>div{display:flex;flex-direction:column}.role-profile b{font-size:9px}.role-profile small{font-size:7px;color:var(--muted)}.role-profile button{border:0;background:#f3f6fa;border-radius:7px;padding:7px 9px;font-size:8px;color:#65778d}.role-main{width:min(1200px,92vw);margin:25px auto}.role-main>footer{text-align:center;color:#8996a6;font-size:8px;padding:30px}.role-hero{min-height:190px;border-radius:20px;padding:32px 38px;background:linear-gradient(120deg,#09233f,#104d83);color:#fff;display:flex;align-items:center;justify-content:space-between;overflow:hidden;position:relative;box-shadow:0 15px 35px #173a5d25}.role-hero:after{content:"";position:absolute;width:340px;height:340px;border:55px solid #ffffff09;border-radius:50%;right:-100px}.role-hero p{font-size:8px;letter-spacing:1.8px;color:#45d3d6;font-weight:900}.role-hero h1{font-size:30px;margin:7px 0 10px}.role-hero span{font-size:10px;color:#b4c3d4}.role-hero aside{z-index:1;text-align:right;display:flex;flex-direction:column}.role-hero aside small{font-size:8px;color:#8fa6be}.role-hero aside strong{font-size:37px}.role-hero aside em{font-size:8px;color:#45d3d6;font-style:normal}.role-stats{display:grid;grid-template-columns:repeat(4,1fr);gap:12px;margin-top:14px}.role-stats article{background:#fff;border:1px solid var(--line);border-radius:13px;padding:15px;display:flex;flex-direction:column}.role-stats span{font-size:8px;color:var(--muted)}.role-stats strong{font-size:22px;margin:4px 0}.role-stats small{font-size:7px;color:#9aa6b4}.quick-grid{display:grid;grid-template-columns:repeat(5,1fr);gap:12px;margin:14px 0}.quick-grid>a{background:#fff;border:1px solid var(--line);border-radius:13px;padding:14px;display:flex;align-items:center;gap:10px;box-shadow:0 5px 15px #28466d08}.quick-grid i{width:36px;height:36px;border-radius:9px;background:#eaf2ff;color:var(--blue);font-style:normal;display:grid;place-items:center;font-size:17px}.quick-grid span{display:flex;flex-direction:column;flex:1}.quick-grid b{font-size:9px}.quick-grid small{font-size:7px;color:var(--muted);margin-top:3px}.quick-grid strong{color:#92a0b0}.role-columns{display:grid;grid-template-columns:1.15fr 1fr;gap:14px}.role-card{background:#fff;border:1px solid var(--line);border-radius:14px;box-shadow:0 5px 15px #28466d08;overflow:hidden}.role-card>header{display:flex;justify-content:space-between;align-items:center;padding:15px 17px;border-bottom:1px solid var(--line)}.role-card header h2{font-size:11px;margin:0}.role-card header p{font-size:7px;color:var(--muted);margin:4px 0 0}.role-card header>a{font-size:8px;color:var(--blue);font-weight:800}.attendance-summary{display:flex;align-items:center;gap:12px;padding:20px}.attendance-summary>i{width:43px;height:43px;background:#e7faf3;color:var(--green);border-radius:12px;display:grid;place-items:center;font-style:normal;font-size:20px}.attendance-summary>div{display:flex;flex-direction:column;flex:1}.attendance-summary b{font-size:10px}.attendance-summary span{font-size:13px;font-weight:800;text-transform:capitalize;margin-top:3px}.attendance-summary small{font-size:7px;color:var(--muted);margin-top:4px}.attendance-summary>a{font-size:8px;background:var(--blue);color:#fff;padding:8px 10px;border-radius:8px}.info-strip{margin:0 17px 17px;background:#f6f9fc;border-radius:9px;padding:10px;display:flex;justify-content:space-between}.info-strip b{font-size:9px}.info-strip span{font-size:8px;color:var(--muted)}.mini-list>a{display:flex;flex-direction:column;padding:11px 17px;border-top:1px solid #edf1f5}.mini-list b{font-size:9px}.mini-list span{font-size:8px;color:var(--muted);margin-top:3px;white-space:nowrap;overflow:hidden;text-overflow:ellipsis}.mini-list>p{font-size:9px;color:var(--muted);padding:15px}.role-schedule{margin-top:14px}.schedule-row article{display:grid;grid-template-columns:120px 1fr auto;align-items:center;gap:12px;padding:13px 17px;border-top:1px solid #edf1f5}.schedule-row time{font-size:9px;color:var(--blue);font-weight:800}.schedule-row article>div{display:flex;flex-direction:column}.schedule-row b{font-size:9px}.schedule-row span{font-size:8px;color:var(--muted);margin-top:3px}.schedule-row a{font-size:8px;color:var(--blue);font-weight:800}.children-grid{display:grid;grid-template-columns:1fr 1fr;gap:12px;padding:15px}.children-grid article{border:1px solid var(--line);border-radius:11px;padding:12px;display:flex;align-items:center;gap:10px}.children-grid i{width:36px;height:36px;border-radius:9px;background:#eaf2ff;color:var(--blue);display:grid;place-items:center;font-style:normal;font-size:8px;font-weight:900}.children-grid article>div{display:flex;flex:1;flex-direction:column}.children-grid b{font-size:9px}.children-grid span{font-size:7px;color:var(--muted);margin-top:3px}.children-grid em{font-size:7px;font-style:normal;background:#e7faf3;color:var(--green);border-radius:20px;padding:5px 7px}.portal-page-title{margin:28px 0 18px}.portal-page-title p{font-size:8px;color:var(--blue);letter-spacing:1.4px;font-weight:900}.portal-page-title h1{font-size:27px;margin:5px 0}.portal-page-title span{font-size:9px;color:var(--muted)}.role-card table{width:100%;border-collapse:collapse}.role-card th{background:#f8fafc;color:#8492a4;font-size:8px;text-align:left;padding:10px 14px}.role-card td{font-size:9px;padding:11px 14px;border-top:1px solid #edf1f5}@media(max-width:950px){.portal-cards-six,.quick-grid{grid-template-columns:1fr 1fr}.role-stats{grid-template-columns:1fr 1fr}}@media(max-width:700px){.role-nav{padding:0 15px}.role-nav nav,.role-profile>div{display:none}.role-nav .brand{flex:1}.role-main{width:92vw}.role-hero{padding:25px;align-items:flex-start;flex-direction:column;gap:22px}.role-hero aside{text-align:left}.quick-grid,.role-columns,.children-grid,.portal-cards-six{grid-template-columns:1fr}.schedule-row article{grid-template-columns:1fr}.role-stats{grid-template-columns:1fr 1fr}}
.report-filter{margin-bottom:14px}.report-filter .filter-bar{flex-wrap:wrap}.report-filter select{min-width:130px}.report-sheet{background:#fff;border:1px solid var(--line);border-radius:14px;box-shadow:0 5px 17px #28466d08;overflow:hidden}.report-sheet>header{display:flex;justify-content:space-between;align-items:center;padding:17px 20px;border-bottom:1px solid var(--line)}.report-sheet>header>div:first-child{display:flex;align-items:center;gap:12px}.report-sheet header img{width:43px;height:48px;object-fit:contain}.report-sheet header span{display:flex;flex-direction:column}.report-sheet header strong{font-size:13px}.report-sheet header small{font-size:8px;color:var(--muted);margin-top:4px}.report-actions{display:flex;gap:7px}.report-summary{display:flex;gap:25px;padding:10px 20px;background:#f7f9fc;border-bottom:1px solid var(--line)}.report-summary span{font-size:8px;color:var(--muted)}.report-summary b{color:#25364c;margin-left:4px}.report-sheet table{width:100%;border-collapse:collapse;min-width:800px}.report-sheet th{background:#0b3158;color:#fff;font-size:7px;text-align:left;padding:9px 11px}.report-sheet td{font-size:8px;padding:9px 11px;border-bottom:1px solid #edf1f5}.report-sheet tbody tr:nth-child(even){background:#fafbfd}.report-sheet>footer{display:flex;justify-content:space-between;padding:11px 18px;color:var(--muted);font-size:7px}@media print{.report-filter,.page-head,.report-actions,.sidebar,.topbar,.page>footer{display:none!important}.main{margin:0}.page{padding:0;max-width:none}.report-sheet{border:0;box-shadow:none}.report-sheet th{background:#ddd!important;color:#111!important}.report-sheet td,.report-sheet th{padding:5px;font-size:7px}}
.settings-columns{display:grid;grid-template-columns:1.7fr .8fr;gap:14px}.logo-preview{height:150px;background:#f5f8fb;border:1px dashed #ccd7e3;border-radius:11px;display:grid;place-items:center}.logo-preview img{max-width:120px;max-height:125px;object-fit:contain}@media(max-width:850px){.settings-columns{grid-template-columns:1fr}}

.password-field {
    position: relative;
    display: block;
    width: 100%;
}

.password-field input {
    width: 100%;
    padding-right: 88px !important;
}

.password-toggle {
    position: absolute;
    top: 50%;
    right: 9px;
    transform: translateY(-50%);
    border: 0;
    border-radius: 6px;
    background: #eaf2ff;
    color: #1769e0;
    padding: 5px 8px;
    font-size: 9px;
    font-weight: 700;
    cursor: pointer;
}

.password-toggle:hover {
    background: #dbe9ff;
}

.app-toast{position:fixed;top:84px;right:24px;z-index:1000;width:min(420px,calc(100vw - 32px));display:flex;align-items:flex-start;gap:11px;border:1px solid;border-radius:12px;padding:13px 14px;background:#fff;box-shadow:0 18px 45px #17324f26;animation:toast-in .25s ease-out}
.app-toast>i{width:30px;height:30px;border-radius:50%;display:grid;place-items:center;font-style:normal;font-weight:900;flex:0 0 auto}
.app-toast>div{display:flex;flex:1;flex-direction:column;gap:3px}.app-toast b{font-size:10px}.app-toast span{font-size:9px;line-height:1.5}
.app-toast>button{border:0;background:transparent;color:inherit;cursor:pointer;font-size:17px;line-height:1}
.app-toast.success{border-color:#bde8d9;color:#14775b}.app-toast.success>i{background:#dff8ef}
.app-toast.error{border-color:#f0c7ce;color:#ad3f50}.app-toast.error>i{background:#ffeaed}
.app-toast.warning{border-color:#efdcae;color:#876523}.app-toast.warning>i{background:#fff4d7}
.app-toast.closing{opacity:0;transform:translateY(-8px);transition:.35s}
.page>.flash:not(.app-toast),.role-main>.flash:not(.app-toast){display:none}
@keyframes toast-in{from{opacity:0;transform:translateY(-8px)}to{opacity:1;transform:none}}
@media(max-width:700px){.app-toast{top:16px;right:16px}}
