:root{--bg: #f5f6fb;--bg-elevated: #ffffff;--panel: #ffffff;--panel-soft: #fafbff;--border: #e6e8f0;--border-strong: #cbd2e0;--text: #0f172a;--text-muted: #64748b;--text-subtle: #94a3b8;--primary: #6366f1;--primary-soft: #eef2ff;--primary-strong: #4338ca;--success: #10b981;--success-soft: #d1fae5;--warning: #f59e0b;--warning-soft: #fef3c7;--danger: #ef4444;--danger-soft: #fee2e2;--info: #0ea5e9;--info-soft: #e0f2fe;--shadow-sm: 0 1px 2px rgba(15, 23, 42, .04);--shadow: 0 1px 3px rgba(15, 23, 42, .06), 0 4px 12px rgba(15, 23, 42, .04);--shadow-lg: 0 12px 40px rgba(15, 23, 42, .08), 0 4px 12px rgba(15, 23, 42, .04);--radius-sm: 6px;--radius: 10px;--radius-lg: 16px;--radius-pill: 999px;--gradient-primary: linear-gradient(135deg, #6366f1 0%, #8b5cf6 100%);--gradient-success: linear-gradient(135deg, #10b981 0%, #34d399 100%);--gradient-warning: linear-gradient(135deg, #f59e0b 0%, #fbbf24 100%);--gradient-danger: linear-gradient(135deg, #ef4444 0%, #f87171 100%);--gradient-bg: radial-gradient(ellipse at top left, rgba(99,102,241,.08), transparent 50%), radial-gradient(ellipse at bottom right, rgba(139,92,246,.06), transparent 50%);--transition: .2s cubic-bezier(.4, 0, .2, 1)}[data-theme=dark]{--bg: #0b0d1a;--bg-elevated: #11142a;--panel: #161a36;--panel-soft: #1c2147;--border: #2a2f55;--border-strong: #3d437a;--text: #e2e8f0;--text-muted: #94a3b8;--text-subtle: #64748b;--primary: #818cf8;--primary-soft: rgba(99, 102, 241, .15);--primary-strong: #6366f1;--success: #34d399;--success-soft: rgba(16, 185, 129, .15);--warning: #fbbf24;--warning-soft: rgba(245, 158, 11, .15);--danger: #f87171;--danger-soft: rgba(239, 68, 68, .15);--info: #38bdf8;--info-soft: rgba(14, 165, 233, .15);--shadow-sm: 0 1px 2px rgba(0, 0, 0, .3);--shadow: 0 1px 3px rgba(0, 0, 0, .4), 0 4px 12px rgba(0, 0, 0, .2);--shadow-lg: 0 12px 40px rgba(0, 0, 0, .5), 0 4px 12px rgba(0, 0, 0, .3);--gradient-bg: radial-gradient(ellipse at top left, rgba(99,102,241,.15), transparent 50%), radial-gradient(ellipse at bottom right, rgba(139,92,246,.1), transparent 50%)}*{box-sizing:border-box}html,body{margin:0;padding:0;font-family:Inter,-apple-system,BlinkMacSystemFont,Segoe UI,Roboto,Oxygen,sans-serif;background:var(--bg);color:var(--text);font-size:14px;line-height:1.5;-webkit-font-smoothing:antialiased;transition:background var(--transition),color var(--transition)}body:before{content:"";position:fixed;top:0;right:0;bottom:0;left:0;background:var(--gradient-bg);pointer-events:none;z-index:0}a{color:var(--primary);text-decoration:none;transition:color var(--transition)}a:hover{color:var(--primary-strong);text-decoration:underline}h1,h2,h3,h4{color:var(--text);margin:0 0 8px;font-weight:600;letter-spacing:-.01em}h2{font-size:22px}h3{font-size:16px}button,.btn{font:inherit;cursor:pointer;border:1px solid var(--border);background:var(--panel);color:var(--text);padding:8px 14px;border-radius:var(--radius-sm);font-weight:500;transition:all var(--transition);display:inline-flex;align-items:center;gap:6px}button:hover,.btn:hover{background:var(--panel-soft);border-color:var(--border-strong);transform:translateY(-1px);box-shadow:var(--shadow-sm)}button:active{transform:translateY(0)}button.primary,.btn.primary{background:var(--gradient-primary);color:#fff;border-color:transparent;box-shadow:0 4px 14px #6366f140}button.primary:hover{box-shadow:0 6px 20px #6366f159;transform:translateY(-1px)}button.danger,.btn.danger{color:var(--danger);border-color:var(--danger-soft)}button.danger:hover{background:var(--danger-soft)}button.success,.btn.success{color:var(--success);border-color:var(--success-soft)}button.success:hover{background:var(--success-soft)}button.ghost{background:transparent;border-color:transparent}button.ghost:hover{background:var(--panel-soft)}button:disabled{opacity:.4;cursor:not-allowed;transform:none!important;box-shadow:none!important}button.icon-btn{padding:8px;border-radius:var(--radius-sm);color:var(--text-muted)}button.icon-btn:hover{color:var(--text)}input,select,textarea{font:inherit;padding:9px 12px;border:1px solid var(--border);border-radius:var(--radius-sm);background:var(--panel);color:var(--text);width:100%;transition:border var(--transition),box-shadow var(--transition)}input::placeholder,textarea::placeholder{color:var(--text-subtle)}input:focus,select:focus,textarea:focus{outline:none;border-color:var(--primary);box-shadow:0 0 0 3px #6366f126}input[type=checkbox],input[type=radio]{accent-color:var(--primary);cursor:pointer}.layout{display:flex;min-height:100vh;position:relative;z-index:1}.sidebar{width:240px;background:var(--bg-elevated);border-right:1px solid var(--border);padding:24px 16px;display:flex;flex-direction:column;position:sticky;top:0;height:100vh}.sidebar .brand{display:flex;align-items:center;gap:10px;padding:0 8px;margin-bottom:28px}.sidebar .brand-mark{width:36px;height:36px;border-radius:10px;background:var(--gradient-primary);display:grid;place-items:center;color:#fff;font-weight:700;box-shadow:0 4px 14px #6366f14d}.sidebar .brand-name{font-size:17px;font-weight:700;letter-spacing:-.01em}.sidebar nav{display:flex;flex-direction:column;gap:2px}.sidebar nav .nav-section{font-size:11px;font-weight:600;letter-spacing:.06em;color:var(--text-subtle);text-transform:uppercase;padding:16px 12px 6px}.sidebar nav a{display:flex;align-items:center;gap:10px;padding:9px 12px;border-radius:var(--radius-sm);color:var(--text-muted);font-weight:500;transition:all var(--transition);position:relative}.sidebar nav a:hover{background:var(--panel-soft);color:var(--text);text-decoration:none}.sidebar nav a.router-link-active{background:var(--primary-soft);color:var(--primary)}.sidebar nav a.router-link-active:before{content:"";position:absolute;left:-16px;top:8px;bottom:8px;width:3px;background:var(--gradient-primary);border-radius:0 3px 3px 0}.sidebar nav a .nav-icon{width:18px;height:18px;flex-shrink:0}.main{flex:1;display:flex;flex-direction:column;min-width:0}.topbar{height:64px;background:var(--bg-elevated);border-bottom:1px solid var(--border);padding:0 28px;display:flex;align-items:center;justify-content:space-between;position:sticky;top:0;z-index:10;-webkit-backdrop-filter:blur(8px);backdrop-filter:blur(8px)}.topbar .page-title{font-size:15px;font-weight:600;color:var(--text)}.topbar-actions{display:flex;align-items:center;gap:8px}.user-menu{position:relative}.user-menu-btn{display:flex;align-items:center;gap:10px;padding:6px 10px 6px 6px;background:transparent;border:1px solid transparent;border-radius:var(--radius);cursor:pointer;transition:all var(--transition)}.user-menu-btn:hover{background:var(--panel-soft);border-color:var(--border);transform:none}.avatar{width:32px;height:32px;border-radius:50%;background:var(--gradient-primary);color:#fff;display:grid;place-items:center;font-weight:600;font-size:13px;flex-shrink:0}.user-menu-btn .name{font-weight:500;color:var(--text);font-size:13px;line-height:1.2;text-align:left}.user-menu-btn .role{font-size:11px;color:var(--text-muted);line-height:1.2;text-align:left}.user-menu-pop{position:absolute;top:calc(100% + 8px);right:0;min-width:240px;background:var(--bg-elevated);border:1px solid var(--border);border-radius:var(--radius);box-shadow:var(--shadow-lg);overflow:hidden;z-index:100;animation:popIn .16s ease-out}@keyframes popIn{0%{opacity:0;transform:translateY(-4px) scale(.97)}to{opacity:1;transform:none}}.user-menu-pop .user-info{padding:14px 16px;border-bottom:1px solid var(--border)}.user-menu-pop .user-info .name{font-weight:600;color:var(--text)}.user-menu-pop .user-info .email{font-size:12px;color:var(--text-muted);margin-top:2px}.user-menu-pop a,.user-menu-pop button{display:flex;align-items:center;gap:10px;width:100%;padding:10px 16px;background:transparent;border:none;color:var(--text);text-align:left;border-radius:0;box-shadow:none!important;transform:none!important;cursor:pointer;transition:background var(--transition);font-weight:500;font-size:13px}.user-menu-pop a:hover,.user-menu-pop button:hover{background:var(--panel-soft);text-decoration:none}.user-menu-pop button.logout-btn{color:var(--danger);border-top:1px solid var(--border)}.page-content{padding:28px 36px;flex:1}.page-header{display:flex;justify-content:space-between;align-items:flex-end;margin-bottom:24px;flex-wrap:wrap;gap:14px}.page-header .title-block h2{margin:0 0 4px;font-size:26px;letter-spacing:-.02em}.page-header .title-block p{margin:0;color:var(--text-muted);font-size:14px}.card{background:var(--panel);border:1px solid var(--border);border-radius:var(--radius);padding:20px;box-shadow:var(--shadow-sm);transition:box-shadow var(--transition),transform var(--transition)}.card.hover:hover{box-shadow:var(--shadow);transform:translateY(-2px)}.kpi-grid{display:grid;grid-template-columns:repeat(auto-fit,minmax(200px,1fr));gap:16px;margin-bottom:24px}.kpi{padding:18px 20px;position:relative;overflow:hidden}.kpi .kpi-head{display:flex;align-items:center;justify-content:space-between;margin-bottom:6px}.kpi .label{color:var(--text-muted);font-size:12px;font-weight:600;text-transform:uppercase;letter-spacing:.06em}.kpi .kpi-icon{width:32px;height:32px;border-radius:8px;display:grid;place-items:center;background:var(--primary-soft);color:var(--primary)}.kpi .value{font-size:26px;font-weight:700;color:var(--text);letter-spacing:-.02em;margin-top:4px}.kpi .delta{display:inline-flex;align-items:center;gap:4px;font-size:12px;font-weight:600;margin-top:6px;padding:2px 8px;border-radius:var(--radius-pill)}.kpi .delta.up{color:var(--success);background:var(--success-soft)}.kpi .delta.down{color:var(--danger);background:var(--danger-soft)}.kpi .delta.flat{color:var(--text-muted);background:var(--panel-soft)}.kpi .delta-context{font-size:11px;color:var(--text-subtle);margin-left:6px}.grid-2{display:grid;grid-template-columns:repeat(auto-fit,minmax(380px,1fr));gap:18px}.grid-3{display:grid;grid-template-columns:repeat(auto-fit,minmax(280px,1fr));gap:16px}table{width:100%;border-collapse:collapse}th,td{text-align:left;padding:12px 14px;border-bottom:1px solid var(--border);font-size:13px}th{background:var(--panel-soft);font-weight:600;color:var(--text-muted);text-transform:uppercase;font-size:11px;letter-spacing:.06em}tbody tr{transition:background var(--transition)}tbody tr:hover td{background:var(--panel-soft)}.badge{display:inline-flex;align-items:center;gap:4px;padding:3px 10px;border-radius:var(--radius-pill);background:var(--primary-soft);color:var(--primary);font-size:11px;font-weight:600;line-height:1.4}.badge.admin{background:var(--warning-soft);color:var(--warning)}.badge.success{background:var(--success-soft);color:var(--success)}.badge.danger{background:var(--danger-soft);color:var(--danger)}.badge.warning{background:var(--warning-soft);color:var(--warning)}.badge.info{background:var(--info-soft);color:var(--info)}.badge.dot:before{content:"";width:6px;height:6px;background:currentColor;border-radius:50%}.month-pill{display:inline-flex;align-items:center;padding:4px 12px;border-radius:var(--radius-pill);background:var(--gradient-primary);color:#fff;font-size:12px;font-weight:600;box-shadow:0 2px 8px #6366f14d}.auth-page{display:flex;align-items:center;justify-content:center;min-height:100vh;padding:20px;position:relative;z-index:1}.auth-page .auth-card{width:100%;max-width:400px;background:var(--panel);border:1px solid var(--border);border-radius:var(--radius-lg);padding:36px 32px;box-shadow:var(--shadow-lg)}.auth-page .brand-stack{display:flex;align-items:center;gap:12px;margin-bottom:24px}.auth-page .brand-mark{width:44px;height:44px;border-radius:12px;background:var(--gradient-primary);display:grid;place-items:center;color:#fff;font-weight:700;font-size:18px;box-shadow:0 4px 14px #6366f14d}.form-group{margin-bottom:14px}.form-group label{display:block;margin-bottom:6px;font-weight:500;font-size:13px;color:var(--text)}.dropzone{border:2px dashed var(--border-strong);border-radius:var(--radius);padding:32px 20px;text-align:center;background:var(--panel-soft);transition:all var(--transition);cursor:pointer}.dropzone:hover,.dropzone.drag-active{border-color:var(--primary);background:var(--primary-soft)}.dropzone .dz-icon{width:48px;height:48px;margin:0 auto 12px;background:var(--primary-soft);color:var(--primary);border-radius:50%;display:grid;place-items:center}.dropzone .dz-title{font-weight:600;color:var(--text);margin-bottom:4px}.dropzone .dz-hint{color:var(--text-muted);font-size:12px}.dropzone input[type=file]{display:none}.dropzone .file-preview{display:inline-flex;align-items:center;gap:10px;background:var(--panel);padding:10px 14px;border-radius:var(--radius-sm);border:1px solid var(--border);margin-top:10px}.flex{display:flex;gap:10px;align-items:center}.flex-wrap{display:flex;gap:10px;align-items:center;flex-wrap:wrap}.flex-1{flex:1}.muted{color:var(--text-muted)}.small{font-size:12px;color:var(--text-muted)}.error{color:var(--danger);margin-top:8px;font-size:13px}.text-success{color:var(--success)}.text-danger{color:var(--danger)}.toolbar{display:flex;flex-wrap:wrap;gap:10px;margin-bottom:18px;align-items:center}.toolbar input,.toolbar select{width:auto;min-width:160px}.chart-wrap{position:relative;height:280px}.empty{text-align:center;padding:50px 20px;color:var(--text-muted)}.empty .empty-icon{width:56px;height:56px;margin:0 auto 14px;background:var(--panel-soft);color:var(--text-subtle);border-radius:50%;display:grid;place-items:center}.insights-grid{display:grid;grid-template-columns:repeat(auto-fit,minmax(280px,1fr));gap:14px}.insight{background:var(--panel);border:1px solid var(--border);border-radius:var(--radius);padding:16px 18px;display:flex;gap:12px;align-items:flex-start;transition:all var(--transition)}.insight:hover{transform:translateY(-2px);box-shadow:var(--shadow)}.insight .ins-icon{width:36px;height:36px;border-radius:10px;display:grid;place-items:center;flex-shrink:0;background:var(--info-soft);color:var(--info)}.insight.warning .ins-icon{background:var(--warning-soft);color:var(--warning)}.insight.success .ins-icon{background:var(--success-soft);color:var(--success)}.insight.danger .ins-icon{background:var(--danger-soft);color:var(--danger)}.insight .ins-body{flex:1;min-width:0}.insight .ins-title{font-weight:600;color:var(--text);margin-bottom:2px;font-size:14px}.insight .ins-text{color:var(--text-muted);font-size:12px;line-height:1.5}.skel{background:linear-gradient(90deg,var(--panel-soft) 0%,var(--border) 50%,var(--panel-soft) 100%);background-size:200% 100%;animation:shimmer 1.4s ease-in-out infinite;border-radius:var(--radius-sm)}@keyframes shimmer{0%{background-position:200% 0}to{background-position:-200% 0}}.skel.text{height:14px;margin:8px 0}.skel.title{height:22px;width:60%;margin:8px 0}.skel.kpi-block{height:90px}.skel.chart-block{height:280px}.toast-stack{position:fixed;bottom:24px;right:24px;display:flex;flex-direction:column;gap:10px;z-index:9999;pointer-events:none}.toast{pointer-events:auto;min-width:280px;max-width:380px;background:var(--bg-elevated);border:1px solid var(--border);border-left:4px solid var(--info);border-radius:var(--radius);padding:12px 16px;box-shadow:var(--shadow-lg);display:flex;align-items:flex-start;gap:10px;animation:toastIn .25s cubic-bezier(.16,1,.3,1)}.toast.success{border-left-color:var(--success)}.toast.warning{border-left-color:var(--warning)}.toast.error{border-left-color:var(--danger)}.toast .toast-icon{width:20px;height:20px;flex-shrink:0;color:var(--info)}.toast.success .toast-icon{color:var(--success)}.toast.warning .toast-icon{color:var(--warning)}.toast.error .toast-icon{color:var(--danger)}.toast .toast-body{flex:1;min-width:0}.toast .toast-title{font-weight:600;font-size:13px;color:var(--text)}.toast .toast-text{font-size:12px;color:var(--text-muted);margin-top:2px}.toast .toast-close{background:transparent;border:none;padding:0;color:var(--text-subtle);cursor:pointer;box-shadow:none!important;transform:none!important}@keyframes toastIn{0%{opacity:0;transform:translate(20px)}to{opacity:1;transform:none}}@media (max-width: 768px){.sidebar{width:64px;padding:16px 8px}.sidebar .brand-name,.sidebar nav a span:not(.nav-icon),.sidebar .nav-section{display:none}.page-content{padding:18px}.topbar{padding:0 16px}.user-menu-btn .name,.user-menu-btn .role{display:none}}
