:root{--navy:#12395c;--navy2:#0c2c48;--blue:#17689a;--cyan:#39a7b7;--gold:#c7a45b;--olive:#879264;--bg:#f3f7fa;--card:#fff;--ink:#173246;--muted:#718394;--line:#dfe8ef;--green:#1f8d66;--red:#c94e55;--amber:#bd7a1d;--shadow:0 15px 40px #12395c14}*{box-sizing:border-box}html,body{color:var(--ink);background:linear-gradient(#f7fafc,#eef4f7);margin:0;font-family:Tahoma,Segoe UI,Arial,sans-serif}a{color:inherit;text-decoration:none}button,input,select,textarea{font:inherit}.shell{max-width:1220px;margin:auto;padding:26px}.narrow{flex-direction:column;justify-content:center;max-width:620px;min-height:100vh;display:flex}.eyebrow{letter-spacing:.09em;opacity:.72;font-size:11px;font-weight:800}.brandBadge{background:linear-gradient(135deg,var(--blue),var(--gold));color:#fff;border-radius:18px;place-items:center;width:58px;height:58px;font-size:20px;font-weight:900;display:grid;box-shadow:0 10px 28px #17689a38}.brandBadge.large{width:80px;height:80px;margin:auto;font-size:28px}.brandHero,.studentHero{align-items:center;gap:16px;margin-bottom:18px;display:flex}.brandHero h1,.studentHero h1{margin:3px 0;font-size:30px}.brandHero p{color:var(--muted);margin:0}.card{background:var(--card);border:1px solid var(--line);box-shadow:var(--shadow);border-radius:20px;padding:20px}.loginCard h2{margin-top:0}.form{gap:13px;margin-top:16px;display:grid}.form label{gap:6px;font-size:13px;font-weight:700;display:grid}.form input{border:1px solid var(--line);background:#fff;border-radius:12px;outline:none;width:100%;padding:13px}.form input:focus{border-color:var(--blue);box-shadow:0 0 0 3px #17689a14}.btn{cursor:pointer;border:0;border-radius:12px;justify-content:center;align-items:center;gap:6px;padding:11px 15px;font-weight:800;display:inline-flex}.btn.primary{background:var(--navy);color:#fff}.btn.ghost{border:1px solid var(--line);color:var(--navy);background:#fff}.btn.danger{color:var(--red);background:#fff0f0;border:1px solid #f1c8c8}.btn.light{color:#fff;background:#ffffff1f;border-color:#ffffff59}.muted{color:var(--muted);font-size:13px}.errorBox,.smallError{color:#9e3138;background:#fff0f0;border:1px solid #f1c8c8;border-radius:11px;padding:10px 12px;font-size:13px}.facultyHeader,.sessionHeader{justify-content:space-between;align-items:center;gap:15px;margin-bottom:18px;display:flex}.facultyHeader h1,.sessionHeader h1{margin:3px 0}.facultyHeader p{color:var(--muted);margin:0}.heroLive{background:radial-gradient(circle at 85% 20%,#c7a45b4d,transparent 25%),linear-gradient(120deg,var(--navy2),var(--navy) 55%,#16758a);color:#fff;border-radius:26px;justify-content:space-between;align-items:center;padding:28px;display:flex;box-shadow:0 20px 50px #0c2c482e}.heroLive h2{margin:9px 0;font-size:31px}.heroLive p{opacity:.76;margin:0}.statusDot{background:#6ee7a5;border-radius:50%;width:9px;height:9px;margin-left:7px;display:inline-block;box-shadow:0 0 0 5px #6ee7a51a}.heroMetric{text-align:center;min-width:150px;display:grid}.heroMetric strong{font-size:48px}.heroMetric span{opacity:.72}.sectionGrid{grid-template-columns:repeat(2,minmax(0,1fr));gap:15px;margin-top:18px;display:grid}.sectionPanel{border:1px solid var(--line);box-shadow:var(--shadow);background:#fff;border-radius:20px;padding:19px}.sectionTop{justify-content:space-between;align-items:flex-start;display:flex}.sectionTop h3{margin:7px 0 3px;font-size:27px}.sectionTop p{color:var(--muted);margin:0;font-size:13px}.planChip{border-radius:999px;padding:5px 9px;font-size:11px;font-weight:800;display:inline-block}.planChip.new{color:#17689a;background:#e9f5fb}.planChip.old{color:#8f6c26;background:#f7f1e4}.studentCount{text-align:center;border:1px solid var(--line);background:#f7fafc;border-radius:14px;padding:10px 14px}.studentCount strong{color:var(--navy);font-size:25px;display:block}.studentCount span{color:var(--muted);font-size:11px}.miniStats{flex-wrap:wrap;gap:7px;margin:15px 0;display:flex}.miniStats span,.tag{color:var(--blue);background:#eef4f8;border-radius:999px;padding:6px 9px;font-size:11px}.sectionActions{flex-wrap:wrap;gap:8px;display:flex}.resumeLink{color:var(--green);margin-top:12px;font-size:12px;font-weight:800;display:block}.dashboardGrid{grid-template-columns:1fr 1.4fr 1fr;gap:15px;margin-top:18px;display:grid}.cardTitle{margin-bottom:12px;font-weight:900}.outcomeRow{border-bottom:1px solid var(--line);justify-content:space-between;padding:9px 0;display:flex}.outcomeRow span{color:#806326;background:#f2ebdc;border-radius:8px;padding:4px 8px;font-weight:800}.tagCloud{flex-wrap:wrap;display:flex}.liveGrid{grid-template-columns:380px 1fr;gap:16px;display:grid}.qrCard,.liveSummary{border:1px solid var(--line);box-shadow:var(--shadow);background:#fff;border-radius:22px;padding:20px}.liveBadge{color:var(--green);background:#e8f7f0;border-radius:999px;padding:7px 10px;font-size:12px;font-weight:900;display:inline-block}.qrBox{background:#fff;border-radius:18px;place-items:center;margin-top:10px;padding:22px;display:grid}.qrTimer{text-align:center;color:var(--muted)}.qrTimer b{color:var(--blue);font-size:22px}.summaryTitle{font-size:19px;font-weight:900}.summaryGrid{grid-template-columns:repeat(4,1fr);gap:10px;margin:18px 0;display:grid}.summaryGrid div{border:1px solid var(--line);text-align:center;background:#f7fafc;border-radius:14px;padding:14px}.summaryGrid strong{color:var(--navy);font-size:30px;display:block}.summaryGrid span{color:var(--muted);font-size:12px}.liveActions{flex-wrap:wrap;gap:8px;display:flex}.attendanceTable{margin-top:16px}.tableScroll{overflow:auto}table{border-collapse:collapse;width:100%;min-width:720px}th,td{text-align:right;border-bottom:1px solid var(--line);padding:11px;font-size:13px}th{color:var(--muted);font-size:11px}.attendanceChip{border-radius:999px;padding:5px 9px;font-size:11px;font-weight:800;display:inline-block}.attendanceChip.present{color:var(--green);background:#e8f7f0}.attendanceChip.late{color:var(--amber);background:#fff3df}.attendanceChip.absent,.attendanceChip.missing{color:var(--red);background:#fff0f0}.attendanceChip.excused{color:#596da3;background:#edf2fb}.rowActions{gap:5px;display:flex}.rowActions button{border:1px solid var(--line);cursor:pointer;background:#fff;border-radius:8px;padding:5px 7px;font-size:11px}.studentIdentity{background:#effaf5;border:1px solid #bfe3d2;border-radius:14px;align-items:center;gap:12px;margin-bottom:15px;padding:13px;display:flex}.successIcon{background:var(--green);color:#fff;border-radius:50%;place-items:center;width:38px;height:38px;font-size:22px;display:grid}.studentIdentity b,.studentIdentity span,.studentIdentity small{display:block}.studentIdentity span,.studentIdentity small{color:var(--muted);font-size:12px}.checkinCard{text-align:center;border:1px solid var(--line);box-shadow:var(--shadow);background:#fff;border-radius:22px;padding:32px}.checkIcon{width:74px;height:74px;color:var(--navy);background:#edf4f8;border-radius:50%;place-items:center;margin:0 auto 14px;font-size:35px;font-weight:900;display:grid}.checkinCard.ok .checkIcon{color:var(--green);background:#e8f7f0}.checkinCard.error .checkIcon{color:var(--red);background:#fff0f0}.landing{background:radial-gradient(circle at 50% 10%,#c7a45b47,transparent 25%),linear-gradient(145deg,var(--navy2),var(--navy) 60%,#16758a);color:#fff;text-align:center;border-radius:30px;padding:55px 30px;box-shadow:0 25px 60px #0c2c4838}.landing h1{margin:15px 0 6px;font-size:52px}.landing p{opacity:.76}.landingButtons{justify-content:center;gap:10px;margin-top:25px;display:flex}@media (max-width:850px){.sectionGrid,.dashboardGrid,.liveGrid{grid-template-columns:1fr}.summaryGrid{grid-template-columns:repeat(2,1fr)}.heroLive{align-items:flex-start}.heroMetric{min-width:90px}.shell{padding:14px}}@media (max-width:560px){.facultyHeader,.heroLive{flex-direction:column;align-items:stretch}.sectionGrid{grid-template-columns:1fr}.landingButtons{flex-direction:column}.summaryGrid{grid-template-columns:1fr 1fr}.liveGrid{display:block}.qrCard{margin-bottom:14px}}
