:root{--color-positive:#1a7f37;--color-positive-bg:#e6f4ea;--color-critical:#c0392b;--color-critical-bg:#fbe9e7;--color-attention:#b8860b;--color-attention-bg:#fdf3d9;--color-neutral:#2451c9;--color-neutral-bg:#e8edfc;--color-insight:#6b3fa0;--color-insight-bg:#f1e9f8;--color-bg:#f6f7f9;--color-surface:#fff;--color-border:#dde1e7;--color-text:#1c2230;--color-text-muted:#5b6472;--color-text-faint:#8a93a1;--color-brand:#4338ca;--color-brand-hover:#372ea3;--color-brand-contrast:#fff;--font-sans:-apple-system, "Segoe UI", Roboto, "Helvetica Neue", Arial, sans-serif;--space-1:4px;--space-2:8px;--space-3:12px;--space-4:16px;--space-5:24px;--space-6:32px;--radius-sm:4px;--radius-md:8px;--radius-lg:12px;--shadow-sm:0 1px 2px #1018280f;--shadow-md:0 4px 12px #1018281a;--font-size-xs:12px;--font-size-sm:13px;--font-size-md:14px;--font-size-lg:16px;--font-size-xl:20px;--font-size-2xl:24px;--font-size-3xl:30px;--sidebar-width:248px;--sidebar-bg:#151b2b;--sidebar-bg-hover:#1f2739;--sidebar-active-bg:#262f45;--sidebar-text:#aab3c5;--sidebar-text-strong:#fff;--sidebar-border:#232b3d;--topbar-height:60px;--shadow-lg:0 12px 32px #10182824}*{box-sizing:border-box}html,body,#root{height:100%}body{font-family:var(--font-sans);font-size:var(--font-size-md);color:var(--color-text);background:var(--color-bg);-webkit-font-smoothing:antialiased;margin:0}button,input,select,textarea{font-family:inherit;font-size:inherit;color:inherit}a{color:var(--color-brand)}h1,h2,h3,h4,p{margin:0}.btn{justify-content:center;align-items:center;gap:var(--space-2);border-radius:var(--radius-md);font-size:var(--font-size-md);cursor:pointer;white-space:nowrap;border:1px solid #0000;padding:9px 16px;font-weight:600;text-decoration:none;transition:background-color .12s,border-color .12s;display:inline-flex}.btn:disabled{opacity:.55;cursor:not-allowed}.btn-primary{background:var(--color-brand);color:var(--color-brand-contrast)}.btn-primary:not(:disabled):hover{background:var(--color-brand-hover)}.btn-secondary{background:var(--color-surface);color:var(--color-text);border-color:var(--color-border)}.btn-secondary:not(:disabled):hover{background:var(--color-bg)}.btn-danger{background:var(--color-critical);color:#fff}.btn-danger:not(:disabled):hover{filter:brightness(.92)}.btn-ghost{color:var(--color-text-muted);background:0 0}.btn-ghost:not(:disabled):hover{background:var(--color-bg)}.btn-sm{font-size:var(--font-size-sm);padding:5px 10px}.field{gap:var(--space-1);flex-direction:column;display:flex}.field-label{font-size:var(--font-size-sm);color:var(--color-text-muted);font-weight:600}.field-error{font-size:var(--font-size-xs);color:var(--color-critical)}.input,.select{border:1px solid var(--color-border);border-radius:var(--radius-sm);background:var(--color-surface);color:var(--color-text);outline:none;padding:8px 10px}.input:focus,.select:focus{border-color:var(--color-brand);box-shadow:0 0 0 3px #4338ca1f}.input.has-error,.select.has-error{border-color:var(--color-critical)}.table-wrap{border:1px solid var(--color-border);border-radius:var(--radius-md);background:var(--color-surface);overflow-x:auto}.table{border-collapse:collapse;width:100%;font-size:var(--font-size-sm)}.table th{text-align:left;background:var(--color-bg);color:var(--color-text-muted);border-bottom:1px solid var(--color-border);white-space:nowrap;padding:10px 14px;font-weight:600}.table td{border-bottom:1px solid var(--color-border);vertical-align:middle;padding:10px 14px}.table tr:last-child td{border-bottom:none}.table td.is-numeric,.table th.is-numeric,.tabular-nums{font-variant-numeric:tabular-nums;font-feature-settings:"tnum" 1}.table thead th{z-index:1;position:sticky;top:0}.table tbody tr:hover td{background:var(--color-bg)}.table tbody tr:focus-visible{outline:2px solid var(--color-brand);outline-offset:-2px}.badge{font-size:var(--font-size-xs);border-radius:999px;align-items:center;gap:4px;padding:2px 9px;font-weight:600;display:inline-flex}.badge-positive{background:var(--color-positive-bg);color:var(--color-positive)}.badge-critical{background:var(--color-critical-bg);color:var(--color-critical)}.badge-attention{background:var(--color-attention-bg);color:var(--color-attention)}.badge-neutral{background:var(--color-neutral-bg);color:var(--color-neutral)}.badge-insight{background:var(--color-insight-bg);color:var(--color-insight)}.modal-overlay{z-index:1000;background:#10141e73;justify-content:center;align-items:center;display:flex;position:fixed;inset:0}.modal{background:var(--color-surface);border-radius:var(--radius-lg);box-shadow:var(--shadow-md);width:min(480px,100vw - 32px);max-height:calc(100vh - 64px);padding:var(--space-5);overflow-y:auto}.modal-header{margin-bottom:var(--space-4);justify-content:space-between;align-items:center;display:flex}.modal-title{font-size:var(--font-size-lg);font-weight:700}.modal-close{cursor:pointer;color:var(--color-text-muted);background:0 0;border:none;font-size:20px;line-height:1}.modal-actions{justify-content:flex-end;gap:var(--space-2);margin-top:var(--space-5);display:flex}.toast-viewport{gap:var(--space-2);z-index:1100;flex-direction:column;width:min(360px,100vw - 32px);display:flex;position:fixed;bottom:20px;right:20px}.toast{border-radius:var(--radius-md);box-shadow:var(--shadow-md);font-size:var(--font-size-sm);color:#fff;align-items:flex-start;gap:var(--space-2);padding:12px 14px;display:flex}.toast-success{background:var(--color-positive)}.toast-error{background:var(--color-critical)}.toast-info{background:var(--color-neutral)}.pin-input-row{gap:var(--space-2);margin:var(--space-4) 0;justify-content:center;display:flex}.pin-digit{text-align:center;border:1px solid var(--color-border);border-radius:var(--radius-md);width:44px;height:52px;font-size:22px;font-weight:700}.pin-digit:focus{border-color:var(--color-brand);outline:none;box-shadow:0 0 0 3px #4338ca1f}.state-block{justify-content:center;align-items:center;gap:var(--space-2);padding:var(--space-6) var(--space-4);text-align:center;color:var(--color-text-muted);flex-direction:column;display:flex}.state-title{color:var(--color-text);font-weight:600}.skeleton{background:linear-gradient(90deg, var(--color-border) 25%, #eef0f3 37%, var(--color-border) 63%);border-radius:var(--radius-sm);background-size:400% 100%;animation:1.4s infinite skeleton-shimmer}@keyframes skeleton-shimmer{0%{background-position:100%}to{background-position:0}}.card{background:var(--color-surface);border:1px solid var(--color-border);border-radius:var(--radius-lg);padding:var(--space-4)}.kpi-positive{color:var(--color-positive)}.kpi-critical{color:var(--color-critical)}.kpi-attention{color:var(--color-attention)}.kpi-neutral{color:var(--color-text)}.pipeline-strip{gap:var(--space-2);padding-bottom:var(--space-1);display:flex;overflow-x:auto}.pipeline-step{min-width:96px;padding:var(--space-3);border-radius:var(--radius-md);background:var(--color-neutral-bg);text-align:center;cursor:pointer;border:none;flex:none}.pipeline-step-count{font-size:var(--font-size-lg);color:var(--color-neutral);font-weight:700}.pipeline-step-label{font-size:var(--font-size-xs);color:var(--color-text-muted);margin-top:2px}.attention-item{align-items:flex-start;gap:var(--space-2);padding:var(--space-2) 0;border-bottom:1px solid var(--color-border);text-align:left;cursor:pointer;background:0 0;border-top:none;border-left:none;border-right:none;width:100%;display:flex}.attention-item:last-child{border-bottom:none}.attention-item-title{font-weight:600;font-size:var(--font-size-sm)}.attention-item-desc{font-size:var(--font-size-xs);color:var(--color-text-muted)}.section-title{font-size:var(--font-size-md);margin-bottom:var(--space-3);font-weight:700}.dashboard-grid{gap:var(--space-4);display:grid}.dashboard-grid-2{gap:var(--space-4);grid-template-columns:1fr 1fr;display:grid}@media (width<=800px){.dashboard-grid-2{grid-template-columns:1fr}}.app-nav{align-items:center;gap:var(--space-4);font-size:var(--font-size-sm);row-gap:var(--space-2);flex-wrap:wrap;display:flex}.nav-toggle{display:none}@media (width<=900px){.nav-toggle{align-items:center;gap:var(--space-2);min-height:44px;padding:0 var(--space-3);border:1px solid var(--color-border);border-radius:var(--radius-sm);color:var(--color-text);font:inherit;cursor:pointer;background:0 0;display:inline-flex}.app-nav{display:none}.app-nav.is-open{background:var(--color-surface);border-bottom:1px solid var(--color-border);box-shadow:var(--shadow-md);padding:var(--space-2) var(--space-5) var(--space-4);z-index:40;flex-direction:column;align-items:stretch;gap:0;display:flex;position:absolute;top:100%;left:0;right:0}.app-nav.is-open a,.app-nav.is-open button{width:100%;min-height:44px;padding:0 var(--space-2);border-left:3px solid #0000;align-items:center;display:flex;border-bottom:none!important}.app-nav.is-open a[aria-current=page]{border-left-color:var(--color-brand);background:var(--color-bg)}.app-nav.is-open .nav-more-group{display:contents}.app-nav.is-open .nav-more-trigger{display:none!important}.app-nav.is-open .nav-more-panel{box-shadow:none!important;border:none!important;min-width:0!important;padding:0!important;display:contents!important;position:static!important}.app-header-account{min-height:44px}}.app-shell{background:var(--color-bg);min-height:100vh;display:flex}.app-sidebar{width:var(--sidebar-width);background:var(--sidebar-bg);color:var(--sidebar-text);z-index:60;flex-direction:column;flex-shrink:0;display:flex;position:fixed;top:0;bottom:0;left:0;overflow-y:auto}.app-brand{align-items:center;gap:var(--space-3);padding:0 var(--space-4);height:var(--topbar-height);color:var(--sidebar-text-strong);letter-spacing:.01em;border-bottom:1px solid var(--sidebar-border);flex-shrink:0;font-weight:700;text-decoration:none;display:flex}.app-brand-mark{border-radius:var(--radius-md);background:var(--color-brand);color:#fff;width:30px;height:30px;font-size:var(--font-size-sm);flex-shrink:0;place-items:center;font-weight:800;display:grid}.app-sidebar-scroll{padding:var(--space-4) var(--space-3);gap:var(--space-5);flex-direction:column;flex:1;display:flex}.nav-group-label{padding:0 var(--space-3) var(--space-2);font-size:var(--font-size-xs);letter-spacing:.08em;text-transform:uppercase;color:#6b7488;font-weight:700}.nav-item{align-items:center;gap:var(--space-3);min-height:40px;padding:0 var(--space-3);border-radius:var(--radius-md);color:var(--sidebar-text);font-size:var(--font-size-md);margin-bottom:2px;text-decoration:none;transition:background-color .12s,color .12s;display:flex}.nav-item:hover{background:var(--sidebar-bg-hover);color:var(--sidebar-text-strong)}.nav-item[aria-current=page]{background:var(--sidebar-active-bg);color:var(--sidebar-text-strong);box-shadow:inset 3px 0 0 var(--color-brand);font-weight:600}.nav-item svg{opacity:.85;flex-shrink:0;width:18px;height:18px}.nav-item-badge{background:var(--color-critical);color:#fff;min-width:20px;font-size:var(--font-size-xs);text-align:center;border-radius:999px;margin-left:auto;padding:1px 6px;font-weight:700}.app-sidebar-footer{border-top:1px solid var(--sidebar-border);padding:var(--space-3);align-items:center;gap:var(--space-3);display:flex}.app-avatar{background:var(--color-brand);color:#fff;width:34px;height:34px;font-weight:700;font-size:var(--font-size-sm);border-radius:50%;flex-shrink:0;place-items:center;display:grid}.app-sidebar-footer .who{min-width:0;line-height:1.25}.app-sidebar-footer .who b{color:var(--sidebar-text-strong);font-size:var(--font-size-sm);display:block}.app-sidebar-footer .who span{font-size:var(--font-size-xs);color:#6b7488}.icon-btn{border-radius:var(--radius-md);border:1px solid var(--sidebar-border);width:34px;height:34px;color:var(--sidebar-text);cursor:pointer;background:0 0;place-items:center;margin-left:auto;display:grid}.icon-btn:hover{background:var(--sidebar-bg-hover);color:var(--sidebar-text-strong)}.app-content{min-width:0;margin-left:var(--sidebar-width);flex-direction:column;flex:1;display:flex}.app-topbar{height:var(--topbar-height);background:var(--color-surface);border-bottom:1px solid var(--color-border);align-items:center;gap:var(--space-4);padding:0 var(--space-6);z-index:30;flex-shrink:0;display:flex;position:sticky;top:0}.app-topbar h1{font-size:var(--font-size-2xl);letter-spacing:-.01em;white-space:nowrap;text-overflow:ellipsis;font-weight:700;overflow:hidden}.app-topbar .sub{color:var(--color-text-muted);font-size:var(--font-size-sm)}.app-page{padding:var(--space-6);flex:1;width:100%;max-width:1440px}.sidebar-scrim{display:none}.card{box-shadow:var(--shadow-sm)}@media (width<=1024px){.app-sidebar{box-shadow:var(--shadow-lg);transition:transform .18s;transform:translate(-100%)}.app-sidebar.is-open{transform:translate(0)}.app-content{margin-left:0}.sidebar-scrim.is-open{z-index:50;background:#090d1673;display:block;position:fixed;inset:0}.app-topbar{padding:0 var(--space-4)}.app-page{padding:var(--space-4)}}@media (width<=600px){.app-topbar{height:auto;min-height:var(--topbar-height);row-gap:var(--space-2);padding-top:var(--space-2);padding-bottom:var(--space-3);flex-wrap:wrap}.app-topbar h1{font-size:var(--font-size-xl)}.app-topbar .sub{display:none}.topbar-actions{justify-content:flex-start;width:100%;margin-left:0}.topbar-actions>.btn:first-child,.topbar-actions>a.btn:first-child{flex:auto;justify-content:center}}.topbar-menu{border:1px solid var(--color-border);border-radius:var(--radius-md);background:var(--color-surface);width:38px;height:38px;color:var(--color-text);cursor:pointer;flex-shrink:0;place-items:center;display:none}.topbar-menu:hover{background:var(--color-bg)}.topbar-title{flex:auto;min-width:0}.topbar-actions{align-items:center;gap:var(--space-3);flex-shrink:0;margin-left:auto;display:flex}.topbar-icon{border-radius:var(--radius-md);border:1px solid var(--color-border);width:38px;height:38px;color:var(--color-text-muted);place-items:center;text-decoration:none;display:grid;position:relative}.topbar-icon:hover{background:var(--color-bg);color:var(--color-text)}.topbar-dot{background:var(--color-critical);width:8px;height:8px;box-shadow:0 0 0 2px var(--color-surface);border-radius:50%;position:absolute;top:7px;right:8px}@media (width<=1024px){.topbar-menu{display:grid}}.filter-bar{align-items:flex-end;gap:var(--space-3);padding:var(--space-4);margin-bottom:var(--space-4);background:var(--color-surface);border:1px solid var(--color-border);border-radius:var(--radius-lg);box-shadow:var(--shadow-sm);flex-wrap:wrap;display:flex}.filter-bar .field{min-width:150px;margin:0}.stat-strip{gap:var(--space-3);margin-bottom:var(--space-4);grid-template-columns:repeat(auto-fit,minmax(200px,1fr));display:grid}.stat-tile .stat-label{font-size:var(--font-size-sm);color:var(--color-text-muted)}.stat-tile .stat-value{margin-top:var(--space-1);font-size:var(--font-size-2xl);letter-spacing:-.01em;font-variant-numeric:tabular-nums;font-weight:700}.kpi-grid{gap:var(--space-3);grid-template-columns:repeat(6,1fr);display:grid}@media (width<=1400px){.kpi-grid{grid-template-columns:repeat(3,1fr)}}@media (width<=720px){.kpi-grid{grid-template-columns:repeat(2,1fr)}}@media (width<=420px){.kpi-grid{grid-template-columns:1fr}}.kpi-card{align-items:flex-start;gap:var(--space-3);padding:var(--space-4);color:inherit;text-decoration:none;display:flex}.kpi-card.is-linked{transition:border-color .12s,box-shadow .12s,transform .12s}.kpi-card.is-linked:hover{border-color:var(--color-brand);box-shadow:var(--shadow-md)}.kpi-badge{border-radius:var(--radius-md);flex-shrink:0;place-items:center;width:38px;height:38px;display:grid}.kpi-badge-positive{background:var(--color-positive-bg);color:var(--color-positive)}.kpi-badge-critical{background:var(--color-critical-bg);color:var(--color-critical)}.kpi-badge-attention{background:var(--color-attention-bg);color:var(--color-attention)}.kpi-badge-neutral{background:var(--color-neutral-bg);color:var(--color-neutral)}.kpi-body{flex-direction:column;min-width:0;display:flex}.kpi-label{font-size:var(--font-size-sm);color:var(--color-text-muted)}.kpi-value{font-size:var(--font-size-2xl);letter-spacing:-.01em;font-variant-numeric:tabular-nums;margin-top:2px;font-weight:700;line-height:1.2}.kpi-hint{font-size:var(--font-size-xs);color:var(--color-text-faint);margin-top:2px}.list-pager{justify-content:space-between;align-items:center;gap:var(--space-3);margin-top:var(--space-3);flex-wrap:wrap;display:flex}.list-pager-count{color:var(--color-text-muted);font-size:var(--font-size-sm);font-variant-numeric:tabular-nums}
