:root{--brand-50: #eef2ff;--brand-100: #e0e7ff;--brand-200: #c7d2fe;--brand-400: #818cf8;--brand-500: #6366f1;--brand-600: #4f46e5;--brand-700: #4338ca;--accent-blue: #3b82f6;--accent-purple: #8b5cf6;--accent-teal: #14b8a6;--accent-orange: #f97316;--accent-pink: #ec4899;--accent-amber: #f59e0b;--success: #10b981;--success-bg: #ecfdf5;--danger: #ef4444;--danger-bg: #fef2f2;--warning: #f59e0b;--warning-bg: #fffbeb;--info: #3b82f6;--info-bg: #eff6ff;--bg-app: #f4f5fb;--bg-card: #ffffff;--bg-subtle: #f8f9fd;--border: #e7e9f3;--border-soft: #eef0f8;--text-primary: #0f172a;--text-secondary: #64748b;--text-muted: #94a3b8;--text-on-brand: #ffffff;--shadow-sm: 0 1px 2px rgba(15, 23, 42, .04), 0 1px 3px rgba(15, 23, 42, .03);--shadow-md: 0 4px 16px rgba(79, 70, 229, .07), 0 2px 6px rgba(15, 23, 42, .04);--shadow-lg: 0 12px 32px rgba(79, 70, 229, .12), 0 4px 12px rgba(15, 23, 42, .05);--radius-sm: 8px;--radius-md: 14px;--radius-lg: 20px;--radius-pill: 999px;--sidebar-w: 264px;--topbar-h: 68px;--bottom-nav-h: 64px;--topbar-bg: rgba(244, 245, 251, .85);--ease: cubic-bezier(.4, 0, .2, 1)}:root[data-theme=dark]{--bg-app: #000000;--bg-card: #000000;--bg-subtle: #0a0a0a;--border: #1f1f1f;--border-soft: #161616;--text-primary: #ffffff;--text-secondary: #a3aecb;--text-muted: #6b7494;--shadow-sm: 0 1px 2px rgba(0,0,0,.6);--shadow-md: 0 4px 16px rgba(0,0,0,.65);--shadow-lg: 0 12px 32px rgba(0,0,0,.75);--topbar-bg: rgba(0, 0, 0, .85)}*{box-sizing:border-box}html,body{height:100%}body{margin:0;background:var(--bg-app);color:var(--text-primary);font-family:Inter,-apple-system,BlinkMacSystemFont,Segoe UI,Roboto,Helvetica,Arial,sans-serif;-webkit-font-smoothing:antialiased;-webkit-tap-highlight-color:transparent;padding-top:env(safe-area-inset-top,0px);padding-bottom:env(safe-area-inset-bottom,0px)}html.is-native{zoom:.85}html.is-native .kiosk-shell{zoom:calc(1 / .85)}h1,h2,h3,h4,p{margin:0}a{color:inherit;text-decoration:none}button{font-family:inherit}::selection{background:var(--brand-200)}*{scrollbar-width:thin;scrollbar-color:var(--border) transparent}*::-webkit-scrollbar{width:8px;height:8px}*::-webkit-scrollbar-thumb{background:var(--border);border-radius:999px}*::-webkit-scrollbar-thumb:hover{background:var(--text-muted)}.page{padding:24px 28px 40px;max-width:1400px;margin:0 auto}.page-head{display:flex;align-items:flex-end;justify-content:space-between;gap:16px;margin-bottom:22px;flex-wrap:wrap}.page-title{font-size:1.5rem;font-weight:800;letter-spacing:-.02em;color:var(--text-primary)}.page-sub{font-size:.87rem;color:var(--text-secondary);margin-top:4px}.grid{display:grid;gap:18px}.grid-stats{grid-template-columns:repeat(auto-fit,minmax(220px,1fr))}.grid-2{grid-template-columns:repeat(auto-fit,minmax(320px,1fr))}.card{background:var(--bg-card);border:1px solid var(--border-soft);border-radius:var(--radius-lg);box-shadow:var(--shadow-sm);padding:20px;transition:box-shadow .2s var(--ease)}.card-title{font-size:.95rem;font-weight:700;color:var(--text-primary)}.card-flush{padding:0;overflow:hidden}.btn{display:inline-flex;align-items:center;justify-content:center;gap:8px;padding:10px 18px;border-radius:var(--radius-md);border:1px solid transparent;font-size:.85rem;font-weight:600;cursor:pointer;transition:transform .12s var(--ease),box-shadow .2s var(--ease),background .15s var(--ease),border-color .15s var(--ease);white-space:nowrap;line-height:1.2}.btn:active{transform:scale(.97)}.btn:disabled{opacity:.55;cursor:not-allowed;transform:none}.btn-sm{padding:7px 12px;font-size:.78rem;border-radius:var(--radius-sm)}.btn-primary{background:linear-gradient(135deg,var(--brand-600),var(--brand-500));color:#fff;box-shadow:0 4px 14px #4f46e54d}.btn-primary:hover{box-shadow:0 6px 18px #4f46e561}.btn-secondary{background:var(--bg-subtle);color:var(--text-primary);border-color:var(--border)}.btn-secondary:hover{background:var(--border-soft)}.btn-ghost{background:transparent;color:var(--text-secondary)}.btn-ghost:hover{background:var(--bg-subtle);color:var(--text-primary)}.btn-danger{background:var(--danger-bg);color:var(--danger)}.btn-danger:hover{background:#fde2e2}.btn-icon{width:36px;height:36px;padding:0;border-radius:var(--radius-sm)}.field{display:flex;flex-direction:column;gap:6px}.field label{font-size:.78rem;font-weight:600;color:var(--text-secondary)}.input,select.input,textarea.input{width:100%;padding:10px 13px;border-radius:var(--radius-sm);border:1.5px solid var(--border);background:var(--bg-card);color:var(--text-primary);font-size:.87rem;font-family:inherit;transition:border-color .15s var(--ease),box-shadow .15s var(--ease)}.input:focus,select.input:focus,textarea.input:focus{outline:none;border-color:var(--brand-500);box-shadow:0 0 0 3px var(--brand-100)}textarea.input{resize:vertical;min-height:80px}.form-grid{display:grid;grid-template-columns:repeat(auto-fit,minmax(200px,1fr));gap:14px}.badge{display:inline-flex;align-items:center;gap:5px;padding:4px 10px;border-radius:var(--radius-pill);font-size:.72rem;font-weight:700;letter-spacing:.01em;text-transform:capitalize}.badge-dot{width:6px;height:6px;border-radius:50%;background:currentColor}.badge-blue{background:var(--info-bg);color:var(--info)}.badge-green{background:var(--success-bg);color:var(--success)}.badge-red{background:var(--danger-bg);color:var(--danger)}.badge-amber{background:var(--warning-bg);color:var(--warning)}.badge-gray{background:var(--bg-subtle);color:var(--text-secondary)}.badge-purple{background:var(--brand-50);color:var(--brand-600)}.table-wrap{overflow-x:auto}table.data-table{width:100%;border-collapse:collapse;font-size:.85rem}table.data-table th{text-align:left;font-size:.72rem;font-weight:700;text-transform:uppercase;letter-spacing:.05em;color:var(--text-muted);padding:13px 16px;border-bottom:1px solid var(--border-soft);white-space:nowrap}table.data-table td{padding:13px 16px;border-bottom:1px solid var(--border-soft);color:var(--text-primary);vertical-align:middle}table.data-table tbody tr{transition:background .12s var(--ease)}table.data-table tbody tr:hover{background:var(--bg-subtle)}table.data-table tbody tr:last-child td{border-bottom:none}.toolbar{display:flex;align-items:center;gap:10px;flex-wrap:wrap;margin-bottom:16px}.search-box{position:relative;flex:1;min-width:220px;max-width:340px}.search-box .input{padding-left:36px}.search-box svg{position:absolute;left:12px;top:50%;transform:translateY(-50%);color:var(--text-muted)}.empty-state{display:flex;flex-direction:column;align-items:center;justify-content:center;padding:56px 20px;color:var(--text-muted);text-align:center;gap:10px}.empty-state svg{opacity:.5}.empty-state strong{color:var(--text-secondary);font-size:.95rem}.spinner{width:22px;height:22px;border-radius:50%;border:3px solid var(--border);border-top-color:var(--brand-500);animation:spin .7s linear infinite}@keyframes spin{to{transform:rotate(360deg)}}.loading-row{display:flex;align-items:center;justify-content:center;padding:48px 0}.modal-backdrop{position:fixed;top:0;right:0;bottom:0;left:0;background:#0f172a73;-webkit-backdrop-filter:blur(2px);backdrop-filter:blur(2px);display:flex;align-items:center;justify-content:center;padding:20px;z-index:500;animation:fadeIn .15s var(--ease)}.modal-panel{background:var(--bg-card);border-radius:var(--radius-lg);box-shadow:var(--shadow-lg);width:100%;max-width:560px;max-height:88vh;display:flex;flex-direction:column;animation:popIn .18s var(--ease)}.modal-head{display:flex;align-items:center;justify-content:space-between;padding:18px 22px;border-bottom:1px solid var(--border-soft)}.modal-title{font-size:1.05rem;font-weight:800}.modal-body{padding:20px 22px;overflow-y:auto;display:flex;flex-direction:column;gap:14px}.modal-foot{display:flex;justify-content:flex-end;gap:10px;padding:16px 22px;border-top:1px solid var(--border-soft)}@keyframes fadeIn{0%{opacity:0}to{opacity:1}}@keyframes popIn{0%{opacity:0;transform:translateY(8px) scale(.98)}to{opacity:1;transform:translateY(0) scale(1)}}.selfie-overlay{position:fixed;top:0;right:0;bottom:0;left:0;background:#0f172a99;display:flex;align-items:center;justify-content:center;padding:20px;z-index:600;animation:fadeIn .15s var(--ease)}.selfie-modal{background:var(--bg-card);border-radius:var(--radius-lg);box-shadow:var(--shadow-lg);width:100%;max-width:420px;max-height:92vh;overflow-y:auto;display:flex;flex-direction:column;animation:popIn .18s var(--ease)}.selfie-modal__header{display:flex;align-items:center;justify-content:space-between;padding:16px 18px;border-bottom:1px solid var(--border-soft)}.selfie-modal__header h3{font-size:1.02rem;font-weight:800;margin:0}.selfie-modal__close{width:30px;height:30px;border-radius:8px;border:none;background:var(--bg-subtle);color:var(--text-secondary);font-size:1.2rem;line-height:1;cursor:pointer}.selfie-modal__instruction{padding:12px 18px 0;margin:0;color:var(--text-muted);font-size:.85rem}.selfie-stage{padding:16px 18px}.selfie-phase--loading,.selfie-phase--error{display:flex;flex-direction:column;align-items:center;justify-content:center;gap:12px;min-height:260px;text-align:center;color:var(--text-muted)}.selfie-phase--error p{color:var(--danger);font-size:.85rem}.selfie-video-wrap,.selfie-preview-wrap{position:relative;width:100%;aspect-ratio:3/4;border-radius:var(--radius-md);overflow:hidden;background:#000}.selfie-video-wrap video{width:100%;height:100%;object-fit:cover;transform:scaleX(-1)}.selfie-preview-wrap img{width:100%;height:100%;object-fit:cover}.selfie-face-guide{position:absolute;top:12%;right:18%;bottom:12%;left:18%;border:3px solid rgba(255,255,255,.75);border-radius:50%;pointer-events:none}.selfie-countdown{position:absolute;top:0;right:0;bottom:0;left:0;display:flex;align-items:center;justify-content:center;font-size:3.5rem;font-weight:800;color:#fff;background:#00000059}.selfie-flash{position:absolute;top:0;right:0;bottom:0;left:0;background:#fff;opacity:0;pointer-events:none;transition:opacity .12s var(--ease)}.selfie-flash.show{opacity:.85}.selfie-modal__footer{display:flex;justify-content:center;gap:10px;padding:16px 18px 20px}.selfie-shutter{width:62px;height:62px;border-radius:50%;border:3px solid var(--border);background:var(--bg-card);cursor:pointer;display:flex;align-items:center;justify-content:center}.selfie-shutter span{width:46px;height:46px;border-radius:50%;background:var(--brand-600);display:block}.selfie-shutter:disabled{opacity:.5;cursor:not-allowed}.toast-stack{position:fixed;top:18px;right:18px;z-index:900;display:flex;flex-direction:column;gap:10px}.toast{min-width:260px;max-width:360px;background:var(--bg-card);border:1px solid var(--border-soft);border-left:4px solid var(--brand-500);border-radius:var(--radius-sm);box-shadow:var(--shadow-lg);padding:12px 14px;font-size:.83rem;font-weight:600;color:var(--text-primary);animation:slideIn .2s var(--ease)}.toast.success{border-left-color:var(--success)}.toast.error{border-left-color:var(--danger)}@keyframes slideIn{0%{opacity:0;transform:translate(24px)}to{opacity:1;transform:translate(0)}}.coming-soon{display:flex;flex-direction:column;align-items:center;justify-content:center;text-align:center;gap:14px;padding:80px 24px;min-height:50vh}.coming-soon .icon-badge{width:72px;height:72px;border-radius:22px;background:linear-gradient(135deg,var(--brand-500),var(--accent-purple));display:flex;align-items:center;justify-content:center;box-shadow:0 10px 30px #6366f159;color:#fff}.flex{display:flex}.flex-col{display:flex;flex-direction:column}.items-center{align-items:center}.items-start{align-items:flex-start}.justify-between{justify-content:space-between}.justify-center{justify-content:center}.gap-1{gap:6px}.gap-2{gap:10px}.gap-3{gap:16px}.text-muted{color:var(--text-secondary)}.text-sm{font-size:.82rem}.text-center{text-align:center}.font-bold{font-weight:700}.w-full{width:100%}.mt-1{margin-top:6px}.mt-2{margin-top:10px}.mt-3{margin-top:16px}.mb-1{margin-bottom:6px}.mb-2{margin-bottom:10px}.mb-3{margin-bottom:16px}
