:root{--space-1: .25rem;--space-2: .5rem;--space-3: .75rem;--space-4: 1rem;--space-5: 1.5rem;--space-6: 2rem;--space-7: 2.5rem;--space-8: 3rem;--space-9: 4rem;--radius-sm: 5px;--radius-md: 8px;--radius-lg: 14px;--radius-full: 999px;--font-sans: -apple-system, BlinkMacSystemFont, "Segoe UI", "Inter", Roboto, Helvetica, Arial, sans-serif;--font-mono: ui-monospace, SFMono-Regular, Menlo, Consolas, "Liberation Mono", monospace;--text-xs: .75rem;--text-sm: .8125rem;--text-base: .9375rem;--text-md: 1.0625rem;--text-lg: 1.25rem;--text-xl: 1.625rem;--text-2xl: 2rem;--shadow-sm: 0 1px 2px rgba(15, 23, 35, .08);--shadow-md: 0 6px 20px rgba(15, 23, 35, .1);--shadow-lg: 0 12px 32px rgba(15, 23, 35, .16);--transition-fast: .12s ease;--transition-base: .18s ease;color-scheme:light;--color-bg: #f5f6f8;--color-surface: #ffffff;--color-surface-sunken: #edeff3;--color-surface-hover: #f1f2f5;--color-border: #dde1e7;--color-border-strong: #c7ccd6;--text-primary: #14181f;--text-secondary: #4b5563;--text-muted: #5b6472;--text-on-brand: #ffffff;--text-on-accent: #ffffff;--color-brand: #0d7d72;--color-brand-strong: #095c54;--color-brand-wash: #e6f4f2;--color-brand-wash-text: #095c54;--color-accent: #b45309;--color-accent-strong: #8a3f07;--color-accent-wash: #fdf1e2;--color-accent-wash-text: #8a3f07;--color-success-bg: #ecfdf5;--color-success-text: #065f46;--color-danger-bg: #fef2f2;--color-danger-text: #991b1b;--color-warning-bg: #fffbeb;--color-warning-text: #92400e;--color-info-bg: #eff6ff;--color-info-text: #1e40af;--color-neutral-bg: #eef0f3;--color-neutral-text: #374151;--color-danger: #b91c1c;--color-danger-strong: #7f1d1d;--focus-ring: 0 0 0 3px rgba(13, 125, 114, .35)}@media (prefers-color-scheme: dark){:root{color-scheme:dark;--color-bg: #0b0e13;--color-surface: #131820;--color-surface-sunken: #0e1218;--color-surface-hover: #1a2029;--color-border: #262e3a;--color-border-strong: #38424f;--text-primary: #eef1f5;--text-secondary: #b7c0cc;--text-muted: #8b95a3;--text-on-brand: #04211d;--text-on-accent: #241400;--color-brand: #35b3a3;--color-brand-strong: #57c8b9;--color-brand-wash: #103330;--color-brand-wash-text: #7fe0d1;--color-accent: #e0982f;--color-accent-strong: #f0ac4a;--color-accent-wash: #2e2109;--color-accent-wash-text: #f2bd6d;--color-success-bg: #0f2e22;--color-success-text: #6ee7b7;--color-danger-bg: #341014;--color-danger-text: #fca5a5;--color-warning-bg: #2e2109;--color-warning-text: #fbbf6d;--color-info-bg: #101f34;--color-info-text: #93c5fd;--color-neutral-bg: #1a2029;--color-neutral-text: #cbd2dc;--color-danger: #f87171;--color-danger-strong: #fca5a5;--focus-ring: 0 0 0 3px rgba(87, 200, 185, .4)}}:root[data-theme=light]{color-scheme:light;--color-bg: #f5f6f8;--color-surface: #ffffff;--color-surface-sunken: #edeff3;--color-surface-hover: #f1f2f5;--color-border: #dde1e7;--color-border-strong: #c7ccd6;--text-primary: #14181f;--text-secondary: #4b5563;--text-muted: #5b6472;--text-on-brand: #ffffff;--text-on-accent: #ffffff;--color-brand: #0d7d72;--color-brand-strong: #095c54;--color-brand-wash: #e6f4f2;--color-brand-wash-text: #095c54;--color-accent: #b45309;--color-accent-strong: #8a3f07;--color-accent-wash: #fdf1e2;--color-accent-wash-text: #8a3f07;--color-success-bg: #ecfdf5;--color-success-text: #065f46;--color-danger-bg: #fef2f2;--color-danger-text: #991b1b;--color-warning-bg: #fffbeb;--color-warning-text: #92400e;--color-info-bg: #eff6ff;--color-info-text: #1e40af;--color-neutral-bg: #eef0f3;--color-neutral-text: #374151;--color-danger: #b91c1c;--color-danger-strong: #7f1d1d;--focus-ring: 0 0 0 3px rgba(13, 125, 114, .35)}:root[data-theme=dark]{color-scheme:dark;--color-bg: #0b0e13;--color-surface: #131820;--color-surface-sunken: #0e1218;--color-surface-hover: #1a2029;--color-border: #262e3a;--color-border-strong: #38424f;--text-primary: #eef1f5;--text-secondary: #b7c0cc;--text-muted: #8b95a3;--text-on-brand: #04211d;--text-on-accent: #241400;--color-brand: #35b3a3;--color-brand-strong: #57c8b9;--color-brand-wash: #103330;--color-brand-wash-text: #7fe0d1;--color-accent: #e0982f;--color-accent-strong: #f0ac4a;--color-accent-wash: #2e2109;--color-accent-wash-text: #f2bd6d;--color-success-bg: #0f2e22;--color-success-text: #6ee7b7;--color-danger-bg: #341014;--color-danger-text: #fca5a5;--color-warning-bg: #2e2109;--color-warning-text: #fbbf6d;--color-info-bg: #101f34;--color-info-text: #93c5fd;--color-neutral-bg: #1a2029;--color-neutral-text: #cbd2dc;--color-danger: #f87171;--color-danger-strong: #fca5a5;--focus-ring: 0 0 0 3px rgba(87, 200, 185, .4)}*,*:before,*:after{box-sizing:border-box}*{margin:0}html{-webkit-text-size-adjust:100%}body{min-height:100vh;font-family:var(--font-sans);font-size:var(--text-base);line-height:1.55;background:var(--color-bg);color:var(--text-primary);-webkit-font-smoothing:antialiased}img,svg{display:block;max-width:100%}button,input,select,textarea{font:inherit;color:inherit}a{color:var(--color-brand)}a:hover{color:var(--color-brand-strong)}ul,ol{list-style:none;padding:0}h1,h2,h3,h4{font-weight:650;line-height:1.25;letter-spacing:-.01em;color:var(--text-primary)}h1{font-size:var(--text-2xl)}h2{font-size:var(--text-xl)}h3{font-size:var(--text-lg)}h4{font-size:var(--text-md)}small{font-size:var(--text-xs)}:focus-visible{outline:none;box-shadow:var(--focus-ring);border-radius:var(--radius-sm)}::selection{background:var(--color-brand);color:var(--text-on-brand)}#root{min-height:100vh}.visually-hidden{position:absolute;width:1px;height:1px;padding:0;margin:-1px;overflow:hidden;clip:rect(0,0,0,0);white-space:nowrap;border:0}.btn{display:inline-flex;align-items:center;justify-content:center;gap:var(--space-2);font-size:var(--text-sm);font-weight:600;line-height:1;padding:.625rem 1rem;border-radius:var(--radius-md);border:1px solid transparent;cursor:pointer;transition:background var(--transition-fast),border-color var(--transition-fast),opacity var(--transition-fast);white-space:nowrap}.btn-sm{padding:.4375rem .75rem;font-size:var(--text-xs)}.btn-primary{background:var(--color-brand);color:var(--text-on-brand)}.btn-primary:hover:not(:disabled){background:var(--color-brand-strong)}.btn-secondary{background:var(--color-surface);color:var(--text-primary);border-color:var(--color-border-strong)}.btn-secondary:hover:not(:disabled){background:var(--color-surface-hover)}.btn-ghost{background:transparent;color:var(--text-secondary)}.btn-ghost:hover:not(:disabled){background:var(--color-surface-hover);color:var(--text-primary)}.btn-danger{background:var(--color-danger);color:#fff}.btn-danger:hover:not(:disabled){background:var(--color-danger-strong)}.btn-success{background:var(--color-success-text);color:#fff}.btn-success:hover:not(:disabled){filter:brightness(1.08)}.btn:disabled{opacity:.55;cursor:not-allowed}.btn-icon{width:2.25rem;height:2.25rem;padding:0;flex-shrink:0}.field{display:flex;flex-direction:column;gap:var(--space-2)}.field-label{font-size:var(--text-sm);font-weight:600;color:var(--text-primary)}.field-hint{font-size:var(--text-xs);color:var(--text-muted)}.field-error{font-size:var(--text-xs);color:var(--color-danger-text);font-weight:500}.input,.textarea,.select{width:100%;background:var(--color-surface);color:var(--text-primary);border:1px solid var(--color-border-strong);border-radius:var(--radius-md);padding:.625rem .75rem;font-size:var(--text-base);transition:border-color var(--transition-fast)}.input::placeholder,.textarea::placeholder{color:var(--text-muted)}.input:focus,.textarea:focus,.select:focus{outline:none;border-color:var(--color-brand);box-shadow:var(--focus-ring)}.input.has-error,.textarea.has-error{border-color:var(--color-danger)}.textarea{resize:vertical;min-height:6rem;font-family:inherit}.form-row{display:flex;flex-direction:column;gap:var(--space-4)}.form-actions{display:flex;align-items:center;gap:var(--space-3);margin-top:var(--space-2)}.segmented{display:inline-flex;padding:3px;background:var(--color-surface-sunken);border:1px solid var(--color-border);border-radius:var(--radius-md);gap:2px}.segmented-option{border:none;background:transparent;color:var(--text-secondary);font-size:var(--text-sm);font-weight:600;padding:.5rem .875rem;border-radius:calc(var(--radius-md) - 3px);cursor:pointer;transition:background var(--transition-fast),color var(--transition-fast)}.segmented-option[aria-pressed=true]{background:var(--color-surface);color:var(--text-primary);box-shadow:var(--shadow-sm)}.chip-grid{display:flex;flex-wrap:wrap;gap:var(--space-2)}.chip-toggle{position:relative}.chip-toggle input{position:absolute;opacity:0;width:1px;height:1px}.chip-toggle label{display:inline-flex;align-items:center;gap:var(--space-2);padding:.5rem .875rem;border-radius:var(--radius-full);border:1px solid var(--color-border-strong);background:var(--color-surface);color:var(--text-secondary);font-size:var(--text-sm);font-weight:600;cursor:pointer;transition:all var(--transition-fast)}.chip-toggle input:checked+label{background:var(--color-brand-wash);border-color:var(--color-brand);color:var(--color-brand-wash-text)}.chip-toggle input:focus-visible+label{box-shadow:var(--focus-ring)}.chip-toggle label:hover{border-color:var(--color-border-strong);background:var(--color-surface-hover)}.card{background:var(--color-surface);border:1px solid var(--color-border);border-radius:var(--radius-lg);padding:var(--space-5)}.card-flush{padding:0}.card-header{display:flex;align-items:center;justify-content:space-between;gap:var(--space-4);margin-bottom:var(--space-4)}.card-title{font-size:var(--text-md);font-weight:650;color:var(--text-primary)}.card-subtitle{font-size:var(--text-sm);color:var(--text-muted);margin-top:var(--space-1)}.kpi-grid{display:grid;grid-template-columns:repeat(auto-fit,minmax(11.5rem,1fr));gap:var(--space-4)}.kpi-tile{background:var(--color-surface);border:1px solid var(--color-border);border-radius:var(--radius-lg);padding:var(--space-4) var(--space-5);display:flex;flex-direction:column;gap:var(--space-2)}.kpi-label{font-size:var(--text-xs);font-weight:600;text-transform:uppercase;letter-spacing:.04em;color:var(--text-muted)}.kpi-value{font-size:var(--text-xl);font-weight:700;color:var(--text-primary);letter-spacing:-.01em}.kpi-delta{font-size:var(--text-xs);font-weight:600;display:inline-flex;align-items:center;gap:var(--space-1)}.kpi-delta.positive{color:var(--color-success-text)}.kpi-delta.negative{color:var(--color-danger-text)}.badge{display:inline-flex;align-items:center;gap:var(--space-1);font-size:var(--text-xs);font-weight:650;padding:.25rem .625rem;border-radius:var(--radius-full);white-space:nowrap;line-height:1.4}.badge-dot{width:6px;height:6px;border-radius:50%;background:currentColor;flex-shrink:0}.badge-success{background:var(--color-success-bg);color:var(--color-success-text)}.badge-danger{background:var(--color-danger-bg);color:var(--color-danger-text)}.badge-warning{background:var(--color-warning-bg);color:var(--color-warning-text)}.badge-info{background:var(--color-info-bg);color:var(--color-info-text)}.badge-neutral{background:var(--color-neutral-bg);color:var(--color-neutral-text)}.badge-brand{background:var(--color-brand-wash);color:var(--color-brand-wash-text)}.badge-accent{background:var(--color-accent-wash);color:var(--color-accent-wash-text)}.channel-tag{display:inline-flex;align-items:center;font-size:var(--text-xs);font-weight:600;padding:.1875rem .5rem;border-radius:var(--radius-sm);background:var(--color-neutral-bg);color:var(--color-neutral-text);border:1px solid var(--color-border)}.table-wrap{overflow-x:auto;border:1px solid var(--color-border);border-radius:var(--radius-lg)}table.data-table{width:100%;border-collapse:collapse;font-size:var(--text-sm);background:var(--color-surface)}.data-table th{text-align:left;font-size:var(--text-xs);font-weight:650;text-transform:uppercase;letter-spacing:.03em;color:var(--text-muted);background:var(--color-surface-sunken);padding:var(--space-3) var(--space-4);border-bottom:1px solid var(--color-border);white-space:nowrap}.data-table td{padding:var(--space-3) var(--space-4);border-bottom:1px solid var(--color-border);color:var(--text-primary);vertical-align:middle}.data-table tbody tr:last-child td{border-bottom:none}.data-table tbody tr:hover{background:var(--color-surface-hover)}.data-table td.numeric,.data-table th.numeric{text-align:right;font-variant-numeric:tabular-nums}.table-row-link{color:var(--text-primary);font-weight:600}.table-row-link:hover{color:var(--color-brand)}.meter{display:flex;align-items:center;gap:var(--space-3)}.meter-track{flex:1;height:8px;border-radius:var(--radius-full);background:var(--color-surface-sunken);border:1px solid var(--color-border);overflow:hidden}.meter-fill{height:100%;border-radius:var(--radius-full);background:var(--color-brand);transition:width var(--transition-base)}.meter-value{font-size:var(--text-xs);font-weight:650;color:var(--text-secondary);width:2.5rem;text-align:right;font-variant-numeric:tabular-nums}.barchart{display:flex;flex-direction:column;gap:var(--space-3)}.barchart-row{display:grid;grid-template-columns:7rem 1fr 4.5rem;align-items:center;gap:var(--space-3);font-size:var(--text-sm)}.barchart-row-label{color:var(--text-secondary);font-weight:600;white-space:nowrap;overflow:hidden;text-overflow:ellipsis}.barchart-track{height:10px;border-radius:var(--radius-full);background:var(--color-surface-sunken);border:1px solid var(--color-border);overflow:hidden}.barchart-fill{height:100%;border-radius:var(--radius-full);background:var(--color-brand)}.barchart-fill.accent{background:var(--color-accent)}.barchart-row-value{text-align:right;color:var(--text-primary);font-weight:650;font-variant-numeric:tabular-nums}.vbar-chart{display:flex;align-items:flex-end;gap:var(--space-2);height:8rem;padding-top:var(--space-4)}.vbar-col{flex:1;display:flex;flex-direction:column;align-items:center;gap:var(--space-2);min-width:0}.vbar{width:100%;max-width:2rem;border-radius:var(--radius-sm) var(--radius-sm) 0 0;background:var(--color-brand);transition:height var(--transition-base)}.vbar-tick{font-size:.6875rem;color:var(--text-muted);white-space:nowrap}.toast-viewport{position:fixed;bottom:var(--space-5);right:var(--space-5);display:flex;flex-direction:column;gap:var(--space-2);z-index:1000;width:min(22rem,calc(100vw - 2rem))}.toast{display:flex;align-items:flex-start;gap:var(--space-3);padding:var(--space-3) var(--space-4);border-radius:var(--radius-md);box-shadow:var(--shadow-lg);font-size:var(--text-sm);font-weight:550;border:1px solid var(--color-border);background:var(--color-surface);color:var(--text-primary);animation:toast-in var(--transition-base)}.toast-success{background:var(--color-success-bg);color:var(--color-success-text);border-color:transparent}.toast-error{background:var(--color-danger-bg);color:var(--color-danger-text);border-color:transparent}.toast-info{background:var(--color-info-bg);color:var(--color-info-text);border-color:transparent}.toast-dismiss{margin-left:auto;background:transparent;border:none;color:inherit;opacity:.7;cursor:pointer;font-size:var(--text-md);line-height:1}.toast-dismiss:hover{opacity:1}@keyframes toast-in{0%{opacity:0;transform:translateY(8px)}to{opacity:1;transform:translateY(0)}}.state-block{display:flex;flex-direction:column;align-items:center;justify-content:center;text-align:center;gap:var(--space-3);padding:var(--space-8) var(--space-5);color:var(--text-muted)}.state-block-icon{width:2.75rem;height:2.75rem;border-radius:50%;background:var(--color-surface-sunken);display:flex;align-items:center;justify-content:center;color:var(--text-muted)}.state-block-title{font-size:var(--text-md);font-weight:650;color:var(--text-primary)}.state-block-desc{font-size:var(--text-sm);color:var(--text-muted);max-width:26rem}.skeleton{background:linear-gradient(90deg,var(--color-surface-sunken) 25%,var(--color-surface-hover) 37%,var(--color-surface-sunken) 63%);background-size:400% 100%;animation:skeleton-shimmer 1.4s ease infinite;border-radius:var(--radius-sm)}@keyframes skeleton-shimmer{0%{background-position:100% 50%}to{background-position:0 50%}}.spinner{width:1.125rem;height:1.125rem;border-radius:50%;border:2px solid currentColor;border-right-color:transparent;opacity:.85;animation:spin .7s linear infinite}@keyframes spin{to{transform:rotate(360deg)}}.app-shell{display:grid;grid-template-columns:15.5rem 1fr;min-height:100vh}.app-sidebar{background:var(--color-surface);border-right:1px solid var(--color-border);display:flex;flex-direction:column;padding:var(--space-5) var(--space-4);gap:var(--space-6)}.app-brand{display:flex;align-items:center;gap:var(--space-2);padding:0 var(--space-2)}.app-brand-mark{width:2rem;height:2rem;border-radius:var(--radius-md);background:var(--color-brand);color:var(--text-on-brand);display:flex;align-items:center;justify-content:center;font-weight:800;font-size:var(--text-sm);flex-shrink:0}.app-brand-name{font-weight:700;font-size:var(--text-md);color:var(--text-primary);letter-spacing:-.01em}.app-nav{display:flex;flex-direction:column;gap:var(--space-1)}.app-nav-section-label{font-size:.6875rem;font-weight:700;text-transform:uppercase;letter-spacing:.06em;color:var(--text-muted);padding:var(--space-3) var(--space-3) var(--space-1)}.app-nav-link{display:flex;align-items:center;gap:var(--space-3);padding:.5625rem var(--space-3);border-radius:var(--radius-md);color:var(--text-secondary);font-size:var(--text-sm);font-weight:600;text-decoration:none;transition:background var(--transition-fast),color var(--transition-fast)}.app-nav-link:hover{background:var(--color-surface-hover);color:var(--text-primary)}.app-nav-link.active{background:var(--color-brand-wash);color:var(--color-brand-wash-text)}.app-nav-icon{width:1.125rem;height:1.125rem;flex-shrink:0;display:flex;align-items:center;justify-content:center}.app-sidebar-footer{margin-top:auto;display:flex;flex-direction:column;gap:var(--space-3);border-top:1px solid var(--color-border);padding-top:var(--space-4)}.app-user{display:flex;align-items:center;gap:var(--space-3);padding:0 var(--space-2)}.app-user-avatar{width:2rem;height:2rem;border-radius:50%;background:var(--color-accent-wash);color:var(--color-accent-wash-text);display:flex;align-items:center;justify-content:center;font-weight:700;font-size:var(--text-xs);flex-shrink:0}.app-user-info{min-width:0}.app-user-email{font-size:var(--text-xs);font-weight:600;color:var(--text-primary);white-space:nowrap;overflow:hidden;text-overflow:ellipsis}.app-user-role{font-size:.6875rem;color:var(--text-muted);text-transform:capitalize}.app-main{display:flex;flex-direction:column;min-width:0}.app-topbar{display:flex;align-items:center;justify-content:space-between;gap:var(--space-4);padding:var(--space-4) var(--space-6);border-bottom:1px solid var(--color-border);background:var(--color-surface);position:sticky;top:0;z-index:10}.app-page-title{font-size:var(--text-lg);font-weight:700;color:var(--text-primary)}.app-content{padding:var(--space-6);flex:1;display:flex;flex-direction:column;gap:var(--space-5);max-width:90rem;width:100%;margin:0 auto}@media (max-width: 900px){.app-shell{grid-template-columns:1fr}.app-sidebar{display:none}}.auth-shell{min-height:100vh;display:flex;align-items:center;justify-content:center;background:var(--color-bg);padding:var(--space-5)}.auth-card{width:100%;max-width:25rem;background:var(--color-surface);border:1px solid var(--color-border);border-radius:var(--radius-lg);padding:var(--space-7) var(--space-6);box-shadow:var(--shadow-md);display:flex;flex-direction:column;gap:var(--space-5)}.auth-brand{display:flex;align-items:center;gap:var(--space-2);justify-content:center;margin-bottom:var(--space-1)}.auth-title{text-align:center;font-size:var(--text-xl);font-weight:700}.auth-subtitle{text-align:center;font-size:var(--text-sm);color:var(--text-muted);margin-top:calc(var(--space-2) * -1)}.auth-footer{text-align:center;font-size:var(--text-sm);color:var(--text-muted)}.auth-banner{border-radius:var(--radius-md);padding:var(--space-3) var(--space-4);font-size:var(--text-sm);font-weight:550}.stack{display:flex;flex-direction:column}.gap-1{gap:var(--space-1)}.gap-2{gap:var(--space-2)}.gap-3{gap:var(--space-3)}.gap-4{gap:var(--space-4)}.gap-5{gap:var(--space-5)}.row{display:flex;align-items:center}.row-between{display:flex;align-items:center;justify-content:space-between}.wrap{flex-wrap:wrap}.grid-2{display:grid;grid-template-columns:repeat(auto-fit,minmax(18rem,1fr));gap:var(--space-5)}.muted{color:var(--text-muted)}.text-sm{font-size:var(--text-sm)}.text-xs{font-size:var(--text-xs)}.font-mono{font-family:var(--font-mono)}
