:root{--bg: #f4f6fa;--surface: #ffffff;--surface-alt: #f8fafc;--border: #e2e6ee;--text: #1c2333;--muted: #6b7488;--accent: #4f7cff;--accent-dark: #3a63dc;--ok: #17936f;--warn: #b57a12;--danger: #cf3b52;--pivot-variance-positive: rgba(23, 147, 111, .32);--pivot-variance-negative: rgba(207, 59, 82, .3);--radius: 10px;--shadow: 0 1px 2px rgba(20, 30, 60, .06), 0 6px 20px rgba(20, 30, 60, .05)}:root[data-theme=tokyo-night-storm]{--bg: #1f2335;--surface: #24283b;--surface-alt: #292e42;--border: #3b4261;--text: #c0caf5;--muted: #a9b1d6;--accent: #7aa2f7;--accent-dark: #9ab8ff;--ok: #9ece6a;--warn: #e0af68;--danger: #f7768e;--pivot-variance-positive: rgba(158, 206, 106, .35);--pivot-variance-negative: rgba(247, 118, 142, .34);--shadow: 0 2px 10px rgba(0, 0, 0, .28), 0 12px 30px rgba(0, 0, 0, .22)}:root[data-theme=dusk]{--bg: radial-gradient(circle at 12% 4%, #963f7b 0, transparent 38%), linear-gradient(135deg, #3b164d, #a33457 55%, #df5b6c);--surface: rgba(10, 28, 68, .9);--surface-alt: rgba(20, 46, 94, .88);--border: rgba(185, 156, 224, .4);--text: #f5f4ff;--muted: #d2cce8;--accent: #f4a6bd;--accent-dark: #ffd0dc;--ok: #91e1b4;--warn: #ffd58a;--danger: #ff9eaa;--pivot-variance-positive: rgba(145, 225, 180, .34);--pivot-variance-negative: rgba(255, 158, 170, .33);--shadow: 0 3px 12px rgba(21, 6, 43, .34), 0 16px 36px rgba(21, 6, 43, .28)}:root[data-theme=ice]{--bg: linear-gradient(135deg, #f7fcff 0%, #dbeeff 46%, #c8e2fa 100%);--surface: rgba(255, 255, 255, .76);--surface-alt: rgba(233, 246, 255, .82);--border: rgba(133, 183, 221, .58);--text: #153550;--muted: #56758e;--accent: #2c7fba;--accent-dark: #175d91;--ok: #187861;--warn: #9a6511;--danger: #bb3854;--pivot-variance-positive: rgba(24, 120, 97, .28);--pivot-variance-negative: rgba(187, 56, 84, .26);--shadow: 0 2px 10px rgba(76, 132, 176, .14), 0 14px 32px rgba(76, 132, 176, .12)}:root[data-theme=ice] .sidebar,:root[data-theme=ice] .card,:root[data-theme=ice] .widget,:root[data-theme=ice] .param-group,:root[data-theme=ice] .multiselect-panel,:root[data-theme=ice] .widget-help-panel,:root[data-theme=ice] .graph-zoom-dialog{-webkit-backdrop-filter:blur(14px) saturate(130%);backdrop-filter:blur(14px) saturate(130%)}:root[data-theme=dusk] .widget{background:#0a1c44bd;-webkit-backdrop-filter:blur(18px) saturate(125%);backdrop-filter:blur(18px) saturate(125%)}:root[data-theme=ice] .widget{background:#ffffff9e;-webkit-backdrop-filter:blur(18px) saturate(140%);backdrop-filter:blur(18px) saturate(140%)}:root[data-theme=dusk] .data-table th,:root[data-theme=dusk] .sheet-table th,:root[data-theme=dusk] .pivot-table thead th,:root[data-theme=dusk] .pivot-table thead .pivot-corner{background:#142e5e}:root[data-theme=dusk] .pivot-table tbody th{background:#0a1c44}:root[data-theme=ice] .data-table th,:root[data-theme=ice] .sheet-table th,:root[data-theme=ice] .pivot-table thead th,:root[data-theme=ice] .pivot-table thead .pivot-corner{background:#e7f4ff}:root[data-theme=ice] .pivot-table tbody th{background:#f5fbff}:root[data-theme=dusk] .row-detail,:root[data-theme=dusk] .row-detail .data-table tbody tr,:root[data-theme=dusk] .row-detail .data-table tbody td,:root[data-theme=dusk] .row-detail .data-table tfoot th,:root[data-theme=dusk] .row-detail .data-table tfoot td,:root[data-theme=ice] .row-detail,:root[data-theme=ice] .row-detail .data-table tbody tr,:root[data-theme=ice] .row-detail .data-table tbody td,:root[data-theme=ice] .row-detail .data-table tfoot th,:root[data-theme=ice] .row-detail .data-table tfoot td{background:transparent}*{box-sizing:border-box}html,body,#root{height:100%;margin:0}body{background:var(--bg);color:var(--text);font:14px/1.5 Inter,system-ui,-apple-system,Segoe UI,sans-serif}h1{font-size:22px;margin:0}h2{font-size:16px;margin:0 0 4px}h3{font-size:14px;margin:24px 0 8px}p{margin:0 0 8px}code,.mono{font-family:ui-monospace,SF Mono,Cascadia Code,Menlo,monospace;font-size:12.5px}a{color:var(--accent);text-decoration:none}a:hover{text-decoration:underline}.muted{color:var(--muted)}.shell{display:grid;grid-template-columns:216px 1fr;min-height:100%}.sidebar{background:var(--surface);border-right:1px solid var(--border);display:flex;flex-direction:column;padding:20px 14px;gap:24px;position:sticky;top:0;height:100vh}.brand-mark{display:inline-flex;align-items:center;justify-content:center;width:34px;height:34px;border-radius:9px;background:var(--accent);color:#fff;font-weight:700;letter-spacing:.5px}.sidebar nav{display:flex;flex-direction:column;gap:2px}.sidebar nav a{padding:8px 10px;border-radius:8px;color:var(--text)}.sidebar nav a:hover{background:var(--surface-alt);text-decoration:none}.sidebar nav a.active{background:#4f7cff1f;color:var(--accent-dark);font-weight:600}.env-switcher{margin-top:auto;display:flex;flex-direction:column;align-items:flex-start;gap:5px;padding:10px 0;border-top:1px solid var(--border)}.env-switcher select{font-size:13px;padding:5px 8px}.env-switcher .pill{margin-left:0}.sidebar-footer{display:flex;flex-direction:column;align-items:flex-start;gap:6px;font-size:13px}.theme-picker{display:flex;align-items:center;gap:6px;color:var(--muted);font-size:12px}.theme-picker select{min-width:0;padding:4px 6px;font-size:12px}.user-name{font-weight:600}.content{padding:24px 28px 64px;min-width:0}.boot{padding:40px;color:var(--muted)}.page{display:flex;flex-direction:column;gap:16px;max-width:1400px}.page-header{display:flex;justify-content:space-between;align-items:flex-start;gap:16px;flex-wrap:wrap}.header-actions{display:flex;gap:8px;flex-wrap:wrap}.card{background:var(--surface);border:1px solid var(--border);border-radius:var(--radius);box-shadow:var(--shadow);padding:18px}.card-grid{display:grid;grid-template-columns:repeat(auto-fill,minmax(260px,1fr));gap:14px}.card-link{display:block;color:inherit}.card-link:hover{border-color:var(--accent);text-decoration:none}.card-link footer{margin-top:10px;font-size:12px}.empty-state{padding:40px;text-align:center;color:var(--muted);border:1px dashed var(--border);border-radius:var(--radius)}.banner{border-radius:8px;padding:10px 14px;border:1px solid transparent;display:flex;gap:12px;align-items:flex-start;justify-content:space-between}.banner ul{margin:0;padding-left:18px}.banner-error{background:#fdeff1;border-color:#f3c6ce;color:#8f1f33}.banner-warn{background:#fdf6e6;border-color:#eedcb0;color:#7a5510}.banner-ok{background:#eaf7f2;border-color:#bde3d5;color:#10634b}.pill{display:inline-block;padding:1px 7px;border-radius:999px;font-size:11px;font-weight:600;margin-left:6px;vertical-align:middle}.pill-ok{background:#e5f5ee;color:var(--ok)}.pill-warn{background:#fbf0d9;color:var(--warn)}.pill-muted{background:var(--surface-alt);color:var(--muted)}:root[data-theme=tokyo-night-storm] .pill-ok{background:#244330;color:#b6dc86}:root[data-theme=tokyo-night-storm] .pill-warn{background:#4d3d25;color:#f3c984}:root[data-theme=tokyo-night-storm] .pill-muted{background:#202538;color:#b7c1e5}:root[data-theme=dusk] .pill-ok{background:#194836;color:#a7edc3}:root[data-theme=dusk] .pill-warn{background:#574025;color:#ffe0a1}:root[data-theme=dusk] .pill-muted{background:#263c70;color:#ddd9f1}button,.button{font:inherit;border:1px solid var(--border);background:var(--surface);color:var(--text);border-radius:8px;padding:7px 13px;cursor:pointer;display:inline-flex;align-items:center;gap:6px}button:hover,.button:hover{border-color:#c8cfdd;text-decoration:none}button:disabled{opacity:.55;cursor:not-allowed}button.primary{background:var(--accent);border-color:var(--accent);color:#fff}button.primary:hover{background:var(--accent-dark)}button.danger,.link.danger{color:var(--danger)}button.link,.link{background:none;border:none;padding:0;color:var(--accent);cursor:pointer;text-align:left}input,select,textarea{font:inherit;border:1px solid var(--border);border-radius:8px;padding:7px 9px;background:var(--surface);color:var(--text);width:100%}input:focus,select:focus,textarea:focus{outline:2px solid rgba(79,124,255,.35);outline-offset:-1px;border-color:var(--accent)}textarea.invalid{border-color:var(--danger)}input[type=checkbox],input[type=radio]{flex:none;width:16px;min-width:0;height:16px;accent-color:var(--accent)}.form-grid{display:grid;grid-template-columns:repeat(auto-fit,minmax(240px,1fr));gap:14px}.field{display:flex;flex-direction:column;gap:5px;min-width:0}.field-inline{flex-direction:row;align-items:center;gap:8px}.field-label{font-size:12px;font-weight:600;color:var(--muted);text-transform:uppercase;letter-spacing:.03em}.required{color:var(--danger);font-style:normal;margin-left:3px}.field-help{color:var(--muted);font-size:12px}.field-error{color:var(--danger);font-size:12px}.field-sql,.field-json,.field-textarea{grid-column:1 / -1}.inline-form{display:flex;gap:14px;align-items:flex-end;flex-wrap:wrap}.inline-form .field{min-width:200px;flex:1}.editor-frame{border:1px solid var(--border);border-radius:8px;overflow:hidden}.editor-fill{height:calc(100vh - 320px);min-height:260px}.editor-fill>div,.editor-fill .cm-editor{height:100%}.editor-split{display:grid;grid-template-columns:minmax(0,3fr) minmax(0,2fr);gap:16px;align-items:start}@media(max-width:1100px){.editor-split{grid-template-columns:1fr}}.helpers-card{max-height:calc(100vh - 200px);overflow:auto}.tab-bar{display:flex;gap:4px;border-bottom:1px solid var(--border)}.tab-bar button{border:none;border-radius:8px 8px 0 0;background:none;color:var(--muted);font-weight:600;padding:8px 14px;margin-bottom:-1px;border-bottom:2px solid transparent}.tab-bar button:hover{color:var(--text)}.tab-bar button[aria-selected=true]{color:var(--accent-dark);border-bottom-color:var(--accent)}.table-scroll{overflow:auto;max-width:100%;max-height:100%}.data-table{width:100%;border-collapse:collapse;font-size:13px}.data-table th,.data-table td{padding:7px 10px;border-bottom:1px solid var(--border);text-align:left;white-space:nowrap}.data-table th{color:var(--muted);font-size:12px;font-weight:600;text-transform:uppercase;letter-spacing:.03em;position:sticky;top:0;background:var(--surface)}.data-table .numeric{text-align:right;font-variant-numeric:tabular-nums}.list-table{background:var(--surface);border:1px solid var(--border);border-radius:var(--radius);box-shadow:var(--shadow)}.list-table td{white-space:normal}.permission-columns{display:grid;grid-template-columns:repeat(auto-fit,minmax(220px,1fr));gap:16px;margin:12px 0}.permission-picker{display:flex;flex-direction:column;gap:4px;margin:0;padding:12px 14px;border:1px solid var(--border);border-radius:var(--radius);max-height:260px;overflow-y:auto}.permission-picker legend{padding:0 4px;font-weight:600;font-size:13px}.permission-picker .field-inline{margin:0}.scope-block{display:flex;flex-direction:column;gap:8px}.scope-header{display:flex;align-items:baseline;gap:8px;flex-wrap:wrap}.scope-header h3{margin:0}.grid-table .cell{padding:0}.grid-table .cell input{border:none;border-radius:0;background:transparent}.grid-table .row-number{color:var(--muted);background:var(--surface-alt);text-align:right;width:42px}.csv-grid .toolbar{display:flex;gap:8px;flex-wrap:wrap;margin-bottom:12px}.dashboard-toolbar{display:flex;justify-content:space-between;gap:16px;align-items:flex-start;flex-wrap:wrap}.toolbar-status{display:flex;gap:10px;align-items:baseline}.param-bar{display:flex;gap:16px;flex-wrap:wrap;align-items:flex-end}.param{display:flex;flex-direction:column;gap:4px;font-size:12px;font-weight:600;color:var(--muted)}.param select,.param input:not([type=checkbox]):not([type=radio]){min-width:130px;font-weight:400;color:var(--text)}.param-group{display:flex;gap:16px;flex-wrap:wrap;align-items:flex-end;margin:0;padding:4px 12px 10px;border:1px solid var(--border);border-radius:var(--radius);background:var(--surface-alt)}.param-group legend{padding:0 6px;font-size:11px;font-weight:700;letter-spacing:.04em;text-transform:uppercase;color:var(--muted)}.param-group legend button{background:none;border:none;padding:0;color:inherit;cursor:pointer}.param-group.collapsed .param{display:none}.chip-group{display:flex;gap:6px;flex-wrap:wrap}.chip{border-radius:999px;padding:4px 11px;font-size:12.5px;background:var(--surface)}.multiselect{position:relative}.multiselect-toggle{width:100%;min-width:130px;justify-content:space-between;padding:7px 9px;font-weight:400;color:var(--text)}.multiselect-summary{overflow:hidden;text-overflow:ellipsis;white-space:nowrap}.multiselect-panel{position:absolute;z-index:20;top:calc(100% + 6px);left:0;min-width:100%;width:max-content;max-width:340px;max-height:280px;overflow-y:auto;overflow-x:hidden;padding:6px;display:flex;flex-direction:column;background:var(--surface);border:1px solid var(--border);border-radius:var(--radius);box-shadow:var(--shadow)}.multiselect-item{display:flex;align-items:center;gap:8px;padding:5px 8px;border-radius:6px;cursor:pointer;font-size:13px;font-weight:400;color:var(--text);white-space:nowrap}.multiselect-item:hover{background:var(--surface-alt)}.multiselect-parent{font-weight:600}.multiselect-parent:not(:first-child){margin-top:4px}.multiselect-child{margin-left:10px;padding-left:12px;border-left:1px solid var(--border);border-radius:0 6px 6px 0}.multiselect-clear{align-self:flex-start;margin:4px 8px 2px;font-size:12px}.source-status summary{cursor:pointer;color:var(--muted);font-size:12.5px}.source-status ul{list-style:none;margin:8px 0 0;padding:0;font-size:12.5px}.source-status li{display:flex;gap:8px;align-items:baseline;padding:2px 0}.widget-grid{display:grid;grid-template-columns:repeat(12,minmax(0,1fr));grid-auto-rows:62px;gap:14px}@media(max-width:900px){.widget-grid{grid-template-columns:1fr}.widget-grid .widget{grid-column:1 / -1!important}}.widget{position:relative;background:var(--surface);border:1px solid var(--border);border-radius:var(--radius);box-shadow:var(--shadow);padding:14px 16px;display:flex;flex-direction:column;min-width:0;overflow:hidden}.widget-zoom-button{position:absolute;z-index:1;top:10px;right:10px;width:28px;height:28px;padding:0;border-radius:6px;color:var(--muted);background:var(--surface);border:1px solid var(--border);cursor:pointer;font-size:19px;line-height:1;justify-content:center}.widget-zoom-button:hover,.widget-zoom-button:focus-visible{color:var(--text);border-color:var(--muted);background:var(--surface-alt)}.widget-header h2{font-size:14px}.widget-header p{font-size:12px;margin:0}.widget-help{position:relative;display:inline-flex;vertical-align:middle;margin-left:6px}.widget-help-mark{width:16px;height:16px;padding:0;border:1px solid var(--border);border-radius:50%;background:var(--surface);color:var(--muted);font-size:11px;font-style:italic;font-weight:600;line-height:1;justify-content:center;cursor:help}.widget-help-mark:hover,.widget-help-mark:focus-visible{color:var(--text);border-color:var(--muted)}.widget-help-panel{position:absolute;z-index:30;top:calc(100% + 6px);left:0;display:none;width:max-content;max-width:420px;padding:8px 10px;background:var(--surface);border:1px solid var(--border);border-radius:var(--radius);box-shadow:var(--shadow)}.widget-help:hover .widget-help-panel,.widget-help:focus-within .widget-help-panel{display:block}.widget-help-panel ul{margin:0;padding-left:16px;display:flex;flex-direction:column;gap:4px}.widget-help-panel li{font-size:12px;font-weight:400;color:var(--text);white-space:normal}.widget-body{flex:1;min-height:0;display:flex;flex-direction:column}.widget-body>*{min-height:0}.widget-empty{color:var(--muted);font-size:13px;margin:auto 0}.chart-canvas{flex:1;min-height:140px;width:100%}.graph-zoom-backdrop{position:fixed;z-index:100;top:0;right:0;bottom:0;left:0;display:grid;place-items:center;padding:24px;background:#181e2c59;backdrop-filter:blur(8px);-webkit-backdrop-filter:blur(8px)}.graph-zoom-dialog{display:flex;flex-direction:column;width:min(1120px,100%);height:min(760px,100%);min-height:300px;padding:20px 24px 24px;overflow:hidden;background:var(--surface);border:1px solid var(--border);border-radius:calc(var(--radius) + 4px);box-shadow:0 24px 80px #0000004d}.graph-zoom-backdrop.pivot-zoom-backdrop{padding-inline:0}.graph-zoom-dialog.pivot-zoom-dialog{width:100%;max-width:none}.graph-zoom-header{display:flex;align-items:flex-start;justify-content:space-between;gap:16px;padding-bottom:12px}.graph-zoom-header h2{margin:0;font-size:18px}.graph-zoom-header p{margin:4px 0 0;color:var(--muted);font-size:13px}.graph-zoom-close{display:grid;flex:0 0 auto;width:32px;height:32px;padding:0;place-items:center;border-radius:50%;font-size:25px;line-height:1}.graph-zoom-body{display:flex;flex:1;min-height:0}.graph-zoom-body>*{flex:1;min-height:0}@media(max-width:600px){.graph-zoom-backdrop{padding:12px}.graph-zoom-dialog{padding:16px}}.kpi{display:flex;flex-direction:column;justify-content:center;gap:4px;height:100%}.kpi-value{font-size:26px;font-weight:650;font-variant-numeric:tabular-nums;letter-spacing:-.01em}.kpi-caption{color:var(--muted);font-size:12px}.kpi-goal{display:flex;flex-direction:column;gap:4px;font-size:12px}.kpi-goal-bar{height:4px;border-radius:3px;background:var(--surface-alt);overflow:hidden}.kpi-goal-bar span{display:block;height:100%;background:var(--accent)}.kpi-goal .pill{margin:0;align-self:flex-start}.text-widget{white-space:pre-wrap}.widget-list{list-style:none;margin:0;padding:0;display:flex;flex-direction:column;gap:2px}.widget-list li{display:flex;justify-content:space-between;align-items:center;gap:10px;padding:7px 9px;border-radius:8px}.widget-list li:hover{background:var(--surface-alt)}.widget-list li.active{background:#4f7cff1a}.widget-list button.link{display:flex;flex-direction:column;gap:1px;color:inherit}.widget-list .muted{font-size:12px}.row-actions{display:flex;gap:8px;font-size:12px}.add-widget{margin-top:14px;display:flex;flex-direction:column;gap:6px}.reference-list{list-style:none;margin:0;padding:0;display:flex;flex-direction:column;gap:5px;font-size:12.5px}.reference-list li{display:flex;justify-content:space-between;gap:10px;align-items:baseline}.reference-note{margin:0 0 5px;font-size:12.5px}.json-preview{background:var(--surface-alt);border:1px solid var(--border);border-radius:8px;padding:10px;max-height:320px;overflow:auto;font-size:12px}.login-page{display:grid;place-items:center;min-height:100vh;padding:20px}.login-card{width:100%;max-width:340px;display:flex;flex-direction:column;gap:14px}.spreadsheet{display:flex;flex-direction:column;gap:10px;height:100%;min-height:0}.sheet-toolbar{align-items:center;display:flex;gap:8px;flex-wrap:wrap}.sheet-decimals-toggle{align-items:center;display:flex;gap:6px;font-size:13px;white-space:nowrap}.sheet-toolbar-gap{flex:1}.column-menu{position:relative}.column-menu-panel{position:absolute;z-index:20;top:calc(100% + 6px);left:0;min-width:220px;width:max-content;max-width:340px;max-height:320px;overflow-y:auto;overflow-x:hidden;padding:6px;display:flex;flex-direction:column;background:var(--surface);border:1px solid var(--border);border-radius:var(--radius);box-shadow:var(--shadow)}.column-menu-item{display:flex;align-items:center;gap:8px;padding:5px 8px;border-radius:6px;cursor:pointer;font-size:13px}.column-menu-item:hover{background:var(--surface-alt)}.column-menu-letter{color:var(--muted);font-family:ui-monospace,SFMono-Regular,Consolas,monospace;font-size:11px;font-weight:700;min-width:16px}.column-menu-label{overflow:hidden;text-overflow:ellipsis;white-space:nowrap}.column-menu-reset{align-self:flex-start;margin:4px 8px 2px;font-size:12px}.grid-col-header{align-items:center;display:inline-flex;gap:6px}.column-format-menu{position:relative}.column-format-trigger{background:transparent;border:1px solid transparent;border-radius:4px;color:var(--muted);cursor:pointer;font-size:12px;line-height:1;padding:2px 4px}.column-format-trigger:hover{background:var(--surface-alt);border-color:var(--border)}.column-format-trigger.active{color:var(--text)}.column-format-panel{position:absolute;z-index:20;top:calc(100% + 6px);left:0;width:max-content;min-width:190px;padding:8px;display:flex;flex-direction:column;gap:6px;background:var(--surface);border:1px solid var(--border);border-radius:var(--radius);box-shadow:var(--shadow);font-weight:400;text-transform:none;letter-spacing:normal}.column-format-item{align-items:center;display:flex;gap:8px;font-size:13px}.column-format-item input[type=number]{margin-left:auto;width:60px}.column-format-reset{align-self:flex-start;font-size:12px}.formula-input{flex:1;min-width:200px;font-family:ui-monospace,SFMono-Regular,Consolas,monospace;font-size:13px}.cell-address{background:var(--surface-alt);border:1px solid var(--border);border-radius:6px;color:var(--accent-dark);font-family:ui-monospace,SFMono-Regular,Consolas,monospace;font-weight:700;min-width:46px;padding:6px 10px;text-align:center}.sheet-scroll{overflow:auto;max-height:100%;flex:0 100 auto;min-height:180px;border:1px solid var(--border);border-radius:var(--radius)}.sheet-scroll:focus-visible{outline:2px solid var(--accent);outline-offset:-2px}.sheet-table{border-collapse:separate;border-spacing:0;font-size:13px;width:max-content;min-width:100%}.sheet-table td,.sheet-table th{border-bottom:1px solid var(--border);border-right:1px solid var(--border);padding:5px 8px;white-space:nowrap;min-width:96px;max-width:260px;overflow:hidden;text-overflow:ellipsis}.sheet-table td.numeric{text-align:right;font-variant-numeric:tabular-nums}.sheet-table td.cell-error{color:var(--danger)}.sheet-table .frozen-row td,.sheet-table .frozen-row th{border-bottom:2px solid var(--muted)}.sheet-col-letter,.sheet-row-number,.sheet-corner{background:var(--surface-alt);color:var(--muted);font-size:11px;font-weight:700;text-align:center;min-width:40px;position:sticky;z-index:1}.sheet-col-letter,.sheet-corner{top:0}.sheet-row-number,.sheet-corner{left:0}.sheet-corner{z-index:2}.selected-cell{outline:2px solid var(--accent);outline-offset:-2px}.inspectable-row td{cursor:pointer}.inspectable-row:hover td{background:var(--surface-alt)}.detail-row td,.detail-row:hover td{box-shadow:inset 0 -2px 0 var(--accent)}.row-detail{border:1px solid var(--border);border-radius:8px;background:var(--surface);padding:10px 12px 4px;display:flex;flex-direction:column;gap:8px;min-height:0;flex:0 1 auto}.row-detail header{align-items:baseline;display:flex;gap:10px}.row-detail h3{font-size:14px;margin:0}.row-detail header .link{margin-left:auto}.row-detail-scroll{overflow:auto;flex:1 1 auto;min-height:0;max-height:520px}.row-detail tfoot th,.row-detail tfoot td{border-bottom:none;border-top:1px solid var(--border);font-weight:700}.origin-badge{border-radius:999px;display:inline-block;font-size:11px;font-weight:600;padding:1px 8px}.origin-odoo{background:#e8eefb;color:#2c4f9e}.origin-excel{background:#e5f5ee;color:var(--ok)}:root[data-theme=tokyo-night-storm] .origin-excel{background:#244330;color:#c0e89a}:root[data-theme=dusk] .origin-excel{background:#194836;color:#b8f2ce}.origin-mixto,.origin-otro{background:var(--surface-alt);color:var(--muted)}.sheet-table .cell-input{border:none;background:transparent;font:inherit;padding:0;width:100%;outline:none;font-family:ui-monospace,SFMono-Regular,Consolas,monospace}.cell-icon{margin-right:5px}.icon-dot_red .cell-icon,.icon-dot_yellow .cell-icon,.icon-dot_green .cell-icon{border-radius:50%;display:inline-block;height:8px;width:8px;vertical-align:middle}.icon-dot_red .cell-icon{background:var(--danger)}.icon-dot_yellow .cell-icon{background:var(--warn)}.icon-dot_green .cell-icon{background:var(--ok)}.cell-inspector{background:var(--surface-alt);border:1px solid var(--border);border-radius:var(--radius);display:grid;gap:14px;padding:12px}.cell-inspector header{align-items:center;display:flex;gap:12px;justify-content:space-between;flex-wrap:wrap}.cell-inspector h3{font-size:14px;margin:0}.inspector-actions{display:flex;gap:12px}.inspector-grid{align-items:end;display:grid;gap:10px;grid-template-columns:repeat(auto-fit,minmax(130px,1fr))}.inspector-rules-head{align-items:center;display:flex;gap:12px;justify-content:space-between;margin-bottom:8px}.rule-row{align-items:center;display:flex;flex-wrap:wrap;gap:6px;margin-bottom:6px}.rule-row input,.rule-row select{padding:5px 7px}.rule-row input[type=number]{width:88px}.rule-when{font-family:ui-monospace,SFMono-Regular,Consolas,monospace;min-width:160px}.rule-color{width:100px}.link.danger{color:var(--danger)}.seed-table td{vertical-align:top}.seed-table th:first-child{width:34%}.seed-table th:nth-child(2),.seed-table th:nth-child(3){width:12%}.seed-table th:nth-child(4){width:16%}.seed-table td:nth-child(2),.seed-table td:nth-child(3),.seed-table td:last-child{white-space:nowrap}.seed-table .row-actions{justify-content:flex-end}.seed-diff-row td{background:var(--surface-alt);padding:12px 14px}.seed-diff+.seed-diff{margin-top:12px}.seed-diff header{display:flex;align-items:baseline;gap:10px;margin-bottom:6px}.seed-count{font-size:11px;font-weight:600}.seed-count.added{color:var(--ok)}.seed-count.removed{color:var(--danger)}.seed-diff pre{margin:0;max-height:420px;overflow:auto;background:var(--surface);border:1px solid var(--border);border-radius:var(--radius);padding:8px 0;line-height:1.45;white-space:pre}.seed-diff pre div{padding:0 12px}.diff-removed{background:#fdeaee;color:#8c1f31}.diff-added{background:#e5f5ee;color:#10634b}.diff-hunk{color:var(--muted);background:var(--surface-alt)}.diff-meta{color:var(--muted)}.pivot{display:flex;flex-direction:column;gap:10px;min-height:0}.pivot-controls{display:flex;align-items:center;gap:6px;flex-wrap:wrap}.pivot-controls-label{font-size:12px;font-weight:600;color:var(--muted);text-transform:uppercase;letter-spacing:.03em}.pivot-controls-gap{flex:1}.pivot-measure{display:flex;align-items:center;gap:6px;font-size:12.5px;color:var(--text)}.chip-on{background:var(--accent-soft, #e7f0ea);border-color:var(--accent, #1e7a46);color:var(--accent, #1e7a46);font-weight:600}.pivot-scroll{overflow:auto;min-height:0}.pivot-table{width:max-content;min-width:100%;border-collapse:collapse;table-layout:fixed;font-size:13px}.pivot-table th,.pivot-table td{padding:6px 10px;border-bottom:1px solid var(--border);white-space:nowrap;text-align:left}.pivot-table thead th{position:sticky;top:0;z-index:2;background:var(--surface-alt, #eef3f0);font-size:12px;font-weight:600;color:var(--muted);border-bottom:1px solid var(--border)}.pivot-column-resize{position:absolute;z-index:4;top:0;right:-5px;width:10px;height:100%;cursor:col-resize;touch-action:none}.pivot-column-resize:after{position:absolute;top:20%;right:4px;width:1px;height:60%;background:transparent;content:""}.pivot-column-resize:hover:after,.pivot-column-resize:active:after{width:2px;background:var(--accent, #1e7a46)}.pivot-table thead th+th{border-left:1px solid var(--border)}.pivot-corner,.pivot-table tbody th{position:sticky;left:0;z-index:1;background:var(--surface);text-align:left;font-weight:500}.pivot-table tbody th,.pivot-table thead .pivot-corner{padding-left:30px}.pivot-table thead .pivot-corner{z-index:3;background:var(--surface-alt, #eef3f0)}.pivot-table .numeric{text-align:right;font-variant-numeric:tabular-nums}.pivot-table tbody td{cursor:pointer}.pivot-table tbody tr:hover td{background:var(--surface-alt, #f6f8f7)}.pivot-active{outline:2px solid var(--accent, #1e7a46);outline-offset:-2px}.pivot-subtotal th,.pivot-subtotal td{font-size:14px;font-weight:700;background:var(--surface-alt, #f6f8f7)}.pivot-percent-heading th,.pivot-percent-heading td{padding-top:14px;border-top:2px solid var(--border)}.pivot-percent-heading th{color:var(--muted);font-size:12px;letter-spacing:.06em;text-transform:uppercase}.pivot-income-percent th{font-size:12px;font-weight:700;letter-spacing:.035em}.pivot-toggle{display:inline-flex;align-items:center;gap:5px;padding:0;border:0;background:none;font:inherit;color:inherit;cursor:pointer}.pivot-note{margin:0}.pivot-caption{font-size:12.5px}.pivot-table .pivot-derived{position:relative;text-align:center;cursor:default;color:var(--muted)}.pivot-variance-bar{position:absolute;z-index:0;top:4px;bottom:4px;width:var(--pivot-variance-size);pointer-events:none}.pivot-variance-right .pivot-variance-bar{left:50%}.pivot-variance-left .pivot-variance-bar{right:50%}.pivot-variance-positive .pivot-variance-bar{background:var(--pivot-variance-positive)}.pivot-variance-negative .pivot-variance-bar{background:var(--pivot-variance-negative)}.pivot-derived:after{position:absolute;z-index:0;top:4px;bottom:4px;left:50%;border-left:1px solid var(--border);content:"";pointer-events:none}.pivot-derived>:not(.pivot-variance-bar){position:relative;z-index:1}.pivot-move{display:inline-flex;gap:1px;margin-left:4px;vertical-align:middle}.pivot-move button{padding:0 2px;border:0;border-radius:3px;background:none;color:transparent;font:inherit;font-size:12px;line-height:1;cursor:pointer}.pivot-table thead th:hover .pivot-move button:enabled,.pivot-move button:focus-visible{color:var(--muted)}.pivot-move button:enabled:hover{background:var(--surface);color:var(--text, #1c2b24)}.pivot-move button:disabled{cursor:default}
