@import "https://fonts.googleapis.com/css2?family=Manrope:wght@500;600;700;800&display=swap";:root{--bg:#edf2ec;--surface:#fff;--surface-soft:#f3f7f2;--text:#102119;--muted:#526559;--primary:#0e7f72;--primary-strong:#0a655a;--line:#d2ddd4;--danger:#c2410c;--sidebar:#10271b;--sidebar-text:#ebf3ed;--shadow:0 18px 42px #08160e14;--shadow-soft:0 8px 20px #08160e0f;--primary-accent:#0a9a89;--bg-spot-a:#d9e7dd;--bg-spot-b:#c1dbd3;--bg-base-start:#eef4ef;--bg-base-end:#edf2ec;--sidebar-glow:#157b5f52;--sidebar-glow-soft:#157b5f14;--sidebar-grad-start:#0f281b;--sidebar-grad-mid:#173929;--sidebar-grad-end:#123326;--menu-active-bg-a:#e5f4ec1f;--menu-active-bg-b:#a0d8c024;--menu-active-border:#d0ebdd75;--primary-shadow:#0b6c5c38;--primary-shadow-strong:#0b6c5c47;color:var(--text);background-color:var(--bg);font-synthesis:none;text-rendering:optimizelegibility;-webkit-font-smoothing:antialiased;-moz-osx-font-smoothing:grayscale;font-family:Manrope,Segoe UI,sans-serif;font-weight:500;line-height:1.45}:root[data-theme=academic]{--bg:#eef3f0;--surface:#fff;--surface-soft:#f4f8f5;--text:#13211a;--muted:#526559;--primary:#0e7c66;--primary-strong:#0a6553;--line:#d2ddd4;--danger:#c2410c;--sidebar:#10271b;--sidebar-text:#ebf3ed;--primary-accent:#0a9a89;--bg-spot-a:#d9e7dd;--bg-spot-b:#c1dbd3;--bg-base-start:#eef4ef;--bg-base-end:#eef3f0;--sidebar-glow:#157b5f52;--sidebar-glow-soft:#157b5f14;--sidebar-grad-start:#0f281b;--sidebar-grad-mid:#173929;--sidebar-grad-end:#123326;--menu-active-bg-a:#e5f4ec1f;--menu-active-bg-b:#a0d8c024;--menu-active-border:#d0ebdd75;--primary-shadow:#0b6c5c38;--primary-shadow-strong:#0b6c5c47}:root[data-theme=trust]{--bg:#f3f6fb;--surface:#fff;--surface-soft:#eef4ff;--text:#10203a;--muted:#4e627f;--primary:#0b5fff;--primary-strong:#0a49bf;--line:#d5deef;--danger:#c2410c;--sidebar:#12203a;--sidebar-text:#eaf0ff;--primary-accent:#0fa3b1;--bg-spot-a:#dce5ff;--bg-spot-b:#d2eef6;--bg-base-start:#f7f9ff;--bg-base-end:#f3f6fb;--sidebar-glow:#1e6cff47;--sidebar-glow-soft:#1e6cff1a;--sidebar-grad-start:#111f37;--sidebar-grad-mid:#1a315b;--sidebar-grad-end:#122a49;--menu-active-bg-a:#e2ecff26;--menu-active-bg-b:#97bdff29;--menu-active-border:#c7dbff8f;--primary-shadow:#0b5fff3d;--primary-shadow-strong:#0b5fff4d}:root[data-theme=warm]{--bg:#f6f4ee;--surface:#fff;--surface-soft:#faf7ef;--text:#1e2a22;--muted:#5f6d63;--primary:#1f7a59;--primary-strong:#185e45;--line:#e0d8c9;--danger:#b45309;--sidebar:#23352a;--sidebar-text:#edf2ea;--primary-accent:#d89b3d;--bg-spot-a:#efe4cc;--bg-spot-b:#e6dac6;--bg-base-start:#faf7ef;--bg-base-end:#f6f4ee;--sidebar-glow:#a0773847;--sidebar-glow-soft:#a077381a;--sidebar-grad-start:#213327;--sidebar-grad-mid:#35563f;--sidebar-grad-end:#2a4635;--menu-active-bg-a:#faf3e129;--menu-active-bg-b:#debe8126;--menu-active-border:#f5e2b980;--primary-shadow:#1f7a5938;--primary-shadow-strong:#1f7a5947}:root[data-mode=dark]{--bg:#0d1310;--surface:#141d18;--surface-soft:#1b2620;--text:#e8f1eb;--muted:#9fb3a7;--line:#28362e;--danger:#ff6b6b;--sidebar:#0a0e0c;--sidebar-text:#d4e6df;--shadow:0 20px 46px #0000005c;--shadow-soft:0 8px 20px #0000003d;--bg-spot-a:#273f318c;--bg-spot-b:#22352c80;--bg-base-start:#101812;--bg-base-end:#0d1310;--sidebar-glow:#157b5f1f;--sidebar-glow-soft:#157b5f0a;--sidebar-grad-start:#070a09;--sidebar-grad-mid:#0d1410;--sidebar-grad-end:#0a0e0c;--primary-shadow:#0000004d;--primary-shadow-strong:#0006}:root[data-theme=academic][data-mode=dark]{--menu-active-bg-a:#0a9a891f;--menu-active-bg-b:#0e7c6624;--menu-active-border:#3fb9ad5c}:root[data-theme=trust][data-mode=dark]{--menu-active-bg-a:#0b5fff24;--menu-active-bg-b:#0fa3b129;--menu-active-border:#88b1ff70;--primary-shadow:#0b5fff47;--primary-shadow-strong:#0b5fff5c}:root[data-theme=warm][data-mode=dark]{--menu-active-bg-a:#d89b3d29;--menu-active-bg-b:#1f7a5924;--menu-active-border:#d89b3d66}:root[data-mode=dark] .topbar,:root[data-mode=dark] .stat-card,:root[data-mode=dark] .simple-page,:root[data-mode=dark] .attendance-panel,:root[data-mode=dark] .attendance-status-card,:root[data-mode=dark] .attendance-record-card,:root[data-mode=dark] .today-timetable-card,:root[data-mode=dark] .teacher-announcements-card,:root[data-mode=dark] .teacher-work-item{background:var(--surface)!important;border-color:var(--line)!important}:root[data-mode=dark] .login-card{border-color:var(--line)!important;background:#141d18eb!important}:root[data-mode=dark] .role-btn{background:var(--surface-soft)!important;border-color:var(--line)!important;color:var(--text)!important}:root[data-mode=dark] .role-btn.active{background:linear-gradient(120deg, var(--primary), var(--primary-accent))!important;color:#f8fffe!important;border-color:#0000!important}:root[data-mode=dark] .login-form input,:root[data-mode=dark] .location-preview-field input,:root[data-mode=dark] .teacher-attendance-student-row select,:root[data-mode=dark] .secondary-btn{background:var(--surface-soft)!important;border-color:var(--line)!important;color:var(--text)!important}:root[data-mode=dark] .secondary-btn:hover{background:var(--surface)!important;border-color:var(--primary)!important}:root[data-mode=dark] .teacher-day-item,:root[data-mode=dark] .today-timetable-item,:root[data-mode=dark] .teacher-announcement-item{background:var(--surface-soft)!important;border-color:var(--line)!important}:root[data-mode=dark] .today-timetable-break{background:#d89b3d2e!important;border-color:#d89b3d80!important}:root[data-mode=dark] .today-timetable-break p{color:#f2d9a5!important}:root[data-mode=dark] .teacher-timetable-matrix th{background:var(--surface-soft)!important;color:var(--muted)!important}:root[data-mode=dark] .slot-empty{color:var(--muted)!important}:root[data-mode=dark] .teacher-attendance-student-row select{background:var(--surface-soft)!important;border-color:var(--line)!important}:root[data-mode=dark] .menu-link{color:var(--sidebar-text)!important}:root[data-mode=dark] .menu-link:hover{background:var(--menu-active-bg-a)!important;border-color:var(--menu-active-border)!important}:root[data-mode=dark] .menu-link.active{background:linear-gradient(120deg, var(--menu-active-bg-a) 0%, var(--menu-active-bg-b) 100%)!important;border-color:var(--menu-active-border)!important;color:#e8f1eb!important}*{box-sizing:border-box}body{background:radial-gradient(circle at 12% 8%, var(--bg-spot-a) 0%, transparent 48%), radial-gradient(circle at 90% 12%, var(--bg-spot-b) 0%, transparent 32%), linear-gradient(180deg, var(--bg-base-start) 0%, var(--bg-base-end) 100%);min-height:100vh;margin:0}#root{min-height:100vh}.login-page{place-items:center;min-height:100vh;padding:24px;display:grid}.login-card{-webkit-backdrop-filter:blur(6px);backdrop-filter:blur(6px);border:1px solid var(--line);width:100%;max-width:460px;box-shadow:var(--shadow);background:#ffffffeb;border-radius:20px;padding:28px}.login-brand{border-bottom:1px solid var(--line);flex-direction:column;align-items:center;gap:10px;margin-bottom:20px;padding-bottom:18px;display:flex}.login-logo{object-fit:contain;border-radius:16px;width:80px;height:80px}.login-logo-placeholder{background:linear-gradient(135deg, var(--primary), var(--primary-accent));border-radius:16px;justify-content:center;align-items:center;width:80px;height:80px;font-size:36px;display:flex}.login-company-name{color:var(--text);text-align:center;letter-spacing:-.01em;margin:0;font-size:20px;font-weight:800}.login-title{text-align:center;margin:0 0 4px;font-size:26px;font-weight:800}.eyebrow{letter-spacing:.12em;text-transform:uppercase;color:var(--primary);margin:0;font-size:12px;font-weight:800}.login-card h1{margin:8px 0 6px;font-size:34px}.helper-text{text-align:center;color:var(--muted);margin:0 0 18px}.role-toggle{grid-template-columns:1fr 1fr;gap:10px;margin-bottom:18px;display:grid}.role-btn{border:1px solid var(--line);color:var(--text);cursor:pointer;background:#f3f8f4;border-radius:12px;padding:10px;font-weight:700;transition:all .2s}.role-btn.active{background:linear-gradient(120deg, var(--primary), var(--primary-accent));color:#f8fffe;box-shadow:var(--shadow-soft);border-color:#0000}.login-form{gap:10px;display:grid}.login-form label{color:var(--muted);font-size:14px}.login-form input{border:1px solid var(--line);width:100%;color:var(--text);border-radius:10px;padding:10px 12px;font-size:15px}.primary-btn{color:#f7fdfb;background:linear-gradient(135deg, var(--primary) 0%, var(--primary-accent) 100%);cursor:pointer;box-shadow:0 8px 18px var(--primary-shadow);border:0;border-radius:12px;margin-top:6px;padding:11px 14px;font-size:15px;font-weight:800;transition:transform .2s,box-shadow .2s,filter .2s}.primary-btn:hover{filter:saturate(1.03);box-shadow:0 10px 20px var(--primary-shadow-strong);transform:translateY(-1px)}.primary-btn:disabled,.secondary-btn:disabled{opacity:.55;cursor:not-allowed}.secondary-btn{border:1px solid var(--line);color:var(--text);cursor:pointer;background:linear-gradient(#fff 0%,#f8fbf9 100%);border-radius:12px;padding:11px 14px;font-size:15px;font-weight:800;transition:all .2s}.secondary-btn:hover{border-color:#b9cbc0}.error-msg{color:var(--danger);margin:4px 0;font-size:14px}.demo-credentials{border-top:1px dashed var(--line);color:var(--muted);margin-top:14px;padding-top:12px;font-size:13px}.demo-credentials p{margin:4px 0}.app-shell{grid-template-columns:260px 1fr;height:100dvh;min-height:100dvh;display:grid;overflow:hidden}.mobile-menu-overlay{display:none}.sidebar{background:radial-gradient(circle at 8% 10%, var(--sidebar-glow) 0%, var(--sidebar-glow-soft) 32%, transparent 52%), linear-gradient(168deg, var(--sidebar-grad-start) 0%, var(--sidebar-grad-mid) 48%, var(--sidebar-grad-end) 100%);color:var(--sidebar-text);flex-direction:column;gap:12px;height:100dvh;padding:20px 14px;display:flex}.brand-kicker{opacity:.85;letter-spacing:.1em;text-transform:uppercase;margin:0;font-size:11px}.brand-block{gap:8px;display:grid}.brand-logo{object-fit:contain;max-width:156px;max-height:50px}.brand-title{margin:4px 0 0;font-size:18px}.menu{scrollbar-width:none;-ms-overflow-style:none;flex:auto;align-content:start;gap:6px;min-height:0;padding-right:0;display:grid;overflow-y:auto}.menu::-webkit-scrollbar{width:0;height:0}.menu-link{color:#d5e2d9;border:1px solid #0000;border-radius:10px;padding:8px 10px;font-size:16px;font-weight:700;text-decoration:none;transition:all .2s}.menu-link:hover{background:#e5f4ec14;border-color:#d0ebdd33}.menu-link.active{background:linear-gradient(120deg, var(--menu-active-bg-a) 0%, var(--menu-active-bg-b) 100%);border-color:var(--menu-active-border);color:#f2faf4;box-shadow:inset 0 0 0 1px #ffffff0f}.logout-btn{color:#d8e4dc;cursor:pointer;background:0 0;border:1px solid #d4e5db40;border-radius:10px;margin-top:8px;padding:8px;font-size:15px;font-weight:700;transition:all .2s}.logout-btn:hover{background:#e8f5ee14;border-color:#d4e5db73}.content-area{height:100dvh;padding:24px;overflow-y:auto}.topbar-left{align-items:center;gap:12px;min-width:0;display:inline-flex}.mobile-menu-btn{border:1px solid var(--line);cursor:pointer;background:#fff;border-radius:10px;flex-direction:column;justify-content:center;align-items:center;gap:5px;width:42px;height:42px;display:none}.mobile-menu-btn span{background:var(--primary);transform-origin:50%;border-radius:999px;width:18px;height:2px;transition:transform .2s,opacity .2s}.mobile-menu-btn.active span:first-child{transform:translateY(7px)rotate(45deg)}.mobile-menu-btn.active span:nth-child(2){opacity:0}.mobile-menu-btn.active span:nth-child(3){transform:translateY(-7px)rotate(-45deg)}.topbar{border:1px solid var(--line);box-shadow:var(--shadow);background:linear-gradient(#fff 0%,#f7fbf8 100%);border-radius:16px;justify-content:space-between;align-items:center;gap:16px;padding:16px 18px;display:flex}.role-chip{color:var(--primary);letter-spacing:.1em;text-transform:uppercase;margin:0;font-size:12px;font-weight:800}.welcome-text{margin:6px 0 0;font-size:22px}.user-email{color:var(--muted);white-space:nowrap;margin:0;font-weight:700}.topbar-right{align-items:center;gap:12px;min-width:0;display:inline-flex}.topbar-profile-link{color:var(--text);border:1px solid var(--line);background:#fff;border-radius:999px;align-items:center;gap:10px;padding:4px 10px 4px 4px;text-decoration:none;display:inline-flex}.topbar-profile-avatar{background:var(--surface-soft);border:1px solid var(--line);border-radius:999px;justify-content:center;align-items:center;width:38px;height:38px;display:inline-flex;overflow:hidden}.topbar-profile-avatar img{object-fit:cover;width:100%;height:100%}.topbar-profile-fallback{color:var(--primary);font-weight:800}.topbar-profile-name{white-space:nowrap;text-overflow:ellipsis;max-width:220px;font-weight:700;overflow:hidden}.topbar-notification-link{border:1px solid var(--line);background:var(--surface-soft);border-radius:999px;justify-content:center;align-items:center;width:40px;height:40px;text-decoration:none;display:inline-flex;position:relative}.topbar-notification-icon{color:var(--primary)}.topbar-notification-badge{background:var(--danger);color:#fff;border-radius:999px;justify-content:center;align-items:center;min-width:20px;height:20px;padding:0 5px;font-size:11px;font-weight:800;display:inline-flex;position:absolute;top:-6px;right:-6px}.section-title{letter-spacing:-.01em;margin:24px 0 14px;font-size:24px}.stats-grid{grid-template-columns:repeat(auto-fit,minmax(200px,1fr));gap:14px;display:grid}.stat-card{border:1px solid var(--line);box-shadow:var(--shadow);background:linear-gradient(#fff 0%,#f9fcfa 100%);border-radius:16px;padding:16px;transition:transform .2s,box-shadow .2s,border-color .2s}.stat-card:hover{border-color:#c2d4c9;transform:translateY(-2px);box-shadow:0 20px 34px #08160e1a}.stat-card p{color:var(--muted);margin:0 0 12px}.stat-card strong{font-size:24px}.admin-dashboard-page{padding-bottom:14px}.admin-dashboard-head{flex-wrap:wrap;justify-content:space-between;align-items:center;gap:10px;display:flex}.admin-dashboard-grid{grid-template-columns:repeat(2,minmax(0,1fr));gap:14px;margin-top:16px;display:grid}.admin-dashboard-card{border:1px solid var(--line);box-shadow:var(--shadow);background:linear-gradient(#fff 0%,#f8fcf9 100%);border-radius:16px;padding:16px}.admin-dashboard-card-head{justify-content:space-between;align-items:center;margin-bottom:12px;display:flex}.admin-dashboard-card-head h4{margin:0;font-size:15px}.admin-dashboard-bar-chart{grid-template-columns:repeat(6,minmax(0,1fr));align-items:end;gap:10px;display:grid}.admin-dashboard-bar-col{gap:6px;display:grid}.admin-dashboard-bar-value{color:var(--muted);text-align:center;font-size:11px}.admin-dashboard-bar-track{background:#e8f2ec;border-radius:10px;align-items:flex-end;height:130px;display:flex;overflow:hidden}.admin-dashboard-bar-fill{background:linear-gradient(180deg, var(--primary-accent), var(--primary));border-radius:10px;width:100%}.admin-dashboard-bar-label{text-align:center;color:var(--muted);font-size:11px}.admin-dashboard-complaints-wrap{grid-template-columns:160px 1fr;align-items:center;gap:16px;display:grid}.admin-dashboard-ring{border-radius:999px;place-items:center;width:150px;height:150px;margin:0 auto;display:grid}.admin-dashboard-ring>div{border:1px solid var(--line);text-align:center;background:#fff;border-radius:999px;place-items:center;width:104px;height:104px;display:grid}.admin-dashboard-ring strong{font-size:22px;display:block}.admin-dashboard-ring span{color:var(--muted);font-size:11px}.admin-dashboard-legend p{color:var(--text);align-items:center;gap:8px;margin:0 0 8px;font-size:13px;display:flex}.admin-dashboard-legend .dot{border-radius:999px;width:10px;height:10px;display:inline-block}.admin-dashboard-legend .dot.pending{background:#d97706}.admin-dashboard-legend .dot.reviewed{background:#1d4ed8}.admin-dashboard-legend .dot.resolved{background:#15803d}.admin-dashboard-legend .dot.dismissed{background:#6b7280}.admin-dashboard-horizontal-bars{gap:10px;display:grid}.admin-dashboard-horizontal-row{gap:6px;display:grid}.admin-dashboard-horizontal-top{justify-content:space-between;align-items:center;gap:10px;font-size:13px;display:flex}.admin-dashboard-horizontal-track{background:#e8f2ec;border-radius:999px;width:100%;height:10px;overflow:hidden}.admin-dashboard-horizontal-fill{background:linear-gradient(90deg, var(--primary), var(--primary-accent));border-radius:999px;height:100%}.admin-dashboard-attendance-box{gap:10px;display:grid}.admin-dashboard-attendance-rows{gap:8px;display:grid}.admin-dashboard-attendance-row{gap:4px;display:grid}.admin-dashboard-attendance-meta{justify-content:space-between;align-items:center;gap:8px;font-size:12px;display:flex}.admin-dashboard-attendance-track{background:#e5ecf0;border-radius:999px;width:100%;height:9px;overflow:hidden}.admin-dashboard-attendance-fill{border-radius:999px;height:100%}@media (width<=980px){.admin-dashboard-grid{grid-template-columns:1fr}.admin-dashboard-complaints-wrap{grid-template-columns:1fr;gap:10px}.admin-dashboard-bar-chart{padding-bottom:6px;overflow-x:auto}}.simple-page{border:1px solid var(--line);background:linear-gradient(#fff 0%,#f8fcf9 100%);border-radius:14px;margin-top:24px;padding:18px}.simple-page p{color:var(--muted);margin:0}.teacher-profile-grid{grid-template-columns:1.5fr 1fr;gap:14px;margin-top:12px;display:grid}.teacher-profile-tabs{flex-wrap:wrap;gap:8px;margin:14px 0;display:flex}.teacher-profile-tab{border:1px solid var(--line);color:var(--muted);cursor:pointer;background:#fff;border-radius:999px;padding:8px 14px;font-size:13px;font-weight:800}.teacher-profile-tab.active{color:#fff;background:linear-gradient(130deg, var(--primary) 0%, var(--primary-accent) 100%);border-color:#0000}.teacher-profile-card{border:1px solid var(--line);box-shadow:var(--shadow);background:linear-gradient(#fff 0%,#f8fcf9 100%);border-radius:16px;padding:18px}.teacher-profile-card h4{margin:0 0 14px}.teacher-profile-avatar-row{align-items:center;gap:14px;margin-bottom:14px;display:flex}.teacher-profile-avatar{border:1px solid var(--line);background:var(--surface-soft);border-radius:999px;justify-content:center;align-items:center;width:72px;height:72px;display:inline-flex;overflow:hidden}.teacher-profile-avatar img{object-fit:cover;width:100%;height:100%}.teacher-profile-fallback{color:var(--primary);font-size:22px;font-weight:800}.teacher-profile-upload{gap:8px;font-weight:700;display:grid}.teacher-profile-upload input{border:1px solid var(--line);border-radius:10px;padding:10px}.teacher-profile-form-grid{grid-template-columns:repeat(2,minmax(0,1fr));gap:12px;margin-bottom:14px;display:grid}.teacher-profile-form-grid.single-column{grid-template-columns:1fr}.teacher-profile-form-grid label{color:var(--text);gap:8px;font-weight:700;display:grid}.teacher-profile-form-grid input,.teacher-profile-form-grid select,.teacher-profile-form-grid textarea{border:1px solid var(--line);background:var(--surface);color:var(--text);box-sizing:border-box;border-radius:10px;width:100%;padding:10px 12px;font-size:14px}.teacher-certificate-grid{grid-template-columns:repeat(auto-fill,minmax(240px,1fr));gap:10px;display:grid}.teacher-certificate-card{border:1px solid var(--line);background:#fff;border-radius:12px;grid-template-columns:auto minmax(0,1fr) auto;align-items:center;gap:10px;padding:12px;display:grid}.teacher-certificate-content{min-width:0}.teacher-certificate-icon{background:var(--surface-soft);width:44px;height:44px;color:var(--primary);border:1px solid var(--line);border-radius:10px;justify-content:center;align-items:center;font-size:11px;font-weight:800;display:inline-flex}.teacher-certificate-content h5{white-space:nowrap;text-overflow:ellipsis;max-width:100%;margin:0;font-size:14px;overflow:hidden}.teacher-certificate-content p{color:var(--muted);margin:4px 0 0;font-size:12px}.teacher-certificate-card .text-link-btn{white-space:nowrap;border:1px solid var(--line);background:var(--surface-soft);border-radius:8px;padding:6px 10px}.attendance-panel{border:1px solid var(--line);box-shadow:var(--shadow);background:linear-gradient(#fff 0%,#f8fcf9 100%);border-radius:18px;margin-top:24px;padding:20px}.attendance-hero{justify-content:space-between;align-items:flex-start;gap:18px;display:flex}.attendance-kicker{color:var(--primary);letter-spacing:.12em;text-transform:uppercase;margin:0;font-size:12px;font-weight:800}.attendance-title{margin-top:8px}.attendance-subtitle{color:var(--muted);max-width:720px;margin:0}.attendance-actions{flex-wrap:wrap;gap:10px;display:flex}.attendance-btn{min-width:164px}.attendance-error{margin-top:14px}.attendance-loading{color:var(--muted);margin:14px 0 0}.attendance-location-preview{grid-template-columns:2fr 1fr 1fr;gap:12px;margin-top:16px;display:grid}.location-preview-field{gap:8px;display:grid}.location-preview-field label{color:var(--muted);font-size:13px;font-weight:700}.location-preview-field input{border:1px solid var(--line);width:100%;color:var(--text);background:#f5f7f4;border-radius:10px;padding:10px 12px}.attendance-status-grid{grid-template-columns:repeat(auto-fit,minmax(200px,1fr));gap:14px;margin-top:18px;display:grid}.attendance-status-card,.attendance-record-card{border:1px solid var(--line);background:linear-gradient(#fff 0%,#f7faf6 100%);border-radius:14px;padding:16px}.status-label,.attendance-record-block p{color:var(--muted);text-transform:uppercase;letter-spacing:.05em;margin:0 0 10px;font-size:13px}.attendance-status-card strong,.attendance-record-block strong{margin-bottom:6px;font-size:20px;display:block}.attendance-status-card span,.attendance-record-block span,.attendance-history-header span{color:var(--muted)}.attendance-history{margin-top:22px}.attendance-history-header,.attendance-record-top{justify-content:space-between;align-items:center;gap:12px;display:flex}.attendance-history-header h4{margin:0 0 12px;font-size:18px}.attendance-empty{border:1px dashed var(--line);color:var(--muted);border-radius:14px;padding:16px}.attendance-history-list{gap:12px;display:grid}.attendance-record-top{margin-bottom:14px}.attendance-record-grid{grid-template-columns:repeat(auto-fit,minmax(220px,1fr));gap:14px;display:grid}.attendance-record-block small{color:var(--muted);margin-top:8px;line-height:1.5;display:block}.dashboard-inline-link{margin-top:16px}.text-link-btn{color:var(--primary);justify-content:center;align-items:center;font-weight:800;text-decoration:none;display:inline-flex}.teacher-timetable-header{justify-content:space-between;align-items:center;gap:12px;display:flex}.timetable-summary{color:var(--muted);gap:12px;font-weight:700;display:flex}.timetable-tabs{flex-wrap:wrap;gap:10px;margin-top:10px;display:flex}.timetable-tab{border:1px solid var(--line);background:var(--surface);color:var(--text);cursor:pointer;border-radius:10px;padding:10px 14px;font-weight:800}.timetable-tab.active{background:linear-gradient(120deg, var(--primary), var(--primary-accent));color:#f7fdfb;border-color:#0000}.today-tab-panel{border:1px solid var(--line);box-shadow:var(--shadow);background:linear-gradient(#fff 0%,#f8fcf9 100%);border-radius:14px;margin-top:12px;padding:14px}.teacher-timetable-grid{grid-template-columns:repeat(auto-fit,minmax(260px,1fr));gap:14px;margin-top:12px;display:grid}.teacher-day-card{border:1px solid var(--line);background:var(--surface);box-shadow:var(--shadow);border-radius:14px;padding:14px}.teacher-day-card-head{justify-content:space-between;align-items:center;gap:8px;margin-bottom:10px;display:flex}.teacher-day-card-head h4{margin:0;font-size:18px}.teacher-day-card-head span{color:var(--muted);font-size:13px}.teacher-day-empty{color:var(--muted);margin:0}.teacher-day-list{grid-template-columns:repeat(4,minmax(0,1fr));gap:10px;display:grid}.teacher-attendance-actions-wrap{border-top:1px dashed var(--line);margin-top:14px;padding-top:14px}.teacher-attendance-date-filter{flex-wrap:wrap;align-items:end;gap:10px;margin:10px 0 12px;display:flex}.teacher-attendance-date-filter label{color:var(--muted);text-transform:uppercase;letter-spacing:.05em;gap:6px;font-size:12px;font-weight:700;display:grid}.teacher-attendance-date-filter input{border:1px solid var(--line);color:var(--text);background:#fff;border-radius:10px;padding:9px 12px}.teacher-attendance-card-list{grid-template-columns:repeat(auto-fit,minmax(260px,1fr));gap:10px;display:grid}.teacher-attendance-card-item{border:1px solid var(--line);background:#f7faf6;border-radius:10px;gap:6px;padding:10px;display:grid}.teacher-attendance-card-item strong{display:block}.teacher-attendance-card-item small{color:var(--muted)}.teacher-attendance-card-item p{color:var(--muted);margin:0;font-size:13px}.teacher-attendance-action-btn{margin-top:4px}.teacher-attendance-editor{border:1px solid var(--line);background:var(--surface);border-radius:10px;margin-top:14px;padding:12px}.teacher-attendance-student-list{gap:8px;max-height:360px;display:grid;overflow:auto}.teacher-attendance-student-row{border:1px solid var(--line);background:#f7faf6;border-radius:8px;align-items:center;gap:8px;padding:8px 10px;display:flex}.teacher-attendance-student-row>div:first-child{flex:1;min-width:0}.teacher-attendance-student-row small{color:var(--muted);display:block}.teacher-attendance-student-row select{border:1px solid var(--line);background:#fff;border-radius:8px;min-width:120px;padding:8px 10px}.teacher-attendance-student-row input{border:1px solid var(--line);background:#fff;border-radius:8px;flex:1;min-width:170px;padding:8px 10px}.teacher-attendance-editor-actions{flex-wrap:wrap;gap:10px;margin-top:12px;display:flex}.teacher-attendance-success{color:var(--primary-strong);margin:8px 0;font-size:14px}.teacher-day-item{border:1px solid var(--line);background:#f7faf6;border-radius:10px;padding:10px}.teacher-day-item strong{margin-bottom:6px;display:block}.teacher-day-item p{margin:0 0 6px;font-weight:700}.teacher-day-item small{color:var(--muted);display:block}.today-timetable-card{border:1px solid var(--line);box-shadow:var(--shadow);background:linear-gradient(#fff 0%,#f8fcf9 100%);border-radius:14px;margin-top:18px;padding:14px}.today-timetable-head{justify-content:space-between;align-items:center;margin-bottom:10px;display:flex}.today-timetable-head h4{margin:0;font-size:18px}.today-timetable-head span{color:var(--muted);font-size:13px}.today-timetable-empty{color:var(--muted);margin:0}.today-timetable-list{grid-template-columns:repeat(auto-fit,minmax(220px,1fr));gap:10px;display:grid}.today-timetable-item{border:1px solid var(--line);background:#f7faf6;border-radius:10px;padding:10px}.today-timetable-break{background:#fff4dc;border-color:#e8d0a0}.today-timetable-break p{color:#7d5a1c}.today-timetable-item strong{margin-bottom:4px;display:block}.today-timetable-item p{margin:0 0 5px;font-weight:700}.today-timetable-item small{color:var(--muted);display:block}.teacher-announcements-card{border:1px solid var(--line);box-shadow:var(--shadow);background:linear-gradient(#fff 0%,#f8fcf9 100%);border-radius:14px;margin-top:18px;padding:14px}.teacher-announcements-head{justify-content:space-between;align-items:center;gap:10px;margin-bottom:10px;display:flex}.teacher-announcements-head h4{margin:0;font-size:18px}.teacher-announcements-head span{color:var(--muted);font-size:13px}.teacher-announcements-list{gap:10px;display:grid}.teacher-announcement-item{border:1px solid var(--line);text-align:left;cursor:pointer;background:#f7faf6;border-radius:10px;width:100%;padding:10px}.teacher-announcement-top{justify-content:space-between;align-items:center;gap:10px;margin-bottom:6px;display:flex}.teacher-announcement-top strong{font-size:15px}.teacher-announcement-type{border:1px solid var(--line);color:var(--primary);white-space:nowrap;border-radius:999px;padding:2px 8px;font-size:12px;font-weight:700}.teacher-announcement-item p{color:var(--muted);margin:0}.teacher-announcement-item.unread{border-color:var(--primary);box-shadow:inset 0 0 0 1px color-mix(in srgb, var(--primary) 25%, transparent)}.teacher-announcement-meta{align-items:center;gap:8px;display:inline-flex}.teacher-announcement-unread-dot{background:var(--danger);border-radius:999px;width:8px;height:8px;display:inline-block}.teacher-announcement-marking{color:var(--muted);text-transform:uppercase;letter-spacing:.04em;font-size:11px}.teacher-announcement-modal-overlay{z-index:1200;background:#080e0b80;place-items:center;padding:16px;display:grid;position:fixed;inset:0}.teacher-announcement-modal{border:1px solid var(--line);background:var(--surface);width:min(760px,100%);max-height:80vh;box-shadow:var(--shadow);border-radius:14px;padding:16px;overflow:auto}.teacher-announcement-modal-head{justify-content:space-between;align-items:center;gap:12px;display:flex}.teacher-announcement-modal-head h4{margin:0;font-size:22px}.teacher-announcement-modal-meta{color:var(--muted);align-items:center;gap:8px;margin-top:10px;display:inline-flex}.teacher-announcement-modal-body{color:var(--text);white-space:pre-wrap;margin-top:14px;line-height:1.7}.announcement-attachment{border-top:1px solid var(--line);margin-top:14px;padding-top:14px}.announcement-attachment-img{border:1px solid var(--line);object-fit:contain;border-radius:10px;max-width:100%;max-height:320px;display:block}.announcement-attachment-link{border:1px solid var(--line);background:var(--surface);color:var(--primary);border-radius:8px;align-items:center;gap:6px;padding:8px 14px;font-size:.85rem;font-weight:600;text-decoration:none;display:inline-flex}.announcement-attachment-link:hover{border-color:var(--primary);background:var(--primary-tint,#e8f5f0)}.teacher-timetable-matrix-wrap{border:1px solid var(--line);background:var(--surface);box-shadow:var(--shadow);border-radius:14px;margin-top:12px;overflow-x:auto}.teacher-timetable-matrix{border-collapse:collapse;width:100%;min-width:860px}.teacher-timetable-matrix th,.teacher-timetable-matrix td{border:1px solid var(--line);vertical-align:top;padding:10px}.teacher-timetable-matrix th{text-transform:uppercase;letter-spacing:.04em;color:var(--muted);background:#f2f6f1;font-size:13px}.slot-col{white-space:nowrap;min-width:160px;font-weight:700}.slot-empty{color:#9aa79c;text-align:center}.matrix-cell strong{margin-bottom:4px;display:block}.matrix-cell small{color:var(--muted);display:block}.teacher-timetable-day-summary{margin-top:14px}.teacher-work-header{flex-wrap:wrap;justify-content:space-between;align-items:flex-end;gap:12px;display:flex}.teacher-work-date-wrap{gap:6px;display:grid}.teacher-work-date-wrap label{color:var(--muted);font-size:13px;font-weight:700}.teacher-work-date-wrap input{border:1px solid var(--line);background:var(--surface);color:var(--text);border-radius:8px;padding:8px 10px;font-size:14px}.teacher-leave-filters{flex-wrap:wrap;gap:12px;margin-bottom:14px;display:flex}.teacher-leave-filters label{color:var(--muted);gap:6px;font-size:13px;font-weight:700;display:grid}.teacher-leave-filters input,.teacher-leave-filters select{border:1px solid var(--line);background:var(--surface);color:var(--text);border-radius:8px;min-width:140px;padding:8px 10px;font-size:14px}.teacher-work-grid{grid-template-columns:repeat(auto-fit,minmax(320px,1fr));gap:12px;margin-top:12px;display:grid}.teacher-work-card{border:1px solid var(--line);box-shadow:var(--shadow);background:linear-gradient(#fff 0%,#f8fcf9 100%);border-radius:12px;padding:12px}.teacher-work-meta{color:var(--muted);margin:0 0 10px;line-height:1.5}.teacher-work-label{color:var(--muted);margin:8px 0 6px;font-size:13px;font-weight:700;display:block}.teacher-work-textarea{border:1px solid var(--line);resize:vertical;width:100%;min-height:90px;color:var(--text);background:#f8faf7;border-radius:8px;padding:10px}.teacher-work-file{border:1px solid var(--line);background:#fff;border-radius:8px;width:100%;padding:8px}.teacher-work-existing-wrap{color:var(--muted);flex-wrap:wrap;justify-content:space-between;gap:8px;margin-top:8px;display:flex}.teacher-work-save-btn{width:100%;margin-top:10px}.teacher-work-readonly-block{margin-top:8px}.teacher-work-detail{border:1px solid var(--line);white-space:pre-wrap;background:#f8faf7;border-radius:8px;margin:4px 0 0;padding:10px;line-height:1.5}.teacher-work-image-list{gap:6px;display:grid}.teacher-work-image-link{color:var(--primary);font-weight:700;text-decoration:none;display:inline-block}.teacher-work-image-link:hover{text-decoration:underline}.teacher-work-action-row{grid-template-columns:1fr 1fr;gap:10px;display:grid}.teacher-leave-balance-grid{grid-template-columns:repeat(auto-fit,minmax(240px,1fr));gap:12px;margin-top:12px;display:grid}.teacher-leave-balance-card{border:1px solid var(--line);box-shadow:var(--shadow);background:linear-gradient(#fff 0%,#f8fcf9 100%);border-radius:10px;padding:12px}.teacher-leave-balance-card h4{margin:0 0 8px}.teacher-leave-balance-card p{color:var(--muted);margin:4px 0}.teacher-leave-apply-card,.teacher-leave-history-card{border:1px solid var(--line);box-shadow:var(--shadow);background:linear-gradient(#fff 0%,#f8fcf9 100%);border-radius:12px;margin-top:14px;padding:12px}.teacher-leave-apply-card h4,.teacher-leave-history-card h4{margin:0 0 10px}.parent-challan-receipts-list{gap:12px;display:grid}.parent-challan-simple-card{background:linear-gradient(135deg, color-mix(in srgb, var(--primary) 26%, var(--surface)) 0%, color-mix(in srgb, var(--primary-accent) 18%, var(--surface-soft)) 100%);border:1px solid color-mix(in srgb, var(--primary) 36%, var(--line));box-shadow:0 8px 22px var(--primary-shadow);border-radius:14px;padding:8px 12px}.parent-challan-row{border-bottom:1px solid color-mix(in srgb, var(--primary) 28%, var(--line));justify-content:space-between;gap:10px;padding:8px 0;display:flex}.parent-challan-row:last-child{border-bottom:none}.parent-challan-row span{color:var(--primary-strong);font-weight:700}.parent-challan-row strong{color:var(--text);text-align:right;font-weight:700}.teacher-leave-form{gap:10px;display:grid}.teacher-leave-form label{color:var(--muted);gap:6px;font-weight:700;display:grid}.teacher-leave-form select,.teacher-leave-form input,.teacher-leave-form textarea{border:1px solid var(--line);color:var(--text);background:#fff;border-radius:8px;padding:9px 10px;font-size:14px}.teacher-leave-date-row{grid-template-columns:1fr 1fr;gap:10px;display:grid}.teacher-leave-history-table-wrap{overflow-x:auto}.teacher-leave-history-table{border-collapse:collapse;width:100%;min-width:760px}.teacher-leave-history-table th,.teacher-leave-history-table td{border:1px solid var(--line);vertical-align:top;text-align:left;padding:8px}.teacher-leave-history-table th{color:var(--muted);text-transform:uppercase;letter-spacing:.04em;background:#f2f6f1;font-size:12px}.teacher-leave-status-badge{border:1px solid var(--line);border-radius:999px;align-items:center;padding:3px 9px;font-size:12px;font-weight:700;display:inline-flex}.teacher-leave-status-badge.pending{color:#92400e;background:#fff7ed;border-color:#fdba74}.teacher-leave-status-badge.approved{color:#166534;background:#ecfdf5;border-color:#86efac}.teacher-leave-status-badge.rejected,.teacher-leave-status-badge.cancelled{color:#991b1b;background:#fef2f2;border-color:#fca5a5}.teacher-settings-form{gap:12px;display:grid}.teacher-settings-form label{color:var(--muted);gap:6px;font-size:14px;font-weight:700;display:grid}.teacher-settings-form input,.teacher-settings-form select,.teacher-settings-form textarea{border:1px solid var(--line);background:var(--surface);color:var(--text);box-sizing:border-box;border-radius:8px;width:100%;padding:9px 10px;font-size:14px}.admin-announcement-page{margin-top:18px}.admin-announcement-grid{grid-template-columns:repeat(auto-fit,minmax(340px,1fr));gap:14px;display:grid}.admin-announcement-card{border:1px solid var(--line);box-shadow:var(--shadow);background:linear-gradient(#fff 0%,#f8fcf9 100%);border-radius:12px;padding:12px}.admin-announcement-card h4{margin:0 0 10px}.admin-announcement-form{gap:10px;display:grid}.admin-announcement-form label{color:var(--muted);gap:6px;font-weight:700;display:grid}.admin-announcement-form input,.admin-announcement-form select,.admin-announcement-form textarea{border:1px solid var(--line);color:var(--text);background:#fff;border-radius:8px;padding:9px 10px;font-size:14px}.admin-announcement-subtitle{color:var(--muted);margin:0 0 6px;font-size:13px;font-weight:700}.admin-announcement-chip-grid{flex-wrap:wrap;gap:8px;display:flex}.admin-announcement-chip{border:1px solid var(--line);color:var(--text);background:#f7faf6;border-radius:999px;align-items:center;gap:6px;padding:5px 10px;font-size:13px;font-weight:600;display:inline-flex}.admin-announcement-check{align-items:center;gap:8px;font-weight:700;color:var(--text)!important;display:inline-flex!important}.admin-announcement-actions{grid-template-columns:1fr 1fr;gap:10px;display:grid}.admin-announcement-list-card{margin-top:14px}.admin-announcement-list{gap:10px;display:grid}.admin-announcement-list-item{border:1px solid var(--line);background:#f7faf6;border-radius:10px;justify-content:space-between;align-items:flex-start;gap:10px;padding:10px;display:flex}.admin-announcement-list-item strong{margin-bottom:3px;display:block}.admin-announcement-list-item p{color:var(--muted);margin:0}:root[data-mode=dark] .admin-announcement-card{background:var(--surface)!important;border-color:var(--line)!important}:root[data-mode=dark] .admin-announcement-form input,:root[data-mode=dark] .admin-announcement-form select,:root[data-mode=dark] .admin-announcement-form textarea{background:var(--surface-soft)!important;border-color:var(--line)!important;color:var(--text)!important}:root[data-mode=dark] .admin-announcement-chip,:root[data-mode=dark] .admin-announcement-list-item{background:var(--surface-soft)!important;border-color:var(--line)!important}.teacher-exam-page{margin-top:24px}.teacher-exam-main-tabs{gap:8px;margin-bottom:14px;display:inline-flex}.teacher-exam-main-tab{border:1px solid var(--line);background:var(--surface);color:var(--muted);cursor:pointer;border-radius:999px;padding:9px 14px;font-family:inherit;font-size:13px;font-weight:800}.teacher-exam-main-tab.active{color:#fff;background:linear-gradient(135deg, var(--primary) 0%, var(--primary-accent) 100%);box-shadow:0 4px 10px var(--primary-shadow);border-color:#0000}.teacher-exam-controls{grid-template-columns:minmax(220px,1fr) auto minmax(240px,1fr);align-items:end;gap:12px;margin-bottom:14px;display:grid}.teacher-exam-controls label{color:var(--muted);gap:6px;font-size:13px;font-weight:700;display:grid}.teacher-exam-select{border:1px solid var(--line);width:100%;color:var(--text);background:var(--surface);border-radius:10px;padding:10px 12px;font-family:inherit;font-size:14px}.teacher-exam-scope-tabs{flex-wrap:wrap;gap:8px;display:inline-flex}.teacher-exam-spacer{min-height:1px}.teacher-exam-scope-btn{border:1px solid var(--line);background:var(--surface);color:var(--muted);cursor:pointer;border-radius:999px;padding:8px 12px;font-family:inherit;font-size:12px;font-weight:700}.teacher-exam-scope-btn.active{color:#fff;background:linear-gradient(135deg, var(--primary) 0%, var(--primary-accent) 100%);box-shadow:0 4px 10px var(--primary-shadow);border-color:#0000}.teacher-exam-schedule-list{gap:10px;margin-bottom:16px;display:grid}.teacher-exam-schedule-card{border:1px solid var(--line);background:linear-gradient(#fff 0%,#f8fcf9 100%);border-radius:12px;justify-content:space-between;align-items:center;gap:10px;padding:12px 14px;display:flex}.teacher-exam-schedule-card.active{border-color:color-mix(in srgb, var(--primary) 42%, var(--line));box-shadow:var(--shadow-soft)}.teacher-exam-schedule-card h4{margin:0 0 2px;font-size:15px}.teacher-exam-schedule-card p,.teacher-exam-schedule-card small{color:var(--muted);margin:0}.teacher-exam-status{text-transform:uppercase;letter-spacing:.04em;border:1px solid;border-radius:999px;padding:4px 10px;font-size:11px;font-weight:700}.teacher-exam-status.upcoming{color:#1e40af;background:#eff6ff;border-color:#93c5fd}.teacher-exam-status.current{color:#166534;background:#ecfdf5;border-color:#86efac}.teacher-exam-status.past{color:#92400e;background:#fff7ed;border-color:#fdba74}.teacher-exam-student-list{gap:12px;display:grid}.teacher-exam-student-card{border:1px solid var(--line);background:linear-gradient(#fff 0%,#f8fcf9 100%);border-radius:14px;padding:14px}.teacher-exam-student-head{justify-content:space-between;align-items:flex-start;gap:12px;display:flex}.teacher-exam-student-head strong{font-size:15px}.teacher-exam-student-head p{color:var(--muted);margin:3px 0 0;font-size:12px}.teacher-exam-student-meta{align-items:center;gap:8px;display:flex}.teacher-exam-sheet-summary{border-top:1px dashed var(--line);color:var(--muted);flex-wrap:wrap;gap:12px;margin-top:10px;padding-top:8px;font-size:13px;display:flex}.teacher-exam-editor{border-top:1px solid var(--line);margin-top:12px;padding-top:12px}.teacher-exam-subject-grid{gap:8px;display:grid}.teacher-exam-subject-row{border:1px solid var(--line);background:var(--surface-soft);border-radius:10px;grid-template-columns:1.4fr .6fr .6fr 1fr;align-items:center;gap:8px;padding:10px;display:grid}.teacher-exam-subject-row p{gap:2px;margin:0;display:grid}.teacher-exam-subject-row small{color:var(--muted)}.teacher-exam-subject-row input{border:1px solid var(--line);color:var(--text);background:var(--surface);border-radius:8px;padding:8px 10px;font-family:inherit;font-size:13px}:root[data-mode=dark] .teacher-exam-schedule-card,:root[data-mode=dark] .teacher-exam-student-card,:root[data-mode=dark] .teacher-exam-subject-row{background:var(--surface)!important;border-color:var(--line)!important}:root[data-mode=dark] .teacher-exam-main-tab,:root[data-mode=dark] .teacher-exam-select,:root[data-mode=dark] .teacher-exam-scope-btn,:root[data-mode=dark] .teacher-exam-subject-row input{background:var(--surface-soft)!important;border-color:var(--line)!important;color:var(--text)!important}.teacher-ptm-intro{color:var(--muted);max-width:620px;margin:0 0 20px;font-size:14px}.teacher-ptm-section-label{letter-spacing:.1em;text-transform:uppercase;color:var(--muted);margin:0 0 10px;font-size:11px;font-weight:800}.teacher-ptm-section{margin-bottom:28px}.teacher-ptm-empty{border:1px dashed var(--line);text-align:center;color:var(--muted);border-radius:14px;padding:40px 20px}.teacher-ptm-empty-icon{margin-bottom:10px;font-size:2.4rem;display:block}.teacher-ptm-empty p{margin:0;font-weight:600}.teacher-ptm-list{gap:12px;display:grid}.teacher-ptm-card{border:1px solid var(--line);box-shadow:var(--shadow-soft);cursor:pointer;background:linear-gradient(#fff 0%,#f8fcf9 100%);border-radius:16px;align-items:stretch;padding:0;transition:transform .18s,box-shadow .18s,border-color .18s;display:flex;overflow:hidden}.teacher-ptm-card:hover{box-shadow:var(--shadow);border-color:color-mix(in srgb, var(--primary) 30%, var(--line));transform:translateY(-2px)}.teacher-ptm-card.past{opacity:.75}.teacher-ptm-card-date{background:linear-gradient(160deg, var(--primary) 0%, var(--primary-accent) 100%);flex-direction:column;flex-shrink:0;justify-content:center;align-items:center;gap:0;width:64px;padding:14px 8px;display:flex}.teacher-ptm-card.past .teacher-ptm-card-date{background:linear-gradient(160deg,#7a9a8a 0%,#8fafa0 100%)}.teacher-ptm-date-day{color:#fff;font-size:26px;font-weight:800;line-height:1}.teacher-ptm-date-month{color:#ffffffd9;text-transform:uppercase;letter-spacing:.06em;margin-top:2px;font-size:11px;font-weight:700}.teacher-ptm-date-year{color:#ffffffa6;margin-top:3px;font-size:10px}.teacher-ptm-card-body{flex-direction:column;flex:1;gap:6px;min-width:0;padding:14px 16px;display:flex}.teacher-ptm-card-top{justify-content:space-between;align-items:flex-start;gap:8px;display:flex}.teacher-ptm-card-title{color:var(--text);white-space:nowrap;text-overflow:ellipsis;margin:0;font-size:15px;font-weight:800;overflow:hidden}.teacher-ptm-card-chevron{color:var(--muted);flex-shrink:0;font-size:18px;line-height:1}.teacher-ptm-card-meta{color:var(--muted);margin:0;font-size:13px}.teacher-ptm-today-chip{background:linear-gradient(120deg, var(--primary) 0%, var(--primary-accent) 100%);color:#fff;letter-spacing:.06em;text-transform:uppercase;vertical-align:middle;border-radius:999px;margin-left:6px;padding:2px 8px;font-size:10px;font-weight:800;display:inline-block}.teacher-ptm-summary{border-top:1px solid var(--line);flex-wrap:wrap;gap:14px;margin-top:4px;padding-top:10px;display:flex}.teacher-ptm-summary-item{flex-direction:column;align-items:center;min-width:36px;display:flex}.teacher-ptm-summary-val{font-size:18px;font-weight:800;line-height:1}.teacher-ptm-summary-val.attended{color:#166534}.teacher-ptm-summary-val.confirmed{color:#1e40af}.teacher-ptm-summary-val.pending{color:#92400e}.teacher-ptm-summary-val.cancelled{color:#991b1b}.teacher-ptm-summary-val.slots{color:var(--text)}.teacher-ptm-summary-val.available{color:var(--muted)}.teacher-ptm-summary-lbl{text-transform:uppercase;letter-spacing:.05em;color:var(--muted);margin-top:2px;font-size:10px;font-weight:700}.teacher-ptm-back-btn{color:var(--primary);cursor:pointer;background:0 0;border:none;align-items:center;gap:4px;padding:0 0 16px;font-family:inherit;font-size:14px;font-weight:700;display:inline-flex}.teacher-ptm-back-btn:hover{text-decoration:underline}.teacher-ptm-sheet-header{border:1px solid var(--line);background:linear-gradient(160deg, var(--primary) 0%, var(--primary-accent) 100%);box-shadow:0 8px 24px var(--primary-shadow);border-radius:16px;margin-bottom:18px;padding:18px 20px}.teacher-ptm-sheet-header-eyebrow{letter-spacing:.1em;text-transform:uppercase;color:#ffffffbf;margin:0 0 4px;font-size:11px;font-weight:800}.teacher-ptm-sheet-header-title{color:#fff;margin:0 0 4px;font-size:20px;font-weight:800}.teacher-ptm-sheet-header-meta{color:#fffc;margin:0;font-size:13px}.teacher-ptm-sheet-stats{grid-template-columns:repeat(4,1fr);gap:10px;margin-bottom:16px;display:grid}.teacher-ptm-sheet-stat{border:1px solid var(--line);text-align:center;box-shadow:var(--shadow-soft);background:linear-gradient(#fff 0%,#f8fcf9 100%);border-radius:12px;padding:12px}.teacher-ptm-sheet-stat-val{font-size:22px;font-weight:800;display:block}.teacher-ptm-sheet-stat-lbl{text-transform:uppercase;letter-spacing:.05em;color:var(--muted);margin-top:2px;font-size:10px;font-weight:700;display:block}.teacher-ptm-success-banner{color:#166534;background:#ecfdf5;border:1px solid #86efac;border-radius:10px;margin-bottom:14px;padding:10px 14px;font-size:14px;font-weight:600}.teacher-ptm-toolbar{align-items:center;gap:12px;margin-bottom:14px;display:flex}.teacher-ptm-section-tabs{flex-wrap:wrap;gap:8px;margin-bottom:10px;display:flex}.teacher-ptm-section-tab{border:1px solid var(--line);background:var(--surface);color:var(--muted);cursor:pointer;border-radius:999px;padding:7px 12px;font-family:inherit;font-size:12px;font-weight:700;transition:all .15s}.teacher-ptm-section-tab:hover{border-color:color-mix(in srgb, var(--primary) 35%, var(--line));color:var(--text)}.teacher-ptm-section-tab.active{color:#fff;background:linear-gradient(135deg, var(--primary) 0%, var(--primary-accent) 100%);box-shadow:0 4px 10px var(--primary-shadow);border-color:#0000}.teacher-ptm-search{border:1px solid var(--line);background:var(--surface);min-width:0;color:var(--text);border-radius:11px;flex:1;padding:10px 12px;font-family:inherit;font-size:14px}.teacher-ptm-search:focus{border-color:color-mix(in srgb, var(--primary) 40%, var(--line));box-shadow:0 0 0 3px color-mix(in srgb, var(--primary) 18%, transparent);outline:none}.teacher-ptm-toolbar-count{color:var(--muted);white-space:nowrap;font-size:12px;font-weight:700}.teacher-ptm-student-list{gap:10px;display:grid}.teacher-ptm-student-card{border:1px solid var(--line);box-shadow:var(--shadow-soft);background:linear-gradient(#fff 0%,#f8fcf9 100%);border-radius:14px;padding:14px 16px;transition:border-color .15s}.teacher-ptm-student-card:hover{border-color:color-mix(in srgb, var(--primary) 25%, var(--line))}.teacher-ptm-student-top{align-items:center;gap:12px;display:flex}.teacher-ptm-avatar{background:linear-gradient(135deg, var(--primary) 0%, var(--primary-accent) 100%);color:#fff;text-transform:uppercase;border-radius:50%;flex-shrink:0;justify-content:center;align-items:center;width:40px;height:40px;font-size:14px;font-weight:800;display:flex}.teacher-ptm-student-info{flex:1;min-width:0}.teacher-ptm-student-name{white-space:nowrap;text-overflow:ellipsis;margin:0 0 2px;font-size:15px;font-weight:700;overflow:hidden}.teacher-ptm-student-sub{color:var(--muted);margin:0;font-size:12px}.teacher-ptm-status-badge{text-transform:capitalize;white-space:nowrap;border:1px solid;border-radius:999px;flex-shrink:0;align-items:center;padding:3px 10px;font-size:12px;font-weight:700;display:inline-flex}.teacher-ptm-status-badge.attended{color:#166534;background:#ecfdf5;border-color:#86efac}.teacher-ptm-status-badge.confirmed{color:#1e40af;background:#eff6ff;border-color:#93c5fd}.teacher-ptm-status-badge.pending{color:#92400e;background:#fff7ed;border-color:#fdba74}.teacher-ptm-status-badge.cancelled{color:#991b1b;background:#fef2f2;border-color:#fca5a5}.teacher-ptm-status-badge.none{color:var(--muted);background:var(--surface-soft);border-color:var(--line)}.teacher-ptm-booking-info{color:var(--muted);border-top:1px dashed var(--line);flex-wrap:wrap;gap:16px;margin:8px 0 0 52px;padding-top:8px;font-size:13px;display:flex}.teacher-ptm-booking-info span{align-items:center;gap:4px;display:inline-flex}.teacher-ptm-actions{flex-wrap:wrap;gap:8px;margin:10px 0 0 52px;display:flex}.teacher-ptm-action-btn{cursor:pointer;white-space:nowrap;border:none;border-radius:9px;flex:1;min-width:0;padding:8px 12px;font-family:inherit;font-size:13px;font-weight:700;transition:opacity .15s,transform .12s}.teacher-ptm-action-btn:disabled{opacity:.5;cursor:not-allowed}.teacher-ptm-action-btn:not(:disabled):hover{transform:translateY(-1px)}.teacher-ptm-action-btn.attend{color:#fff;background:linear-gradient(135deg,#166534 0%,#15803d 100%);box-shadow:0 4px 10px #16653438}.teacher-ptm-action-btn.noshow{color:#fff;background:linear-gradient(135deg,#92400e 0%,#b45309 100%);box-shadow:0 4px 10px #92400e33}.teacher-ptm-action-btn.feedback{border:1px solid var(--primary);color:var(--primary);background:0 0}.teacher-ptm-action-btn.feedback:hover{background:color-mix(in srgb, var(--primary) 8%, transparent)}.teacher-ptm-quick-book{border-top:1px dashed var(--line);margin:10px 0 0 52px;padding-top:10px}.teacher-ptm-quick-book-title{color:var(--muted);margin:0 0 8px;font-size:12px;font-weight:700}.teacher-ptm-quick-book-grid{grid-template-columns:1.2fr 1fr 1fr auto;gap:8px;display:grid}.teacher-ptm-quick-book-grid input{border:1px solid var(--line);background:var(--surface);color:var(--text);border-radius:9px;padding:8px 10px;font-family:inherit;font-size:13px}.teacher-ptm-quick-book-grid input:focus{border-color:color-mix(in srgb, var(--primary) 40%, var(--line));outline:none}.teacher-ptm-quick-book-grid .teacher-ptm-action-btn{min-width:140px}.teacher-ptm-modal-overlay{z-index:1200;background:#080e0b8c;place-items:center;padding:16px;display:grid;position:fixed;inset:0}.teacher-ptm-modal{border:1px solid var(--line);background:var(--surface);width:min(520px,100%);max-height:88vh;box-shadow:var(--shadow);border-radius:18px;padding:20px;overflow-y:auto}.teacher-ptm-modal-head{border-bottom:1px solid var(--line);justify-content:space-between;align-items:flex-start;gap:12px;margin-bottom:16px;padding-bottom:14px;display:flex}.teacher-ptm-modal-head h4{margin:0 0 2px;font-size:17px}.teacher-ptm-modal-head p{color:var(--muted);margin:0;font-size:13px}.teacher-ptm-modal-close{background:var(--surface-soft);border:1px solid var(--line);cursor:pointer;width:30px;height:30px;color:var(--muted);border-radius:999px;flex-shrink:0;justify-content:center;align-items:center;font-family:inherit;font-size:16px;transition:background .15s;display:flex}.teacher-ptm-modal-close:hover{background:var(--line)}.teacher-ptm-rating-row{gap:8px;display:flex}.teacher-ptm-rating-btn{border:2px solid var(--line);cursor:pointer;width:44px;height:44px;color:var(--muted);background:0 0;border-radius:50%;font-family:inherit;font-size:16px;font-weight:800;transition:all .15s}.teacher-ptm-rating-btn.active{background:linear-gradient(135deg, var(--primary) 0%, var(--primary-accent) 100%);color:#fff;box-shadow:0 4px 10px var(--primary-shadow);border-color:#0000}:root[data-mode=dark] .teacher-ptm-card,:root[data-mode=dark] .teacher-ptm-sheet-stat,:root[data-mode=dark] .teacher-ptm-student-card,:root[data-mode=dark] .teacher-ptm-modal{background:var(--surface)!important;border-color:var(--line)!important}:root[data-mode=dark] .teacher-ptm-search,:root[data-mode=dark] .teacher-ptm-quick-book-grid input{background:var(--surface-soft)!important;border-color:var(--line)!important;color:var(--text)!important}:root[data-mode=dark] .teacher-ptm-section-tab{background:var(--surface-soft)!important;border-color:var(--line)!important;color:var(--muted)!important}:root[data-mode=dark] .teacher-ptm-section-tab.active{color:#fff!important;border-color:#0000!important}:root[data-mode=dark] .teacher-ptm-success-banner{color:#86efac!important;background:#1665342e!important;border-color:#86efac4d!important}:root[data-mode=dark] .teacher-ptm-status-badge.attended{background:#16653433!important}:root[data-mode=dark] .teacher-ptm-status-badge.confirmed{background:#1e40af33!important}:root[data-mode=dark] .teacher-ptm-status-badge.pending{background:#92400e33!important}:root[data-mode=dark] .teacher-ptm-status-badge.cancelled{background:#991b1b33!important}@media (width<=640px){.teacher-ptm-sheet-stats{grid-template-columns:repeat(2,1fr)}.teacher-ptm-summary{gap:10px}.teacher-ptm-toolbar{flex-direction:column;align-items:stretch}.teacher-ptm-toolbar-count{white-space:normal}.teacher-ptm-quick-book,.teacher-ptm-actions,.teacher-ptm-booking-info{margin-left:0}.teacher-ptm-quick-book-grid{grid-template-columns:1fr}.teacher-ptm-quick-book-grid .teacher-ptm-action-btn{width:100%;min-width:0}}@media (width<=940px){:root{font-size:15px}.app-shell{grid-template-columns:1fr;height:100dvh;min-height:100dvh;overflow:hidden}.sidebar{z-index:40;gap:14px;width:min(82vw,320px);max-width:320px;height:100dvh;transition:transform .24s;position:fixed;top:0;left:0;transform:translate(-108%);box-shadow:24px 0 44px #05120b5c}.sidebar.open{transform:translate(0)}.mobile-menu-overlay{opacity:0;pointer-events:none;z-index:30;background:#07120c6b;border:0;transition:opacity .2s;display:block;position:fixed;inset:0}.mobile-menu-overlay.open{opacity:1;pointer-events:auto}.menu{grid-template-columns:1fr}.content-area{height:100dvh;padding:16px;overflow-y:auto}.mobile-menu-btn{display:inline-flex}.topbar{align-items:stretch;gap:12px;padding:14px}.topbar-left{gap:10px;width:100%}.topbar-right{flex-wrap:wrap;justify-content:flex-start;gap:8px;width:100%}.topbar-profile-name{max-width:132px}.attendance-hero{flex-direction:column}.attendance-location-preview{grid-template-columns:1fr}.teacher-day-list{grid-template-columns:repeat(3,minmax(0,1fr))}.admin-announcement-actions,.teacher-profile-grid{grid-template-columns:1fr}}@media (width<=640px){:root{font-size:14px}.login-card{padding:20px}.role-chip{letter-spacing:.08em;font-size:11px}.teacher-exam-controls{grid-template-columns:1fr;align-items:stretch}.teacher-exam-subject-row{grid-template-columns:1fr}.teacher-exam-student-head{flex-direction:column;align-items:stretch}.teacher-exam-student-meta{justify-content:space-between}.welcome-text{word-break:break-word;margin-top:4px;font-size:clamp(1.7rem,6vw,2rem);line-height:1.2}.topbar-right{align-items:center}.topbar-notification-link{width:34px;height:34px}.topbar-profile-link{gap:8px;min-width:0;max-width:62vw;margin-left:auto;padding:3px 8px 3px 3px}.topbar-profile-avatar{width:30px;height:30px}.topbar-profile-name{max-width:94px;font-size:.95rem}.mobile-menu-btn{width:38px;height:38px}.section-title{margin-top:18px;font-size:clamp(1.8rem,6.2vw,2.2rem)}.stat-card strong{font-size:2rem}.teacher-profile-form-grid{grid-template-columns:1fr}.teacher-profile-avatar-row{flex-direction:column;align-items:flex-start}.teacher-day-list,.teacher-leave-date-row{grid-template-columns:1fr}}@media (width<=390px){:root{font-size:13px}.topbar{padding:12px}.topbar-profile-link{max-width:58vw}.topbar-profile-name{max-width:78px}}@media (width<=1200px) and (width>=941px){.teacher-day-list{grid-template-columns:repeat(3,minmax(0,1fr))}}@media (width<=860px) and (width>=641px){.teacher-day-list{grid-template-columns:repeat(2,minmax(0,1fr))}}@media (height<=900px){.sidebar{gap:10px;padding:14px 12px}.brand-title{font-size:16px}.menu{gap:5px}.menu-link{padding:7px 9px;font-size:15px}.logout-btn{margin-top:6px;padding:7px;font-size:14px}}@media (height<=760px){.sidebar{gap:8px;padding:10px}.brand-logo{max-width:134px;max-height:42px}.menu-link{padding:6px 8px;font-size:14px}}.parent-school-banner{background:linear-gradient(135deg, var(--primary) 0%, color-mix(in srgb, var(--primary) 70%, #000) 100%);text-align:center;border-radius:16px;flex-direction:column;justify-content:center;align-items:center;gap:10px;padding:28px 24px 22px;display:flex}.parent-school-banner-logo{object-fit:contain;background:#ffffff26;border-radius:50%;max-width:90px;max-height:90px;padding:6px}.parent-school-banner-name{color:#fff;letter-spacing:.01em;margin:0;font-size:20px;font-style:italic;font-weight:700}.parent-children-list{gap:10px;display:grid}.parent-child-row{background:var(--surface);border:1px solid var(--line);cursor:pointer;text-align:left;border-radius:14px;grid-template-columns:auto 1fr auto;align-items:center;gap:14px;width:100%;padding:14px 16px;font-family:inherit;transition:box-shadow .15s,border-color .15s;display:grid}.parent-child-row:hover{border-color:var(--primary);box-shadow:0 2px 10px #00000014}.parent-child-row.active{border-color:var(--primary);background:color-mix(in srgb, var(--primary) 8%, var(--surface))}.parent-child-avatar{background:var(--primary);border-radius:50%;flex-shrink:0;justify-content:center;align-items:center;width:52px;height:52px;display:flex;overflow:hidden}.parent-child-avatar img{object-fit:cover;width:100%;height:100%}.parent-child-avatar-fallback{color:#fff;font-size:22px;font-weight:700}.parent-child-info{gap:2px;min-width:0;display:grid}.parent-child-info strong{color:var(--text);white-space:nowrap;text-overflow:ellipsis;font-size:14px;font-weight:700;overflow:hidden}.parent-child-info span{color:var(--muted);white-space:nowrap;text-overflow:ellipsis;font-size:12px;overflow:hidden}.parent-child-chevron{color:var(--muted);flex-shrink:0}.parent-child-row.active .parent-child-chevron{color:var(--primary)}.parent-picker-shell{background:var(--bg);flex-direction:column;justify-content:center;align-items:center;gap:0;min-height:100dvh;padding:24px 16px 40px;display:flex}.parent-picker-shell>section{width:100%;max-width:480px}.parent-picker-logout{border:1px solid var(--line);color:var(--muted);cursor:pointer;background:0 0;border-radius:999px;margin-top:20px;padding:8px 28px;font-family:inherit;font-size:13px;font-weight:700;transition:border-color .15s,color .15s}.parent-picker-logout:hover{border-color:var(--primary);color:var(--primary)}.child-profile-page{flex-direction:column;align-items:center;gap:0;margin-top:8px;display:flex}.child-profile-avatar-wrap{width:120px;height:120px;margin-bottom:14px;position:relative}.child-profile-avatar{border:4px solid var(--primary);background:color-mix(in srgb, var(--primary) 15%, var(--surface));border-radius:50%;justify-content:center;align-items:center;width:120px;height:120px;display:flex;overflow:hidden}.child-profile-avatar img{object-fit:cover;width:100%;height:100%}.child-profile-avatar-fallback{color:var(--primary);font-size:48px;font-weight:700}.child-profile-camera-btn{background:var(--primary);color:#fff;border:2px solid var(--surface);cursor:pointer;border-radius:50%;justify-content:center;align-items:center;width:32px;height:32px;transition:opacity .15s;display:flex;position:absolute;bottom:4px;right:4px}.child-profile-camera-btn:hover{opacity:.85}.child-profile-camera-btn:disabled{opacity:.5;cursor:not-allowed}.child-profile-name{color:var(--text);text-align:center;letter-spacing:.02em;text-transform:uppercase;margin:0 0 20px;font-size:20px;font-weight:800}.child-profile-info-grid{grid-template-columns:repeat(2,1fr);gap:10px;width:100%;display:grid}.child-profile-info-card{background:color-mix(in srgb, var(--primary) 18%, transparent);border:1.5px solid color-mix(in srgb, var(--primary) 35%, transparent);text-align:center;border-radius:12px;flex-direction:column;align-items:center;gap:4px;padding:14px 16px;display:flex}.child-profile-info-card.wide{grid-column:1/-1}.child-profile-info-label{letter-spacing:.06em;text-transform:uppercase;color:var(--primary);font-size:11px;font-weight:800}.child-profile-info-value{color:var(--text);word-break:break-word;font-size:14px;font-weight:500}.child-certificates{border:1.5px solid color-mix(in srgb, var(--primary) 35%, transparent);background:color-mix(in srgb, var(--primary) 10%, transparent);border-radius:12px;width:100%;margin-top:14px;overflow:hidden}.child-certificates>summary{cursor:pointer;color:var(--primary);justify-content:space-between;align-items:center;gap:10px;padding:12px 14px;font-weight:700;list-style:none;display:flex}.child-certificates>summary::-webkit-details-marker{display:none}.child-certificates-count{color:#fff;background:var(--primary);border-radius:999px;justify-content:center;align-items:center;min-width:24px;height:24px;font-size:12px;font-weight:700;display:inline-flex}.child-certificates-list{margin:0;padding:0 10px 10px;list-style:none}.child-certificates-list li{border:1px solid var(--line);background:var(--surface);border-radius:10px;justify-content:space-between;align-items:center;gap:10px;padding:10px 12px;display:flex}.child-certificates-list li+li{margin-top:8px}.child-certificates-name{color:var(--text);overflow-wrap:anywhere;font-size:14px;font-weight:500}.child-certificates-list a{color:var(--primary);font-weight:700;text-decoration:none}.child-certificates-list a:hover{text-decoration:underline}.child-profile-tabs{scrollbar-width:none;flex-wrap:wrap;gap:10px;width:100%;margin-bottom:1.25rem;display:flex;overflow-x:auto}.child-profile-tabs::-webkit-scrollbar{display:none}.child-profile-tab{background:var(--surface);border:1px solid var(--line);cursor:pointer;color:var(--text);white-space:nowrap;border-radius:10px;flex-shrink:0;align-items:center;gap:.4rem;padding:10px 14px;font-size:.82rem;font-weight:800;transition:background .15s,color .15s,border-color .15s;display:flex}.child-profile-tab:hover{border-color:var(--primary);color:var(--primary)}.child-profile-tab.active{background:linear-gradient(120deg, var(--primary), var(--primary-accent));color:#f7fdfb;border-color:#0000}.child-profile-tab-badge{color:inherit;background:#0000001f;border-radius:999px;justify-content:center;align-items:center;min-width:1.25rem;height:1.25rem;padding:0 .3rem;font-size:.65rem;font-weight:700;display:inline-flex}.child-profile-tab.active .child-profile-tab-badge{color:#fff;background:#ffffff40}.child-profile-tab-panel{width:100%}.child-classmates-grid{grid-template-columns:repeat(auto-fill,minmax(130px,1fr));gap:.75rem;display:grid}.child-classmate-card{background:var(--surface);border:1px solid var(--line);text-align:center;border-radius:10px;flex-direction:column;align-items:center;gap:.45rem;padding:.75rem .5rem .6rem;display:flex}.child-classmate-avatar{background:var(--primary);border-radius:50%;flex-shrink:0;justify-content:center;align-items:center;width:52px;height:52px;display:flex;overflow:hidden}.child-classmate-avatar img{object-fit:cover;width:100%;height:100%}.child-classmate-avatar-fallback{color:#fff;font-size:1.25rem;font-weight:700}.child-classmate-info{flex-direction:column;gap:.15rem;width:100%;display:flex}.child-classmate-name{color:var(--text);word-break:break-word;font-size:.78rem;font-weight:600;line-height:1.3}.child-classmate-sr{color:var(--text);opacity:.6;font-size:.7rem}@media (width<=480px){.child-profile-info-grid{grid-template-columns:1fr}.child-profile-info-card.wide{grid-column:1}}.hw-page-header{background:linear-gradient(135deg, var(--primary) 0%, color-mix(in srgb, var(--primary) 75%, #000) 100%);border-radius:14px;align-items:center;gap:14px;margin:16px 0;padding:16px 20px;display:flex}.hw-page-header-icon{color:#fff;background:#ffffff2e;border-radius:12px;flex-shrink:0;justify-content:center;align-items:center;width:44px;height:44px;display:flex}.hw-page-title{color:#fff;letter-spacing:-.01em;margin:0;font-size:20px;font-weight:800}.hw-page-subtitle{color:#ffffffbf;margin:2px 0 0;font-size:12px}.hw-feed-container{background:var(--surface);border:1px solid var(--line);border-radius:14px;margin-top:4px;padding:18px 20px}.hw-day-group{margin-bottom:16px}.hw-day-header{background:color-mix(in srgb, var(--primary) 12%, var(--surface));border-left:4px solid var(--primary);border-radius:0 8px 8px 0;align-items:center;gap:10px;margin-bottom:10px;padding:8px 14px;display:flex}.hw-day-header.today{background:color-mix(in srgb, var(--primary) 20%, var(--surface))}.hw-today-badge{letter-spacing:.06em;text-transform:uppercase;background:var(--primary);color:#fff;border-radius:999px;flex-shrink:0;padding:2px 10px;font-size:11px;font-weight:800}.hw-day-date{color:var(--primary);font-size:13px;font-weight:700}.hw-items{grid-template-columns:repeat(auto-fill,minmax(280px,1fr));gap:10px;display:grid}.hw-card{background:var(--surface);border:1px solid var(--line);border-radius:12px;gap:4px;padding:14px 16px;display:grid}.hw-card-subject{color:var(--text);font-size:15px;font-weight:700}.hw-card-teacher{color:var(--muted);font-size:12px}.hw-card-text{color:var(--text);margin:4px 0 0;font-size:13px}.hw-card-attachments{color:var(--primary);margin-top:4px;font-size:12px;font-weight:600}
