@import"https://fonts.googleapis.com/css2?family=DM+Sans:wght@400;500;600;700&family=Manrope:wght@600;700;800&display=swap";:root{font-family:DM Sans,sans-serif;color:#172033;background:#f5f7fb;font-synthesis:none;--primary: #3157d5;--primary-dark: #2445b4;--sidebar: #101a31;--muted: #7b8497;--border: #e7eaf1;--card: #ffffff;--green: #1b9a68;--red: #df4d5d;--orange: #e49b32}*{box-sizing:border-box}body{margin:0;min-width:320px;background:#f5f7fb}button,input{font:inherit}button{cursor:pointer}a{color:inherit;text-decoration:none}.app-shell{display:flex;min-height:100vh}.sidebar{width:255px;background:var(--sidebar);color:#fff;padding:24px 16px;position:fixed;inset:0 auto 0 0;z-index:20;display:flex;flex-direction:column}.brand{display:flex;align-items:center;gap:11px;padding:4px 10px 30px}.brand-icon{width:42px;height:42px;border-radius:12px;background:#3157d5;display:grid;place-items:center}.brand h1{margin:0;font:800 18px Manrope;letter-spacing:-.4px}.brand span{font-size:11px;color:#94a0ba}.close-sidebar{display:none;background:none;border:0;color:#fff;margin-left:auto}.nav-label{color:#66728e;font-size:10px;font-weight:700;letter-spacing:1.2px;padding:0 12px;margin:0 0 10px}.nav-menu{display:flex;flex-direction:column;gap:5px}.nav-menu a{display:flex;align-items:center;gap:12px;padding:12px;border-radius:10px;color:#aeb7ca;font-size:14px;font-weight:600;transition:.2s}.nav-menu a:hover{color:#fff;background:#182543}.nav-menu a.active{color:#fff;background:#2b4bb6;box-shadow:0 8px 18px #00000026}.sidebar-footer{margin-top:auto;padding:14px 8px 4px}.mini-card{background:#172441;border:1px solid #263352;padding:11px;border-radius:10px;display:flex;gap:10px;align-items:center}.mini-card svg{color:#8fa7ff}.mini-card div{display:flex;flex-direction:column;gap:2px}.mini-card strong{font-size:12px}.mini-card span,.sidebar-footer>small{color:#7f8ba5;font-size:10px}.sidebar-footer>small{display:block;text-align:center;margin-top:12px}.main-content{margin-left:255px;width:calc(100% - 255px);min-height:100vh}.topbar{height:84px;background:#fff;border-bottom:1px solid var(--border);display:flex;align-items:center;justify-content:space-between;padding:0 38px}.topbar h2{margin:2px 0 0;font:700 20px Manrope;letter-spacing:-.5px}.eyebrow{margin:0;color:#70809d;font-size:10px;font-weight:800;letter-spacing:1.3px}.topbar-actions{display:flex;gap:12px;align-items:center}.date-pill{border:1px solid var(--border);border-radius:20px;padding:8px 12px;font-size:12px;color:#68748a;display:flex;gap:8px;align-items:center}.status-dot{width:7px;height:7px;background:#25b878;border-radius:50%}.menu-btn{display:none;background:none;border:0}.page-container{padding:32px 38px 50px;max-width:1450px;margin:auto}.hero{background:linear-gradient(110deg,#1c327f,#4263d4);color:#fff;border-radius:18px;padding:28px 32px;display:flex;justify-content:space-between;align-items:center;overflow:hidden;position:relative}.hero:after{content:"";position:absolute;width:230px;height:230px;border-radius:50%;background:#ffffff0f;right:60px;top:-100px}.hero-tag{font-size:10px;letter-spacing:1.4px;font-weight:800;color:#b9c9ff}.hero h3{font:800 27px Manrope;margin:8px 0;letter-spacing:-.8px}.hero p{margin:0;color:#d8e0ff;font-size:13px}.hero-illustration{width:100px;height:100px;border:1px solid rgba(255,255,255,.18);border-radius:50%;display:grid;place-items:center;color:#b9c9ff;position:relative;z-index:1}.stats-grid{display:grid;grid-template-columns:repeat(4,1fr);gap:16px;margin:20px 0}.stats-grid.compact{margin-top:0}.stat-card{background:#fff;border:1px solid var(--border);border-radius:14px;padding:18px;position:relative;min-height:135px;box-shadow:0 3px 12px #17203306}.stat-card span{display:block;color:#6f788b;font-size:12px;font-weight:600;margin-bottom:7px}.stat-card strong{display:block;font:800 25px Manrope;color:#182137}.stat-card small{color:#9aa2b2;font-size:10px}.stat-icon{width:37px;height:37px;border-radius:10px;display:grid;place-items:center;margin-bottom:14px}.accent-blue .stat-icon{background:#e9eeff;color:#3157d5}.accent-green .stat-icon{background:#e5f8f0;color:#1b9a68}.accent-orange .stat-icon{background:#fff3dd;color:#d78d20}.accent-red .stat-icon{background:#ffe9ec;color:#df4d5d}.dashboard-grid{display:grid;grid-template-columns:1.5fr 1fr;gap:18px}.panel{background:#fff;border:1px solid var(--border);border-radius:14px;box-shadow:0 3px 12px #17203306;overflow:hidden}.panel-header{display:flex;align-items:center;justify-content:space-between;padding:18px 20px;border-bottom:1px solid #edf0f5}.panel-header h4{margin:0;font-size:14px}.panel-header span{display:block;color:#8b94a5;font-size:11px;margin-top:3px}.text-link{color:#3157d5;font-size:11px;font-weight:700;display:flex;align-items:center;gap:4px}.student-list{padding:5px 20px 10px}.student-row{display:flex;align-items:center;gap:11px;padding:14px 0;border-bottom:1px solid #f0f2f6}.student-row:last-child{border:0}.avatar{flex:0 0 38px;width:38px;height:38px;border-radius:11px;background:#eaf0ff;color:#3157d5;display:grid;place-items:center;font-size:11px;font-weight:800}.student-main{flex:1;min-width:0;display:flex;flex-direction:column;gap:3px}.student-main strong{font-size:12px}.student-main span{color:#939bad;font-size:10px}.row-progress{width:145px;display:flex;align-items:center;gap:8px}.row-progress b{font-size:10px;min-width:38px;text-align:right}.progress{height:6px;background:#edf0f5;border-radius:20px;overflow:hidden;flex:1}.progress span{height:100%;display:block;background:#3157d5;border-radius:20px}.warning-panel .panel-header svg{color:#df4d5d}.attention-item{display:flex;align-items:center;gap:10px;margin:0 20px;padding:13px 0;border-bottom:1px solid #f0f2f6}.attention-item>div:nth-child(2){flex:1;display:flex;flex-direction:column;gap:3px}.attention-item strong{font-size:12px}.attention-item span{color:#9aa2b2;font-size:10px}.attention-item>b{color:#df4d5d;font-size:12px}.danger-avatar{background:#ffecef;color:#df4d5d}.empty-state{min-height:100px;display:flex;align-items:center;justify-content:center;gap:8px;color:#9aa2b2;font-size:12px;padding:20px;text-align:center}.page-heading{display:flex;justify-content:space-between;align-items:flex-end;gap:20px;margin-bottom:22px}.page-heading h3{font:800 25px Manrope;margin:5px 0;letter-spacing:-.6px}.page-heading p:not(.eyebrow){margin:0;color:#8992a3;font-size:12px}.btn{border:0;border-radius:9px;padding:10px 15px;font-weight:700;font-size:12px;display:inline-flex;align-items:center;gap:7px}.btn-primary{background:#3157d5;color:#fff}.btn-primary:hover{background:#2445b4}.btn-secondary{background:#eef1f6;color:#4f5a70}.btn-danger{background:#fff0f1;color:#d94b5b}.toolbar{padding:13px 16px;margin-bottom:15px;display:flex;align-items:center;gap:14px;justify-content:space-between}.search-box{height:40px;border:1px solid #e2e6ee;border-radius:9px;background:#fff;display:flex;align-items:center;gap:9px;padding:0 12px;flex:1;max-width:500px;color:#98a1b2}.search-box input{border:0;outline:0;width:100%;font-size:12px;color:#333;background:transparent}.result-count{font-size:11px;color:#8c95a7}.table-wrap{width:100%;overflow-x:auto}table{width:100%;border-collapse:collapse;min-width:780px}th{text-align:left;background:#fafbfc;color:#8b94a5;font-size:10px;letter-spacing:.4px;text-transform:uppercase;padding:12px 18px;font-weight:800;border-bottom:1px solid #e9ecf2}td{padding:13px 18px;border-bottom:1px solid #eff1f5;font-size:11px;color:#596377}td strong{color:#252e41}.person-cell{display:flex;align-items:center;gap:10px}.person-cell>div:last-child{display:flex;flex-direction:column;gap:2px}.person-cell span{font-size:10px;color:#939bad}.badge{padding:5px 8px;border-radius:20px;font-size:9px;font-weight:800;display:inline-block}.badge.success{background:#e6f7f0;color:#1b9163}.badge.warning{background:#fff4df;color:#cc861f}.badge.danger{background:#ffebee;color:#d74b5b}.action-buttons{display:flex;gap:5px}.action-buttons button{width:30px;height:30px;border:1px solid #e4e7ee;border-radius:7px;background:#fff;color:#657087;display:grid;place-items:center}.action-buttons .danger-action{color:#d95362}.modal-backdrop{position:fixed;top:0;right:0;bottom:0;left:0;background:#0a122380;z-index:50;display:grid;place-items:center;padding:20px}.modal{background:#fff;width:min(470px,100%);border-radius:16px;box-shadow:0 25px 80px #0003;overflow:hidden}.modal-header{padding:19px 20px;border-bottom:1px solid #edf0f4;display:flex;justify-content:space-between;align-items:center}.modal-header h4{margin:0;font-size:15px}.modal-header span{display:block;color:#929aaa;font-size:10px;margin-top:3px}.modal-header button{background:none;border:0;color:#7e8798}.modal form{padding:20px;display:grid;gap:13px}.modal label{display:grid;gap:6px;color:#555f72;font-size:11px;font-weight:700}.modal input{border:1px solid #dfe4ec;border-radius:8px;padding:10px 11px;outline:none;font-size:12px}.modal input:focus{border-color:#5571d8;box-shadow:0 0 0 3px #e9edff}.form-error{background:#fff0f1;color:#d54b5a;padding:9px;border-radius:8px;font-size:11px}.modal-actions{display:flex;justify-content:flex-end;gap:8px;margin-top:4px}.attendance-info{background:#fff;border:1px solid var(--border);border-radius:14px;padding:14px 16px;display:flex;align-items:center;gap:35px;margin-bottom:16px}.attendance-info>div:not(.search-box){display:flex;flex-direction:column;gap:3px}.attendance-info span{color:#929aaa;font-size:10px}.attendance-info strong{font-size:14px}.attendance-info .search-box{margin-left:auto;max-width:260px}.attendance-list{padding:3px 20px}.attendance-row{min-height:72px;display:flex;align-items:center;border-bottom:1px solid #eff1f5;gap:18px}.attendance-row:last-child{border-bottom:0}.attendance-row .person-cell{flex:1}.current-rate{width:70px;font-size:11px;font-weight:700;color:#39445a;text-align:center}.current-rate small{display:block;color:#a1a8b6;font-size:8px;font-weight:500;margin-top:2px}.attendance-buttons{display:flex;gap:7px}.attendance-buttons button{border:1px solid #dfe4ec;background:#fff;color:#758095;border-radius:8px;padding:8px 11px;display:flex;align-items:center;gap:5px;font-size:10px;font-weight:700}.attendance-buttons button.selected.present{border-color:#a9dfca;background:#e8f8f1;color:#16855a}.attendance-buttons button.selected.absent{border-color:#f0b7bf;background:#fff0f2;color:#d44959}.progress-cell{display:flex;align-items:center;gap:8px;min-width:120px}.progress-cell b{font-size:10px;min-width:40px}@media(max-width:1050px){.stats-grid{grid-template-columns:repeat(2,1fr)}.dashboard-grid{grid-template-columns:1fr}}@media(max-width:800px){.sidebar{transform:translate(-100%);transition:.25s;box-shadow:15px 0 40px #0003}.sidebar.open{transform:translate(0)}.close-sidebar{display:block}.sidebar-overlay{position:fixed;top:0;right:0;bottom:0;left:0;background:#0006;z-index:15}.main-content{margin-left:0;width:100%}.menu-btn{display:grid;place-items:center;margin-right:12px;color:#47536a}.topbar{padding:0 18px}.topbar>div:first-of-type{margin-right:auto}.topbar-actions{display:none}.page-container{padding:22px 16px 35px}.page-heading{align-items:flex-start;flex-direction:column}.hero{padding:24px}.hero-illustration{display:none}.attendance-info{flex-wrap:wrap;gap:18px}.attendance-info .search-box{margin-left:0;max-width:none;flex-basis:100%}}@media(max-width:520px){.stats-grid{grid-template-columns:1fr}.hero h3{font-size:22px}.student-row{flex-wrap:wrap}.row-progress{width:100%;padding-left:49px}.toolbar{align-items:stretch;flex-direction:column}.search-box{max-width:none}.result-count{text-align:right}.attendance-row{align-items:flex-start;padding:13px 0;flex-wrap:wrap}.attendance-buttons{width:100%;padding-left:48px}.current-rate{margin-left:auto}}.live-card{display:flex;align-items:center;gap:9px;background:#f4f7ff;border:1px solid #e0e7fb;border-radius:11px;padding:10px 11px;margin-bottom:10px}.live-card>div{display:flex;flex-direction:column;gap:2px}.live-card strong{font-size:11px;color:#29344a}.live-card span{font-size:9px;color:#8490a6}.live-card .status-dot{width:7px;height:7px;border-radius:50%;background:#2eaa73;box-shadow:0 0 0 4px #e5f7ef}.live-time-card{display:flex;align-items:center;gap:9px;padding:9px 12px;border:1px solid #e0e5ee;border-radius:10px;background:#fff;color:#5d6980}.live-time-card div{display:flex;flex-direction:column;gap:2px}.live-time-card strong{color:#29344a;font-size:11px}.live-time-card span{font-size:9px;color:#8993a5}.schedule-lock{padding:42px 28px;text-align:center}.lock-icon{width:58px;height:58px;border-radius:16px;background:#f0f3f9;color:#65728b;display:grid;place-items:center;margin:0 auto 14px}.schedule-lock h4{margin:0 0 7px;font-size:18px;color:#253047}.schedule-lock p{max-width:620px;margin:0 auto;color:#8992a3;font-size:12px;line-height:1.7}.compact-lock{display:flex;align-items:center;justify-content:center;gap:12px;text-align:left;padding:18px 20px}.compact-lock svg{color:#67758c}.compact-lock div{display:flex;flex-direction:column;gap:3px}.compact-lock strong{font-size:12px;color:#2b3549}.compact-lock span{font-size:10px;color:#8e97a8}.upcoming-list{max-width:650px;margin:25px auto 0;text-align:left;border-top:1px solid #edf0f5;padding-top:15px}.upcoming-list>strong{font-size:11px;color:#5b667b}.upcoming-item{display:grid;grid-template-columns:80px 1fr 160px;gap:12px;align-items:center;padding:11px 0;border-bottom:1px solid #f0f2f6;font-size:10px}.upcoming-item span{color:#3157d5;font-weight:800}.upcoming-item b{color:#2d374c}.upcoming-item small{color:#929aaa}.small-note{margin-top:18px;color:#9aa2b2;font-size:10px}.current-class-banner{display:flex;align-items:center;gap:13px;background:linear-gradient(135deg,#263c8d,#3157d5);color:#fff;border-radius:14px;padding:16px 18px;margin-bottom:15px;box-shadow:0 12px 28px #3157d529}.current-class-icon{width:42px;height:42px;border-radius:11px;background:#ffffff21;display:grid;place-items:center}.current-class-banner>div:nth-child(2){flex:1;display:flex;flex-direction:column;gap:3px}.current-class-banner span{font-size:8px;letter-spacing:1px;opacity:.72;font-weight:800}.current-class-banner strong{font-size:15px}.current-class-banner small{font-size:10px;opacity:.78}.faculty-badge{display:flex;align-items:center;gap:5px;padding:8px 10px;border:1px solid rgba(255,255,255,.2);border-radius:9px;background:#ffffff14}.faculty-badge span{font-size:8px;opacity:.7}.faculty-badge strong{font-size:11px}.faculty-verification{padding:15px 18px;margin-bottom:15px;display:flex;align-items:center;gap:20px}.faculty-verification>div:first-child{flex:1}.faculty-verification h4{margin:0;font-size:13px}.faculty-verification span{color:#8c95a7;font-size:10px}.faculty-verification form{display:flex;gap:8px}.faculty-verification input{width:150px;border:1px solid #dfe4ec;border-radius:8px;padding:9px 11px;outline:none;font-size:11px;text-transform:uppercase}.faculty-verification input:focus{border-color:#5571d8;box-shadow:0 0 0 3px #e9edff}.verified-message{display:flex!important;align-items:center;gap:5px;color:#16855a!important;font-size:10px!important;font-weight:700}.success-banner{display:flex;align-items:center;gap:11px;background:#e8f8f1;border:1px solid #bce6d3;color:#16855a;border-radius:12px;padding:14px 17px;margin-bottom:15px}.success-banner div{display:flex;flex-direction:column;gap:2px}.success-banner strong{font-size:11px}.success-banner span{font-size:9px;color:#5d927a}.save-attendance-bar{display:flex;align-items:center;justify-content:space-between;margin-top:14px;padding:13px 15px;border:1px solid #e2e6ee;border-radius:11px;background:#fff}.save-attendance-bar span{font-size:10px;color:#8b94a5}.save-attendance-bar button:disabled{opacity:.5;cursor:not-allowed}.schedule-key{display:flex;align-items:center;gap:6px;color:#5e6a80;font-size:10px;background:#fff;border:1px solid #e1e6ef;border-radius:9px;padding:9px 11px}.schedule-grid{display:grid;grid-template-columns:repeat(5,1fr);gap:12px}.schedule-day{min-width:0}.schedule-day.today{border-color:#9eafe8;box-shadow:0 6px 22px #3157d517}.schedule-day-header{display:flex;align-items:center;justify-content:space-between;padding:14px;border-bottom:1px solid #edf0f5}.schedule-day-header div{display:flex;flex-direction:column;gap:3px}.schedule-day-header strong{font-size:12px;color:#2c364b}.schedule-day-header span{font-size:9px;color:#929aaa}.schedule-day-header>b{font-size:8px;background:#e9edff;color:#3157d5;padding:5px 7px;border-radius:20px}.schedule-items{padding:5px 12px 10px}.schedule-item{padding:12px 0;border-bottom:1px solid #eff1f5}.schedule-item:last-child{border-bottom:0}.schedule-time{display:flex;align-items:center;gap:5px;color:#3157d5;font-size:9px;font-weight:800}.schedule-time small{color:#a0a8b6;font-weight:600}.schedule-subject{display:flex;flex-direction:column;gap:3px;margin:7px 0}.schedule-subject strong{font-size:10px;color:#303a4e;line-height:1.4}.schedule-subject span{font-size:8px;color:#9aa2b2}.schedule-faculty{display:grid;grid-template-columns:14px 1fr;column-gap:4px;align-items:center;color:#68748a}.schedule-faculty svg{grid-row:span 2;color:#3157d5}.schedule-faculty span{font-size:9px;font-weight:800}.schedule-faculty small{font-size:8px;color:#9aa2b2;white-space:nowrap;overflow:hidden;text-overflow:ellipsis}.schedule-note{margin-top:14px;padding:13px 15px;background:#f5f7fb;border:1px solid #e5e9f0;border-radius:10px;color:#7d8799;font-size:10px;line-height:1.6}.session-panel{margin-top:18px}@media(max-width:1100px){.schedule-grid{grid-template-columns:repeat(2,1fr)}}@media(max-width:800px){.current-class-banner{align-items:flex-start;flex-wrap:wrap}.faculty-badge{margin-left:55px}.faculty-verification{align-items:flex-start;flex-direction:column}.faculty-verification form{width:100%}.faculty-verification input{flex:1;width:auto}.schedule-grid{grid-template-columns:1fr}.upcoming-item{grid-template-columns:70px 1fr}.upcoming-item small{grid-column:2}.save-attendance-bar{align-items:flex-start;flex-direction:column;gap:10px}}@media(max-width:520px){.live-time-card{width:100%}.page-heading .live-time-card{margin-top:3px}.faculty-badge{margin-left:0}.current-class-banner{padding:14px}}
