:root{--primary: #6366f1;--primary-hover: #4f46e5;--primary-light: #eef2ff;--primary-contrast: #ffffff;--link: #4f46e5;--accent-1: #f9a825;--accent-2: #ff6d00;--accent-grad: linear-gradient(135deg, #f9a825, #ff6d00);--on-accent: #2a1a02;--indigo-50:#eef2ff;--indigo-100:#e0e7ff;--indigo-200:#c7d2fe;--indigo-300:#a5b4fc;--indigo-400:#818cf8;--indigo-500:#6366f1;--indigo-600:#4f46e5;--indigo-700:#4338ca;--slate-50:#f9fafb;--slate-100:#f3f4f6;--slate-200:#e5e7eb;--slate-300:#d1d5db;--slate-400:#9ca3af;--slate-500:#6b7280;--slate-600:#4b5563;--slate-700:#374151;--slate-800:#1f2937;--slate-900:#111827;--success:#22c55e;--success-bg:rgba(34,197,94,.12);--success-text:#15803d;--warning:#f59e0b;--warning-bg:rgba(245,158,11,.12);--warning-text:#b45309;--danger:#ef4444;--danger-bg:rgba(239,68,68,.13);--danger-text:#b91c1c;--info:#38bdf8;--info-bg:rgba(56,189,248,.12);--info-text:#0369a1;--text: var(--slate-800);--text-muted: var(--slate-600);--text-faint: var(--slate-400);--text-invert: #ffffff;--bg: var(--slate-50);--bg-card: #ffffff;--bg-subtle: var(--slate-100);--border: var(--slate-200);--border-strong: var(--slate-300);--sidebar-bg: #1e293b;--sidebar-text: #cbd5e1;--sidebar-active: var(--primary);--focus-ring: rgba(99,102,241,.55);--shadow-focus: 0 0 0 3px var(--focus-ring);--font-display: "Bricolage Grotesque","Inter",system-ui,sans-serif;--font-sans: "Inter",system-ui,-apple-system,"Segoe UI",Roboto,sans-serif;--font-mono: "JetBrains Mono",ui-monospace,SFMono-Regular,Menlo,monospace;--text-xs:.75rem;--text-sm:.875rem;--text-base:1rem;--text-lg:1.125rem;--text-xl:1.25rem;--text-2xl:1.5rem;--text-3xl:2rem;--text-4xl:3.2rem;--weight-light:300;--weight-normal:400;--weight-medium:500;--weight-semibold:600;--weight-bold:700;--weight-extra:800;--leading-tight:1.18;--leading-snug:1.4;--leading-normal:1.6;--leading-relaxed:1.7;--tracking-tight:-.01em;--tracking-wide:.04em;--space-1:.25rem;--space-2:.5rem;--space-3:.75rem;--space-4:1rem;--space-5:1.25rem;--space-6:1.5rem;--space-8:2rem;--space-10:2.5rem;--space-12:3rem;--space-16:4rem;--space-20:5rem;--radius-sm:6px;--radius-md:8px;--radius:8px;--radius-lg:12px;--radius-xl:16px;--radius-full:9999px;--sidebar-width:240px;--content-max:1100px;--content-max-app:1200px;--shadow: 0 1px 3px rgba(0,0,0,.12), 0 1px 2px rgba(0,0,0,.08);--shadow-md: 0 4px 12px rgba(99,102,241,.15);--shadow-lg: 0 10px 25px rgba(0,0,0,.12);--ease:cubic-bezier(.2,0,0,1);--dur-fast:.12s;--dur-base:.18s;--dur-slow:.28s;--grad-hero: linear-gradient(135deg, #f0f7ff 0%, #ffffff 60%, #f5f3ff 100%);--grad-primary: linear-gradient(135deg, var(--primary) 0%, var(--primary-hover) 100%);--grad-auth: linear-gradient(135deg, #e8f2fd 0%, #f0f4ff 100%)}[data-theme=dark]{--bg-base:#0f0c29;--bg-deep:#0a0820;--bg-elevated:#16132e;--bg:#0f0c29;--bg-card:#16132e;--bg-subtle:rgba(255,255,255,.07);--surface:rgba(255,255,255,.045);--surface-2:rgba(255,255,255,.07);--border:rgba(255,255,255,.12);--border-strong:rgba(255,255,255,.18);--text:#f1f5f9;--text-muted:#94a3b8;--text-faint:#64748b;--text-primary:#f1f5f9;--text-secondary:#cbd5e1;--primary:#6366f1;--primary-hover:#4f46e5;--link:#a5b4fc;--success-text:#4ade80;--warning-text:#fbbf24;--danger-text:#fca5a5}:focus-visible{outline:none;box-shadow:var(--shadow-focus);border-radius:var(--radius-sm)}.btn{display:inline-flex;align-items:center;justify-content:center;gap:var(--space-2);padding:.65rem 1.1rem;border:1.5px solid transparent;border-radius:var(--radius-md);font-family:inherit;font-size:.9rem;font-weight:600;line-height:1.2;cursor:pointer;-webkit-user-select:none;user-select:none;transition:background var(--dur-base) var(--ease),color var(--dur-base) var(--ease),border-color var(--dur-base) var(--ease),box-shadow var(--dur-base) var(--ease),opacity var(--dur-base) var(--ease)}.btn:disabled{opacity:.6;cursor:not-allowed}.btn-primary{background:var(--primary);color:#fff}.btn-primary:not(:disabled):hover{background:var(--primary-hover)}.btn-secondary{background:var(--slate-100);color:var(--text)}.btn-secondary:not(:disabled):hover{background:var(--slate-200)}.btn-outline{background:#fff;color:var(--text);border-color:var(--border)}.btn-outline:not(:disabled):hover{background:var(--primary-light);border-color:var(--primary);color:var(--primary-hover)}.btn-ghost{background:transparent;color:var(--primary)}.btn-ghost:not(:disabled):hover{background:var(--primary-light)}.btn-danger{background:var(--danger);color:#fff}.btn-danger:not(:disabled):hover{opacity:.9}.btn-sm{padding:.4rem .85rem;font-size:.8rem}.btn-lg{padding:.8rem 1rem;font-size:.95rem}.btn-block{width:100%}.link-btn{background:none;border:none;color:var(--primary);font-size:inherit;font-weight:600;cursor:pointer;padding:0}.link-btn:hover{text-decoration:underline}.form-group{margin-bottom:var(--space-4)}.form-label,.form-group label{display:block;font-size:.8rem;font-weight:600;margin-bottom:.4rem;color:var(--text)}.form-control{width:100%;padding:.65rem .8rem;font-size:.9rem;color:var(--text);background:#fff;border:1.5px solid var(--border);border-radius:var(--radius-md);outline:none;font-family:inherit;transition:border-color var(--dur-base) var(--ease),box-shadow var(--dur-base) var(--ease)}.form-control::placeholder{color:var(--text-faint)}.form-control:focus{border-color:var(--primary);box-shadow:var(--shadow-focus)}.form-control.error{border-color:var(--danger)}.form-control.error:focus{box-shadow:0 0 0 3px #ef44444d}select.form-control{cursor:pointer}.error-message,.error-text{color:var(--danger-text);font-size:var(--text-xs);margin-top:var(--space-2);display:block}.password-wrapper{position:relative}.password-wrapper .form-control{padding-right:2.6rem}.pw-toggle{position:absolute;right:.5rem;top:50%;transform:translateY(-50%);display:grid;place-items:center;width:32px;height:32px;background:none;border:none;cursor:pointer;color:var(--text-faint);border-radius:var(--radius-sm);transition:color var(--dur-base) var(--ease),background var(--dur-base) var(--ease)}.pw-toggle:hover{color:var(--text);background:var(--bg-subtle)}.pw-toggle svg{width:18px;height:18px}.divider{display:flex;align-items:center;gap:var(--space-3);margin:1.1rem 0;color:var(--text-faint);font-size:.78rem}.divider:before,.divider:after{content:"";flex:1;height:1px;background:var(--border)}.alert{display:flex;gap:var(--space-2);align-items:center;padding:.7rem .85rem;border-radius:var(--radius-md);margin-bottom:var(--space-4);font-size:.85rem;border:1px solid transparent}.alert-error{background:var(--danger-bg);color:var(--danger-text);border-color:#ef444440}.alert-success{background:var(--success-bg);color:var(--success-text);border-color:#22c55e40}.alert-warning{background:var(--warning-bg);color:var(--warning-text);border-color:#f59e0b40}.alert-info{background:var(--info-bg);color:var(--info-text);border-color:#38bdf840}.pill{display:inline-flex;align-items:center;gap:6px;padding:.25rem .6rem;border-radius:var(--radius-full);font-size:.78rem;font-weight:600;border:1px solid transparent}.pill-success{background:var(--success-bg);color:var(--success-text);border-color:#22c55e40}.pill-warning{background:var(--warning-bg);color:var(--warning-text);border-color:#f59e0b40}.pill-danger{background:var(--danger-bg);color:var(--danger-text);border-color:#ef444440}.pill-info{background:var(--info-bg);color:var(--info-text);border-color:#38bdf840}.badge{display:inline-flex;align-items:center;gap:4px;padding:.2rem .55rem;border-radius:var(--radius-full);font-size:.72rem;font-weight:600;background:var(--bg-subtle);color:var(--text-muted)}.badge--active,.badge--confirmed,.badge--success{background:var(--success-bg);color:var(--success-text)}.badge--pending,.badge--warning{background:var(--warning-bg);color:var(--warning-text)}.badge--inactive,.badge--muted{background:var(--slate-100);color:var(--slate-600)}.badge--danger,.badge--cancelled,.badge--noshow{background:var(--danger-bg);color:var(--danger-text)}.badge--info{background:var(--info-bg);color:var(--info-text)}.loading{display:inline-block;width:16px;height:16px;border:2px solid rgba(99,102,241,.25);border-top-color:var(--primary);border-radius:50%;animation:spin .65s linear infinite;vertical-align:middle}.btn-primary .loading,.btn-danger .loading{border-color:#fff6;border-top-color:#fff}@keyframes spin{to{transform:rotate(360deg)}}.card{background:var(--bg-card);border:1px solid var(--border);border-radius:var(--radius-lg);box-shadow:var(--shadow);padding:1.4rem}.stat-card{background:var(--bg-card);border:1px solid var(--border);border-radius:var(--radius-lg);box-shadow:var(--shadow);padding:1.2rem 1.3rem;display:flex;flex-direction:column;gap:.35rem;justify-content:center}.stat-card__value{font-family:var(--font-display);font-weight:700;font-size:2rem;line-height:1.1;color:var(--text)}.stat-card__label{color:var(--text-muted);font-size:.85rem}.stat-card--pending .stat-card__value{color:var(--warning-text)}.stat-card--danger .stat-card__value{color:var(--danger-text)}.stat-card--success .stat-card__value{color:var(--success-text)}.app-card{cursor:pointer;background:var(--bg-card);border:1px solid var(--border);border-radius:var(--radius-lg);padding:1.1rem;display:flex;gap:.85rem;align-items:center;box-shadow:var(--shadow);text-decoration:none;color:inherit;transition:transform var(--dur-base) var(--ease),box-shadow var(--dur-base) var(--ease),border-color var(--dur-base) var(--ease)}.app-card:hover{transform:translateY(-3px);box-shadow:var(--shadow-md);border-color:var(--indigo-200);text-decoration:none}.app-card__icon{width:42px;height:42px;border-radius:11px;background:var(--primary-light);display:flex;align-items:center;justify-content:center;flex-shrink:0;color:var(--primary)}.app-card__name{font-weight:600;font-size:.95rem}.app-card__desc{font-size:.78rem;color:var(--text-muted)}.data-table__head{font-size:.7rem;text-transform:uppercase;letter-spacing:.06em;color:var(--text-faint);padding:.6rem 1.3rem;background:var(--bg-subtle)}.data-table__row{padding:.85rem 1.3rem;border-bottom:1px solid var(--border)}.ving-modal-backdrop{position:fixed;inset:0;background:#00000073;z-index:300;display:flex;align-items:center;justify-content:center;padding:1.5rem;animation:backdropIn .2s var(--ease) both}.ving-modal{background:var(--bg-card);border-radius:var(--radius-xl);box-shadow:var(--shadow-lg);width:100%;max-width:480px;overflow:hidden;animation:modalPop .25s var(--ease) both}.ving-modal--sm{max-width:420px}.ving-modal-header{padding:1.4rem 1.5rem 0}.ving-modal-header--gradient{background:var(--grad-primary);color:#fff;padding:1.2rem 1.5rem;display:flex;align-items:center;gap:.6rem}.ving-modal-title{font-family:var(--font-display);font-weight:700;font-size:1.15rem;margin:0}.ving-modal-body{padding:1.5rem}.ving-modal-footer{display:flex;gap:.6rem;justify-content:flex-end;padding:1.3rem 1.5rem}.ving-toast{position:fixed;bottom:1.4rem;left:50%;transform:translate(-50%);background:var(--slate-900);color:#fff;padding:.75rem 1.1rem;border-radius:var(--radius-md);font-size:.85rem;box-shadow:var(--shadow-lg);z-index:200;animation:toastIn .3s var(--ease) both;display:flex;align-items:center;gap:.5rem}.sr-only{position:absolute;width:1px;height:1px;padding:0;margin:-1px;overflow:hidden;clip:rect(0,0,0,0);white-space:nowrap;border:0}@media(prefers-reduced-motion:reduce){*,*:before,*:after{animation-duration:.01ms!important;transition-duration:.01ms!important}}*,*:before,*:after{box-sizing:border-box}html{-webkit-text-size-adjust:100%}html,body{margin:0;padding:0}body{font-family:var(--font-sans);font-size:15px;line-height:var(--leading-normal);color:var(--text);background:var(--bg);min-height:100vh;-webkit-font-smoothing:antialiased;text-rendering:optimizeLegibility}h1,h2,h3,h4,.page-title{font-family:var(--font-display);font-weight:700;line-height:var(--leading-tight);letter-spacing:var(--tracking-tight);color:var(--text)}a{color:var(--primary);text-decoration:none;transition:color var(--dur-fast) var(--ease)}a:hover{text-decoration:underline}code,kbd,samp,.mono{font-family:var(--font-mono)}input,button,select,textarea{font-family:var(--font-sans)}::selection{background:var(--indigo-200)}@keyframes screenIn{0%{opacity:0;transform:translateY(10px)}to{opacity:1;transform:none}}@keyframes panelIn{0%{opacity:0;transform:translate(-14px)}to{opacity:1;transform:none}}@keyframes toastIn{0%{opacity:0;transform:translateY(14px)}to{opacity:1;transform:none}}@keyframes modalPop{0%{opacity:0;transform:translateY(12px) scale(.97)}to{opacity:1;transform:none}}@keyframes backdropIn{0%{opacity:0}to{opacity:1}}@keyframes checkPop{0%{transform:scale(0)}60%{transform:scale(1.18)}to{transform:scale(1)}}@keyframes floatY{0%,to{transform:translateY(0)}50%{transform:translateY(-7px)}}.screen-in{animation:screenIn .4s var(--ease) both}
