.app-shell-header{grid-area:header;display:grid;grid-template-columns:var(--shell-sidebar-w) minmax(280px,1fr) auto;align-items:center;border-bottom:1px solid var(--shell-border);background:var(--shell-bg);position:sticky;top:0;z-index:20;padding-right:1.25rem}.app-shell-brand{display:flex;align-items:center;gap:.5rem;text-decoration:none;color:var(--shell-text);padding:0 1.25rem;height:100%;align-self:stretch;border-right:1px solid var(--shell-border);background:var(--shell-sidebar-bg)}.app-shell-brand-mark{color:var(--shell-accent);font-size:.75rem;line-height:1}.app-shell-brand-name{font-weight:700;font-size:1.05rem;letter-spacing:-.01em;margin-left:.25rem}.app-shell-brand-sub{font-size:.75rem;color:var(--shell-text-muted);margin-left:.375rem}.app-shell-search{position:relative;display:flex;align-items:center;margin:0 1rem}.app-shell-search input{width:100%;font:inherit;font-size:.9375rem;padding:.5rem .875rem .5rem 2.25rem;border:1px solid var(--shell-border);background:var(--shell-surface);border-radius:8px;color:var(--shell-text)}.app-shell-search input::placeholder{color:var(--shell-text-soft)}.app-shell-search input:focus-visible{outline:2px solid var(--shell-accent);outline-offset:1px}.app-shell-user{display:flex;align-items:center;gap:.875rem;justify-self:end}.app-shell-user-info{display:flex;flex-direction:column;align-items:flex-end;line-height:1.15}.app-shell-user-name{font-weight:600;font-size:.875rem;color:var(--shell-text)}.app-shell-user-role{font-size:.6875rem;font-weight:600;letter-spacing:.02em;color:var(--shell-text);background:var(--shell-surface-soft);border:1px solid var(--c-border-default);padding:.125rem .5rem;border-radius:999px;margin-top:.125rem}.app-shell-logout-form{margin:0}.app-shell-logout{font:inherit;font-size:.8125rem;background:transparent;border:1px solid var(--shell-border);color:var(--shell-text-muted);padding:.3rem .75rem;border-radius:6px;cursor:pointer;transition:background .12s ease,color .12s ease,border-color .12s ease}.app-shell-logout:hover{background:var(--shell-surface);color:var(--shell-text);border-color:var(--c-border-default)}@media(max-width:900px){.app-shell-header{grid-template-columns:auto 1fr auto}.app-shell-brand{border-right:none}}.app-shell-sidebar{grid-area:sidebar;background:var(--shell-sidebar-bg);border-right:1px solid var(--shell-border);position:sticky;top:var(--shell-header-h);align-self:start;height:calc(100vh - var(--shell-header-h));overflow-y:auto;padding:1.25rem .625rem}.app-shell-nav-list,.app-shell-nav-sublist{list-style:none;margin:0;padding:0}.app-shell-nav-sublist{margin:.125rem 0 .5rem .875rem;border-left:1px solid var(--shell-border);padding-left:.625rem}.app-shell-nav-item{margin:.125rem 0}.app-shell-nav-link{display:flex;align-items:center;justify-content:space-between;gap:.5rem;text-decoration:none;color:var(--shell-text-muted);font-size:.9375rem;padding:.5rem .75rem;border-radius:8px;transition:background .12s ease,color .12s ease}a.app-shell-nav-link:hover{background:var(--shell-surface);color:var(--shell-text)}a.app-shell-nav-link.active{background:var(--shell-accent);color:var(--shell-accent-text);font-weight:600}.app-shell-nav-parent{font-weight:600;color:var(--shell-text);cursor:default}@media(max-width:900px){.app-shell-sidebar{position:static;height:auto;border-right:none;border-bottom:1px solid var(--shell-border)}}:root{--c-bg-page: #222423;--c-bg-sidebar: #1a1c1b;--c-bg-surface: #2c2e2d;--c-bg-surface-soft: #34373a;--c-bg-input: #2a2c2b;--c-bg-map: #2a2f36;--c-bg-tint-supply: rgba(82, 220, 165, .12);--c-bg-tint-demand: rgba(92, 196, 245, .12);--c-bg-tint-search: rgba(239, 107, 107, .14);--c-bg-tint-adverts: rgba(184, 164, 240, .14);--c-border-subtle: #3a3d3b;--c-border-default: #4a4d4b;--c-border-strong: #5d605e;--c-text-primary: #f0f1ef;--c-text-secondary: #a8aba9;--c-text-muted: #707371;--c-text-on-accent: #1a1c1b;--c-accent: #52dca5;--c-accent-hover: #3fcd94;--c-accent-soft: rgba(82, 220, 165, .18);--c-brand-color: #17213f;--c-supply: #52dca5;--c-demand: #5cc4f5;--c-adverts: #b8a4f0;--c-search: #ef6b6b;--c-selected: #ffffff;--c-success: var(--c-supply);--c-success-soft: var(--c-bg-tint-supply);--c-success-border: rgba(82, 220, 165, .4);--c-info: var(--c-demand);--c-info-soft: var(--c-bg-tint-demand);--c-info-border: rgba(92, 196, 245, .4);--c-warning: #e4b14a;--c-warning-soft: rgba(228, 177, 74, .14);--c-warning-border: rgba(228, 177, 74, .4);--c-danger: var(--c-search);--c-danger-soft: var(--c-bg-tint-search);--c-danger-border: rgba(239, 107, 107, .4);--c-radius-sm: 6px;--c-radius-md: 10px;--c-radius-lg: 14px;--c-shadow-card: 0 2px 8px rgba(0, 0, 0, .35);--c-shadow-lift: 0 8px 24px rgba(0, 0, 0, .5);color-scheme:dark}html,body{background:var(--c-bg-page);color:var(--c-text-primary)}h1,h2,h3,h4,h5,h6,p{color:var(--c-text-primary)}strong{color:inherit;font-weight:600}code{font-family:ui-monospace,SF Mono,Consolas,monospace;font-size:.875em;background:var(--c-bg-surface);color:var(--c-text-primary);padding:.125rem .375rem;border-radius:4px}::selection{background:var(--c-accent-soft);color:var(--c-text-primary)}.card{background:var(--c-bg-surface);border:1px solid var(--c-border-subtle);border-radius:var(--c-radius-md);padding:1rem 1.125rem 1.125rem;box-shadow:var(--c-shadow-card);color:var(--c-text-primary);display:flex;flex-direction:column}.card-fun{background:linear-gradient(135deg,var(--c-accent-soft) 0%,var(--c-bg-surface) 70%);border-color:var(--c-border-default)}.card-header{display:flex;align-items:flex-start;justify-content:space-between;gap:.75rem;margin-bottom:.875rem}.card-header h2{font-size:1rem;margin:0 0 .125rem;letter-spacing:-.005em;color:var(--c-text-primary)}.card-header p{font-size:.8125rem;color:var(--c-text-secondary);margin:0}.card-body{flex:1}.card-link{font-size:.8125rem;color:var(--c-accent);text-decoration:none;white-space:nowrap;font-weight:600}.card-link:hover{color:var(--c-accent-hover);text-decoration:underline}.card-soon-pill{display:inline-block;margin-top:.5rem;font-size:.6875rem;font-weight:600;letter-spacing:.02em;text-transform:uppercase;color:var(--c-text-secondary);background:var(--c-bg-surface-soft);border:1px solid var(--c-border-subtle);padding:.125rem .5rem;border-radius:999px}.chart-frame{background:var(--c-bg-surface);border:1px solid var(--c-border-subtle);border-radius:var(--c-radius-sm);padding:.75rem .5rem}.kpi-grid{display:grid;grid-template-columns:repeat(auto-fit,minmax(160px,1fr));gap:.75rem;margin-bottom:2rem}.kpi-card{background:var(--c-bg-surface-soft);border:1px solid var(--c-border-subtle);border-radius:var(--c-radius-sm);padding:1rem;color:var(--c-text-primary)}.kpi-card-accent-success,.kpi-card-accent-info,.kpi-card-accent-warning,.kpi-card-accent-danger{border-left-width:4px}.kpi-card-accent-success{border-left-color:var(--c-success);background:linear-gradient(0deg,var(--c-success-soft),var(--c-success-soft)),var(--c-bg-surface-soft)}.kpi-card-accent-info{border-left-color:var(--c-info);background:linear-gradient(0deg,var(--c-info-soft),var(--c-info-soft)),var(--c-bg-surface-soft)}.kpi-card-accent-warning{border-left-color:var(--c-warning);background:linear-gradient(0deg,var(--c-warning-soft),var(--c-warning-soft)),var(--c-bg-surface-soft)}.kpi-card-accent-danger{border-left-color:var(--c-danger);background:linear-gradient(0deg,var(--c-danger-soft),var(--c-danger-soft)),var(--c-bg-surface-soft)}.kpi-value{font-size:1.75rem;font-weight:600;line-height:1.1;color:var(--c-text-primary)}.kpi-label{font-size:.8125rem;color:var(--c-text-secondary);margin-top:.25rem}.data-table{width:100%;border-collapse:collapse;font-size:.9375rem;color:var(--c-text-primary)}.data-table th,.data-table td{text-align:left;padding:.5rem .75rem;border-bottom:1px solid var(--c-border-subtle)}.data-table th{font-weight:600;color:var(--c-text-secondary)}.demo-badge{font-size:.75rem;font-weight:600;letter-spacing:.04em;text-transform:uppercase;color:var(--c-warning);background:var(--c-warning-soft);border:1px solid var(--c-warning-border);padding:.25rem .5rem;border-radius:999px;cursor:help}.error-detail{color:var(--c-danger);font-family:ui-monospace,SF Mono,Consolas,monospace;background:var(--c-danger-soft);border:1px solid var(--c-danger-border);border-radius:var(--c-radius-sm);padding:.75rem 1rem;white-space:pre-wrap;word-break:break-word}.error-hint{color:var(--c-text-secondary);font-size:.9375rem}.error-hint code{background:var(--c-bg-surface-soft);padding:.125rem .375rem;border-radius:4px;font-size:.875rem}.tag{display:inline-block;font-size:.75rem;font-weight:600;letter-spacing:.04em;text-transform:uppercase;padding:.15rem .5rem;border-radius:999px;border:1px solid var(--c-border-subtle);color:var(--c-text-secondary);background:var(--c-bg-surface-soft)}.tag-success{color:var(--c-success);background:var(--c-success-soft);border-color:var(--c-success-border)}.tag-info{color:var(--c-info);background:var(--c-info-soft);border-color:var(--c-info-border)}.tag-warning{color:var(--c-warning);background:var(--c-warning-soft);border-color:var(--c-warning-border)}.tag-danger{color:var(--c-danger);background:var(--c-danger-soft);border-color:var(--c-danger-border)}.recharts-cartesian-grid line{stroke:var(--c-border-subtle)}.recharts-cartesian-axis-line,.recharts-cartesian-axis-tick-line{stroke:var(--c-border-default)}.recharts-cartesian-axis-tick-value,.recharts-cartesian-axis text{fill:var(--c-text-secondary)}.recharts-default-tooltip{background-color:var(--c-bg-surface)!important;border-color:var(--c-border-subtle)!important;color:var(--c-text-primary)!important;border-radius:var(--c-radius-sm)!important}.recharts-tooltip-label,.recharts-tooltip-item,.recharts-tooltip-item-name,.recharts-tooltip-item-value,.recharts-legend-item-text{color:var(--c-text-primary)!important}.recharts-tooltip-cursor{fill:var(--c-accent-soft)}:root{--shell-header-h: 60px;--shell-sidebar-w: 240px;--shell-border: var(--c-border-subtle);--shell-bg: var(--c-bg-page);--shell-sidebar-bg: var(--c-bg-sidebar);--shell-surface: var(--c-bg-surface);--shell-surface-soft: var(--c-bg-surface-soft);--shell-text: var(--c-text-primary);--shell-text-muted: var(--c-text-secondary);--shell-text-soft: var(--c-text-muted);--shell-accent: var(--c-accent);--shell-accent-text: var(--c-text-on-accent)}html{scrollbar-gutter:stable}*,*:before,*:after{box-sizing:border-box}body{margin:0;font-family:"Source Sans 3",ui-sans-serif,system-ui,sans-serif;color:var(--shell-text);background:var(--shell-bg)}a{color:inherit}.app-shell{display:grid;grid-template-columns:var(--shell-sidebar-w) 1fr;grid-template-rows:var(--shell-header-h) 1fr;grid-template-areas:"header header" "sidebar main";min-height:100vh}.app-shell-main{grid-area:main;min-width:0}@media(max-width:900px){.app-shell{grid-template-columns:1fr;grid-template-areas:"header" "sidebar" "main"}}
