:root{--kulkam-black: #000000;--kulkam-green: #4caf50;--kulkam-red: #f44336;--kulkam-gray: #757575;--kulkam-bg: #f5f5f5;--kulkam-card: #ffffff;--kulkam-border: #e0e0e0;font-family:Segoe UI,system-ui,-apple-system,sans-serif;line-height:1.5;color:#1a1a1a}*{box-sizing:border-box;margin:0;padding:0}body{background:var(--kulkam-bg);min-height:100vh}a{color:inherit;text-decoration:none}.app-shell{display:flex;flex-direction:column;min-height:100vh}.topbar{background:var(--kulkam-black);color:#fff;padding:.5rem 1rem;display:flex;align-items:center;justify-content:space-between;gap:.75rem;position:sticky;top:0;z-index:100}.topbar-brand{display:flex;align-items:center;gap:.65rem;min-width:0}.topbar-logo{height:36px;width:auto;display:block;object-fit:contain}.topbar-title{font-size:.95rem;font-weight:600;letter-spacing:.02em;white-space:nowrap}.topbar-right{display:flex;align-items:center;gap:.65rem;flex-shrink:0}.datetime-clock{font-size:.72rem;color:#ccc;font-variant-numeric:tabular-nums;white-space:nowrap;line-height:1.2;text-align:right}.topbar-logout{color:#fff;border-color:#555;padding:.35rem .65rem;font-size:.8rem}.topbar h1{font-size:1.1rem;font-weight:700;letter-spacing:.02em}.topbar .badge{font-size:.75rem;background:var(--kulkam-green);padding:.15rem .5rem;border-radius:4px}.nav-tabs{display:flex;gap:.25rem;overflow-x:auto;background:#111;padding:.5rem;-webkit-overflow-scrolling:touch}.nav-tabs a{color:#ccc;padding:.5rem .75rem;border-radius:6px;white-space:nowrap;font-size:.85rem}.nav-tabs a.active{background:var(--kulkam-green);color:#fff}.main-content{flex:1;padding:1rem;max-width:960px;width:100%;margin:0 auto}.card{background:var(--kulkam-card);border-radius:10px;padding:1rem;margin-bottom:1rem;box-shadow:0 1px 3px #00000014;border:1px solid var(--kulkam-border)}.card h2{font-size:1rem;margin-bottom:.75rem;color:var(--kulkam-black)}.form-row{margin-bottom:.75rem}.form-row label{display:block;font-size:.8rem;color:var(--kulkam-gray);margin-bottom:.25rem}input,select,textarea{width:100%;padding:.65rem .75rem;border:1px solid var(--kulkam-border);border-radius:8px;font-size:1rem}textarea{min-height:120px;font-family:inherit}.btn{display:inline-flex;align-items:center;justify-content:center;padding:.65rem 1.25rem;border:none;border-radius:8px;font-size:.95rem;font-weight:600;cursor:pointer;gap:.35rem}.btn-primary{background:var(--kulkam-green);color:#fff}.btn-primary:disabled{opacity:.5;cursor:not-allowed}.btn-dark{background:var(--kulkam-black);color:#fff}.btn-outline{background:#fff;border:1px solid var(--kulkam-border)}.btn-danger{background:var(--kulkam-red);color:#fff}.btn-block{width:100%}.btn-row{display:flex;flex-wrap:wrap;gap:.5rem;margin-top:.75rem}.status-dot{width:8px;height:8px;border-radius:50%;display:inline-block;margin-right:.35rem}.status-dot.ok{background:var(--kulkam-green)}.status-dot.err{background:var(--kulkam-red)}.student-list{list-style:none}.student-list li{padding:.75rem;border-bottom:1px solid var(--kulkam-border);cursor:pointer}.student-list li:hover,.student-list li.selected{background:#e8f5e9}.student-list li:last-child{border-bottom:none}.detail-grid{display:grid;grid-template-columns:1fr 1fr;gap:.5rem;font-size:.9rem}.detail-grid .label{color:var(--kulkam-gray);font-size:.75rem}.table-wrap{overflow-x:auto}table{width:100%;border-collapse:collapse;font-size:.85rem}th,td{padding:.5rem;text-align:left;border-bottom:1px solid var(--kulkam-border)}th{background:#fafafa;font-weight:600}.alert-banner{padding:.75rem;border-radius:8px;margin-bottom:1rem;font-size:.9rem}.alert-banner.error{background:#ffebee;color:#c62828}.alert-banner.success{background:#e8f5e9;color:#2e7d32}.alert-banner.info{background:#e3f2fd;color:#1565c0}.login-hint{font-size:.9rem;color:var(--kulkam-gray);margin-bottom:1rem}.twofa-back{margin-top:.5rem}.twofa-setup-display{margin:1rem 0;text-align:center}.twofa-scan-hint{font-size:.9rem;color:var(--kulkam-gray);margin-bottom:.75rem}.twofa-qr{display:block;margin:0 auto 1rem;border:1px solid var(--kulkam-border);border-radius:8px;padding:8px;background:#fff}.twofa-manual-key{text-align:left;margin-top:.75rem;font-size:.85rem}.twofa-manual-key summary{cursor:pointer;color:var(--kulkam-gray);margin-bottom:.5rem}.twofa-setup-box,.twofa-setup-form{margin:1rem 0;padding:.75rem;background:#fafafa;border:1px solid var(--kulkam-border);border-radius:6px}.twofa-secret-label{font-size:.8rem;color:var(--kulkam-gray);margin-bottom:.25rem}.twofa-secret{display:block;font-family:ui-monospace,monospace;font-size:.85rem;word-break:break-all;padding:.5rem;background:#fff;border:1px solid var(--kulkam-border);border-radius:4px}.twofa-uri{margin-top:.5rem;font-size:.85rem}.twofa-uri a{color:var(--kulkam-green);text-decoration:underline}.twofa-status-list{margin:1rem 0;padding-left:1.25rem}.twofa-disable-form{margin-top:2rem;padding-top:1rem;border-top:1px solid var(--kulkam-border)}.muted{color:var(--kulkam-gray);font-size:.9rem;margin-bottom:1rem}.modal-backdrop{position:fixed;top:0;right:0;bottom:0;left:0;background:#00000080;display:flex;align-items:flex-end;justify-content:center;z-index:200;padding:1rem}.modal{background:#fff;border-radius:12px 12px 0 0;width:100%;max-width:520px;max-height:90vh;overflow-y:auto;padding:1.25rem}@media (min-width: 640px){.modal-backdrop{align-items:center}.modal{border-radius:12px}.topbar-logo{height:42px}.topbar-title{font-size:1rem}.datetime-clock{font-size:.8rem}}.login-page{min-height:100vh;display:flex;align-items:center;justify-content:center;padding:1rem;background:linear-gradient(135deg,#000,#1a1a1a,#2e7d32)}.login-card{width:100%;max-width:400px;background:#fff;border-radius:12px;padding:1.5rem}.login-brand{display:flex;justify-content:center;margin-bottom:.5rem}.login-logo{max-width:220px;width:100%;height:auto;display:block}.login-card h1{text-align:center;margin-bottom:.25rem}.login-card .subtitle{text-align:center;color:var(--kulkam-gray);font-size:.85rem;margin-bottom:1.5rem}.stat-row{display:grid;grid-template-columns:repeat(auto-fit,minmax(120px,1fr));gap:.75rem}.stat-box{background:#fafafa;border-radius:8px;padding:.75rem;text-align:center}.stat-box .num{font-size:1.25rem;font-weight:700;color:var(--kulkam-green)}.stat-box .lbl{font-size:.7rem;color:var(--kulkam-gray)}@media (max-width: 480px){.topbar-title{display:none}.datetime-clock{font-size:.65rem;max-width:9rem;overflow:hidden;text-overflow:ellipsis}}
