:root{--bg:#0a0e14;--surface:#121a24;--surface-2:#18222e;--surface-3:#1f2b39;--border:#243141;--border-soft:#1c2733;--text:#e8eef6;--muted:#8798ab;--muted-2:#5f7086;--accent:#22d3ee;--blue:#60a5fa;--green:#34d399;--red:#fb7185;--amber:#fbbf24;--violet:#a78bfa;--orange:#fb923c;--radius:14px;--shadow:0 1px 2px #0006, 0 8px 24px -12px #0009}*{box-sizing:border-box}html,body{margin:0;padding:0}body{background:radial-gradient(1200px 600px at 15% -10%, #10202e 0%, transparent 60%), radial-gradient(1000px 500px at 100% 0%, #16182c 0%, transparent 55%), var(--bg);color:var(--text);-webkit-font-smoothing:antialiased;min-height:100vh;font:14px/1.5 -apple-system,BlinkMacSystemFont,Segoe UI,Inter,Roboto,Helvetica,Arial,sans-serif}button:focus-visible,[tabindex]:focus-visible,summary:focus-visible{outline:2px solid var(--accent);outline-offset:2px}.sr-only{clip:rect(0, 0, 0, 0);white-space:nowrap;border:0;width:1px;height:1px;margin:-1px;padding:0;position:absolute;overflow:hidden}.pos{color:var(--green)}.neg{color:var(--red)}.warnc{color:var(--amber)}.cy{color:var(--accent)}.bl{color:var(--blue)}.vi{color:var(--violet)}.card{background:linear-gradient(180deg, var(--surface) 0%, #101822 100%);border:1px solid var(--border);border-radius:var(--radius);box-shadow:var(--shadow);padding:16px 18px}.card h3{letter-spacing:-.1px;margin:0 0 2px;font-size:13px;font-weight:620}.card .sub{color:var(--muted-2);margin:0 0 14px;font-size:11.5px}.card.tight{padding:14px 16px}.kpi .k-label{color:var(--muted);text-transform:uppercase;letter-spacing:.7px;font-size:11.5px;font-weight:600}.kpi .k-value{letter-spacing:-.7px;font-variant-numeric:tabular-nums;margin:7px 0 3px;font-size:25px;font-weight:660}.kpi .k-sub{color:var(--muted-2);font-size:12px}.chip{border:1px solid var(--border);background:var(--surface);color:var(--muted);cursor:pointer;border-radius:8px;padding:5px 11px;font-size:12.5px;font-weight:500;transition:all .14s}.chip:hover:not(:disabled){color:var(--text);border-color:#33465c}.chip.on{color:var(--accent);background:#22d3ee21;border-color:#22d3ee80}.chip:disabled{opacity:.3;cursor:not-allowed}.chip.mini{padding:4px 10px;font-size:12px}.chip-sep{background:var(--border);width:1px;height:20px;margin:0 4px}.linklike{color:var(--muted-2);cursor:pointer;background:0 0;border:none;padding:4px 6px;font-size:12px}.linklike:hover:not(:disabled){color:var(--accent)}.linklike:disabled{opacity:.4;cursor:not-allowed}.months{flex-wrap:wrap;align-items:center;gap:6px;margin:16px 0 4px;display:flex}.months .lbl{text-transform:uppercase;letter-spacing:.9px;color:var(--muted-2);margin-right:6px;font-size:11px;font-weight:600}.badge{letter-spacing:.3px;border:1px solid #0000;border-radius:999px;padding:2.5px 8px;font-size:10.5px;font-weight:650;display:inline-block}.b-ok{color:var(--green);background:#34d39921;border-color:#34d39947}.b-warn{color:var(--amber);background:#fbbf2421;border-color:#fbbf244d}.b-bad{color:var(--red);background:#fb718521;border-color:#fb71854d}.b-mut{color:var(--muted);border-color:var(--border);background:#8798ab1a}.bar{background:var(--surface-3);border-radius:99px;height:7px;position:relative;overflow:hidden}.bar>i{border-radius:99px;height:100%;transition:width .3s;display:block}.bar .goal{background:#e8eef673;width:2px;position:absolute;top:-2px;bottom:-2px}.bar-legend{color:var(--muted-2);justify-content:space-between;margin-top:6px;font-size:11px;display:flex}.comp-row{margin:13px 0}.comp-row .cr-top{justify-content:space-between;align-items:baseline;margin-bottom:5px;font-size:12.5px;display:flex}.comp-row .cr-top b{font-variant-numeric:tabular-nums;font-weight:600}.comp-row .cr-top .p{color:var(--muted-2);margin-left:6px;font-size:11.5px}table{border-collapse:collapse;width:100%;font-size:12.8px}th{text-align:right;color:var(--muted-2);text-transform:uppercase;letter-spacing:.7px;border-bottom:1px solid var(--border);white-space:nowrap;padding:0 10px 9px;font-size:10.5px;font-weight:600}th:first-child{text-align:left}td{border-bottom:1px solid var(--border-soft);text-align:right;font-variant-numeric:tabular-nums;white-space:nowrap;padding:9px 10px}td:first-child{text-align:left;white-space:normal}tbody tr:last-child td{border-bottom:none}tr.grp td{border-bottom:1px solid var(--border);background:#1f2b3980;font-weight:620}tr.grp:hover td{background:#1f2b39d9}tr.child td:first-child{color:var(--muted);padding-left:30px}tr.child:hover td{background:#18222e8c}.caret{width:12px;color:var(--muted-2);font-size:10px;transition:transform .15s;display:inline-block}.caret.open{transform:rotate(90deg)}.dot{vertical-align:middle;border-radius:2px;width:7px;height:7px;margin-right:8px;display:inline-block}.minibar{background:var(--surface-3);vertical-align:middle;border-radius:99px;width:64px;height:5px;margin-right:8px;display:inline-block;overflow:hidden}.minibar>i{border-radius:99px;height:100%;display:block}.dd-toggle{width:100%;color:inherit;font:inherit;text-align:left;cursor:pointer;background:0 0;border:none;align-items:center;padding:0;display:inline-flex}.dd-inline-badge{margin-left:6px}.cascade tr.total td{background:#22d3ee14;border-top:1px solid #22d3ee38;border-bottom:1px solid #22d3ee38;font-weight:650}.cascade tr.ded td:first-child{color:var(--muted)}.cascade tr.final td{background:#34d39917;font-size:13.5px;font-weight:680}.empty{color:var(--muted-2);text-align:center;padding:18px 0;font-size:12.5px}.empty.empty--extended{padding:28px 16px}.empty-title{color:var(--text);margin:0 0 4px;font-size:13px;font-weight:620}.empty-description{color:var(--muted-2);margin:0;font-size:12.5px}.empty-action{margin-top:12px}.rank{border-bottom:1px solid var(--border-soft);justify-content:space-between;align-items:center;gap:12px;padding:10px 0;display:flex}.rank:last-child{border-bottom:none}.rank .rk-name{font-size:12.8px;font-weight:520}.rank .rk-dep{color:var(--muted-2);margin-top:2px;font-size:11px}.rank .rk-val{text-align:right;font-variant-numeric:tabular-nums;white-space:nowrap}.rank .rk-val b{font-size:13px;font-weight:640}.rank .rk-val div{color:var(--muted-2);margin-top:2px;font-size:11px}.mcard{background:var(--surface-2);border:1px solid var(--border);border-radius:11px;padding:13px 14px}.mcard h4{justify-content:space-between;align-items:center;margin:0 0 10px;font-size:12.5px;font-weight:620;display:flex}.mline{color:var(--muted);justify-content:space-between;padding:3.5px 0;font-size:12px;display:flex}.mline b{color:var(--text);font-variant-numeric:tabular-nums;font-weight:560}.mline.sep{border-top:1px solid var(--border);margin-top:6px;padding-top:8px}.dcard h4{justify-content:space-between;align-items:center;gap:8px;margin:0;font-size:13px;font-weight:620;display:flex}.dcard .dc-name{align-items:center;display:flex}.dgrid{gap:18px;margin:12px 0 10px;display:flex}.dgrid div{flex:1}.dgrid span{color:var(--muted-2);text-transform:uppercase;letter-spacing:.6px;font-size:10.5px;font-weight:600;display:block}.dgrid b{font-variant-numeric:tabular-nums;font-size:14.5px;font-weight:620}details.outside{margin-top:14px}details.outside summary{cursor:pointer;color:var(--amber);align-items:center;gap:8px;padding:10px 0;font-size:12.5px;font-weight:560;list-style:none;display:flex}details.outside summary::-webkit-details-marker{display:none}details.outside summary:before{content:"▶";font-size:9px;transition:transform .15s}details.outside[open] summary:before{transform:rotate(90deg)}.note{color:var(--muted);background:#fbbf240f;border:1px solid #fbbf2433;border-radius:10px;margin-top:14px;padding:10px 14px;font-size:12px}.note b{color:var(--amber)}.sec-title{align-items:baseline;gap:10px;margin:26px 0 0;display:flex}.sec-title h2{letter-spacing:-.2px;margin:0;font-size:15px;font-weight:620}.sec-title span{color:var(--muted-2);font-size:12px}.grid{gap:14px;margin-top:16px;display:grid}.g2{grid-template-columns:repeat(2,minmax(0,1fr))}.g3{grid-template-columns:repeat(3,minmax(0,1fr))}.g4{grid-template-columns:repeat(4,minmax(0,1fr))}.g-auto{grid-template-columns:repeat(auto-fill,minmax(212px,1fr))}@media (width<=1080px){.g4{grid-template-columns:repeat(2,minmax(0,1fr))}.g2,.g3{grid-template-columns:1fr}}@media (width<=620px){.g4{grid-template-columns:1fr}}.connection-page{max-width:640px;margin:0 auto;padding:24px}.connection-page h1{color:var(--text);margin:0 0 16px;font-size:20px;font-weight:600}.connection-loading{color:var(--muted)}.connection-error{color:var(--red);margin:0 0 12px}.connection-description{color:var(--muted);margin:10px 0 0;font-size:13px}.connection-meta{color:var(--muted-2);margin:4px 0 0;font-size:12px}.connection-actions{align-items:center;gap:12px;margin-top:16px;display:flex}.connection-callback-message{border-radius:10px;margin:0 0 16px;padding:10px 14px;font-size:13px}.connection-callback-success{color:var(--green);background:#34d39914;border:1px solid #34d39940}.connection-callback-error{color:var(--red);background:#fb718514;border:1px solid #fb718540}.connection-cta,.connection-secondary-cta{cursor:pointer;border-radius:10px;padding:10px 16px;font-size:14px;font-weight:600;text-decoration:none;transition:opacity .15s,transform 50ms;display:inline-block}.connection-cta{background:var(--accent);color:#06222a;border:none}.connection-cta:hover{opacity:.92}.connection-cta:active{transform:translateY(1px)}.connection-secondary-cta{border:1px solid var(--border);background:var(--surface-2);color:var(--text);margin-top:12px}.connection-secondary-cta:hover{border-color:var(--accent)}.connection-cta:focus-visible,.connection-secondary-cta:focus-visible{outline:2px solid var(--accent);outline-offset:2px}.connection-actions .connection-secondary-cta{margin-top:0}.connection-disconnect{border:1px solid var(--border);color:var(--red);cursor:pointer;background:0 0;border-radius:10px;padding:10px 16px;font-size:14px;font-weight:600}.connection-disconnect:hover:not(:disabled){border-color:var(--red)}.connection-disconnect:disabled{opacity:.6;cursor:not-allowed}.connection-disconnect:focus-visible{outline:2px solid var(--accent);outline-offset:2px}.login-page{justify-content:center;align-items:center;min-height:100vh;padding:24px;display:flex}.login-card{border-radius:var(--radius);border:1px solid var(--border);background:linear-gradient(160deg, var(--surface), #101822);width:100%;max-width:380px;box-shadow:var(--shadow);padding:32px}.login-logo{background:linear-gradient(140deg, var(--accent), var(--blue) 60%, var(--violet));border-radius:10px;width:36px;height:36px;margin-bottom:16px}.login-title{color:var(--text);margin:0 0 20px;font-size:20px;font-weight:600}.login-subtitle{color:var(--muted);margin:0 0 16px;font-size:13px}.login-label{color:var(--muted);text-transform:uppercase;letter-spacing:.03em;margin-bottom:6px;font-size:12px;font-weight:600;display:block}.login-input{border:1px solid var(--border);background:var(--surface-2);width:100%;color:var(--text);border-radius:10px;outline:none;margin-bottom:4px;padding:10px 12px;font-size:14px;transition:border-color .15s}.login-input:focus-visible{border-color:var(--accent);box-shadow:0 0 0 3px #22d3ee33}.login-input-code{letter-spacing:.3em;font-variant-numeric:tabular-nums;text-align:center}.login-error{color:var(--red);margin:4px 0 12px;font-size:12px}.login-error-request-id{color:var(--muted-2)}.login-button{background:var(--accent);color:#06222a;cursor:pointer;border:none;border-radius:10px;width:100%;margin-top:8px;padding:10px 12px;font-size:14px;font-weight:600;transition:opacity .15s,transform 50ms}.login-button:hover:not(:disabled){opacity:.92}.login-button:active:not(:disabled){transform:translateY(1px)}.login-button:disabled{opacity:.6;cursor:not-allowed}.login-button:focus-visible{outline:2px solid var(--accent);outline-offset:2px}.login-actions{justify-content:space-between;gap:12px;margin-top:14px;display:flex}.login-link{color:var(--blue);cursor:pointer;background:0 0;border:none;padding:4px 0;font-size:12px}.login-link:hover:not(:disabled){text-decoration:underline}.login-link:disabled{color:var(--muted-2);cursor:not-allowed;text-decoration:none}.login-link:focus-visible{outline:2px solid var(--accent);outline-offset:2px;border-radius:4px}.tabs{gap:2px;margin-top:14px;display:flex;overflow-x:auto}.tabs a{color:var(--muted);cursor:pointer;white-space:nowrap;background:0 0;border:none;border-bottom:2px solid #0000;padding:11px 15px;font-size:13.5px;font-weight:520;text-decoration:none;transition:all .14s;display:inline-block}.tabs a:hover{color:var(--text)}.tabs a.on{color:var(--accent);border-bottom-color:var(--accent)}.tabs a:focus-visible{outline:2px solid var(--accent);outline-offset:2px}.dashboard-layout{max-width:1420px;margin:0 auto;padding:0 24px 64px}.dashboard-layout>.tabs+*{margin-top:16px}.chart{width:100%;height:auto;display:block;overflow:visible}.chart .grid-line{stroke:var(--border-soft);stroke-width:1px}.chart .axis-t{fill:var(--muted-2);font-size:15px}.chart .guide{stroke:#e8eef638;stroke-width:1px;stroke-dasharray:3 3}.chart .hit{fill:#0000}.legend{flex-wrap:wrap;gap:16px;margin:2px 0 10px;display:flex}.legend span{color:var(--muted);align-items:center;gap:6px;font-size:11.5px;display:flex}.legend i{border-radius:3px;width:9px;height:9px;display:block}.chart-tip{pointer-events:none;z-index:200;border:1px solid var(--border);white-space:nowrap;background:#0d151e;border-radius:9px;padding:8px 11px;font-size:12px;transition:opacity .1s;position:fixed;top:-9999px;left:-9999px;box-shadow:0 12px 30px -8px #000000bf}.chart-tip .t-title{color:var(--muted);text-transform:uppercase;letter-spacing:.7px;margin-bottom:5px;font-size:10.5px;font-weight:600}.chart-tip .t-row{font-variant-numeric:tabular-nums;align-items:center;gap:7px;padding:1.5px 0;display:flex}.chart-tip .t-row i{border-radius:2px;width:8px;height:8px;display:block}.chart-tip .t-row b{margin-left:auto;padding-left:14px;font-weight:600}.dashboard-empty-cta{background:var(--accent);color:#06222a;cursor:pointer;border-radius:10px;padding:9px 16px;font-size:13px;font-weight:600;text-decoration:none;display:inline-block}.dashboard-empty-cta:hover{opacity:.92}.dashboard-empty-cta:focus-visible{outline:2px solid var(--accent);outline-offset:2px}.dashboard-empty-error{color:var(--red);margin:0 0 12px;font-size:13px}.mapping-page{max-width:1100px;padding:24px}.mapping-page h1{color:var(--text);margin:0 0 4px;font-size:20px;font-weight:600}.mapping-header{flex-wrap:wrap;justify-content:space-between;align-items:flex-start;gap:16px;margin-bottom:16px;display:flex}.mapping-suggest-wrap{flex-direction:column;align-items:flex-end;gap:8px;max-width:420px;display:flex}.mapping-suggest-btn{border:1px solid var(--border);background:var(--surface-2);color:var(--text);cursor:pointer;white-space:nowrap;border-radius:10px;padding:9px 16px;font-size:13px;font-weight:600;transition:opacity .15s}.mapping-suggest-btn:hover:not(:disabled){border-color:var(--accent)}.mapping-suggest-btn:disabled{opacity:.6;cursor:not-allowed}.mapping-suggest-btn:focus-visible{outline:2px solid var(--accent);outline-offset:2px}.mapping-suggest-result{text-align:left;font-size:12px}.mapping-cta{background:var(--accent);color:#06222a;border-radius:10px;padding:9px 16px;font-size:13px;font-weight:600;text-decoration:none;display:inline-block}.mapping-tabs{gap:2px;margin-bottom:12px;display:flex;overflow-x:auto}.mapping-tab{color:var(--muted);cursor:pointer;white-space:nowrap;background:0 0;border:none;border-bottom:2px solid #0000;padding:9px 14px;font-size:13.5px;font-weight:520;transition:all .14s;display:inline-block}.mapping-tab:hover{color:var(--text)}.mapping-tab.on{color:var(--accent);border-bottom-color:var(--accent)}.mapping-tab:focus-visible{outline:2px solid var(--accent);outline-offset:2px}.mapping-table-wrap{overflow-x:auto}.mapping-table th,.mapping-table td{text-align:left}.mapping-table td{white-space:normal;vertical-align:top}.mapping-name-cell{min-width:180px;color:var(--text)}.mapping-noname{color:var(--muted-2);font-style:italic}.mapping-updated-cell{color:var(--muted);white-space:nowrap;font-size:12px}.mapping-actions-cell{min-width:120px}.mapping-select,.mapping-input{border:1px solid var(--border);background:var(--surface-2);width:100%;min-width:130px;color:var(--text);border-radius:8px;outline:none;padding:6px 8px;font-size:12.5px;transition:border-color .15s}.mapping-select:focus-visible,.mapping-input:focus-visible{border-color:var(--accent);box-shadow:0 0 0 3px #22d3ee33}.mapping-save-btn{background:var(--accent);color:#06222a;cursor:pointer;white-space:nowrap;border:none;border-radius:8px;padding:6px 12px;font-size:12px;font-weight:600}.mapping-save-btn:disabled{background:var(--surface-3);color:var(--muted-2);cursor:not-allowed}.mapping-save-btn:focus-visible{outline:2px solid var(--accent);outline-offset:2px}.mapping-row-error{color:var(--red);white-space:normal;max-width:220px;margin:6px 0 0;font-size:11.5px}.sync-status-widget{border-bottom:1px solid var(--border);background:var(--surface);justify-content:space-between;align-items:center;gap:16px;padding:10px 24px;display:flex}.sync-status-content{flex:1;min-width:0}.sync-status-text{color:var(--muted);align-items:center;gap:8px;font-size:13px;display:inline-flex}.sync-status-muted{color:var(--muted-2)}.sync-status-running{color:var(--accent)}.sync-status-error{flex-direction:column;gap:4px;display:flex}.sync-status-error .sync-status-text{color:var(--amber)}.sync-error-detail{color:var(--muted-2);margin:4px 0 0;font-family:ui-monospace,SFMono-Regular,Menlo,Consolas,monospace;font-size:12px}.sync-status-button{border:1px solid var(--border);background:var(--surface-2);color:var(--text);cursor:pointer;border-radius:10px;flex-shrink:0;padding:8px 14px;font-size:13px;font-weight:600}.sync-status-button:hover:not(:disabled){border-color:var(--accent)}.sync-status-button:disabled{opacity:.6;cursor:not-allowed}.sync-status-button:focus-visible{outline:2px solid var(--accent);outline-offset:2px}.sync-pulse-dot{background:var(--accent);border-radius:50%;width:8px;height:8px;animation:1.2s ease-in-out infinite sync-pulse}@keyframes sync-pulse{0%,to{opacity:1;transform:scale(1)}50%{opacity:.4;transform:scale(.75)}}@media (prefers-reduced-motion:reduce){.sync-pulse-dot{animation:none}}.authenticated-layout{min-height:100vh}.authnav{border-bottom:1px solid var(--border);background:var(--surface);gap:4px;padding:12px 24px;display:flex}.authnav-link{color:var(--muted);border-radius:8px;padding:8px 12px;font-size:13px;font-weight:600;text-decoration:none}.authnav-link:hover{color:var(--text)}.authnav-link.on{color:var(--text);background:var(--surface-2)}.authnav-link:focus-visible{outline:2px solid var(--accent);outline-offset:2px}.connection-expired-banner{margin:14px 24px 0}.connection-expired-banner a{color:var(--amber);font-weight:600}
