@import"https://fonts.googleapis.com/css2?family=Geist:wght@400;500;600;700&family=Geist+Mono:wght@400;500&display=swap";:root{--font-family-base: "Geist", -apple-system, BlinkMacSystemFont, "Segoe UI", system-ui, sans-serif;--font-family-mono: "Geist Mono", "JetBrains Mono", "Fira Code", monospace;--font-size-xs: .75rem;--font-size-sm: .875rem;--font-size-base: 1rem;--font-size-lg: 1.125rem;--font-size-xl: 1.25rem;--font-size-2xl: 1.5rem;--font-size-3xl: 2rem;--font-weight-regular: 400;--font-weight-medium: 500;--font-weight-semibold: 600;--font-weight-bold: 700;--font-weight-extrabold: 800;--font-weight-heading: 700;--line-height-tight: 1.25;--line-height-base: 1.5;--line-height-relaxed: 1.75;--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;--radius-sm: .375rem;--radius-md: .5rem;--radius-lg: .75rem;--radius-xl: 1rem;--radius-2xl: 1.5rem;--radius-full: 9999px;--transition-fast: .1s cubic-bezier(.4, 0, .2, 1);--transition-base: .2s cubic-bezier(.4, 0, .2, 1);--transition-slow: .35s cubic-bezier(.34, 1.56, .64, 1);--sidebar-width: 240px;--sidebar-width-collapsed: 60px}:root,[data-theme=light]{color-scheme:light;--color-bg-primary: #F8FAFC;--color-bg-secondary: #F1F5F9;--color-bg-tertiary: #FFFFFF;--color-surface: #FFFFFF;--color-surface-hover: #F8FAFC;--color-surface-active: #F1F5F9;--color-border: #E2E8F0;--color-border-strong: #CBD5E1;--color-accent: #4F46E5;--color-accent-hover: #4338CA;--color-accent-muted: rgba(79, 70, 229, .08);--color-text-primary: #0F172A;--color-text-secondary: #475569;--color-text-muted: #94A3B8;--color-text-inverse: #FFFFFF;--color-success: #059669;--color-success-muted: rgba(5, 150, 105, .1);--color-warning: #D97706;--color-warning-muted: rgba(217, 119, 6, .1);--color-danger: #DC2626;--color-danger-muted: rgba(220, 38, 38, .1);--color-info: #0284C7;--color-info-muted: rgba(2, 132, 199, .1);--shadow-sm: 0 1px 2px rgba(15, 23, 42, .06);--shadow-md: 0 4px 8px rgba(15, 23, 42, .08), 0 1px 3px rgba(15, 23, 42, .06);--shadow-lg: 0 8px 24px rgba(15, 23, 42, .1), 0 2px 6px rgba(15, 23, 42, .06);--shadow-accent: 0 4px 14px rgba(79, 70, 229, .25)}[data-theme=dark]{color-scheme:dark;--color-bg-primary: #0F172A;--color-bg-secondary: #1E293B;--color-bg-tertiary: #1E293B;--color-surface: #1E293B;--color-surface-hover: #273549;--color-surface-active: #334155;--color-border: #334155;--color-border-strong: #475569;--color-accent: #6366F1;--color-accent-hover: #4F46E5;--color-accent-muted: rgba(99, 102, 241, .15);--color-text-primary: #F8FAFC;--color-text-secondary: #94A3B8;--color-text-muted: #475569;--color-text-inverse: #0F172A;--color-success: #10B981;--color-success-muted: rgba(16, 185, 129, .15);--color-warning: #F59E0B;--color-warning-muted: rgba(245, 158, 11, .15);--color-danger: #EF4444;--color-danger-muted: rgba(239, 68, 68, .15);--color-info: #38BDF8;--color-info-muted: rgba(56, 189, 248, .15);--shadow-sm: 0 1px 3px rgba(0, 0, 0, .3);--shadow-md: 0 4px 12px rgba(0, 0, 0, .4);--shadow-lg: 0 8px 32px rgba(0, 0, 0, .5);--shadow-accent: 0 4px 20px rgba(99, 102, 241, .35)}.glass-card{background:var(--color-surface);border:1px solid var(--color-border);border-radius:var(--radius-xl);box-shadow:var(--shadow-sm);transition:border-color var(--transition-base),box-shadow var(--transition-base)}.glass-card:hover{border-color:var(--color-border-strong);box-shadow:var(--shadow-md)}.glass-panel{background:var(--color-surface);border:1px solid var(--color-border);box-shadow:var(--shadow-sm)}.glass-input{background:var(--color-surface);border:1px solid var(--color-border);border-radius:var(--radius-md);color:var(--color-text-primary);padding:var(--space-2) var(--space-3);font-size:var(--font-size-sm);font-family:var(--font-family-base);width:100%;transition:border-color var(--transition-base),box-shadow var(--transition-base)}.glass-input:focus{outline:none;border-color:var(--color-accent);box-shadow:0 0 0 3px var(--color-accent-muted)}.glass-input::placeholder{color:var(--color-text-muted)}.glass-button-primary{background:var(--color-accent);color:var(--color-text-inverse);border:1px solid var(--color-accent);border-radius:var(--radius-md);box-shadow:var(--shadow-accent);transition:background var(--transition-base),box-shadow var(--transition-base)}.glass-button-primary:hover:not(:disabled){background:var(--color-accent-hover);border-color:var(--color-accent-hover);box-shadow:var(--shadow-accent)}.glass-button-primary:active:not(:disabled){opacity:.9}.glass-button-secondary{background:var(--color-surface);color:var(--color-text-primary);border:1px solid var(--color-border);border-radius:var(--radius-md);transition:background var(--transition-base),border-color var(--transition-base)}.glass-button-secondary:hover:not(:disabled){background:var(--color-surface-hover);border-color:var(--color-border-strong)}.glass-button-ghost{background:transparent;color:var(--color-text-secondary);border:1px solid transparent;border-radius:var(--radius-md);transition:background var(--transition-base),color var(--transition-base)}.glass-button-ghost:hover:not(:disabled){background:var(--color-surface);color:var(--color-text-primary)}.glass-badge{display:inline-flex;align-items:center;padding:var(--space-1) var(--space-2);border-radius:var(--radius-full);font-size:var(--font-size-xs);font-weight:var(--font-weight-semibold);white-space:nowrap}.glass-badge-success{background:var(--color-success-muted);color:var(--color-success);border:1px solid rgba(16,185,129,.2)}.glass-badge-warning{background:var(--color-warning-muted);color:var(--color-warning);border:1px solid rgba(245,158,11,.2)}.glass-badge-danger{background:var(--color-danger-muted);color:var(--color-danger);border:1px solid rgba(239,68,68,.2)}.glass-badge-info{background:var(--color-info-muted);color:var(--color-info);border:1px solid rgba(56,189,248,.2)}.glass-badge-primary{background:var(--color-accent-muted);color:var(--color-accent);border:1px solid rgba(99,102,241,.2)}.glass-modal-overlay{position:fixed;top:0;right:0;bottom:0;left:0;z-index:200;background:#00000080;display:flex;align-items:center;justify-content:center;padding:var(--space-4);animation:fade-in var(--transition-base)}.glass-modal{background:var(--color-bg-tertiary);border:1px solid var(--color-border);border-radius:var(--radius-2xl);box-shadow:var(--shadow-lg);animation:slide-up var(--transition-slow)}.glass-sidebar{background:var(--color-bg-tertiary);border-right:1px solid var(--color-border);box-shadow:var(--shadow-sm)}.glass-header{background:var(--color-bg-tertiary);border-bottom:1px solid var(--color-border)}.glass-toast{background:var(--color-bg-tertiary);border:1px solid var(--color-border);border-radius:var(--radius-lg);box-shadow:var(--shadow-lg)}.glass-progress{height:8px;background:var(--color-surface);border:1px solid var(--color-border);border-radius:var(--radius-full);overflow:hidden}.glass-progress-fill{height:100%;border-radius:var(--radius-full);background:linear-gradient(90deg,var(--color-accent),color-mix(in srgb,var(--color-accent) 70%,var(--color-info)));transition:width .5s cubic-bezier(.4,0,.2,1)}@keyframes shimmer{0%{background-position:-400px 0}to{background-position:400px 0}}.skeleton{background:linear-gradient(90deg,var(--color-surface) 25%,var(--color-surface-hover) 50%,var(--color-surface) 75%);background-size:800px 100%;animation:shimmer 1.6s ease-in-out infinite;border-radius:var(--radius-md)}@keyframes fade-in{0%{opacity:0}to{opacity:1}}@keyframes slide-up{0%{opacity:0;transform:translateY(16px) scale(.97)}to{opacity:1;transform:translateY(0) scale(1)}}@keyframes slide-in-right{0%{opacity:0;transform:translate(110%)}to{opacity:1;transform:translate(0)}}@keyframes spin{to{transform:rotate(360deg)}}*,*:before,*:after{box-sizing:border-box;margin:0;padding:0}html,body{min-height:100vh;font-family:var(--font-family-base);font-size:var(--font-size-base);font-weight:var(--font-weight-regular);line-height:var(--line-height-base);color:var(--color-text-primary);background-color:var(--color-bg-primary);-webkit-font-smoothing:antialiased;-moz-osx-font-smoothing:grayscale;overflow-x:hidden}.mono,.amount,.currency,.pct{font-family:var(--font-family-mono);font-variant-numeric:tabular-nums}.loading-screen{display:flex;align-items:center;justify-content:center;min-height:100vh;background:var(--color-bg-primary)}.loading-spinner{width:40px;height:40px;border:3px solid var(--color-border);border-top-color:var(--color-accent);border-radius:var(--radius-full);animation:spin .8s linear infinite}.layout{display:flex;min-height:100vh;position:relative}.sidebar{position:fixed;left:0;top:0;width:var(--sidebar-width);height:100vh;padding:var(--space-6) 0;display:flex;flex-direction:column;z-index:100;overflow-y:auto;overflow-x:hidden;background:var(--color-bg-tertiary);border-right:1px solid var(--color-border);box-shadow:var(--shadow-sm);transition:width var(--transition-base)}.sidebar.sidebar-collapsed{width:var(--sidebar-width-collapsed)}.sidebar.sidebar-collapsed .nav-label,.sidebar.sidebar-collapsed .logo-text,.sidebar.sidebar-collapsed .avatar-name{display:none}.sidebar.sidebar-collapsed .nav-item{justify-content:center;padding:var(--space-2)}.sidebar.sidebar-collapsed .sidebar-header{justify-content:center;padding:0 0 var(--space-5)}.sidebar.sidebar-collapsed .sidebar-collapse-btn{transform:rotate(180deg)}.sidebar-header{display:flex;align-items:center;justify-content:space-between;padding:0 var(--space-5) var(--space-5);border-bottom:1px solid var(--color-border)}.sidebar-logo{display:flex;align-items:center;gap:var(--space-2);overflow:hidden}.logo-icon{width:24px;height:24px;object-fit:contain;flex-shrink:0}.logo-text{font-weight:var(--font-weight-bold);font-size:var(--font-size-sm);color:var(--color-text-primary);letter-spacing:.12em;white-space:nowrap}.sidebar-close{display:none}.sidebar.sidebar-open .sidebar-close{display:flex}.sidebar-collapse-btn{transition:transform var(--transition-base),background var(--transition-base);flex-shrink:0}.sidebar-nav{display:flex;flex-direction:column;gap:var(--space-1);padding:var(--space-4) var(--space-3);flex:1}.sidebar-footer{display:flex;flex-direction:column;gap:var(--space-1);padding:var(--space-3);border-top:1px solid var(--color-border)}.nav-item{display:flex;align-items:center;gap:var(--space-3);padding:var(--space-2) var(--space-3);border-radius:var(--radius-lg);color:var(--color-text-muted);text-decoration:none;font-size:var(--font-size-sm);font-weight:var(--font-weight-medium);transition:background var(--transition-base),color var(--transition-base),border-color var(--transition-base);border:1px solid transparent;background:transparent;cursor:pointer;width:100%;text-align:left;white-space:nowrap;overflow:hidden}.nav-item:hover{background:var(--color-surface-hover);color:var(--color-text-primary);border-color:var(--color-border)}.nav-item-active{background:var(--color-accent-muted);color:var(--color-accent);border-color:#4f46e526;font-weight:var(--font-weight-semibold)}[data-theme=dark] .nav-item-active{border-color:#6366f133}.nav-icon{font-size:var(--font-size-base);width:1.25rem;text-align:center;flex-shrink:0}.nav-label{font-size:var(--font-size-sm);overflow:hidden;text-overflow:ellipsis}.nav-logout{color:var(--color-danger)}.nav-logout:hover{background:var(--color-danger-muted);color:var(--color-danger);border-color:#dc262633}.sidebar-overlay{position:fixed;top:0;right:0;bottom:0;left:0;background:#00000073;z-index:90}.main-wrapper{margin-left:var(--sidebar-width);display:flex;flex-direction:column;min-height:100vh;flex:1;transition:margin-left var(--transition-base);overflow-x:hidden}.layout.sidebar-collapsed .main-wrapper{margin-left:var(--sidebar-width-collapsed)}.header{position:sticky;top:0;z-index:50;padding:var(--space-3) var(--space-6);display:flex;align-items:center;justify-content:space-between;background:var(--color-bg-tertiary);border-bottom:1px solid var(--color-border);box-shadow:var(--shadow-sm)}.hamburger{display:flex}.header-right{display:flex;align-items:center;gap:var(--space-2)}.theme-toggle{font-size:var(--font-size-lg)}.notif-btn{position:relative;font-size:var(--font-size-lg)}.notif-btn .badge{position:absolute;top:-2px;right:-4px}.user-avatar{display:flex;align-items:center;gap:var(--space-2);cursor:pointer;padding:var(--space-1) var(--space-2);border-radius:var(--radius-lg);border:1px solid transparent;transition:background var(--transition-base),border-color var(--transition-base)}.user-avatar:hover{background:var(--color-surface-hover);border-color:var(--color-border)}.avatar-initials{width:32px;height:32px;border-radius:var(--radius-full);background:linear-gradient(135deg,var(--color-accent),color-mix(in srgb,var(--color-accent) 60%,var(--color-info)));color:#fff;display:flex;align-items:center;justify-content:center;font-size:var(--font-size-xs);font-weight:var(--font-weight-bold);flex-shrink:0;box-shadow:0 2px 8px #4f46e54d}.avatar-name{font-size:var(--font-size-sm);color:var(--color-text-secondary);font-weight:var(--font-weight-medium)}.main-content{padding:var(--space-6);flex:1}.page{display:flex;flex-direction:column;gap:var(--space-6);max-width:1200px;width:100%;margin:0 auto}.page-header{display:flex;align-items:center;justify-content:space-between;flex-wrap:wrap;gap:var(--space-4)}.page-title{font-size:var(--font-size-2xl);font-weight:var(--font-weight-heading);color:var(--color-text-primary);letter-spacing:-.02em}.page-loading{color:var(--color-text-muted);padding:var(--space-8);text-align:center}.card{background:var(--color-surface);border:1px solid var(--color-border);border-radius:var(--radius-xl);box-shadow:var(--shadow-sm);padding:var(--space-5);transition:border-color var(--transition-base),box-shadow var(--transition-base)}.card:hover{border-color:var(--color-border-strong);box-shadow:var(--shadow-md)}.card-title{font-size:var(--font-size-xs);font-weight:var(--font-weight-semibold);color:var(--color-text-muted);margin-bottom:var(--space-4);text-transform:uppercase;letter-spacing:.08em}.grid-2{display:grid;grid-template-columns:repeat(2,1fr);gap:var(--space-4)}.grid-3{display:grid;grid-template-columns:repeat(3,1fr);gap:var(--space-4)}.grid-4{display:grid;grid-template-columns:repeat(4,1fr);gap:var(--space-4)}.btn{display:inline-flex;align-items:center;justify-content:center;gap:var(--space-2);padding:var(--space-2) var(--space-4);border-radius:var(--radius-md);font-size:var(--font-size-sm);font-weight:var(--font-weight-medium);font-family:var(--font-family-base);border:1px solid transparent;cursor:pointer;transition:background var(--transition-base),color var(--transition-base),border-color var(--transition-base),box-shadow var(--transition-base),opacity var(--transition-base);text-decoration:none;white-space:nowrap}.btn:disabled{opacity:.45;cursor:not-allowed;pointer-events:none}.btn-primary{background:var(--color-accent);color:#fff;border-color:var(--color-accent);box-shadow:var(--shadow-accent)}.btn-primary:hover:not(:disabled){background:var(--color-accent-hover);border-color:var(--color-accent-hover);box-shadow:var(--shadow-accent)}.btn-secondary{background:var(--color-surface);color:var(--color-text-primary);border-color:var(--color-border)}.btn-secondary:hover:not(:disabled){background:var(--color-surface-hover);border-color:var(--color-border-strong)}.btn-danger{background:var(--color-danger);color:#fff;border-color:var(--color-danger)}.btn-danger:hover:not(:disabled){background:color-mix(in srgb,var(--color-danger) 85%,black);box-shadow:0 4px 16px #dc26264d}.btn-ghost{background:transparent;color:var(--color-text-secondary);border-color:transparent}.btn-ghost:hover:not(:disabled){background:var(--color-surface-hover);color:var(--color-text-primary)}.btn-sm{padding:var(--space-1) var(--space-3);font-size:var(--font-size-xs)}.btn-lg{padding:var(--space-3) var(--space-6);font-size:var(--font-size-base)}.btn-icon{padding:var(--space-2);width:2rem;height:2rem;border-radius:var(--radius-full)}.form-group{display:flex;flex-direction:column;gap:var(--space-2);margin-bottom:var(--space-4)}.form-label{font-size:var(--font-size-sm);font-weight:var(--font-weight-medium);color:var(--color-text-secondary)}.form-input,.form-select,.form-textarea,.form-control{background:var(--color-surface);border:1px solid var(--color-border);border-radius:var(--radius-md);color:var(--color-text-primary);padding:var(--space-2) var(--space-3);font-size:var(--font-size-sm);font-family:var(--font-family-base);width:100%;transition:border-color var(--transition-base),box-shadow var(--transition-base)}.form-input:focus,.form-select:focus,.form-textarea:focus,.form-control:focus{outline:none;border-color:var(--color-accent);box-shadow:0 0 0 3px var(--color-accent-muted)}.form-input::placeholder,.form-textarea::placeholder{color:var(--color-text-muted)}.form-select{-webkit-appearance:none;-moz-appearance:none;appearance:none;background-image:url("data:image/svg+xml,%3Csvg xmlns='http://www.w3.org/2000/svg' width='12' height='12' viewBox='0 0 12 12'%3E%3Cpath fill='%236366f1' d='M6 8L1 3h10z'/%3E%3C/svg%3E");background-repeat:no-repeat;background-position:right .75rem center;padding-right:2.25rem;cursor:pointer}.form-textarea{resize:vertical;min-height:80px}.form-row{display:grid;grid-template-columns:1fr 1fr;gap:var(--space-4)}.form-check{display:flex;align-items:center;gap:var(--space-2);accent-color:var(--color-accent)}.modal-actions{display:flex;justify-content:flex-end;gap:var(--space-3);margin-top:var(--space-5);padding-top:var(--space-4);border-top:1px solid var(--color-border)}.modal-overlay{position:fixed;top:0;right:0;bottom:0;left:0;z-index:200;background:#00000080;display:flex;align-items:center;justify-content:center;padding:var(--space-4);animation:fade-in var(--transition-base)}.modal-container{background:var(--color-bg-tertiary);border:1px solid var(--color-border);border-radius:var(--radius-2xl);padding:var(--space-6);width:90%;max-height:90vh;overflow-y:auto;box-shadow:var(--shadow-lg);animation:slide-up var(--transition-slow)}.modal-sm{max-width:420px}.modal-md{max-width:560px}.modal-lg{max-width:800px}.modal-header{display:flex;align-items:center;justify-content:space-between;margin-bottom:var(--space-5);padding-bottom:var(--space-3);border-bottom:1px solid var(--color-border)}.modal-title{font-size:var(--font-size-lg);font-weight:var(--font-weight-bold);color:var(--color-text-primary)}.modal-close{font-size:var(--font-size-base)}.toast-container{position:fixed;top:var(--space-4);right:var(--space-4);z-index:300;display:flex;flex-direction:column;gap:var(--space-2);pointer-events:none}.toast{min-width:280px;max-width:400px;padding:var(--space-3) var(--space-4);border-radius:var(--radius-lg);display:flex;align-items:center;gap:var(--space-3);background:var(--color-bg-tertiary);border:1px solid var(--color-border);box-shadow:var(--shadow-lg);animation:slide-in-right var(--transition-slow);pointer-events:all}.toast-success{border-left:3px solid var(--color-success)}.toast-error{border-left:3px solid var(--color-danger)}.toast-warning{border-left:3px solid var(--color-warning)}.toast-info{border-left:3px solid var(--color-accent)}.notif-panel{position:fixed;right:0;top:0;height:100vh;width:380px;background:var(--color-bg-secondary);border-left:1px solid var(--color-border);z-index:150;display:flex;flex-direction:column;transform:translate(100%);transition:transform .25s cubic-bezier(.4,0,.2,1);box-shadow:var(--shadow-lg)}.notif-panel.open{transform:translate(0)}.notif-panel-overlay{position:fixed;top:0;right:0;bottom:0;left:0;z-index:140;background:#0000004d}.notif-panel-header{display:flex;align-items:center;justify-content:space-between;padding:var(--space-5) var(--space-4);border-bottom:1px solid var(--color-border)}.notif-panel-body{flex:1;overflow-y:auto}.notif-item{padding:var(--space-3) var(--space-4);border-bottom:1px solid var(--color-border);display:flex;flex-direction:column;gap:var(--space-1);cursor:pointer;transition:background var(--transition-base)}.notif-item:hover{background:var(--color-surface-hover)}.notif-item.unread{background:var(--color-accent-muted)}.notif-item-time{font-size:var(--font-size-xs);color:var(--color-text-muted)}.progress-bar{height:8px;background:var(--color-surface-active);border-radius:var(--radius-full);overflow:hidden}.progress-fill{height:100%;background:linear-gradient(90deg,var(--color-accent),color-mix(in srgb,var(--color-accent) 70%,var(--color-info)));border-radius:var(--radius-full);transition:width .5s ease}.table-wrapper{overflow-x:auto;border-radius:var(--radius-xl);border:1px solid var(--color-border)}table{width:100%;border-collapse:collapse}th,td{padding:var(--space-3) var(--space-4);text-align:left;border-bottom:1px solid var(--color-border)}thead tr{background:var(--color-surface-hover)}th{font-weight:var(--font-weight-semibold);color:var(--color-text-muted);font-size:var(--font-size-xs);text-transform:uppercase;letter-spacing:.08em;white-space:nowrap}tbody tr:last-child td{border-bottom:none}tbody tr:hover{background:var(--color-surface-hover)}.action-buttons{display:flex;gap:var(--space-2);justify-content:flex-end}.badge{display:inline-flex;align-items:center;padding:var(--space-1) var(--space-2);border-radius:var(--radius-full);font-size:var(--font-size-xs);font-weight:var(--font-weight-semibold);white-space:nowrap}.badge-success{background:var(--color-success-muted);color:var(--color-success)}.badge-warning{background:var(--color-warning-muted);color:var(--color-warning)}.badge-danger{background:var(--color-danger-muted);color:var(--color-danger)}.badge-info,.badge-primary{background:var(--color-accent-muted);color:var(--color-accent)}.badge-neutral,.badge-secondary{background:var(--color-surface-active);color:var(--color-text-muted)}.text-success{color:var(--color-success)}.text-warning{color:var(--color-warning)}.text-danger{color:var(--color-danger)}.text-primary{color:var(--color-accent)}.text-muted{color:var(--color-text-muted)}.text-sm{font-size:var(--font-size-sm)}.positive{color:var(--color-success);font-family:var(--font-family-mono)}.negative{color:var(--color-danger);font-family:var(--font-family-mono)}.empty-state{text-align:center;padding:var(--space-12) var(--space-4);color:var(--color-text-muted);display:flex;flex-direction:column;align-items:center;gap:var(--space-4)}.empty-state-icon{font-size:3rem;opacity:.4}.empty-state-text{font-size:var(--font-size-sm);max-width:280px}.health-gauge{width:100%;max-width:200px;margin:0 auto;display:block;filter:drop-shadow(0 4px 16px rgba(79,70,229,.2))}.traffic-light{display:flex;flex-direction:column;align-items:center;gap:var(--space-2);padding:var(--space-2) 0}.traffic-dot{width:28px;height:28px;border-radius:var(--radius-full);opacity:.2;transition:opacity var(--transition-base),box-shadow var(--transition-base)}.traffic-dot.active{opacity:1;box-shadow:0 0 16px currentColor}.tl-red{background:var(--color-danger);color:var(--color-danger)}.tl-yellow{background:var(--color-warning);color:var(--color-warning)}.tl-green{background:var(--color-success);color:var(--color-success)}.tl-label{font-size:var(--font-size-xs);color:var(--color-text-muted);margin-top:var(--space-1)}.dashboard-grid{display:grid;grid-template-columns:repeat(auto-fill,minmax(280px,1fr));gap:var(--space-4)}.budget-numbers{margin-top:var(--space-3);display:flex;flex-direction:column;gap:var(--space-2)}.budget-row{display:flex;justify-content:space-between;font-size:var(--font-size-sm)}.free-money-amount{font-size:var(--font-size-3xl);font-weight:var(--font-weight-extrabold);margin:var(--space-2) 0;font-family:var(--font-family-mono);letter-spacing:-.02em}.booking-list{display:flex;flex-direction:column;gap:var(--space-2)}.booking-item{display:flex;justify-content:space-between;align-items:center;padding:var(--space-2) 0;border-bottom:1px solid var(--color-border)}.booking-item:last-child{border-bottom:none}.booking-info{display:flex;flex-direction:column;gap:2px}.booking-name{font-size:var(--font-size-sm);font-weight:var(--font-weight-medium)}.booking-amount{font-weight:var(--font-weight-semibold);font-family:var(--font-family-mono)}.savings-list{display:flex;flex-direction:column;gap:var(--space-3)}.savings-item{display:flex;flex-direction:column;gap:var(--space-2)}.savings-header{display:flex;justify-content:space-between;font-size:var(--font-size-sm)}.savings-name{font-weight:var(--font-weight-medium)}.savings-pct{color:var(--color-accent);font-weight:var(--font-weight-semibold);font-family:var(--font-family-mono)}.savings-amounts{display:flex;justify-content:space-between;font-size:var(--font-size-xs);color:var(--color-text-muted);font-family:var(--font-family-mono)}.alert{display:flex;align-items:center;justify-content:space-between;padding:var(--space-3) var(--space-4);border-radius:var(--radius-lg);font-size:var(--font-size-sm)}.alert-warning{background:var(--color-warning-muted);border:1px solid rgba(217,119,6,.3);color:var(--color-warning)}.alert-danger{background:var(--color-danger-muted);border:1px solid rgba(220,38,38,.3);color:var(--color-danger)}.liquidity-banner{background:var(--color-danger-muted);border:1px solid rgba(220,38,38,.3);border-radius:var(--radius-lg);padding:var(--space-4);display:flex;justify-content:space-between;align-items:center;color:var(--color-danger)}.avalanche-hint{border:1px solid rgba(217,119,6,.3);background:var(--color-warning-muted);border-radius:var(--radius-lg);padding:var(--space-4);color:var(--color-warning);font-size:var(--font-size-sm)}.loan-card{background:var(--color-surface);border:1px solid var(--color-border);border-radius:var(--radius-xl);box-shadow:var(--shadow-sm);padding:var(--space-5);display:flex;justify-content:space-between;align-items:flex-start;gap:var(--space-4);transition:border-color var(--transition-base),box-shadow var(--transition-base)}.loan-card:hover{border-color:var(--color-border-strong);box-shadow:var(--shadow-md)}.loan-card-info{flex:1;display:flex;flex-direction:column;gap:var(--space-2)}.loan-card-name{font-size:var(--font-size-lg);font-weight:var(--font-weight-semibold)}.loan-card-meta{font-size:var(--font-size-sm);color:var(--color-text-muted);display:flex;flex-direction:column;gap:var(--space-1);font-family:var(--font-family-mono)}.loan-card-actions{display:flex;flex-direction:column;gap:var(--space-2);align-items:flex-end}.goal-card{background:var(--color-surface);border:1px solid var(--color-border);border-left:3px solid var(--color-accent);border-radius:var(--radius-xl);box-shadow:var(--shadow-sm);padding:var(--space-5);transition:border-color var(--transition-base),box-shadow var(--transition-base)}.goal-card:hover{box-shadow:var(--shadow-md)}.amort-table-wrap{overflow-x:auto;max-height:400px;overflow-y:auto}.calendar-grid{display:grid;grid-template-columns:repeat(7,1fr);gap:var(--space-1)}.calendar-header-cell{text-align:center;font-size:var(--font-size-xs);color:var(--color-text-muted);padding:var(--space-2);font-weight:var(--font-weight-semibold)}.calendar-day{min-height:80px;background:var(--color-surface);border:1px solid var(--color-border);border-radius:var(--radius-md);padding:var(--space-2);font-size:var(--font-size-xs);transition:background var(--transition-base)}.calendar-day.today{border:1px solid var(--color-accent);box-shadow:0 0 0 1px var(--color-accent-muted)}.calendar-day.empty{background:transparent;border-color:transparent}.calendar-day-num{font-weight:var(--font-weight-semibold);color:var(--color-text-muted);margin-bottom:var(--space-1)}.booking-pill{display:block;border-radius:var(--radius-sm);padding:1px var(--space-1);margin-bottom:2px;font-size:.65rem;overflow:hidden;text-overflow:ellipsis;white-space:nowrap}.income-pill{background:var(--color-success-muted);color:var(--color-success)}.expense-pill{background:var(--color-danger-muted);color:var(--color-danger)}.tabs{display:flex;gap:0;border-bottom:1px solid var(--color-border)}.tab-btn{padding:var(--space-3) var(--space-5);border:none;background:transparent;color:var(--color-text-muted);cursor:pointer;font-size:var(--font-size-sm);font-weight:var(--font-weight-medium);font-family:var(--font-family-base);border-bottom:2px solid transparent;margin-bottom:-1px;transition:color var(--transition-base),border-color var(--transition-base)}.tab-btn:hover{color:var(--color-text-primary)}.tab-btn.active{color:var(--color-accent);border-bottom-color:var(--color-accent)}.tab-content{padding-top:var(--space-5)}.section-header{display:flex;justify-content:space-between;align-items:center;margin-bottom:var(--space-4)}.summary-numbers{display:grid;grid-template-columns:repeat(3,1fr);gap:var(--space-4);text-align:center}.big-number{font-size:var(--font-size-3xl);font-weight:var(--font-weight-extrabold);color:var(--color-accent);font-family:var(--font-family-mono);letter-spacing:-.02em}.big-number-label{font-size:var(--font-size-xs);color:var(--color-text-muted);margin-top:var(--space-1);text-transform:uppercase;letter-spacing:.06em}.collapsible-btn{width:100%;text-align:left;background:transparent;border:none;border-top:1px solid var(--color-border);padding:var(--space-3) 0;color:var(--color-text-muted);cursor:pointer;display:flex;justify-content:space-between;align-items:center;font-size:var(--font-size-sm);font-family:var(--font-family-base);transition:color var(--transition-base)}.collapsible-btn:hover{color:var(--color-text-primary)}.collapse-content{overflow:hidden}.onboarding-container{max-width:600px;margin:0 auto;padding:var(--space-8)}.onboarding-steps{display:flex;gap:var(--space-2);margin-bottom:var(--space-8);justify-content:center}.step-dot{width:10px;height:10px;border-radius:var(--radius-full);background:var(--color-surface-active);transition:background var(--transition-base),transform var(--transition-base)}.step-dot.active{background:var(--color-accent);transform:scale(1.25);box-shadow:0 0 8px var(--color-accent-muted)}.step-dot.done{background:var(--color-success)}.household-status{text-align:center;display:flex;flex-direction:column;align-items:center;gap:var(--space-4);padding:var(--space-8)}.about-page{max-width:800px;margin:0 auto;display:flex;flex-direction:column;gap:var(--space-8)}.about-logo{display:flex;align-items:center;gap:var(--space-4)}.about-logo img{width:64px;height:64px}.tech-grid{display:grid;grid-template-columns:repeat(3,1fr);gap:var(--space-2)}.tech-badge{display:inline-flex;align-items:center;padding:var(--space-2) var(--space-3);border-radius:var(--radius-lg);font-size:var(--font-size-sm);font-weight:var(--font-weight-medium);background:var(--color-surface);border:1px solid var(--color-border);color:var(--color-text-primary)}.fab{position:fixed;bottom:var(--space-8);right:var(--space-8);z-index:90;width:52px;height:52px;border-radius:var(--radius-full);background:var(--color-accent);color:#fff;font-size:var(--font-size-xl);box-shadow:var(--shadow-accent);border:none;cursor:pointer;display:flex;align-items:center;justify-content:center;transition:background var(--transition-base),box-shadow var(--transition-base)}.fab:hover{background:var(--color-accent-hover);box-shadow:0 8px 28px #4f46e566}.fab-calc{bottom:calc(var(--space-8) + 52px + 12px)}.calc-result{margin-top:var(--space-4);padding:var(--space-4);background:var(--color-surface);border:1px solid var(--color-border);border-radius:var(--radius-lg);display:flex;flex-direction:column;gap:var(--space-2)}.calc-result-item{display:flex;justify-content:space-between;font-family:var(--font-family-mono);font-size:var(--font-size-sm)}.profile-section{background:var(--color-surface);border:1px solid var(--color-border);border-radius:var(--radius-xl);box-shadow:var(--shadow-sm);padding:var(--space-6);display:flex;flex-direction:column;gap:var(--space-4)}.profile-section-title{font-size:var(--font-size-base);font-weight:var(--font-weight-semibold);margin-bottom:var(--space-1)}.report-table th,.report-table td{text-align:right;font-family:var(--font-family-mono)}.report-table th:first-child,.report-table td:first-child{text-align:left;font-family:var(--font-family-base)}.report-table .total-col{font-weight:var(--font-weight-bold);color:var(--color-text-primary)}.shared-expense-form{display:grid;grid-template-columns:2fr 1fr 1fr 1fr auto;gap:var(--space-2);align-items:end}.pagination{display:flex;gap:var(--space-2);align-items:center;justify-content:center;margin-top:var(--space-4)}.chart-container{position:relative;height:280px}.auth-page{min-height:100vh;display:flex;align-items:center;justify-content:center;padding:var(--space-4);background:var(--color-bg-primary)}.auth-card{width:100%;max-width:400px;padding:var(--space-8);background:var(--color-surface);border:1px solid var(--color-border);border-radius:var(--radius-2xl);box-shadow:var(--shadow-md)}.auth-logo{text-align:center;margin-bottom:var(--space-6)}.auth-logo-img{width:64px;height:64px;object-fit:contain;display:block;margin:0 auto var(--space-2)}.auth-title{font-size:var(--font-size-xl);font-weight:var(--font-weight-heading);color:var(--color-text-primary);letter-spacing:.1em;margin-bottom:var(--space-1)}.auth-subtitle{font-size:var(--font-size-sm);color:var(--color-text-muted)}.auth-tabs{display:flex;border:1px solid var(--color-border);border-radius:var(--radius-md);overflow:hidden;margin-bottom:var(--space-5)}.auth-tab{flex:1;padding:var(--space-2) var(--space-3);background:transparent;border:none;color:var(--color-text-muted);font-size:var(--font-size-sm);font-weight:var(--font-weight-medium);font-family:var(--font-family-base);cursor:pointer;transition:background var(--transition-base),color var(--transition-base)}.auth-tab.active{background:var(--color-accent-muted);color:var(--color-accent);font-weight:var(--font-weight-semibold)}.auth-form{display:flex;flex-direction:column}.auth-oidc{margin-top:var(--space-4)}.divider{display:flex;align-items:center;gap:var(--space-3);margin:var(--space-4) 0;color:var(--color-text-muted);font-size:var(--font-size-xs)}.divider:before,.divider:after{content:"";flex:1;height:1px;background:var(--color-border)}.btn-full{width:100%}.onboarding-page{min-height:100vh;display:flex;align-items:center;justify-content:center;padding:var(--space-4);background:var(--color-bg-primary)}.onboarding-card{width:100%;max-width:480px;background:var(--color-surface);border:1px solid var(--color-border);border-radius:var(--radius-2xl);box-shadow:var(--shadow-md);overflow:hidden}.onboarding-header{padding:var(--space-6) var(--space-6) var(--space-4);border-bottom:1px solid var(--color-border);text-align:center}.onboarding-header h1{font-size:var(--font-size-xl);font-weight:var(--font-weight-heading);margin-bottom:var(--space-4)}.onboarding-progress{display:flex;gap:var(--space-2);justify-content:center;margin-bottom:var(--space-3)}.progress-dot{width:8px;height:8px;border-radius:var(--radius-full);background:var(--color-border-strong);transition:background var(--transition-base),transform var(--transition-base)}.progress-dot.active{background:var(--color-accent);transform:scale(1.3)}.step-label{font-size:var(--font-size-sm);color:var(--color-text-muted)}.onboarding-body{padding:var(--space-6)}.onboarding-actions{display:flex;justify-content:flex-end;gap:var(--space-3);margin-top:var(--space-4)}.table-scroll{overflow-x:auto;width:100%}.category-groups{display:flex;flex-direction:column;gap:var(--space-3)}.category-group{border:1px solid var(--color-border);border-radius:var(--radius-xl);background:var(--color-surface);overflow:hidden}.category-header{display:flex;align-items:center;justify-content:space-between;padding:var(--space-4) var(--space-4);cursor:pointer;-webkit-user-select:none;user-select:none;transition:background var(--transition-fast)}.category-header:hover{background:var(--color-surface-hover)}.category-header-left{display:flex;align-items:center;gap:var(--space-2)}.category-chevron{color:var(--color-text-muted);font-size:var(--font-size-xs);width:12px}.category-name{font-weight:var(--font-weight-semibold);font-size:var(--font-size-sm)}.category-total{font-family:var(--font-family-mono);font-size:var(--font-size-sm);font-variant-numeric:tabular-nums;font-weight:var(--font-weight-semibold)}.category-items{padding:0 var(--space-3) var(--space-3);border-top:1px solid var(--color-border)}.item-card-list{display:flex;flex-direction:column;gap:var(--space-2)}.item-card{display:flex;align-items:center;justify-content:space-between;padding:var(--space-3) var(--space-4);background:var(--color-surface);border:1px solid var(--color-border);border-radius:var(--radius-lg);cursor:pointer;transition:border-color var(--transition-base),box-shadow var(--transition-base);gap:var(--space-3)}.item-card:hover{border-color:var(--color-border-strong);box-shadow:var(--shadow-sm)}.item-card-main{display:flex;flex-direction:column;gap:var(--space-1);min-width:0}.item-card-name{font-weight:var(--font-weight-semibold);font-size:var(--font-size-sm);color:var(--color-text-primary);white-space:nowrap;overflow:hidden;text-overflow:ellipsis}.item-card-meta{font-size:var(--font-size-xs);color:var(--color-text-muted)}.item-card-right{display:flex;flex-direction:column;align-items:flex-end;gap:var(--space-1);flex-shrink:0}.item-card-amount{font-family:var(--font-family-mono);font-weight:var(--font-weight-semibold);font-size:var(--font-size-sm);font-variant-numeric:tabular-nums;white-space:nowrap}.item-card-equiv{font-family:var(--font-family-mono);font-size:var(--font-size-xs);font-variant-numeric:tabular-nums;white-space:nowrap}.item-card-actions{display:flex;gap:var(--space-1);opacity:0;transition:opacity var(--transition-fast)}.item-card:hover .item-card-actions{opacity:1}.btn-xs{padding:var(--space-1) var(--space-1);font-size:var(--font-size-xs);line-height:1;border-radius:var(--radius-sm);min-height:24px;min-width:24px;display:inline-flex;align-items:center;justify-content:center}.detail-fields{display:flex;flex-direction:column;gap:0;margin-bottom:var(--space-5);border:1px solid var(--color-border);border-radius:var(--radius-lg);overflow:hidden}.detail-row{display:flex;align-items:center;justify-content:space-between;padding:var(--space-3) var(--space-4);border-bottom:1px solid var(--color-border)}.detail-row:last-child{border-bottom:none}.detail-label{font-size:var(--font-size-sm);color:var(--color-text-muted)}.detail-value{font-size:var(--font-size-sm);font-weight:var(--font-weight-medium);color:var(--color-text-primary)}.detail-section{margin-bottom:var(--space-5)}.detail-section-header{display:flex;align-items:center;justify-content:space-between;margin-bottom:var(--space-3)}.detail-section-title{font-size:var(--font-size-sm);font-weight:var(--font-weight-semibold);color:var(--color-text-secondary);text-transform:uppercase;letter-spacing:.05em}.changes-list{display:flex;flex-direction:column;gap:var(--space-2)}.change-row{display:flex;align-items:center;justify-content:space-between;padding:var(--space-2) var(--space-3);background:var(--color-bg-secondary);border-radius:var(--radius-md);gap:var(--space-2)}@media (max-width: 1024px){.grid-4{grid-template-columns:repeat(2,1fr)}}@media (max-width: 768px){.sidebar{display:none}.sidebar.sidebar-open{display:flex;position:fixed;left:0;top:0;width:280px;height:100vh;z-index:200;box-shadow:var(--shadow-lg)}.sidebar-collapse-btn{display:none}.main-wrapper,.layout.sidebar-collapsed .main-wrapper{margin-left:0}.main-content{padding:var(--space-4);overflow-x:hidden;max-width:100%}.grid-2,.grid-3,.grid-4,.form-row,.summary-numbers{grid-template-columns:1fr}.tech-grid{grid-template-columns:repeat(2,1fr)}.avatar-name{display:none}.notif-panel{width:100%}.shared-expense-form{grid-template-columns:1fr}.fab{bottom:calc(var(--space-4) + env(safe-area-inset-bottom,0px));right:var(--space-4)}.fab-calc{bottom:calc(var(--space-4) + 52px + 10px + env(safe-area-inset-bottom,0px))}.item-card{padding:var(--space-3)}.item-card-actions{opacity:1}.form-group{margin-bottom:16px}}.tooltip-wrapper{position:relative;display:inline-flex;align-items:center;gap:4px}.tooltip-icon{font-size:14px;cursor:pointer;line-height:1;flex-shrink:0;-webkit-user-select:none;user-select:none}.tooltip-content{position:absolute;bottom:calc(100% + 8px);left:0;z-index:200;background:var(--color-surface-raised, var(--color-surface));border:1px solid var(--color-border);border-radius:var(--radius-md);padding:10px 12px;font-size:var(--font-size-sm);font-weight:400;color:var(--color-text-primary);max-width:280px;min-width:160px;box-shadow:var(--shadow-md);white-space:normal;line-height:1.4;pointer-events:none}@media (min-width: 768px){.tooltip-content{left:0;bottom:auto;top:calc(100% + 4px)}}.live-preview{display:flex;align-items:center;gap:8px;background:var(--color-surface-active, rgba(99, 102, 241, .06));border-radius:var(--radius-md);padding:10px 12px;margin-bottom:var(--space-3);font-size:var(--font-size-sm)}.live-preview-icon{font-size:16px}.live-preview-label{color:var(--color-text-secondary)}.live-preview-amount{font-weight:700;color:var(--color-text-primary)}.live-preview-income .live-preview-amount{color:var(--color-success)}.live-preview-expense .live-preview-amount{color:var(--color-danger)}.advanced-toggle{display:block;width:100%;text-align:left;margin-bottom:var(--space-3);color:var(--color-text-secondary)}@media (min-width: 768px){.fab{display:none}}.quickadd-type-toggle{display:flex;gap:var(--space-2);margin-bottom:var(--space-4)}.quickadd-type-btn{flex:1;padding:var(--space-3) var(--space-4);border-radius:var(--radius-md);border:2px solid var(--color-border);background:var(--color-surface);color:var(--color-text-secondary);font-size:var(--font-size-base);font-weight:var(--font-weight-medium);cursor:pointer;transition:all var(--transition-fast);min-height:44px}.quickadd-type-btn.active{border-color:var(--color-accent);background:var(--color-accent-muted);color:var(--color-accent)}.explainer-cards{display:flex;flex-direction:column;gap:var(--space-3)}.explainer-card{background:var(--color-info-muted, rgba(99, 102, 241, .06));border-left:4px solid var(--color-accent);border-radius:var(--radius-md);padding:var(--space-4)}.explainer-card strong{display:block;margin-bottom:var(--space-1);color:var(--color-text-primary);font-size:var(--font-size-sm)}.explainer-card p{margin:0;color:var(--color-text-secondary);font-size:var(--font-size-sm);line-height:1.5}button,.card[role=button],a{min-height:36px}@media (max-width: 767px){button,.card[role=button],a{min-height:44px}input,select,textarea{font-size:16px}.page{padding-bottom:env(safe-area-inset-bottom,0px)}}@media (max-width: 767px){.dashboard-grid{grid-template-columns:1fr}}
