/*! tailwindcss v4.2.1 | MIT License | https://tailwindcss.com */
@layer theme{:root,:host{--font-sans:ui-sans-serif, system-ui, sans-serif, "Apple Color Emoji", "Segoe UI Emoji", "Segoe UI Symbol", "Noto Color Emoji";--font-mono:ui-monospace, SFMono-Regular, Menlo, Monaco, Consolas, "Liberation Mono", "Courier New", monospace;--spacing:.25rem;--default-font-family:var(--font-sans);--default-mono-font-family:var(--font-mono)}}@layer base{*,:after,:before,::backdrop{box-sizing:border-box;border:0 solid;margin:0;padding:0}::file-selector-button{box-sizing:border-box;border:0 solid;margin:0;padding:0}html,:host{-webkit-text-size-adjust:100%;tab-size:4;line-height:1.5;font-family:var(--default-font-family,ui-sans-serif, system-ui, sans-serif, "Apple Color Emoji", "Segoe UI Emoji", "Segoe UI Symbol", "Noto Color Emoji");font-feature-settings:var(--default-font-feature-settings,normal);font-variation-settings:var(--default-font-variation-settings,normal);-webkit-tap-highlight-color:transparent}hr{height:0;color:inherit;border-top-width:1px}abbr:where([title]){-webkit-text-decoration:underline dotted;text-decoration:underline dotted}h1,h2,h3,h4,h5,h6{font-size:inherit;font-weight:inherit}a{color:inherit;-webkit-text-decoration:inherit;-webkit-text-decoration:inherit;-webkit-text-decoration:inherit;-webkit-text-decoration:inherit;text-decoration:inherit}b,strong{font-weight:bolder}code,kbd,samp,pre{font-family:var(--default-mono-font-family,ui-monospace, SFMono-Regular, Menlo, Monaco, Consolas, "Liberation Mono", "Courier New", monospace);font-feature-settings:var(--default-mono-font-feature-settings,normal);font-variation-settings:var(--default-mono-font-variation-settings,normal);font-size:1em}small{font-size:80%}sub,sup{vertical-align:baseline;font-size:75%;line-height:0;position:relative}sub{bottom:-.25em}sup{top:-.5em}table{text-indent:0;border-color:inherit;border-collapse:collapse}:-moz-focusring{outline:auto}progress{vertical-align:baseline}summary{display:list-item}ol,ul,menu{list-style:none}img,svg,video,canvas,audio,iframe,embed,object{vertical-align:middle;display:block}img,video{max-width:100%;height:auto}button,input,select,optgroup,textarea{font:inherit;font-feature-settings:inherit;font-variation-settings:inherit;letter-spacing:inherit;color:inherit;opacity:1;background-color:#0000;border-radius:0}::file-selector-button{font:inherit;font-feature-settings:inherit;font-variation-settings:inherit;letter-spacing:inherit;color:inherit;opacity:1;background-color:#0000;border-radius:0}:where(select:is([multiple],[size])) optgroup{font-weight:bolder}:where(select:is([multiple],[size])) optgroup option{padding-inline-start:20px}::file-selector-button{margin-inline-end:4px}::placeholder{opacity:1}@supports (not ((-webkit-appearance:-apple-pay-button))) or (contain-intrinsic-size:1px){::placeholder{color:currentColor}@supports (color:color-mix(in lab, red, red)){::placeholder{color:color-mix(in oklab, currentcolor 50%, transparent)}}}textarea{resize:vertical}::-webkit-search-decoration{-webkit-appearance:none}::-webkit-date-and-time-value{min-height:1lh;text-align:inherit}::-webkit-datetime-edit{display:inline-flex}::-webkit-datetime-edit-fields-wrapper{padding:0}::-webkit-datetime-edit{padding-block:0}::-webkit-datetime-edit-year-field{padding-block:0}::-webkit-datetime-edit-month-field{padding-block:0}::-webkit-datetime-edit-day-field{padding-block:0}::-webkit-datetime-edit-hour-field{padding-block:0}::-webkit-datetime-edit-minute-field{padding-block:0}::-webkit-datetime-edit-second-field{padding-block:0}::-webkit-datetime-edit-millisecond-field{padding-block:0}::-webkit-datetime-edit-meridiem-field{padding-block:0}::-webkit-calendar-picker-indicator{line-height:1}:-moz-ui-invalid{box-shadow:none}button,input:where([type=button],[type=reset],[type=submit]){appearance:button}::file-selector-button{appearance:button}::-webkit-inner-spin-button{height:auto}::-webkit-outer-spin-button{height:auto}[hidden]:where(:not([hidden=until-found])){display:none!important}}@layer components;@layer utilities{.visible{visibility:visible}.relative{position:relative}.start{inset-inline-start:var(--spacing)}.table{display:table}}:root{--font-geist-sans:Inter, ui-sans-serif, -apple-system, BlinkMacSystemFont, "Segoe UI", sans-serif;--font-geist-mono:"SFMono-Regular", Consolas, "Liberation Mono", monospace;--ink:#17243f;--muted:#667085;--line:#e5e8ec;--canvas:#f5f6f2;--white:#fff;--green:#15966d;--green-dark:#087253;--green-soft:#e7f6ef;--lime:#c9f07d;--amber:#e69b32;--amber-soft:#fff4df;--coral:#d9634c;--coral-soft:#fff0ec;--navy-soft:#e9eef8}*{box-sizing:border-box}html,body{background:var(--canvas);min-height:100%;color:var(--ink);margin:0}body{font-family:var(--font-geist-sans), Arial, sans-serif;-webkit-font-smoothing:antialiased}button,input{font:inherit}button{color:inherit}.app-shell{min-height:100vh;display:flex}.sidebar{z-index:30;color:#fff;background:#17243f;flex-direction:column;width:248px;padding:25px 18px 18px;display:flex;position:fixed;inset:0 auto 0 0}.brand{letter-spacing:-.04em;align-items:center;gap:11px;padding:0 8px 27px;font-size:19px;font-weight:730;display:flex}.brand-mark{border:1px solid #ffffff57;border-radius:10px;width:29px;height:29px;position:relative}.brand-mark span{background:var(--lime);border-radius:10px;width:6px;position:absolute;bottom:6px}.brand-mark span:first-child{opacity:.65;height:8px;left:6px}.brand-mark span:nth-child(2){height:16px;left:12px}.brand-mark span:nth-child(3){opacity:.82;height:12px;left:18px}.side-nav{flex-direction:column;gap:5px;display:flex}.nav-item{color:#9da8bc;text-align:left;cursor:pointer;background:0 0;border:0;border-radius:10px;align-items:center;gap:12px;width:100%;padding:11px 12px;font-size:13.5px;font-weight:560;transition:all .2s;display:flex}.nav-item:hover{color:#fff;background:#ffffff0d}.nav-item.active{color:var(--lime);background:#c9f07d1c}.sidebar-card{background:#ffffff0b;border:1px solid #ffffff1a;border-radius:14px;margin-top:auto;padding:15px}.shield-icon{width:33px;height:33px;color:var(--lime);background:#c9f07d17;border-radius:10px;place-items:center;margin-bottom:12px;display:grid}.sidebar-card strong{font-size:12.5px;display:block}.sidebar-card p{color:#9ba7bb;margin:6px 0 11px;font-size:11px;line-height:1.5}.sidebar-card button{color:var(--lime);cursor:pointer;background:0 0;border:0;padding:0;font-size:11px;font-weight:650}.sidebar-footer{border-top:1px solid #ffffff17;grid-template-columns:34px 1fr auto;align-items:center;gap:9px;margin-top:18px;padding:15px 7px 1px;display:grid}.campus-badge{width:34px;height:34px;color:var(--lime);background:#273651;border-radius:10px;place-items:center;font-size:11px;font-weight:800;display:grid}.sidebar-footer strong,.sidebar-footer span{display:block}.sidebar-footer strong{font-size:11.5px}.sidebar-footer span{color:#8996aa;margin-top:2px;font-size:9.5px}.sidebar-footer>svg{color:#7f8ba0}.main-content{width:calc(100% - 248px);min-height:100vh;margin-left:248px}.topbar{z-index:20;border-bottom:1px solid var(--line);-webkit-backdrop-filter:blur(12px);backdrop-filter:blur(12px);background:#ffffffeb;justify-content:space-between;align-items:center;gap:20px;height:72px;padding:0 34px;display:flex;position:sticky;top:0}.topbar-date,.topbar-actions,.profile-chip{align-items:center;display:flex}.topbar-date{color:#525f73;gap:8px;font-size:12px;font-weight:560}.live-pill{background:var(--green-soft);color:var(--green-dark);border-radius:20px;align-items:center;gap:6px;margin-left:8px;padding:5px 9px;font-size:10px;font-weight:700;display:inline-flex}.live-pill i,.session-live i{background:var(--green);border-radius:50%;width:6px;height:6px;box-shadow:0 0 0 3px #15966d1f}.topbar-actions{gap:10px}.role-switcher{border:1px solid var(--line);background:#f5f6f8;border-radius:9px;gap:2px;padding:3px;display:flex}.role-switcher button{color:#737e8e;cursor:pointer;background:0 0;border:0;border-radius:6px;padding:6px 9px;font-size:10px;font-weight:650}.role-switcher button.active{color:var(--ink);background:#fff;box-shadow:0 1px 4px #17243f1a}.role-short{display:none}.icon-button{border:1px solid var(--line);cursor:pointer;background:#fff;border-radius:10px;place-items:center;width:36px;height:36px;display:grid;position:relative}.icon-button i{background:var(--coral);border:1.5px solid #fff;border-radius:50%;width:6px;height:6px;position:absolute;top:7px;right:7px}.profile-chip{gap:9px;padding-left:4px}.avatar{background:var(--navy-soft);width:35px;height:35px;color:var(--ink);border-radius:11px;place-items:center;font-size:10px;font-weight:750;display:grid}.profile-chip strong,.profile-chip span{display:block}.profile-chip strong{text-overflow:ellipsis;white-space:nowrap;max-width:110px;font-size:11.5px;overflow:hidden}.profile-chip span{color:#7a8595;margin-top:1px;font-size:9.5px}.profile-chip>svg{color:#8993a2}.menu-button{background:0 0;border:0;display:none}.page-wrap{max-width:1440px;margin:0 auto;padding:32px 34px 46px}.page-heading{justify-content:space-between;align-items:flex-end;gap:30px;margin-bottom:24px;display:flex}.eyebrow{color:#758095;letter-spacing:.16em;align-items:center;gap:6px;font-size:9.5px;font-weight:760;display:inline-flex}.page-heading h1{letter-spacing:-.055em;margin:8px 0 5px;font-size:clamp(27px,3vw,38px);line-height:1.05}.page-heading p{color:var(--muted);margin:0;font-size:12.5px}.attendance-streak{border:1px solid var(--line);background:#fff;border-radius:12px;width:205px;padding:13px 15px}.attendance-streak span,.attendance-streak strong{display:block}.attendance-streak span{color:#788293;font-size:9.5px}.attendance-streak strong{letter-spacing:-.04em;margin:3px 0 8px;font-size:20px}.attendance-streak>i,.session-progress>i,.room-progress i{background:#ebeee9;border-radius:10px;height:5px;display:block;overflow:hidden}.attendance-streak>i b,.session-progress>i b,.room-progress i b{border-radius:inherit;background:var(--green);height:100%;display:block}.checkin-hero{color:#fff;background:#182640;border-radius:22px;align-items:center;min-height:286px;padding:37px 43px;display:flex;position:relative;overflow:hidden;box-shadow:0 18px 40px #17243f1f}.checkin-hero:after{content:"";border:1px solid #c9f07d1f;border-radius:50%;width:360px;height:360px;position:absolute;inset:auto -70px -145px auto}.checkin-hero.checked-in{background:#183f37}.hero-copy{z-index:3;max-width:670px;position:relative}.session-live{color:var(--lime);letter-spacing:.15em;align-items:center;gap:8px;font-size:9px;font-weight:780;display:inline-flex}.session-live i{background:var(--lime);box-shadow:0 0 0 4px #c9f07d1a}.course-tag{color:#c9d2df;font-family:var(--font-geist-mono);letter-spacing:.1em;border:1px solid #ffffff29;border-radius:7px;margin-top:24px;padding:5px 9px;font-size:9px;font-weight:700;display:inline-flex}.checkin-hero h2,.live-session-card h2{letter-spacing:-.055em;margin:10px 0 8px;font-size:clamp(31px,4vw,45px);line-height:1}.course-meta{color:#aeb8c7;align-items:center;gap:11px;margin:0;font-size:11.5px;display:flex}.course-meta i,.live-session-card p i{background:#68768d;border-radius:50%;width:3px;height:3px}.hero-actions{align-items:center;gap:17px;margin-top:26px;display:flex}.primary-action{background:var(--lime);color:#19263f;cursor:pointer;border:0;border-radius:10px;justify-content:center;align-items:center;gap:9px;padding:12px 17px;font-size:11.5px;font-weight:720;transition:transform .16s,background .16s;display:inline-flex;box-shadow:0 8px 20px #030b1826}.primary-action:hover{background:#d5f78f;transform:translateY(-1px)}.hero-actions span{color:#aab5c3;align-items:center;gap:6px;font-size:10px;display:flex}.success-checkin{align-items:center;gap:13px;margin-top:23px;display:flex}.success-symbol{background:var(--lime);color:#153b34;border-radius:15px;place-items:center;width:48px;height:48px;display:grid}.success-checkin strong,.success-checkin span{display:block}.success-checkin strong{font-size:16px}.success-checkin span{color:#b7d6cc;margin-top:3px;font-size:10px}.kiosk-required{background:#c9f07d0f;border:1px solid #c9f07d2e;border-radius:13px;grid-template-columns:48px minmax(0,1fr) auto;align-items:center;gap:13px;max-width:680px;margin-top:23px;padding:13px 14px;display:grid}.kiosk-required strong,.kiosk-required span{display:block}.kiosk-required strong{font-size:13px}.kiosk-required>div:nth-child(2) span{color:#acb9c8;max-width:420px;margin-top:3px;font-size:9.5px;line-height:1.4}.kiosk-required button{color:var(--lime);cursor:pointer;background:0 0;border:1px solid #c9f07d47;border-radius:8px;padding:8px 10px;font-size:9px;font-weight:700}.face-orbit{width:270px;height:270px;position:absolute;top:50%;right:7%;transform:translateY(-50%)}.orbit{border:1px solid #c9f07d38;border-radius:50%;position:absolute}.orbit-one{inset:20px}.orbit-two{border-style:dashed;inset:52px}.face-frame{color:var(--lime);background:#c9f07d0a;border:1px solid #c9f07d80;border-radius:25px;place-items:center;display:grid;position:absolute;inset:78px}.orbit-dot{background:var(--lime);border:2px solid #182640;border-radius:50%;width:8px;height:8px;position:absolute}.orbit-dot.one{top:37px;right:45px}.orbit-dot.two{bottom:34px;left:47px}.student-grid{grid-template-columns:minmax(0,1.65fr) minmax(270px,.75fr);gap:20px;margin-top:20px;display:grid}.panel{border:1px solid var(--line);background:#fff;border-radius:16px}.panel-heading{justify-content:space-between;align-items:center;gap:20px;padding:21px 22px 16px;display:flex}.panel-heading h3,.roster-toolbar h3{letter-spacing:-.035em;margin:4px 0 0;font-size:17px}.panel-heading button{color:var(--green-dark);cursor:pointer;background:0 0;border:0;padding:0;font-size:10px;font-weight:680}.panel-heading button span{margin-left:4px}.icon-plain{cursor:pointer;background:0 0;border:0;place-items:center;display:inline-grid;color:#7b8595!important;padding:3px!important}.timeline{padding:0 21px 16px}.class-row{grid-template-columns:54px 26px minmax(0,1fr) auto;align-items:center;min-height:68px;display:grid}.class-time strong,.class-time span{display:block}.class-time strong{font-size:11px}.class-time span{color:#9aa2af;margin-top:2px;font-size:8.5px}.timeline-marker{align-self:stretch;place-items:center;display:grid;position:relative}.timeline-marker:before{content:"";background:#e5e8eb;width:1px;position:absolute;inset:0 auto}.timeline-marker i{z-index:1;color:#fff;background:#cbd1d9;border:3px solid #fff;border-radius:50%;place-items:center;width:14px;height:14px;display:grid;position:relative;box-shadow:0 0 0 1px #d7dce2}.class-row:first-child .timeline-marker:before{top:50%}.class-row:last-child .timeline-marker:before{bottom:50%}.class-row.active{background:#f3f9f6;border-radius:11px;margin:3px 0;padding:0 10px 0 0}.class-row.active .timeline-marker i{background:var(--green);box-shadow:0 0 0 3px #15966d21}.class-row:first-child .timeline-marker i{background:var(--green);border:0;width:17px;height:17px}.class-info span,.class-info strong,.class-info small{display:block}.class-info span{color:#8b95a3;font-family:var(--font-geist-mono);font-size:8px}.class-info strong{margin:2px 0;font-size:11.5px}.class-info small{color:#8a94a3;font-size:8.8px}.row-status{color:#8d96a3;background:#f3f4f5;border-radius:20px;padding:5px 8px;font-size:8.5px;font-weight:650}.row-status.status-live{color:var(--green-dark);background:var(--green-soft)}.row-status.status-done{color:#466c5e;background:#edf5f1}.weekly-card{padding-bottom:18px}.week-chart{justify-content:space-between;align-items:stretch;gap:10px;height:128px;padding:8px 27px 0;display:flex}.week-chart>div{flex-direction:column;flex:1;align-items:center;gap:8px;display:flex}.week-chart div span{background:#edf0ed;border-radius:8px;flex:1;width:11px;position:relative;overflow:hidden}.week-chart div i{border-radius:inherit;background:#b8c5c0;position:absolute;inset:auto 0 0}.week-chart div i.today{background:var(--green)}.week-chart div b{color:#86909d;font-size:8.5px}.week-summary{border-top:1px solid #edf0ed;grid-template-columns:auto 1fr;column-gap:7px;margin:18px 22px 0;padding-top:15px;display:grid}.week-summary strong{letter-spacing:-.04em;font-size:18px}.week-summary span{color:#788392;align-self:center;font-size:9.5px}.week-summary em{color:var(--green-dark);grid-column:1/-1;margin-top:4px;font-size:9px;font-style:normal}.soft-note{background:var(--amber-soft);color:#8a6225;border-radius:9px;align-items:center;gap:8px;margin:14px 20px 0;padding:9px 10px;font-size:8.8px;display:flex}.faculty-heading{align-items:center}.outline-action,.ghost-action{border:1px solid var(--line);cursor:pointer;background:#fff;border-radius:9px;align-items:center;gap:8px;padding:10px 14px;font-size:10.5px;font-weight:650;display:inline-flex}.faculty-session-grid{grid-template-columns:minmax(310px,1.15fr) minmax(290px,.85fr) minmax(175px,.55fr);gap:17px;display:grid}.live-session-card{color:#fff;background:#182640;border-radius:17px;padding:24px 26px}.live-session-top{justify-content:space-between;align-items:center;display:flex}.live-session-top button{color:#9eaabd;background:0 0;border:0;padding:0}.live-session-card .course-tag{margin-top:18px}.live-session-card h2{font-size:30px}.live-session-card p{color:#aab5c4;align-items:center;gap:8px;margin:0;font-size:10px;display:flex}.session-progress{grid-template-columns:1fr auto;row-gap:7px;margin-top:21px;display:grid}.session-progress span{color:#aab5c4;font-size:9px}.session-progress span b{color:#fff;font-size:14px}.session-progress>i{background:#ffffff1f;grid-column:1/-1}.session-progress>i b{background:var(--lime)}.session-buttons{gap:8px;margin-top:18px;display:flex}.session-buttons .primary-action{padding:9px 13px;font-size:9.5px}.session-buttons .ghost-action{color:#c1cad5;background:#ffffff0a;border-color:#ffffff29;font-size:9.5px}.session-rule{color:#c8d3de;background:#c9f07d14;border-radius:9px;align-items:center;gap:7px;margin-top:18px;padding:9px 10px;font-size:8.8px;display:flex}.session-rule svg{color:var(--lime)}.session-rule strong{color:#fff}.qr-card{border:1px solid var(--line);background:#fff;border-radius:17px;grid-template-columns:145px 1fr;align-items:center;gap:17px;padding:21px;display:grid}.qr-wrap{border:1px solid var(--line);border-radius:13px;place-items:center;padding:10px;display:grid}.qr-card strong,.qr-card p,.qr-card small{display:block}.qr-card strong{font-family:var(--font-geist-mono);letter-spacing:.05em;margin-top:8px;font-size:16px}.qr-card p{color:var(--muted);margin:6px 0 12px;font-size:9.5px;line-height:1.45}.qr-card small{color:var(--green-dark);align-items:center;gap:5px;font-size:8px;display:flex}.kiosk-policy-card{background:#f2f8f5}.kiosk-device-icon{width:145px;height:145px;color:var(--green);background:#fff;border:1px solid #cfe4db;border-radius:14px;place-items:center;display:grid}.kiosk-device-icon.small{border-radius:12px;width:45px;height:45px}.session-metrics{flex-direction:column;gap:8px;display:flex}.metric-card{border:1px solid var(--line);background:#fff;border-radius:13px;flex:1;align-items:center;gap:11px;padding:12px 14px;display:flex}.metric-card>span{border-radius:10px;place-items:center;width:34px;height:34px;display:grid}.metric-card>span svg{width:17px}.metric-card.green>span{color:var(--green);background:var(--green-soft)}.metric-card.amber>span{color:var(--amber);background:var(--amber-soft)}.metric-card.coral>span{color:var(--coral);background:var(--coral-soft)}.metric-card strong,.metric-card small{display:block}.metric-card strong{font-size:18px;line-height:1}.metric-card small{color:#788292;margin-top:4px;font-size:8.5px}.roster-panel{margin-top:18px;overflow:hidden}.roster-toolbar{justify-content:space-between;align-items:center;gap:20px;padding:20px 22px 16px;display:flex}.roster-tools{gap:8px;display:flex}.roster-tools label{border:1px solid var(--line);color:#8a94a2;border-radius:8px;align-items:center;gap:7px;padding:8px 10px;display:flex}.roster-tools input{width:125px;color:var(--ink);border:0;outline:none;font-size:9.5px}.roster-tools button{border:1px solid var(--line);cursor:pointer;background:#fff;border-radius:8px;align-items:center;gap:8px;padding:8px 10px;font-size:9px;display:flex}.roster-row{border-top:1px solid #edf0f2;grid-template-columns:1.5fr 1fr .7fr .9fr 50px;align-items:center;min-height:58px;padding:8px 22px;font-size:10px;display:grid}.roster-header{color:#7e8896;letter-spacing:.04em;text-transform:uppercase;background:#f8f9f7;min-height:36px;font-size:8px;font-weight:680}.student-cell{align-items:center;gap:10px;display:flex}.mini-avatar{background:var(--navy-soft);color:#435370;border-radius:9px;flex:none;place-items:center;width:31px;height:31px;font-size:8px;font-weight:750;display:grid}.student-cell strong,.student-cell span{display:block}.student-cell strong{font-size:10.5px}.student-cell span{color:#8c95a3;font-family:var(--font-geist-mono);margin-top:2px;font-size:8px}.face-ready,.face-missing{color:var(--green-dark);align-items:center;gap:5px;font-size:9px;display:inline-flex}.face-missing{color:var(--coral)}.check-time{color:#566275;font-family:var(--font-geist-mono);font-size:9px}.status-pill{border-radius:20px;align-items:center;gap:6px;padding:5px 8px;font-size:8.5px;font-weight:650;display:inline-flex}.status-pill i{border-radius:50%;width:5px;height:5px}.status-pill.present{color:var(--green-dark);background:var(--green-soft)}.status-pill.present i{background:var(--green)}.status-pill.late{color:#9a651e;background:var(--amber-soft)}.status-pill.late i{background:var(--amber)}.status-pill.review{color:#a44e3d;background:var(--coral-soft)}.status-pill.review i{background:var(--coral)}.status-pill.absent{color:#77818e;background:#f0f2f4}.status-pill.absent i{background:#a4acb6}.status-pill.excused{color:#526585;background:var(--navy-soft)}.status-pill.excused i{background:#6c7fa2}.review-actions{gap:5px;display:flex}.review-actions button{border:1px solid var(--line);cursor:pointer;background:#fff;border-radius:7px;place-items:center;width:27px;height:27px;display:grid}.review-actions button:first-child{color:var(--green)}.review-actions button:last-child{color:var(--coral)}.admin-metrics{grid-template-columns:repeat(4,1fr);gap:14px;display:grid}.admin-metric{border:1px solid var(--line);background:#fff;border-radius:15px;padding:18px;position:relative}.admin-metric>span{background:var(--green-soft);width:32px;height:32px;color:var(--green);border-radius:9px;place-items:center;display:grid;position:absolute;top:17px;right:17px}.admin-metric>span svg{width:16px}.admin-metric small,.admin-metric strong,.admin-metric em{display:block}.admin-metric small{color:#747f8e;font-size:9.5px}.admin-metric strong{letter-spacing:-.05em;margin-top:12px;font-size:27px}.admin-metric em{color:var(--green-dark);margin-top:4px;font-size:8.5px;font-style:normal}.primary-action.compact{box-shadow:none}.mobile-policy-panel{grid-template-columns:48px minmax(0,1fr) auto;align-items:center;gap:15px;margin-top:16px;padding:17px 19px;display:grid}.policy-icon{background:var(--coral-soft);width:46px;height:46px;color:var(--coral);border-radius:13px;place-items:center;display:grid}.policy-icon.allowed{background:var(--green-soft);color:var(--green)}.policy-copy h3{letter-spacing:-.025em;margin:4px 0 3px;font-size:14px}.policy-copy p{color:#778291;margin:0;font-size:9.5px}.policy-control{grid-template-columns:auto auto;place-items:center end;column-gap:10px;display:grid}.policy-control>span{font-size:9.5px;font-weight:650}.policy-control>small{color:#8d96a3;grid-column:1/-1;margin-top:5px;font-size:8px}.policy-control button{cursor:pointer;background:#c7cdd5;border:0;border-radius:20px;width:40px;height:22px;padding:2px;transition:all .2s;position:relative}.policy-control button i{background:#fff;border-radius:50%;width:18px;height:18px;transition:transform .2s;display:block;box-shadow:0 1px 4px #17243f33}.policy-control button.on{background:var(--green)}.policy-control button.on i{transform:translate(18px)}.admin-grid{grid-template-columns:1.4fr .8fr;gap:16px;margin-top:17px;display:grid}.room-row{border-top:1px solid #edf0f2;grid-template-columns:52px 1fr 100px 46px;align-items:center;gap:12px;padding:14px 20px;display:grid}.room-code{background:var(--navy-soft);height:38px;font-family:var(--font-geist-mono);border-radius:10px;place-items:center;font-size:8px;font-weight:700;display:grid}.room-row strong,.room-row span{display:block}.room-row strong{font-size:10.5px}.room-row>div:nth-child(2) span{color:#8993a1;margin-top:3px;font-size:8.5px}.room-progress span{color:#5c6778;margin-bottom:6px;font-size:9px;font-weight:650}.live-dot{background:var(--green-soft);color:var(--green-dark);text-align:center;border-radius:20px;padding:5px 7px;font-size:8px;font-weight:700}.integrity-panel{padding-bottom:18px}.integrity-panel .panel-heading>svg{color:var(--green)}.health-score{padding:8px 22px 18px}.health-score strong{letter-spacing:-.055em;font-size:33px;display:block}.health-score span{color:#788291;font-size:9.5px}.health-list{border-top:1px solid var(--line);margin:0 21px}.health-list div{border-bottom:1px solid #edf0f2;justify-content:space-between;padding:12px 0;font-size:9.5px;display:flex}.health-list span{color:#5f6b7b;align-items:center;gap:7px;display:flex}.health-list svg{width:15px;color:var(--green)}.privacy-strip{background:var(--green-soft);color:var(--green-dark);border-radius:9px;align-items:center;gap:7px;margin:15px 20px 0;padding:9px 10px;font-size:8px;display:flex}.operations-grid{grid-template-columns:1.1fr .9fr;gap:16px;margin-top:17px;display:grid}.excel-panel,.device-panel{padding-bottom:18px}.panel-intro{color:var(--muted);margin:-4px 22px 15px;font-size:9.5px;line-height:1.5}.excel-drop{min-height:118px;color:var(--green);cursor:pointer;background:#f8faf8;border:1.5px dashed #b8c5cf;border-radius:13px;flex-direction:column;justify-content:center;align-items:center;margin:0 22px;display:flex}.excel-drop input{opacity:0;width:1px;height:1px;position:absolute}.excel-drop strong{color:var(--ink);margin-top:8px;font-size:10.5px}.excel-drop span{color:#87919f;margin-top:4px;font-size:8.5px}.sheet-list{flex-wrap:wrap;gap:7px;margin:13px 22px;display:flex}.sheet-list span{background:var(--green-soft);color:var(--green-dark);border-radius:7px;align-items:center;gap:4px;padding:6px 8px;font-size:8px;display:inline-flex}.import-note{color:#727e8d;align-items:flex-start;gap:7px;margin:0 22px;font-size:8.3px;line-height:1.45;display:flex}.import-note svg{color:var(--amber);flex:none}.device-list{border-top:1px solid var(--line);margin:0 20px}.device-row{border-bottom:1px solid #edf0f2;grid-template-columns:33px 1fr auto;align-items:center;gap:9px;padding:8px 0;display:grid}.device-symbol{background:var(--green-soft);width:31px;height:31px;color:var(--green);border-radius:8px;place-items:center;display:grid}.device-symbol.charging{background:var(--amber-soft);color:var(--amber)}.device-row strong,.device-row small{display:block}.device-row strong{font-size:9.5px}.device-row small{color:#84909f;margin-top:2px;font-size:8px}.device-row em{color:#697586;text-transform:capitalize;background:#f0f2f4;border-radius:12px;padding:4px 6px;font-size:7.5px;font-style:normal}.device-row em.active{background:var(--green-soft);color:var(--green-dark)}.device-row em.charging{background:var(--amber-soft);color:#91601f}.pair-note{background:var(--navy-soft);color:#59677a;border-radius:9px;align-items:flex-start;gap:7px;margin:12px 20px 0;padding:10px;font-size:8.3px;line-height:1.45;display:flex}.pair-note svg{color:#53698e;flex:none}.face-enrollment-panel{grid-template-columns:minmax(250px,.8fr) minmax(430px,1.2fr);gap:18px;margin-top:16px;padding:20px 22px;display:grid}.enrollment-copy h3{letter-spacing:-.035em;margin:5px 0 6px;font-size:16px}.enrollment-copy p{color:var(--muted);margin:0;font-size:9px;line-height:1.5}.enrollment-students{grid-template-columns:1fr 1fr;gap:8px;display:grid}.enrollment-student{border:1px solid var(--line);background:#f9faf8;border-radius:10px;grid-template-columns:31px 1fr auto;align-items:center;gap:8px;padding:8px;display:grid}.enrollment-student span strong,.enrollment-student span small{display:block}.enrollment-student span strong{font-size:9px}.enrollment-student span small{color:#818d9b;margin-top:2px;font-size:7.7px}.enrollment-student button{color:var(--green-dark);cursor:pointer;background:#fff;border:1px solid #cce4da;border-radius:7px;align-items:center;gap:4px;padding:6px 7px;font-size:7.5px;font-weight:650;display:flex}.consent-note{border-top:1px solid var(--line);color:#657384;grid-column:1/-1;align-items:center;gap:7px;padding-top:11px;font-size:8px;display:flex}.consent-note svg{color:var(--green)}.report-panel{margin-top:17px;overflow:hidden}.report-head{justify-content:space-between;align-items:center;gap:18px;padding:21px 22px 17px;display:flex}.report-head h3{letter-spacing:-.04em;margin:5px 0 3px;font-size:19px}.report-head p{color:#7c8795;margin:0;font-size:8.8px}.report-actions{gap:7px;display:flex}.report-actions button{border:1px solid var(--line);cursor:pointer;background:#fff;border-radius:8px;align-items:center;gap:6px;padding:8px 10px;font-size:8.5px;display:flex}.report-table{overflow-x:auto}.report-row{color:#536071;border-top:1px solid #edf0f2;grid-template-columns:minmax(210px,1.7fr) .65fr .65fr .65fr .65fr .65fr;align-items:center;min-width:760px;min-height:42px;padding:7px 22px;font-size:9px;display:grid}.report-row>:not(:first-child){text-align:center}.report-row>strong:first-child{color:var(--ink)}.report-header{color:#fff;letter-spacing:.04em;text-transform:uppercase;background:#17385b;min-height:36px;font-size:7.8px;font-weight:700}.report-row .shortage{color:var(--coral)}.report-status{border-radius:12px;justify-self:center;padding:4px 7px;font-size:7.5px;font-weight:650}.report-status.short{background:var(--coral-soft);color:var(--coral)}.report-status.good{background:var(--green-soft);color:var(--green-dark)}.report-foot{border-top:1px solid var(--line);color:#657284;background:#f8f9f7;flex-wrap:wrap;gap:10px 20px;padding:14px 22px;font-size:8.3px;display:flex}.report-foot span{align-items:center;gap:5px;display:flex}.report-foot svg{color:var(--green)}.kiosk-page{max-width:1120px;margin:0 auto}.tablet-sync-bar{flex-wrap:wrap;gap:8px;margin-bottom:15px;display:flex}.tablet-sync-bar span{color:#5c6a7a;background:#fff;border:1px solid #dce4e0;border-radius:20px;align-items:center;gap:5px;padding:7px 9px;font-size:8px;display:inline-flex}.tablet-sync-bar svg{color:var(--green)}.kiosk-heading{justify-content:space-between;align-items:flex-end;gap:24px;margin-bottom:24px;display:flex}.kiosk-heading .session-live{color:var(--green-dark)}.kiosk-heading .session-live i{background:var(--green)}.kiosk-heading h1{letter-spacing:-.055em;margin:10px 0 5px;font-size:clamp(31px,4vw,45px);line-height:1}.kiosk-heading p{color:var(--muted);margin:0;font-size:12px}.kiosk-heading-actions{align-items:stretch;gap:9px;display:flex}.install-app-button{background:var(--green-soft);color:var(--green-dark);cursor:pointer;border:1px solid #c7dbd2;border-radius:12px;justify-content:center;align-items:center;gap:7px;padding:0 13px;font-size:9px;font-weight:720;display:inline-flex}.kiosk-room{border:1px solid var(--line);min-width:190px;color:var(--green);background:#fff;border-radius:12px;align-items:center;gap:10px;padding:12px 14px;display:flex}.kiosk-room span strong,.kiosk-room span small{display:block}.kiosk-room strong{color:var(--ink);font-size:10.5px}.kiosk-room small{color:#87919e;margin-top:2px;font-size:8px}.kiosk-workspace{border-radius:22px;grid-template-columns:minmax(300px,.85fr) minmax(360px,1fr);display:grid;overflow:hidden;box-shadow:0 20px 55px #17243f1f}.kiosk-course-panel{color:#fff;background:#182640;min-height:510px;padding:38px}.kiosk-course-panel .course-tag{margin-top:0}.kiosk-course-panel h2{letter-spacing:-.055em;margin:14px 0 7px;font-size:35px}.kiosk-course-panel>p{color:#aab5c4;margin:0;font-size:10px}.kiosk-steps{flex-direction:column;gap:0;margin-top:38px;display:flex}.kiosk-steps>div{color:#8592a7;align-items:center;gap:12px;min-height:68px;display:flex;position:relative}.kiosk-steps>div:not(:last-child):after{content:"";background:#ffffff1f;width:1px;position:absolute;top:45px;bottom:-12px;left:16px}.kiosk-steps i{z-index:1;border:1px solid #ffffff2b;border-radius:10px;place-items:center;width:33px;height:33px;font-size:10px;font-style:normal;font-weight:750;display:grid;position:relative}.kiosk-steps strong,.kiosk-steps small{display:block}.kiosk-steps strong{font-size:11px}.kiosk-steps small{margin-top:3px;font-size:8.5px}.kiosk-steps>div.active{color:#fff}.kiosk-steps>div.active i{border-color:var(--lime);background:var(--lime);color:#17243f}.no-phone-note{color:var(--lime);background:#c9f07d17;border-radius:10px;align-items:center;gap:8px;margin-top:25px;padding:11px;font-size:8.8px;line-height:1.4;display:flex}.kiosk-checkin-panel{background:#fff;min-height:510px;padding:43px 46px}.kiosk-panel-head{align-items:center;gap:11px;display:flex}.kiosk-panel-head h3{letter-spacing:-.045em;margin:4px 0 0;font-size:22px}.camera-ready-card{color:var(--green);text-align:center;background:#f2f8f5;border-radius:13px;flex-direction:column;align-items:center;margin-top:20px;padding:18px;display:flex}.camera-ready-card strong{color:var(--ink);margin-top:8px;font-size:11px}.camera-ready-card span{color:#718079;max-width:330px;margin-top:5px;font-size:8.5px;line-height:1.45}.tablet-page .student-id-field{margin-top:16px}.student-id-field{margin-top:29px;display:block}.student-id-field>span{color:#697588;margin-bottom:7px;font-size:9px;font-weight:650;display:block}.student-id-field>div{color:#85909f;border:1px solid #ccd3dc;border-radius:11px;align-items:center;gap:9px;padding:13px 14px;display:flex}.student-id-field input{width:100%;color:var(--ink);font-family:var(--font-geist-mono);letter-spacing:.04em;border:0;outline:0;font-size:13px}.matched-student{background:var(--green-soft);border:1px solid #cce8dc;border-radius:11px;grid-template-columns:38px 1fr auto;align-items:center;gap:10px;margin-top:13px;padding:11px;display:grid}.matched-student .mini-avatar{background:#fff;width:38px;height:38px}.matched-student strong,.matched-student span{display:block}.matched-student strong{font-size:10.5px}.matched-student span{color:#6d7b78;margin-top:3px;font-size:8.5px}.matched-student>svg{color:var(--green)}.student-not-found{background:var(--coral-soft);color:var(--coral);border-radius:10px;align-items:center;gap:7px;margin-top:13px;padding:11px;font-size:9px;display:flex}.kiosk-action{color:#fff;width:100%;box-shadow:none;background:#17243f;margin-top:20px;padding:14px}.kiosk-action:hover{background:#22314d}.kiosk-action:disabled{opacity:.45;cursor:not-allowed;transform:none}.kiosk-fallback{color:#7f8997;align-items:flex-start;gap:7px;margin-top:14px;font-size:8.5px;line-height:1.4;display:flex}.kiosk-fallback svg{color:var(--green);flex:none}.modal-backdrop{z-index:100;-webkit-backdrop-filter:blur(7px);backdrop-filter:blur(7px);background:#08101fad;place-items:center;padding:18px;display:grid;position:fixed;inset:0}.face-modal{background:#fff;border-radius:20px;width:min(450px,100%);padding:22px;box-shadow:0 35px 90px #060d1c59}.modal-head{justify-content:space-between;align-items:start;margin-bottom:16px;display:flex}.modal-head h2{letter-spacing:-.045em;margin:5px 0 0;font-size:23px}.modal-head button{border:1px solid var(--line);cursor:pointer;background:#fff;border-radius:9px;place-items:center;width:32px;height:32px;display:grid}.modal-head button svg{width:17px}.camera-frame{aspect-ratio:4/3;background:#17243f;border-radius:16px;position:relative;overflow:hidden}.camera-frame video{object-fit:cover;width:100%;height:100%;transform:scaleX(-1)}.camera-placeholder{color:#fff;background:#1b2944;flex-direction:column;justify-content:center;align-items:center;display:flex;position:absolute;inset:0}.camera-placeholder svg{color:var(--lime);margin-bottom:10px}.camera-placeholder strong{font-size:12px}.camera-placeholder span{color:#9da9bc;margin-top:5px;font-size:9px}.face-guide{border:1.5px solid #c9f07dcc;border-radius:46% 46% 42% 42%;position:absolute;inset:14% 26%;box-shadow:0 0 0 999px #0a14252e}.face-guide i{border-color:var(--lime);width:15px;height:15px;position:absolute}.face-guide i:first-child{border-top:3px solid;border-left:3px solid;border-radius:5px 0 0;top:-2px;left:-2px}.face-guide i:nth-child(2){border-top:3px solid;border-right:3px solid;border-radius:0 5px 0 0;top:-2px;right:-2px}.face-guide i:nth-child(3){border-bottom:3px solid;border-left:3px solid;border-radius:0 0 0 5px;bottom:-2px;left:-2px}.face-guide i:nth-child(4){border-bottom:3px solid;border-right:3px solid;border-radius:0 0 5px;bottom:-2px;right:-2px}.checking-overlay{color:#fff;background:#0d192bc7;flex-direction:column;justify-content:center;align-items:center;display:flex;position:absolute;inset:0}.checking-overlay svg{color:var(--lime)}.checking-overlay strong{margin-top:10px;font-size:13px}.checking-overlay span{color:#b6c0ce;margin-top:5px;font-size:9px}.scan-line{background:var(--lime);height:1px;box-shadow:0 0 10px var(--lime);animation:1.4s ease-in-out infinite alternate scan;position:absolute;top:20%;left:15%;right:15%}@keyframes scan{to{top:78%}}.success-overlay>div{background:var(--lime);color:#173d34;border-radius:18px;place-items:center;width:60px;height:60px;display:grid}.success-overlay>div svg{color:inherit}.rejected-overlay{text-align:center;background:#3d1819e6;padding:25px}.rejected-overlay>div{width:58px;height:58px;color:var(--coral);background:#ffddd6;border-radius:18px;place-items:center;display:grid}.rejected-overlay span{max-width:330px;line-height:1.5}.verification-context{justify-content:space-between;align-items:center;padding:13px 2px 10px;display:flex}.verification-context>div:first-child{align-items:center;gap:9px;display:flex}.verification-context>div:first-child>svg{color:var(--green)}.verification-context span strong,.verification-context span small{display:block}.verification-context span strong{font-size:10.5px}.verification-context span small{color:#7c8796;margin-top:3px;font-size:8.5px}.prototype-note{background:var(--amber-soft);color:#765523;border-radius:9px;align-items:flex-start;gap:8px;padding:10px;font-size:8.4px;line-height:1.45;display:flex}.prototype-note svg{flex:none}.consent-check{cursor:pointer;background:#f8faf8;border:1px solid #d9e1dd;border-radius:9px;align-items:flex-start;gap:9px;margin:2px 0 10px;padding:10px;display:flex}.consent-check input{accent-color:var(--green);margin-top:2px}.consent-check span strong,.consent-check span small{display:block}.consent-check span strong{font-size:9px}.consent-check span small{color:#748080;margin-top:3px;font-size:8px;line-height:1.4}.modal-action{color:#fff;width:100%;box-shadow:none;background:#17243f;margin-top:12px;padding:13px}.modal-action:hover{background:#22314d}.modal-action:disabled{opacity:.75;cursor:wait}.privacy-copy{color:#8b94a1;justify-content:center;align-items:center;gap:5px;margin:9px 0 0;font-size:8px;display:flex}.toast{z-index:120;min-width:290px;color:var(--green);background:#fff;border:1px solid #bce5d5;border-radius:12px;align-items:center;gap:10px;padding:13px 15px;animation:.3s both toast-in;display:flex;position:fixed;bottom:24px;right:24px;box-shadow:0 18px 50px #17243f2e}.toast strong,.toast span{display:block}.toast strong{color:var(--ink);font-size:11px}.toast span{color:#768190;margin-top:2px;font-size:8.5px}@keyframes toast-in{0%{opacity:0;transform:translateY(12px)}}.mobile-scrim{display:none}@media (width<=1080px){.sidebar{width:218px}.main-content{width:calc(100% - 218px);margin-left:218px}.faculty-session-grid{grid-template-columns:1fr 1fr}.session-metrics{flex-direction:row;grid-column:1/-1}.metric-card{min-height:72px}.admin-metrics{grid-template-columns:repeat(2,1fr)}.operations-grid{grid-template-columns:1fr}.face-orbit{opacity:.7;right:2%}}@media (width<=820px){.sidebar{transition:transform .24s;transform:translate(-102%);box-shadow:20px 0 60px #09111f40}.sidebar.sidebar-open{transform:translate(0)}.mobile-scrim{z-index:25;background:#070f1d73;border:0;display:block;position:fixed;inset:0}.main-content{width:100%;margin-left:0}.menu-button{place-items:center;padding:0;display:grid}.topbar{padding:0 20px}.topbar-date>span:first-of-type,.live-pill,.profile-chip>div:not(.avatar),.profile-chip>svg{display:none}.page-wrap{padding:25px 20px 40px}.student-grid,.admin-grid,.operations-grid{grid-template-columns:1fr}.face-orbit{display:none}.checkin-hero{min-height:275px;padding:33px}.hero-copy{max-width:100%}.roster-panel{overflow-x:auto}.roster-toolbar,.roster-table{min-width:720px}.mobile-policy-panel{grid-template-columns:48px 1fr}.policy-control{border-top:1px solid var(--line);grid-column:1/-1;grid-template-columns:1fr auto;width:100%;padding-top:12px}.policy-control>small{justify-self:start}.kiosk-workspace{grid-template-columns:1fr}.kiosk-course-panel,.kiosk-checkin-panel{min-height:auto}.kiosk-course-panel{padding:30px}.kiosk-checkin-panel{order:-1;padding:32px}.report-head{flex-direction:column;align-items:flex-start}.face-enrollment-panel{grid-template-columns:1fr}.consent-note{grid-column:auto}}@media (width<=620px){.topbar{height:62px}.topbar-date{display:none}.topbar-actions{justify-content:flex-end;width:calc(100% - 38px)}.role-switcher{min-width:0}.role-switcher button{padding:7px 6px;font-size:8px}.role-full{display:none}.role-short{display:inline}.icon-button{display:none}.page-heading{flex-direction:column;align-items:flex-start;margin-bottom:18px}.attendance-streak{width:100%}.checkin-hero{border-radius:17px;min-height:310px;padding:27px 23px}.checkin-hero h2{font-size:34px}.course-meta{flex-wrap:wrap}.hero-actions{flex-direction:column;align-items:flex-start}.student-grid{margin-top:14px}.faculty-session-grid{grid-template-columns:1fr}.session-metrics{flex-direction:column;grid-column:auto}.qr-card{grid-template-columns:130px 1fr;padding:15px}.qr-wrap canvas{width:110px!important;height:110px!important}.kiosk-device-icon{width:130px;height:130px}.admin-metrics{grid-template-columns:1fr 1fr}.enrollment-students{grid-template-columns:1fr}.admin-metric{padding:15px}.admin-metric strong{font-size:23px}.room-row{grid-template-columns:45px 1fr auto}.room-progress{display:none}.toast{min-width:0;bottom:15px;left:15px;right:15px}.kiosk-heading{flex-direction:column;align-items:flex-start;gap:14px;margin-bottom:14px}.kiosk-heading h1{margin-top:8px;font-size:31px}.kiosk-heading p{font-size:10px;line-height:1.5}.kiosk-heading-actions{flex-direction:column;width:100%}.install-app-button{min-height:43px}.kiosk-room{width:100%}.tablet-sync-bar{scrollbar-width:none;flex-wrap:nowrap;margin-bottom:12px;margin-right:-14px;padding-right:14px;overflow-x:auto}.tablet-sync-bar::-webkit-scrollbar{display:none}.tablet-sync-bar span{flex:none}.kiosk-workspace{border-radius:17px;flex-direction:column;display:flex}.kiosk-checkin-panel{order:-1;padding:22px 20px}.kiosk-panel-head h3{font-size:20px}.camera-ready-card{text-align:left;flex-direction:row;align-items:center;gap:12px;margin-top:15px;padding:13px}.camera-ready-card svg{flex:none;width:34px;height:34px}.camera-ready-card strong{margin-top:0}.camera-ready-card span{margin-top:3px}.kiosk-action{min-height:48px;font-size:12px}.kiosk-course-panel{padding:26px 22px}.kiosk-course-panel h2{font-size:30px}.kiosk-steps{margin-top:22px}.kiosk-required{grid-template-columns:48px 1fr}.kiosk-required button{grid-column:1/-1}.modal-backdrop{align-items:end;padding:8px}.face-modal{border-radius:22px 22px 14px 14px;max-height:calc(100dvh - 16px);overflow-y:auto}}@media (width<=430px){.page-wrap{padding-left:14px;padding-right:14px}.topbar{padding:0 14px}.page-heading h1{font-size:29px}.panel-heading{padding-left:17px;padding-right:17px}.timeline{padding-left:15px;padding-right:15px}.class-row{grid-template-columns:45px 22px minmax(0,1fr)}.row-status{display:none}.qr-card{text-align:center;grid-template-columns:1fr}.qr-card small{justify-content:center}.admin-metrics{grid-template-columns:1fr}.profile-chip{padding-left:0}.avatar{width:32px;height:32px}}@media (prefers-reduced-motion:reduce){*,:before,:after{scroll-behavior:auto!important;transition-duration:.01ms!important;animation-duration:.01ms!important;animation-iteration-count:1!important}}
