:root{font-family:Inter,system-ui,-apple-system,Segoe UI,Roboto,sans-serif;line-height:1.5;font-weight:400;--color-bg: #ffffff;--color-bg-secondary: #f3f3f3;--color-accent-yellow: #ffbc11;--color-accent-blue: #4578f9;--color-accent-green: #43b430;--color-accent-purple: #cb3eff;--color-text: #000000;--color-text-secondary: #7b7b7b;--color-text-inverse: #000000;--color-border: #e5e7eb;--color-sidebar-bg: #ffffff;--color-card-bg: #ffffff;--color-card-shadow: 0 1px 3px rgba(0, 0, 0, .08);--color-theme-toggle-inactive: #7b7b7b;--color-trend-up: #43b430;--color-trend-down: #dc2626;--color-btn-primary: #0f172a;--color-btn-primary-text: #ffffff;--bp-mobile: 360px;--bp-tablet: 768px;--bp-desktop: 1024px;--sidebar-width: 240px;--main-padding-mobile: .75rem;--main-padding-tablet: 1rem;--main-padding-desktop: 1.5rem;--text-48: 48px;--text-36: 36px;--text-20: 20px;--text-16: 16px;--text-14: 14px;--font-semibold: 600;--font-medium: 500;--font-regular: 400;--color-active: #e6f1ff;--color-active-secondary: #b6d6ff}[data-theme=dark]{--color-bg: #11121e;--color-bg-secondary: #13131f;--color-text: #ffffff;--color-text-secondary: #a1a1aa;--color-text-inverse: #11121e;--color-border: #27272a;--color-sidebar-bg: #1d1d29;--color-card-bg: #252535;--color-card-shadow: 0 1px 3px rgba(0, 0, 0, .3);--color-theme-toggle-inactive: #71717a;--color-btn-primary: #cb3eff;--color-btn-primary-text: #ffffff;--color-active: #ffffff;--color-active-secondary: #e5e7eb}@media (max-width: 767px){:root{--text-48: 40px;--text-36: 28px;--text-20: 17px;--text-16: 13px;--text-14: 12px}.app-header-title{font-size:1.0625rem}.page-header h1{font-size:1.125rem}.dashboard-kpi-card .kpi-value{font-size:clamp(1rem,3vw,17px)}.dashboard-kpi-card .kpi-trend{font-size:11px}.dashboard-chart-card .chart-title{font-size:13px}.table-theme th,.table-theme td{font-size:12px}.modal-title{font-size:1rem}.modal-close{font-size:1.125rem}.login-card h1{font-size:1.25rem}.login-card .input-text{font-size:.9375rem}.login-helper{font-size:.75rem}.error-alert{font-size:12px}}*{box-sizing:border-box}body{margin:0;min-height:100vh;min-width:360px;overflow-x:hidden;background-color:var(--color-bg-secondary);color:var(--color-text)}#root{min-height:100vh;min-width:360px}a{color:var(--color-accent-blue);text-decoration:none}a:hover{text-decoration:underline}@keyframes skeleton-shimmer{0%{background-position:200% 0}to{background-position:-200% 0}}.app-shell{display:flex;min-height:100vh;min-width:360px;background-color:var(--color-bg-secondary)}.app-nav{width:var(--sidebar-width);height:100vh;padding:1rem 0;border-right:1px solid var(--color-border);background:var(--color-sidebar-bg);position:fixed;top:0;left:0;z-index:1000;transition:transform .2s ease,box-shadow .2s ease;display:flex;flex-direction:column}.app-nav-brand{display:flex;align-items:center;gap:.25rem;padding:0 1.25rem 1.25rem;margin-bottom:.5rem;border-bottom:1px solid var(--color-border)}.app-nav-brand-icon{width:3rem;height:3rem;display:flex;align-items:center;justify-content:center}.app-nav-brand-text{font-size:var(--text-16);font-weight:var(--font-semibold);color:var(--color-text)}.app-nav-list{list-style:none;margin:0;padding:0 .75rem;flex:1}.app-nav-list li{margin-bottom:2px}.app-nav-list a{display:flex;align-items:center;gap:.75rem;padding:.625rem .75rem;border-radius:8px;color:var(--color-text-secondary);font-size:var(--text-14);font-weight:var(--font-medium);text-decoration:none;transition:background .15s,color .15s}.app-nav-list a:hover{background:var(--color-bg-secondary);color:var(--color-text)}.app-nav-list a.active{background:var(--color-active);color:var(--color-text-inverse)}.app-nav-list a.active:hover{background:var(--color-active-secondary);color:var(--color-text-inverse)}.app-nav-list .nav-icon{width:20px;height:20px;flex-shrink:0;opacity:.9}.app-nav-list a.active .nav-icon{opacity:1}.app-nav-list li.nav-divider{margin-top:.75rem;padding-top:.75rem;border-top:1px solid var(--color-border)}.app-nav-list li.nav-divider button{display:flex;align-items:center;gap:.75rem;width:100%;padding:.625rem .75rem;border:none;border-radius:8px;background:none;color:var(--color-text-secondary);font-size:var(--text-14);font-weight:var(--font-medium);cursor:pointer;text-align:left;transition:background .15s,color .15s}.app-nav-list li.nav-divider button:hover{background:var(--color-bg-secondary);color:var(--color-text)}.app-nav-help{margin:.75rem 1rem 1rem;padding:1rem;border-radius:12px;background:var(--color-bg-secondary);border:1px solid var(--color-border)}.app-nav-help p{margin:0 0 .5rem;font-size:12px;color:var(--color-text-secondary);line-height:1.4}.app-nav-help a,.app-nav-help button{display:inline-block;padding:.375rem .75rem;border-radius:8px;background:var(--color-active);color:var(--color-text-inverse);font-size:12px;font-weight:var(--font-medium);border:none;cursor:pointer;text-decoration:none}.app-main{flex:1;min-width:0;padding:var(--main-padding-mobile);margin-left:0;transition:margin-left .2s ease;background-color:var(--color-bg-secondary)}@media (max-width: 1023px){.app-nav{transform:translate(-100%);box-shadow:none}.app-nav.open{transform:translate(0);box-shadow:4px 0 12px #00000026}.app-nav-backdrop{display:none;position:fixed}.app-nav-backdrop.open{display:block;top:0;right:0;bottom:0;left:0;background:#0006;z-index:999}.app-main{padding:var(--main-padding-mobile)}}@media (min-width: 768px) and (max-width: 1023px){.app-main{padding:var(--main-padding-tablet)}}.app-nav-toggle{position:fixed;top:1.5rem;left:16rem;z-index:1001;width:40px;height:40px;padding:0;border:1px solid var(--color-border);border-radius:8px;background:var(--color-card-bg);color:var(--color-text);cursor:pointer;display:flex;align-items:center;justify-content:center;box-shadow:var(--color-card-shadow)}.app-nav-toggle:focus-visible{outline:2px solid var(--color-accent-blue);outline-offset:2px}.app-nav-toggle[aria-expanded=true]{display:none}.app-nav-close{width:40px;height:40px;padding:0;border:1px solid var(--color-border);border-radius:8px;background:var(--color-card-bg);color:var(--color-text);cursor:pointer;display:flex;align-items:center;justify-content:center;box-shadow:var(--color-card-shadow);margin-left:auto}@media (min-width: 1024px){.app-main{margin-left:var(--sidebar-width);padding:var(--main-padding-desktop)}.app-nav-toggle,.app-nav-close{display:none}}.app-header{display:flex;flex-wrap:wrap;gap:.75rem;align-items:center;justify-content:flex-end;margin-bottom:1.25rem;padding:.5rem 0}.app-header-title{margin:0;font-size:clamp(1.25rem,4vw,var(--text-20));font-weight:var(--font-semibold);color:var(--color-text)}.app-header-actions{display:flex;align-items:center;gap:.5rem}.app-header-actions .theme-toggle{width:40px;height:40px;padding:0;border:1px solid var(--color-border);border-radius:8px;background:var(--color-card-bg);color:var(--color-text-secondary);cursor:pointer;display:flex;align-items:center;justify-content:center;transition:color .15s,background .15s}.app-header-actions .theme-toggle:hover{color:var(--color-text);background:var(--color-bg-secondary)}.app-header-actions .theme-toggle.active{color:var(--color-accent-blue)}.page-header{display:flex;flex-wrap:wrap;gap:.75rem;justify-content:space-between;align-items:center;margin-bottom:1rem}.page-header h1{margin:0;font-size:clamp(1.125rem,4vw,1.5rem);font-weight:var(--font-semibold);color:var(--color-text)}.dashboard-kpi-card{padding:1.25rem;background:var(--color-card-bg);border-radius:12px;box-shadow:var(--color-card-shadow);border:1px solid var(--color-border);transition:box-shadow .2s}.dashboard-kpi-card:hover{box-shadow:0 4px 12px #00000014}[data-theme=dark] .dashboard-kpi-card:hover{box-shadow:0 4px 12px #00000040}.dashboard-kpi-card .kpi-label{font-size:var(--text-14);color:var(--color-text-secondary);margin-bottom:.25rem}.dashboard-kpi-card .kpi-value{font-size:clamp(1.25rem,3vw,var(--text-20));font-weight:var(--font-semibold);color:var(--color-text)}.dashboard-kpi-card .kpi-trend{font-size:12px;margin-top:.25rem}.dashboard-kpi-card .kpi-trend.up{color:var(--color-trend-up)}.dashboard-kpi-card .kpi-trend.down{color:var(--color-trend-down)}.dashboard-kpi-card{display:flex;flex-direction:column;align-items:stretch}.dashboard-widget-hide-btn{margin-top:.5rem;padding:.25rem .5rem;font-size:.75rem;color:var(--color-text-secondary);background:transparent;border:1px solid var(--color-border);border-radius:6px;cursor:pointer;align-self:flex-start}.dashboard-widget-hide-btn:hover{color:var(--color-text);border-color:var(--color-text-secondary)}.dashboard-chart-card{padding:1.25rem;background:var(--color-card-bg);border-radius:12px;box-shadow:var(--color-card-shadow);border:1px solid var(--color-border)}.dashboard-chart-card .chart-title{margin:0 0 1rem;font-size:var(--text-16);font-weight:var(--font-semibold);color:var(--color-text)}.dashboard-hidden-widgets{margin-top:1.5rem;padding:1rem;background:var(--color-bg-secondary);border-radius:8px;border:1px solid var(--color-border)}.dashboard-hidden-widget-chip{display:inline-flex;align-items:center;gap:.5rem;padding:.35rem .75rem;background:var(--color-card-bg);border:1px solid var(--color-border);border-radius:8px;font-size:.875rem}.dashboard-widget-show-btn{padding:.2rem .5rem;font-size:.75rem;color:var(--color-accent-blue);background:transparent;border:1px solid var(--color-accent-blue);border-radius:4px;cursor:pointer}.dashboard-widget-show-btn:hover{background:color-mix(in srgb,var(--color-accent-blue) 15%,transparent)}.table-wrap{position:relative}.table-wrap-inner{position:relative;width:100%;overflow-x:auto;-webkit-overflow-scrolling:touch}.dashboard-summary-grid{display:grid;gap:.75rem;margin-bottom:1.5rem;grid-template-columns:repeat(auto-fill,minmax(160px,1fr))}@media (min-width: 768px){.dashboard-summary-grid{gap:1rem;grid-template-columns:repeat(auto-fill,minmax(200px,1fr))}}@media (min-width: 1024px){.dashboard-summary-grid{gap:16px}}.dashboard-chart-grid{display:grid;gap:1rem;margin-bottom:1.5rem;grid-template-columns:1fr}@media (min-width: 768px){.dashboard-chart-grid{gap:1.25rem;grid-template-columns:repeat(2,1fr)}}@media (min-width: 1024px){.dashboard-chart-grid{gap:24px}}.filter-row{display:flex;flex-wrap:wrap;gap:.75rem;align-items:flex-end;margin-bottom:1.5rem}@media (min-width: 768px){.filter-row{gap:1rem}}.table-theme{width:100%;min-width:1280px;border-collapse:collapse;background:var(--color-card-bg);border-radius:8px;overflow:hidden;box-shadow:var(--color-card-shadow)}.table-theme thead tr{background:var(--color-bg-secondary);border-bottom:1px solid var(--color-border)}.table-theme th{padding:.75rem 1rem;text-align:center;white-space:nowrap;font-weight:600;font-size:14px;color:var(--color-text)}.table-theme th .table-sort-header{all:unset;display:inline-flex;align-items:center;justify-content:center;cursor:pointer;font:inherit;color:inherit;padding:0;width:100%;text-align:center}.table-theme th .table-sort-header:hover{text-decoration:underline}.table-theme th .table-sort-header:focus-visible{outline:2px solid var(--color-accent-blue);outline-offset:2px}.table-theme th .table-sort-icon{margin-left:4px}.table-theme tbody tr{border-bottom:1px solid var(--color-border);color:var(--color-text)}.table-theme tbody tr:hover{background:var(--color-bg-secondary)}.table-theme td{padding:.75rem 1rem;font-size:14px}.modal-overlay{position:fixed;top:0;right:0;bottom:0;left:0;background:#00000080;display:flex;align-items:center;justify-content:center;z-index:1100}.modal-panel{background:var(--color-card-bg);border-radius:12px;max-width:480px;width:90%;max-height:90vh;overflow:auto;box-shadow:0 25px 50px -12px #00000040;border:1px solid var(--color-border)}.modal-header{padding:1rem 1.25rem;border-bottom:1px solid var(--color-border);display:flex;justify-content:space-between;align-items:center}.modal-title{margin:0;font-size:1.125rem;font-weight:600;color:var(--color-text)}.modal-close{background:none;border:none;font-size:1.25rem;cursor:pointer;color:var(--color-text-secondary);padding:4px;line-height:1}.modal-body{padding:1.25rem}.skeleton-bar{background:linear-gradient(90deg,var(--color-bg-secondary) 25%,var(--color-border) 50%,var(--color-bg-secondary) 75%);background-size:200% 100%;animation:skeleton-shimmer 1.5s ease-in-out infinite}.card-skeleton{padding:1.25rem;background:var(--color-card-bg);border-radius:12px;box-shadow:var(--color-card-shadow);border:1px solid var(--color-border)}.table-skeleton{width:100%;border-collapse:collapse;background:var(--color-card-bg);border-radius:8px;overflow:hidden;border:1px solid var(--color-border)}.table-skeleton thead tr{border-bottom:1px solid var(--color-border)}.table-skeleton th{padding:.75rem 1rem;text-align:left}.table-skeleton tbody tr{border-bottom:1px solid var(--color-border)}.table-skeleton td{padding:.75rem 1rem}.btn-primary{padding:.5rem 1rem;background:var(--color-btn-primary);color:var(--color-btn-primary-text);border:none;border-radius:6px;font-size:var(--text-14);font-weight:var(--font-medium);cursor:pointer;transition:opacity .15s}.btn-primary:hover{opacity:.9}.btn-primary:focus-visible{outline:2px solid var(--color-accent-blue);outline-offset:2px}.btn-secondary{padding:.5rem 1rem;background:var(--color-bg-secondary);color:var(--color-text);border:1px solid var(--color-border);border-radius:6px;font-size:var(--text-14);cursor:pointer;transition:background .15s,color .15s}.btn-secondary:hover{background:var(--color-border)}.btn-secondary:focus-visible{outline:2px solid var(--color-accent-blue);outline-offset:2px}.btn-edit{padding:.25rem .5rem;font-size:.75rem;border:none;border-radius:4px;cursor:pointer;margin-right:4px;background:var(--color-bg-secondary);color:var(--color-text);border:1px solid var(--color-border)}.btn-edit:hover{background:var(--color-border)}.btn-edit:focus-visible{outline:2px solid var(--color-accent-blue);outline-offset:2px}.btn-danger{padding:.25rem .5rem;font-size:.75rem;border:none;border-radius:4px;cursor:pointer;margin-right:4px;background:var(--color-bg-secondary);color:var(--color-trend-down);border:1px solid var(--color-trend-down)}.btn-danger:hover{opacity:.9}.btn-danger:focus-visible{outline:2px solid var(--color-accent-blue);outline-offset:2px}.input-text,.input-number{width:100%;padding:.5rem .75rem;border:1px solid var(--color-border);border-radius:6px;font-size:var(--text-14);background:var(--color-card-bg);color:var(--color-text);box-sizing:border-box}.input-text::placeholder,.input-number::placeholder{color:var(--color-text-secondary)}.input-text:focus-visible,.input-number:focus-visible{outline:2px solid var(--color-accent-blue);outline-offset:0;border-color:var(--color-accent-blue)}.input-text[aria-invalid=true],.input-number[aria-invalid=true]{border-color:var(--color-trend-down)}select.input-text{cursor:pointer;-webkit-appearance:auto;-moz-appearance:auto;appearance:auto}.form-label{display:block;margin-bottom:.25rem;font-size:var(--text-14);font-weight:var(--font-medium);color:var(--color-text)}.form-field{margin-bottom:1rem}.form-actions{display:flex;gap:.75rem;justify-content:flex-end;margin-top:1.25rem}.login-container{min-height:100vh;display:flex;align-items:center;justify-content:center;background:var(--color-bg-secondary)}.login-card{width:100%;max-width:400px;padding:2rem;background:var(--color-card-bg);border-radius:12px;box-shadow:var(--color-card-shadow);border:1px solid var(--color-border)}.login-card h1{margin:0 0 1.5rem;font-size:1.5rem;font-weight:600;color:var(--color-text)}.login-card .form-field{margin-bottom:1rem}.login-card .input-text{padding:.75rem 1rem;font-size:1rem}.message-success{margin-bottom:1rem;padding:.75rem;background:var(--color-bg-secondary);color:var(--color-trend-up);border:1px solid var(--color-trend-up);border-radius:8px;font-size:var(--text-14)}.login-card .btn-secondary-block{width:100%;margin-top:1rem;padding:.5rem;background:none;border:none;font-size:var(--text-14);color:var(--color-text-secondary);cursor:pointer}.login-card .btn-secondary-block:hover{text-decoration:underline}.login-card .btn-outline-block{width:100%;padding:.5rem;background:none;border:1px solid var(--color-border);border-radius:8px;font-size:var(--text-14);color:var(--color-text-secondary);cursor:pointer}.login-card .btn-outline-block:hover{background:var(--color-bg-secondary)}.login-card .btn-outline-block:focus-visible,.login-card .btn-secondary-block:focus-visible{outline:2px solid var(--color-accent-blue);outline-offset:2px}.login-helper{margin-top:.375rem;font-size:.8125rem}.login-helper.success{color:var(--color-trend-up)}.login-helper.error{color:var(--color-trend-down)}.checkbox-label{display:flex;align-items:center;gap:.5rem;font-size:var(--text-14);color:var(--color-text);cursor:pointer}.checkbox-label input[type=checkbox]{width:1rem;height:1rem}.checkbox-label input[type=checkbox]:focus-visible{outline:2px solid var(--color-accent-blue);outline-offset:2px}.error-alert{padding:1rem;color:var(--color-trend-down);background:var(--color-bg-secondary);border:1px solid var(--color-trend-down);border-radius:8px}.budget-overrun-alert{display:flex;align-items:center;gap:.75rem;margin-top:.75rem;padding:.75rem 1rem;color:var(--color-trend-down);background:color-mix(in srgb,var(--color-trend-down) 12%,transparent);border:1px solid var(--color-trend-down);border-radius:8px}.budget-overrun-alert a{color:var(--color-accent-blue);text-decoration:underline}.budget-overrun-alert a:hover{text-decoration:none}.text-trend-up{color:var(--color-trend-up)}.text-trend-down{color:var(--color-trend-down)}.text-warning{color:#f59e0b}.filter-group{display:flex;align-items:center;gap:.5rem}.filter-input{min-width:0;max-width:100%}.date-range-picker{display:flex;align-items:center;gap:.5rem;flex-wrap:wrap}.date-range-picker input{padding:.5rem .75rem;border:1px solid var(--color-border);border-radius:6px;font-size:var(--text-14);background:var(--color-card-bg);color:var(--color-text)}.date-range-picker input:focus-visible{outline:2px solid var(--color-accent-blue);outline-offset:0;border-color:var(--color-accent-blue)}.date-range-picker .date-range-sep{color:var(--color-text-secondary)}@media (max-width: 767px){.date-range-picker{flex-direction:column;align-items:stretch}.date-range-picker input{width:100%}}.select-trigger{width:100%;padding:.5rem .75rem;border:1px solid var(--color-border);border-radius:6px;background:var(--color-card-bg);color:var(--color-text);text-align:left;cursor:pointer;font-size:var(--text-14);display:flex;align-items:center;justify-content:space-between;gap:.5rem}.select-trigger:not(:disabled):hover{border-color:var(--color-text-secondary)}.select-trigger:disabled{cursor:not-allowed;opacity:.7}.select-trigger:focus-visible{outline:2px solid var(--color-accent-blue);outline-offset:2px}.select-trigger .select-placeholder{color:var(--color-text-secondary)}.select-dropdown{position:absolute;top:100%;left:0;right:0;margin-top:4px;background:var(--color-card-bg);border:1px solid var(--color-border);border-radius:6px;box-shadow:var(--color-card-shadow);z-index:50;max-height:240px;overflow:auto}.select-dropdown .select-search{width:100%;padding:.5rem .75rem;border:none;border-bottom:1px solid var(--color-border);background:var(--color-card-bg);color:var(--color-text);font-size:var(--text-14)}.select-dropdown .select-search:focus-visible{outline:2px solid var(--color-accent-blue);outline-offset:0}.select-option{width:100%;padding:.5rem .75rem;border:none;background:transparent;text-align:left;cursor:pointer;font-size:var(--text-14);color:var(--color-text)}.select-option:hover,.select-option[aria-selected=true]{background:var(--color-bg-secondary)}.select-option:focus-visible{outline:2px solid var(--color-accent-blue);outline-offset:-2px}.select-wrap{position:relative;display:inline-block;min-width:160px}@media (max-width: 767px){.table-theme th,.table-theme td{padding:.5rem .75rem}}.table-wrap:after{content:"";position:absolute;top:0;right:0;bottom:0;width:24px;pointer-events:none;background:linear-gradient(to left,var(--color-card-bg),transparent);opacity:.6}@media (max-width: 767px){.filter-row .filter-input,.filter-row input.input-number,.filter-row input[type=number]{min-width:0;width:100%;max-width:140px}}.modal-panel{padding-bottom:max(0,env(safe-area-inset-bottom))}.modal-body,.modal-header{padding-left:max(1.25rem,env(safe-area-inset-left));padding-right:max(1.25rem,env(safe-area-inset-right))}@media (max-width: 767px){.btn-primary,.btn-secondary{min-height:44px;min-width:44px;padding:.625rem 1rem}.btn-edit,.btn-danger{min-height:44px;min-width:44px;padding:.5rem .75rem}.app-nav-list a{min-height:44px;padding:.75rem}.app-nav-toggle,.app-header-actions .theme-toggle{min-height:44px;min-width:44px}}.app-header-actions .theme-toggle:focus-visible{outline:2px solid var(--color-accent-blue);outline-offset:2px}.app-nav-list a:focus-visible{outline:2px solid var(--color-accent-blue);outline-offset:2px}.app-nav-list li.nav-divider button:focus-visible{outline:2px solid var(--color-accent-blue);outline-offset:2px}.modal-close:focus-visible{outline:2px solid var(--color-accent-blue);outline-offset:2px}.report-page .report-title{font-size:1.25rem;margin-bottom:1rem}.report-page .report-summary,.report-page .report-section{margin-bottom:1.5rem}.report-page .report-section h3,.report-page .report-summary h3{font-size:1rem;margin-bottom:.5rem}.report-table{width:100%;border-collapse:collapse;font-size:.875rem}.report-table th,.report-table td{padding:.5rem .75rem;border:1px solid var(--color-border);text-align:left}.report-table th{background:var(--color-bg-secondary);font-weight:600}@media print{.no-print,.app-nav,.app-nav-backdrop,.app-header-actions,.page-header button{display:none!important}.report-content{max-width:none}}
