:root{font-family:system-ui,-apple-system,Segoe UI,Roboto,Ubuntu,Cantarell,Noto Sans,Arial,"Apple Color Emoji","Segoe UI Emoji"}body{margin:16px}label{display:flex;flex-direction:column;gap:4px;font-size:14px}input,select,textarea{padding:6px 8px;font-size:14px}button{padding:8px 12px;font-size:14px;cursor:pointer}fieldset{border-radius:8px}body{margin:0;background:#f5f7fb;color:#162033}.terminal-page{padding:8px 0 24px}.panel-header-row{display:flex;justify-content:space-between;align-items:flex-start;gap:12px;margin-bottom:16px}.card-soft{background:#fff;border:1px solid #e5e9f2;border-radius:18px;box-shadow:0 8px 24px #1018280f}.terminal-layout{display:grid;grid-template-columns:320px 1fr;gap:16px}.terminal-sidebar{padding:12px;display:flex;flex-direction:column;gap:10px;max-height:calc(100vh - 220px);overflow:auto}.terminal-item{border:1px solid #e6ebf3;background:#fff;border-radius:14px;padding:12px;text-align:left}.terminal-item.active{border-color:#315efb;box-shadow:0 0 0 3px #315efb14}.terminal-item-top{display:flex;justify-content:space-between;gap:8px;align-items:center}.terminal-item-meta{font-size:12px;color:#5c6780;margin-top:4px}.badge{font-size:11px;padding:4px 8px;border-radius:999px}.badge-success{background:#dcfce7;color:#166534}.badge-neutral{background:#eef2f7;color:#475467}.terminal-main{display:flex;flex-direction:column;gap:16px}.hero-grid{display:grid;grid-template-columns:repeat(3,minmax(0,1fr));gap:16px}.hero-card{padding:18px}.eyebrow{font-size:12px;text-transform:uppercase;letter-spacing:.08em;color:#667085;margin-bottom:8px}.hero-value{font-size:28px;font-weight:700}.hero-sub{margin-top:6px;color:#667085}.result-banner{padding:18px}.result-pill{display:inline-flex;padding:10px 16px;border-radius:999px;font-weight:700;margin:6px 0 10px}.result-registered{background:#dcfce7;color:#166534}.result-duplicate{background:#fef3c7;color:#92400e}.result-invalid_qr,.result-error{background:#fee2e2;color:#991b1b}.result-no_open_session{background:#e0f2fe;color:#075985}.result-idle{background:#eef2f7;color:#475467}.result-detail{color:#475467}.detail-grid{display:grid;grid-template-columns:repeat(2,minmax(0,1fr));gap:16px}.detail-grid .card-soft,.events-card{padding:18px}.kv-list{display:flex;flex-direction:column;gap:10px}.kv-list>div{display:flex;justify-content:space-between;gap:12px;padding:10px 0;border-bottom:1px solid #eef2f7}.kv-list>div span{color:#667085}.events-table{display:grid;gap:8px}.events-head,.events-row{display:grid;grid-template-columns:120px 120px 1.4fr 140px 1.6fr;gap:12px;align-items:center}.events-head{font-size:12px;text-transform:uppercase;color:#667085;padding-bottom:6px;border-bottom:1px solid #eef2f7}.events-row{background:#fafbfc;border:1px solid #eef2f7;border-radius:12px;padding:12px}.empty-state.small{padding:16px}.text-muted{color:#667085}@media (max-width: 1100px){.terminal-layout,.hero-grid,.detail-grid{grid-template-columns:1fr}}body{font-family:Arial,sans-serif;background:#f4f4f4;margin:0;padding:0}main{padding:1rem}header{background-color:#e7dfc9;padding:1rem;display:flex;justify-content:space-between;align-items:center;position:relative}header .logo-container{flex-shrink:0;margin-right:1rem}header .logo{height:40px;width:auto}header h1.title{font-size:1.5rem;font-weight:700;color:#333;margin:0;flex-grow:1;text-align:center}header .clock{font-size:1.5rem;font-weight:700;color:#333;margin:0}.table-container{margin:1rem auto;width:98%;max-width:1920px;background:#fff;border-radius:8px;box-shadow:0 4px 6px #0000001a;overflow-x:auto;padding:.5rem}.table-row{display:flex;justify-content:space-between;align-items:center;padding:.75rem;border-bottom:1px solid #ddd;transition:background-color .3s ease}.table-row.odd{background-color:#f2f2f2}.table-row.even{background-color:#f9f9f9}.table-row.header{background-color:#7e0000;color:#fff;font-weight:700;text-transform:uppercase;font-size:1.2rem}.table-row span{flex:1;text-align:center;white-space:normal;word-wrap:break-word;overflow-wrap:anywhere;font-size:1.2rem;padding:.2rem}.table-row span a{word-wrap:break-word;overflow-wrap:anywhere;color:#7e0000;text-decoration:none;font-size:1.2rem}.table-row span a:hover{text-decoration:underline}.table-row.error-message span{font-size:1.5rem;color:red;text-align:center}.table-rows-container{display:flex;flex-direction:column;transition:transform .5s ease-in-out}.table-rows-container.transitioning{transform:translateY(-100%)}.table-row.transitioning{opacity:0}:root{--primary:#7e0000;--primary-contrast:#fff;--border:#ddd;--bg:#fff;--muted:#666}.tabs{display:flex;gap:.5rem;padding:.75rem 1rem;background:#fff;border-bottom:1px solid var(--border)}.tab{padding:8px 14px;border-radius:6px;border:1px solid #ccc;background:#f6f6f6;color:#333;cursor:pointer}.tab.active{background:var(--primary);color:#fff;border-color:var(--primary)}.btn{padding:8px 14px;border-radius:6px;border:1px solid var(--border);background:#f6f6f6;color:#333;cursor:pointer}.btn-primary{background:var(--primary);color:#fff;border-color:var(--primary)}.btn-danger{background:#b00020;color:#fff;border-color:#b00020}.btn:disabled{opacity:.6;cursor:not-allowed}.field{display:flex;flex-direction:column;gap:4px}.field input,.field select,.field textarea{padding:8px 10px;border:1px solid var(--border);border-radius:6px;font-size:14px;background:#fff}.input-readonly input[readonly]{background:#fafafa}.fieldset{border:1px solid var(--border);border-radius:8px;padding:12px;background:#fff}.fieldset>legend{padding:0 .5rem;font-weight:600}.card{background:#fff;border:1px solid var(--border);border-radius:8px;padding:12px;box-shadow:0 2px 4px #0000000f}.grid{display:grid;gap:8px}.cols-2{grid-template-columns:repeat(2,minmax(0,1fr))}.cols-5{grid-template-columns:repeat(5,minmax(180px,1fr))}@media (max-width:900px){.cols-2,.cols-5{grid-template-columns:1fr}}.table{width:100%;border-collapse:collapse}.table th,.table td{border-bottom:1px solid var(--border);padding:6px;text-align:left}.table th{background:#fafafa;font-weight:700}.w-full{width:100%}.mt-8{margin-top:8px}.mt-12{margin-top:12px}.gap-8{gap:8px}.flex{display:flex}.text-muted{color:var(--muted)}.text-right{text-align:right}.toast{position:fixed;left:50%;bottom:16px;transform:translate(-50%);padding:10px 14px;border-radius:8px;color:#fff;background:#333;box-shadow:0 6px 16px #00000040;z-index:9999;max-width:90vw;text-align:center;opacity:.95;font-weight:600}.toast-success{background:#2e7d32}.toast-info{background:#6d4c41}.toast-error{background:#c62828}.section-heading{display:flex;justify-content:space-between;align-items:flex-start;gap:20px;margin-bottom:18px}.section-heading h2{margin:0 0 4px}.section-heading p{margin:0;color:var(--muted)}.teacher-grid{display:grid;grid-template-columns:repeat(2,minmax(0,1fr));gap:16px}.teacher-grid .card h3{margin-top:0}.info-grid{display:grid;grid-template-columns:repeat(2,minmax(0,1fr));gap:10px;margin-top:12px}.info-grid>div{min-height:62px;border:1px solid #e4e7ec;border-radius:10px;padding:12px;background:#fafbfc;display:flex;flex-direction:column;gap:5px}.info-grid span,.metrics span{color:var(--muted);font-size:13px}.info-grid strong{overflow-wrap:anywhere}.terminal-identity{display:flex;align-items:center;gap:12px;padding:13px;border:1px solid var(--border);border-radius:10px;background:#fff}.terminal-identity div{display:flex;flex-direction:column;gap:3px}.terminal-identity small{color:var(--muted)}.status-dot{width:12px;height:12px;border-radius:50%;background:#98a2b3;flex:0 0 auto}.status-dot.online{background:#16a34a;box-shadow:0 0 0 4px #16a34a1f}.status-dot.offline{background:#dc2626;box-shadow:0 0 0 4px #dc26261a}.session-box{display:flex;flex-direction:column;gap:9px;margin-top:16px;padding:16px;border-radius:10px;background:#f2f4f7}.session-box.open{background:#ecfdf3;color:#05603a}.session-box .btn{align-self:flex-start;margin-top:4px}.alert{border-radius:9px;padding:12px 14px;margin:12px 0}.alert.error{background:#fef3f2;color:#b42318;border:1px solid #fecdca}.metrics{display:grid;grid-template-columns:repeat(3,minmax(0,1fr));gap:16px;margin:18px 0}.metrics article{background:#fff;border:1px solid var(--border);border-radius:13px;padding:18px;display:flex;flex-direction:column;gap:5px;box-shadow:0 4px 14px #1018280a}.metrics strong{font-size:24px;overflow-wrap:anywhere}.metrics small{color:var(--muted)}.scan-banner{display:flex;flex-direction:column;align-items:center;justify-content:center;min-height:145px;text-align:center;border-radius:15px;margin-bottom:18px;padding:22px;background:#eef2f6;color:#344054}.scan-banner span{font-weight:750;font-size:18px}.scan-banner strong{font-size:clamp(25px,3vw,38px);margin:8px 0}.scan-banner.registered{background:#dcfae6;color:#05603a}.scan-banner.duplicate{background:#fef0c7;color:#7a2e0e}.scan-banner.invalid_qr,.scan-banner.no_open_session{background:#fee4e2;color:#912018}.card-heading-inline{display:flex;justify-content:space-between;align-items:center;gap:12px}.card-heading-inline h3{margin:0}.records-card{margin-top:16px}.table-scroll{overflow:auto}.empty-state{padding:24px;text-align:center;color:#667085}.empty-state.small{padding:14px}@media (max-width:900px){.teacher-grid,.metrics,.info-grid{grid-template-columns:1fr}.section-heading{flex-direction:column}}.manual-attendance-card{margin-top:16px;padding:16px}.manual-attendance-heading{display:flex;align-items:flex-start;justify-content:space-between;gap:16px;margin-bottom:14px}.manual-attendance-heading h3{margin:0 0 4px}.manual-attendance-heading p{margin:0;color:var(--muted);font-size:14px}.manual-endpoint-badge{display:inline-flex;align-items:center;white-space:nowrap;border-radius:999px;padding:6px 10px;background:#f2f4f7;color:#475467;font-size:12px;font-weight:700}.manual-endpoint-badge.ok{background:#ecfdf3;color:#067647}.manual-attendance-grid{display:grid;grid-template-columns:minmax(220px,1fr) minmax(360px,2fr);gap:10px}.manual-lookup-message{margin-top:8px;color:#667085;font-size:13px}.manual-lookup-message.success{color:#067647}.manual-selected-student{display:flex;flex-wrap:wrap;align-items:center;gap:8px 14px;margin-top:10px;padding:10px 12px;border:1px solid #d1fadf;border-radius:9px;background:#f6fef9}.manual-selected-student strong{color:#05603a}.manual-selected-student span{color:#475467;font-size:13px}.manual-session-warning{align-self:center}.mode-pill{display:inline-flex;align-items:center;justify-content:center;min-width:58px;padding:4px 8px;border-radius:999px;font-size:12px;font-weight:700}.mode-pill.qr{background:#eef4ff;color:#3538cd}.mode-pill.manual{background:#fff6ed;color:#b93815}.reports-page{padding-bottom:24px}.report-filter-card{padding:8px 10px 12px}.report-fieldset{border:1px solid #dfe3e8;border-radius:10px;padding:12px}.report-fieldset legend{padding:0 8px;font-weight:700;color:#344054}.report-filter-grid{display:grid;gap:10px;align-items:end}.report-filter-grid.primary-row{grid-template-columns:1.1fr 1.1fr 1.1fr 1.4fr 1.4fr}.report-filter-grid.secondary-row{grid-template-columns:1.7fr 1fr 1.2fr 1fr 1.25fr 1fr;margin-top:10px}.report-filter-grid .field{margin:0}.report-filter-grid input:disabled{background:#f8f9fb;color:#667085}.report-filter-actions{display:flex;flex-wrap:wrap;align-items:center;gap:8px;margin-top:12px}.report-range{margin-left:auto;color:#667085;font-size:14px}.report-metrics{grid-template-columns:repeat(5,minmax(0,1fr))}.report-section{margin-top:16px}.report-section h3{margin:0 0 8px}.report-table-card{padding:6px 8px}.report-table-card .table-scroll{max-height:520px}@media (max-width:1200px){.report-filter-grid.primary-row,.report-filter-grid.secondary-row,.report-metrics{grid-template-columns:repeat(3,minmax(0,1fr))}}@media (max-width:900px){.manual-attendance-grid{grid-template-columns:1fr}.manual-attendance-heading{flex-direction:column}.report-filter-grid.primary-row,.report-filter-grid.secondary-row,.report-metrics{grid-template-columns:1fr}.report-range{width:100%;margin-left:0;margin-top:4px}}.password-field-wrap{position:relative;display:flex;align-items:center;width:100%}.password-field-wrap input{width:100%;box-sizing:border-box;padding-right:86px}.password-toggle-btn{position:absolute;right:5px;top:50%;transform:translateY(-50%);border:0;background:transparent;color:#667085;font-size:12px;font-weight:700;padding:5px 8px;border-radius:6px;cursor:pointer}.password-toggle-btn:hover{background:#f2f4f7;color:#344054}.password-toggle-btn:focus-visible{outline:2px solid #8f0000;outline-offset:1px}
