:root{--accent: #4f46e5;--accent-hover: #4338ca;--bg: #f6f7fb;--surface: #ffffff;--surface-2: #f1f2f7;--row-hover: #eef0fb;--border: #e4e6ef;--text: #1f2430;--text-muted: #6b7280;--shadow: 0 1px 3px rgba(16, 24, 40, .06), 0 1px 2px rgba(16, 24, 40, .04)}[data-theme=dark]{--accent: #818cf8;--accent-hover: #a5b4fc;--bg: #0f1115;--surface: #181b22;--surface-2: #1f232c;--row-hover: #232838;--border: #2a2f3a;--text: #e6e8ee;--text-muted: #9aa3b2;--shadow: 0 1px 3px rgba(0, 0, 0, .4)}*{box-sizing:border-box}body{margin:0;font-family:system-ui,-apple-system,Segoe UI,Roboto,sans-serif;background:var(--bg);color:var(--text)}.topbar{display:flex;align-items:center;gap:14px;padding:12px 24px;background:var(--surface);border-bottom:1px solid var(--border);position:sticky;top:0;z-index:10}.topbar .logo{width:38px;height:38px;border-radius:8px}.topbar .title{font-size:18px;font-weight:700}.topbar .spacer{flex:1}.topbar .lab-tag{padding:3px 10px;border-radius:999px;font-size:13px;font-weight:600;background:var(--surface-2);border:1px solid var(--border);color:var(--text-muted)}.btn{font:inherit;font-weight:600;border:1px solid var(--border);background:var(--surface-2);color:var(--text);padding:8px 14px;border-radius:8px;cursor:pointer;transition:background .12s,border-color .12s}.btn:hover:not(:disabled){border-color:var(--accent)}.btn:disabled{opacity:.5;cursor:not-allowed}.btn-primary{background:var(--accent);border-color:var(--accent);color:#fff}.btn-primary:hover:not(:disabled){background:var(--accent-hover);border-color:var(--accent-hover)}.btn-danger{background:#dc2626;border-color:#dc2626;color:#fff}.btn-danger:hover:not(:disabled){background:#b91c1c;border-color:#b91c1c}.menu{position:relative;display:inline-block}.menu-backdrop{position:fixed;top:0;right:0;bottom:0;left:0;z-index:10}.menu-list{position:absolute;top:calc(100% + 6px);right:0;z-index:11;min-width:180px;background:var(--surface-2);border:1px solid var(--border);border-radius:8px;padding:4px;box-shadow:0 8px 24px #0000002e}.menu-item{display:block;width:100%;text-align:left;font:inherit;font-weight:600;background:transparent;border:none;color:var(--text);padding:8px 12px;border-radius:6px;cursor:pointer}.menu-item:hover:not(:disabled){background:var(--accent);color:#fff}.menu-item:disabled{opacity:.5;cursor:not-allowed}.menu-item:hover:not(:disabled) .muted{color:#fff}.page{padding:24px;max-width:1100px;margin:0 auto}.toolbar{display:flex;align-items:center;gap:16px;margin-bottom:18px;flex-wrap:wrap}.select{font:inherit;color:var(--text);background:var(--surface);border:1px solid var(--border);border-radius:8px;padding:7px 10px}.muted{color:var(--text-muted)}.card{background:var(--surface);border:1px solid var(--border);border-radius:12px;box-shadow:var(--shadow);overflow:hidden}table{width:100%;border-collapse:collapse}thead th{text-align:left;font-size:12px;letter-spacing:.04em;text-transform:uppercase;color:var(--text-muted);padding:12px 16px;border-bottom:1px solid var(--border);background:var(--surface-2)}tbody td{padding:12px 16px;border-bottom:1px solid var(--border);font-size:14px}tbody tr:last-child td{border-bottom:none}tbody tr{transition:background .1s}tbody tr:hover{background:var(--row-hover)}.mono{font-family:ui-monospace,SF Mono,Menlo,monospace;font-size:13px;color:var(--text-muted)}.pill{display:inline-block;padding:4px 10px;border-radius:999px;font-size:12px;font-weight:700;color:#fff;white-space:nowrap}tbody tr.clickable{cursor:pointer}.overlay{position:fixed;top:0;right:0;bottom:0;left:0;background:#0a0c1273;z-index:20;animation:fade .12s ease}.drawer{position:fixed;top:0;right:0;bottom:0;width:420px;max-width:92vw;background:var(--surface);border-left:1px solid var(--border);box-shadow:-8px 0 30px #0000002e;z-index:21;display:flex;flex-direction:column;animation:slide .16s ease}@keyframes fade{0%{opacity:0}}@keyframes slide{0%{transform:translate(24px);opacity:.6}}.drawer-head{display:flex;align-items:center;gap:12px;padding:16px 20px;border-bottom:1px solid var(--border)}.drawer-head .x{margin-left:auto;background:none;border:none;cursor:pointer;font-size:22px;line-height:1;color:var(--text-muted)}.drawer-body{padding:8px 20px 24px;overflow-y:auto}.section-title{font-size:12px;letter-spacing:.04em;text-transform:uppercase;color:var(--text-muted);margin:20px 0 8px}.kv{display:grid;grid-template-columns:120px 1fr;gap:4px 12px;font-size:14px}.kv dt{color:var(--text-muted)}.kv dd{margin:0}.item-card{border:1px solid var(--border);border-radius:8px;padding:10px 12px;margin-bottom:8px;background:var(--surface-2)}.item-card .item-type{font-weight:700;margin-bottom:4px}.item-card .item-spec{font-size:13px;color:var(--text-muted)}.modal{position:fixed;top:50%;left:50%;transform:translate(-50%,-50%);width:640px;max-width:94vw;max-height:88vh;background:var(--surface);border:1px solid var(--border);border-radius:12px;box-shadow:0 16px 50px #0000004d;z-index:21;display:flex;flex-direction:column;animation:fade .12s ease}.input{font:inherit;padding:8px 10px;border-radius:8px;border:1px solid var(--border);background:var(--surface-2);color:var(--text)}.admin-create{display:flex;gap:8px;align-items:center;flex-wrap:wrap;margin:12px 0 4px}.admin-create .input{flex:1;min-width:140px}.lab-card{border:1px solid var(--border);border-radius:10px;padding:12px 14px;margin-top:10px;background:var(--surface-2)}.lab-row{display:flex;align-items:center;justify-content:space-between;gap:12px}.lab-name{font-weight:700}.lab-meta{font-size:13px}.lab-actions{display:flex;gap:6px;flex-wrap:wrap}.lab-users{margin-top:12px;border-top:1px solid var(--border);padding-top:10px}.user-row{display:flex;align-items:center;justify-content:space-between;gap:12px;padding:6px 0}.btn-sm{padding:4px 10px;font-size:13px}.badge{display:inline-block;margin-left:8px;padding:1px 7px;border-radius:999px;font-size:11px;font-weight:700;background:var(--accent);color:#fff}.empty{padding:40px;text-align:center;color:var(--text-muted)}.error{color:#dc2626;margin:0 0 12px}.toggle{display:inline-flex;align-items:center;gap:6px;cursor:pointer;-webkit-user-select:none;user-select:none;color:var(--text-muted);font-size:14px}tbody tr.row-overdue td:first-child{box-shadow:inset 3px 0 #dc2626}tbody tr.row-today td:first-child{box-shadow:inset 3px 0 #d97706}.due-tag{font-size:12px;font-weight:700}.due-tag.overdue{color:#dc2626}.due-tag.today{color:#d97706}.login-wrap{min-height:100vh;display:flex;align-items:center;justify-content:center;background:var(--bg)}.login-card{background:var(--surface);border:1px solid var(--border);border-radius:14px;box-shadow:var(--shadow);padding:32px;width:340px;max-width:92vw;display:flex;flex-direction:column;gap:14px}.login-card h1{margin:0 0 4px;font-size:22px;text-align:center}.login-logo{width:56px;height:56px;border-radius:12px;align-self:center}.login-card label{display:flex;flex-direction:column;gap:6px;font-size:13px}.login-card .select{width:100%}.login-card .btn{margin-top:4px}.idle-cover{position:fixed;top:0;right:0;bottom:0;left:0;z-index:100;cursor:pointer;background:var(--bg);display:flex;flex-direction:column;align-items:center;justify-content:center;gap:10px;-webkit-user-select:none;user-select:none;animation:fade .2s ease}.idle-logo{width:96px;height:96px;border-radius:18px;margin-bottom:12px}.idle-clock{font-size:96px;font-weight:700;line-height:1;color:var(--text)}.idle-date{font-size:20px;color:var(--text-muted)}.idle-hint{margin-top:24px;font-size:15px;color:var(--text-muted);letter-spacing:.04em}
