:root{--bg: #f6f7f9;--surface: #ffffff;--border: #e4e7ec;--border-strong: #d0d5dd;--text: #1d2433;--muted: #667085;--primary: #4f46e5;--primary-hover: #4338ca;--primary-soft: #eef2ff;--danger: #ef4444;--r-xs: 6px;--r-sm: 8px;--r-md: 10px;--r-lg: 14px;--r-pill: 999px;--radius: var(--r-md);--shadow: 0 1px 2px rgba(16, 24, 40, .05);--shadow-md: 0 4px 16px rgba(16, 24, 40, .1);--shadow-lg: 0 12px 32px rgba(16, 24, 40, .16);--focus-ring: 0 0 0 3px var(--primary-soft);--table-head-bg: #eef1f6;font-family:-apple-system,BlinkMacSystemFont,Segoe UI,Roboto,Helvetica,Arial,sans-serif}*{box-sizing:border-box}html,body,#root{height:100%;margin:0}body{background:var(--bg);color:var(--text);font-size:14px;line-height:1.45}h2{margin:0 0 4px;font-size:20px}h3{margin:0 0 8px;font-size:16px}h4{margin:12px 0 6px;font-size:13px;text-transform:uppercase;letter-spacing:.04em;color:var(--muted)}.muted{color:var(--muted)}.pad{padding:16px}code{font-family:ui-monospace,SFMono-Regular,Menlo,monospace;font-size:12px;background:#f1f3f6;padding:1px 5px;border-radius:var(--r-xs)}:where(button,[role=button],a,summary):focus-visible,:where(input,select,textarea):focus-visible{outline:2px solid var(--primary);outline-offset:1px}:where(input,select,textarea):focus{outline:none;border-color:var(--primary);box-shadow:var(--focus-ring)}.btn{border:1px solid var(--border-strong);background:var(--surface);color:var(--text);padding:7px 13px;border-radius:var(--r-sm);font-size:13px;cursor:pointer;transition:background .12s,border-color .12s}.btn:hover{background:#f9fafb}.btn:disabled{opacity:.5;cursor:not-allowed}.btn.primary{background:var(--primary);border-color:var(--primary);color:#fff}.btn.primary:hover{background:var(--primary-hover)}.btn.ghost{border-color:transparent;background:transparent}.btn.ghost:hover{background:#f0f1f4}.btn.small{padding:4px 9px;font-size:12px}.btn.block{width:100%}.card{background:var(--surface);border:1px solid var(--border);border-radius:var(--radius);box-shadow:var(--shadow);padding:16px}.card-grid{display:grid;grid-template-columns:repeat(auto-fill,minmax(260px,1fr));gap:16px}.item-card{display:flex;flex-direction:column;gap:6px;text-decoration:none;color:inherit}.item-card h3{margin:0}.item-meta{font-size:12px;margin-top:auto}.item-actions{display:flex;gap:6px;margin-top:6px}.link-button{background:none;border:none;padding:0;text-align:left;cursor:pointer;color:inherit}.shell{display:flex;min-height:100vh}.sidebar{width:220px;background:var(--surface);border-right:1px solid var(--border);display:flex;flex-direction:column;padding:18px 14px;position:sticky;top:0;height:100vh}.brand{display:flex;align-items:center;gap:8px;font-weight:700;font-size:18px;margin-bottom:22px}.brand-dot{width:14px;height:14px;border-radius:var(--r-xs);background:linear-gradient(135deg,var(--primary),#818cf8)}.nav{display:flex;flex-direction:column;gap:2px}.nav-link{display:flex;align-items:center;gap:10px;text-decoration:none;color:var(--muted);padding:9px 11px;border-radius:var(--r-sm);font-weight:500}.nav-icon{display:inline-flex;width:18px;height:18px;flex:0 0 18px;opacity:.85}.nav-icon svg{width:18px;height:18px}.nav-link:hover{background:#f0f1f4;color:var(--text)}.nav-link.active{background:var(--primary-soft);color:var(--primary)}.sidebar-footer{margin-top:auto;font-size:12px}.sidebar{transition:width .15s ease}.sidebar.collapsed{width:64px;padding:18px 10px;align-items:center}.sidebar.collapsed .nav-label{display:none}.sidebar.collapsed .brand{margin-bottom:22px}.sidebar.collapsed .nav{width:100%}.sidebar.collapsed .nav-link{justify-content:center;padding:10px 0}.sidebar-toggle{margin-top:10px;align-self:flex-end;background:none;border:1px solid var(--border);border-radius:var(--r-sm);width:30px;height:30px;display:inline-flex;align-items:center;justify-content:center;color:var(--muted);cursor:pointer}.sidebar-toggle svg{width:16px;height:16px}.sidebar-toggle:hover{background:var(--primary-soft);color:var(--primary);border-color:var(--primary)}.sidebar.collapsed .sidebar-toggle{align-self:center}.main{flex:1;min-width:0;display:flex;flex-direction:column}.topbar{height:56px;border-bottom:1px solid var(--border);background:var(--surface);display:flex;align-items:center;padding:0 20px}.topbar-spacer{flex:1}.topbar-user{display:flex;align-items:center;gap:12px}.content{padding:24px;flex:1}.field{display:flex;flex-direction:column;gap:4px;margin-bottom:12px}.field>span{font-size:12px;color:var(--muted);font-weight:500}input:not([type]),input[type=text],input[type=email],input[type=password],input[type=number],input[type=search],select{border:1px solid var(--border-strong);border-radius:var(--r-sm);padding:7px 9px;font-size:13px;background:var(--surface);color:var(--text)}input:focus,select:focus{outline:none;border-color:var(--primary);box-shadow:0 0 0 3px var(--primary-soft)}.inline-field{display:flex;align-items:center;gap:6px;font-size:12px;color:var(--muted)}.inline-field input{width:90px}.inline-check{display:inline-flex;align-items:center;gap:5px;font-size:13px}.check-row{display:flex;gap:18px;margin-bottom:12px}.error-banner{background:#fef2f2;border:1px solid #fecaca;color:#b42318;padding:8px 12px;border-radius:var(--r-sm);margin-bottom:12px;font-size:13px}.error-banner.small{margin:8px}.success-banner{background:#ecfdf3;border:1px solid #abefc6;color:#067647;padding:8px 12px;border-radius:var(--r-sm);margin-bottom:12px;font-size:13px}.login-screen{min-height:100vh;display:flex;align-items:center;justify-content:center;background:var(--bg)}.login-card{width:360px;display:flex;flex-direction:column;gap:10px}.login-brand{margin-bottom:0;font-size:22px}.login-sub{margin:0 0 8px}.login-form{display:flex;flex-direction:column}.login-hint{text-align:center;font-size:12px;margin-top:6px}.fullscreen-center{display:flex;align-items:center;justify-content:center;height:100vh}.no-access{max-width:460px;padding:32px;text-align:center}.no-access h2,.no-access p{margin:0 0 12px}.no-access .btn{margin-top:8px}.page-head{display:flex;align-items:flex-start;justify-content:space-between;margin-bottom:16px}.head-actions,.toolbar{display:flex;gap:8px;margin-bottom:12px}.head-actions{align-items:center;flex-wrap:wrap;justify-content:flex-end}.head-actions .btn{flex-shrink:0;white-space:nowrap}.explore{display:grid;grid-template-columns:300px 1fr;gap:16px;align-items:start}.explore-side{position:sticky;top:24px;max-height:calc(100vh - 100px);overflow:auto}.explore-main{display:flex;flex-direction:column;gap:16px;min-width:0}.field-section{margin-top:8px}.field-group{margin-bottom:8px}.field-group-title{font-size:11px;color:var(--muted);margin-bottom:4px}.field-pills{display:flex;flex-wrap:wrap;gap:5px}.pill{border:1px solid var(--border-strong);background:var(--surface);border-radius:var(--r-pill);padding:4px 10px;font-size:12px;cursor:pointer;color:var(--text)}.pill:hover{border-color:var(--primary)}.pill-active{background:var(--primary-soft);border-color:var(--primary);color:var(--primary)}.pill.static{cursor:default}.filter-builder{margin-bottom:12px}.filter-head{display:flex;align-items:center;justify-content:space-between}.filter-row{display:flex;gap:8px;margin-bottom:6px}.filter-row select,.filter-row input{flex:1}.run-row{display:flex;align-items:center;gap:14px;flex-wrap:wrap}.result-header{display:flex;align-items:center;justify-content:space-between;margin-bottom:12px}.result-meta{display:flex;align-items:center;gap:10px;font-size:12px}.tabs{display:flex;gap:4px}.tab{border:none;background:none;padding:6px 12px;border-radius:var(--r-sm);cursor:pointer;color:var(--muted);font-size:13px;font-weight:500}.tab.active{background:var(--primary-soft);color:var(--primary)}.viz-controls{display:flex;flex-direction:column;gap:10px;margin-bottom:12px;padding-bottom:12px;border-bottom:1px solid var(--border)}.viz-picker{display:flex;flex-wrap:wrap;gap:6px}.chip{border:1px solid var(--border-strong);background:var(--surface);border-radius:var(--r-sm);padding:5px 11px;font-size:12px;cursor:pointer;color:var(--text)}.chip-active{background:var(--primary);border-color:var(--primary);color:#fff}.viz-fields{display:flex;align-items:center;gap:18px;flex-wrap:wrap}.y-fields{display:flex;align-items:center;gap:10px;flex-wrap:wrap}.result-actions{display:flex;gap:8px;margin-top:12px}.sql-block{background:#0f172a;color:#e2e8f0;padding:14px;border-radius:var(--r-sm);overflow:auto;font-size:12px;margin-top:12px}.badge{display:inline-block;font-size:11px;padding:2px 7px;border-radius:var(--r-pill);background:#f1f3f6;color:var(--muted);font-weight:600}.badge.cache{background:#ecfdf3;color:#067647}.badge.rls{background:#fef3c7;color:#b45309;margin:8px 0}.table-wrap{overflow:auto;max-height:520px}.data-table{width:100%;border-collapse:collapse;font-size:13px}.data-table th,.data-table td{text-align:left;padding:8px 12px;border-bottom:1px solid var(--border);white-space:nowrap}.data-table th{position:sticky;top:0;background:var(--table-head-bg);box-shadow:inset 0 -1px 0 var(--border);font-weight:700;color:var(--text);font-size:11px;text-transform:uppercase;letter-spacing:.04em}.data-table td.num,.data-table th.num{text-align:right;font-variant-numeric:tabular-nums}.data-table tbody tr:hover{background:var(--primary-soft)}.th-gear-wrap{position:relative;display:inline-block;margin-left:6px;vertical-align:middle}.th-gear{display:inline-flex;align-items:center;justify-content:center;width:24px;height:24px;background:none;border:none;border-radius:var(--r-xs);cursor:pointer;color:var(--muted);padding:3px;opacity:.45;transition:opacity .1s,background .1s}.th-gear svg{width:17px;height:17px}th:hover .th-gear{opacity:1}.th-gear:hover{opacity:1;background:var(--primary-soft);color:var(--primary)}.lk-pivot-tag{margin-left:6px;font-size:9px;font-weight:700;letter-spacing:.06em;text-transform:uppercase;padding:1px 6px;border-radius:var(--r-pill);background:var(--primary-soft);color:var(--primary)}.th-menu{z-index:60;min-width:170px;max-width:320px;background:var(--surface);border:1px solid var(--border);border-radius:var(--r-sm);box-shadow:0 6px 20px #10182829;padding:4px}.th-menu button{display:block;width:100%;background:none;border:none;border-radius:var(--r-xs);padding:7px 10px;font-size:12.5px;font-weight:400;color:var(--text);cursor:pointer;text-align:left;white-space:nowrap}.th-menu button:hover{background:var(--primary-soft);color:var(--primary)}.data-table tfoot .totals-row td{font-weight:700;border-top:2px solid var(--border-strong);background:#fafbfc;position:sticky;bottom:0}.data-table .total-col{font-weight:600}[data-theme=dark] .data-table tfoot .totals-row td{background:#16213a}.kpi{display:flex;flex-direction:column;align-items:center;justify-content:center;padding:40px 16px}.kpi-value{font-size:44px;font-weight:700;color:var(--primary)}.kpi-label{color:var(--muted);margin-top:4px}.kpi-multi{display:grid;grid-template-columns:repeat(auto-fit,minmax(150px,1fr));gap:14px;padding:20px 16px;box-sizing:border-box}.kpi-multi-item{display:flex;flex-direction:column;align-items:center;justify-content:center;text-align:center;gap:4px;padding:18px 12px;background:var(--bg);border:1px solid var(--border);border-radius:var(--r-lg)}.kpi-multi-item .kpi-value{font-size:34px;line-height:1.1}.kpi-multi-item .kpi-label{font-size:12px;font-weight:600;letter-spacing:.04em;text-transform:uppercase;margin-top:2px}.lk-funnel{display:flex;flex-direction:column;gap:14px;padding:18px 16px;box-sizing:border-box}.lk-funnel-stage.clickable{cursor:pointer}.lk-funnel-stage.clickable:hover .lk-funnel-bar{filter:brightness(1.08)}.lk-funnel-head{display:flex;align-items:baseline;justify-content:space-between;gap:12px;margin-bottom:4px}.lk-funnel-label{font-weight:600;font-size:13px}.lk-funnel-value{font-variant-numeric:tabular-nums;font-weight:650}.lk-funnel-track{height:22px;background:var(--bg);border-radius:var(--r-xs);overflow:hidden}.lk-funnel-bar{height:100%;border-radius:var(--r-xs);transition:width .2s ease}.lk-funnel-meta{display:flex;gap:14px;margin-top:4px;font-size:11.5px;color:var(--muted)}.lk-funnel-drop{color:#ef4444}.lk-funnel-flat{color:var(--muted)}.lk-bullet{display:flex;flex-direction:column;gap:16px;padding:18px 16px;box-sizing:border-box}.lk-bullet-row.clickable{cursor:pointer}.lk-bullet-head{display:flex;align-items:baseline;justify-content:space-between;gap:12px;margin-bottom:5px}.lk-bullet-label{font-weight:600;font-size:13px}.lk-bullet-value{font-variant-numeric:tabular-nums;font-weight:650}.lk-bullet-value.hit{color:#10b981}.lk-bullet-value.miss{color:#f59e0b}.lk-bullet-pct{color:var(--muted);font-weight:400;font-size:11.5px;margin-left:6px}.lk-bullet-track{position:relative;height:20px;background:var(--bg);border-radius:var(--r-xs);overflow:hidden}.lk-bullet-band{position:absolute;inset:0 auto 0 0;background:var(--text)}.lk-bullet-bar{position:absolute;top:5px;bottom:5px;left:0;border-radius:var(--r-xs);transition:width .2s ease}.lk-bullet-target{position:absolute;top:0;bottom:0;width:3px;margin-left:-1.5px;background:var(--text)}.lk-bullet-target.hit{background:#10b981}.lk-bullet-target.miss{background:#ef4444}.lk-bullet-legend{font-size:11.5px;color:var(--muted)}.lk-vs-hint{font-size:11px;color:var(--muted);line-height:1.4;margin-top:4px}.lk-sankey-wrap{width:100%;overflow:auto;padding:8px 4px 4px;box-sizing:border-box}.lk-sankey-link{transition:opacity .12s ease}.lk-sankey-node.clickable{cursor:pointer}.lk-sankey-label{font-size:11.5px;fill:var(--text, #1d2433)}.lk-sankey-stage{font-size:11.5px;font-weight:600;fill:var(--muted, #667085)}.data-table th.draggable-col{cursor:grab}.data-table th.draggable-col:active{cursor:grabbing}.data-table th.drag-over{box-shadow:inset 2px 0 0 var(--primary, #4f46e5);background:color-mix(in srgb,var(--primary, #4f46e5) 10%,transparent)}.lk-vs-order-row{display:flex;align-items:center;gap:4px;padding:2px 0}.lk-vs-order-label{flex:1 1 auto;min-width:0;overflow:hidden;text-overflow:ellipsis;white-space:nowrap}.dfb-value-suggest{display:inline-flex;min-width:170px;max-width:260px}.modal.filter-config-modal{width:min(820px,94vw)}@media (min-width: 900px){.filter-config-modal .fcm-form{display:grid;grid-template-columns:1fr 1fr;gap:0 26px;align-items:start}.filter-config-modal .fcm-section.fcm-wide{grid-column:1 / -1}}.fcm-field{display:flex;align-items:baseline;gap:10px;flex-wrap:wrap;padding-bottom:12px;border-bottom:1px solid var(--border);margin-bottom:4px}.fcm-field-label{font-weight:650}.fcm-field-id{font-size:11.5px;color:var(--muted);font-family:ui-monospace,SFMono-Regular,Menlo,monospace}.fcm-section{padding:12px 0;border-bottom:1px solid var(--border)}.fcm-section:last-of-type{border-bottom:none}.fcm-section-title{font-size:10.5px;font-weight:700;letter-spacing:.06em;text-transform:uppercase;color:var(--muted);margin-bottom:8px}.fcm-row{display:flex;align-items:center;gap:10px;margin-bottom:6px}.fcm-row>span{flex:0 0 auto;min-width:74px;font-size:13px}.fcm-row select,.fcm-row input{flex:1 1 auto;min-width:0}.fcm-check{display:flex;align-items:center;gap:8px;padding:3px 0;font-size:13px;cursor:pointer}.fcm-check input{flex:0 0 auto;margin:0}.fcm-list{margin:4px 0 0 18px;max-height:min(38vh,340px);overflow-y:auto;border-left:2px solid var(--border);padding-left:10px}.fcm-sublabel{font-size:11.5px;color:var(--muted);margin-bottom:2px}.fcm-hint{font-size:11.5px;color:var(--muted);line-height:1.45;margin-top:4px}.fcm-warn{font-size:11.5px;color:#f59e0b;margin-top:6px}.fcm-spacer{flex:1 1 auto}.fcm-remove:hover{color:#ef4444}.pal-card{padding:14px 16px;margin-bottom:12px}.pal-head{display:flex;align-items:center;gap:12px;margin-bottom:10px}.pal-name{flex:0 0 220px;font-weight:600}.pal-head .btn{margin-left:auto}.pal-colors{display:flex;flex-wrap:wrap;align-items:center;gap:8px}.pal-swatch{position:relative;display:inline-flex}.pal-swatch input[type=color]{width:34px;height:28px;padding:0}.pal-x{position:absolute;top:-6px;right:-6px;width:15px;height:15px;border:1px solid var(--border);border-radius:50%;background:var(--surface);color:var(--muted);font-size:9px;line-height:1;cursor:pointer;padding:0}.pal-x:disabled{opacity:.35;cursor:default}.pal-preview{display:flex;height:10px;margin-top:12px;border-radius:var(--r-xs);overflow:hidden}.pal-preview span{flex:1 1 0}.pal-actions{display:flex;align-items:center;gap:10px;margin-top:8px}.cmdk-overlay{align-items:flex-start;padding-top:12vh}.cmdk{width:620px;max-width:100%;max-height:70vh;display:flex;flex-direction:column;background:var(--surface);border:1px solid var(--border);border-radius:var(--r-lg);box-shadow:0 20px 60px #00000059;overflow:hidden}.cmdk-input{border:none;outline:none;background:none;padding:15px 18px;font-size:15px;color:var(--text);border-bottom:1px solid var(--border)}.cmdk-results{overflow-y:auto;padding:6px}.cmdk-empty{padding:18px;color:var(--muted);font-size:13px}.cmdk-group-head{padding:8px 10px 4px;font-size:10.5px;font-weight:700;letter-spacing:.06em;text-transform:uppercase;color:var(--muted)}.cmdk-item{display:flex;align-items:baseline;gap:10px;width:100%;text-align:left;border:none;background:none;border-radius:var(--r-sm);padding:7px 10px;cursor:pointer;color:var(--text)}.cmdk-item.active{background:color-mix(in srgb,var(--primary, #4f46e5) 16%,transparent)}.cmdk-item-title{font-size:13.5px;font-weight:550}.cmdk-item-sub{font-size:11.5px;color:var(--muted);margin-left:auto;white-space:nowrap;overflow:hidden;text-overflow:ellipsis;max-width:55%}.cmdk-foot{display:flex;gap:14px;padding:8px 14px;border-top:1px solid var(--border);font-size:11px;color:var(--muted)}.dash-gate{display:flex;align-items:center;gap:12px;margin:0 0 12px;padding:9px 14px;background:color-mix(in srgb,var(--primary, #4f46e5) 10%,transparent);border:1px solid color-mix(in srgb,var(--primary, #4f46e5) 35%,transparent);border-radius:var(--r-sm);font-size:12.5px;color:var(--text)}.dash-gate strong{font-weight:650}.dash-gate .btn{margin-left:auto}.tile-text,.tile-text-edit{width:100%;height:100%;box-sizing:border-box;padding:10px 12px;font-size:13.5px;line-height:1.5;color:var(--text);white-space:pre-wrap;overflow:auto}.tile-text.as-title,.tile-text-edit.as-title{font-size:19px;font-weight:650;line-height:1.3;letter-spacing:-.01em}.tile-text-edit{background:none;border:1px dashed var(--border);border-radius:var(--r-xs);resize:none;font-family:inherit}.tile-text-edit:focus{outline:none;border-color:var(--primary, #4f46e5);border-style:solid}.dash-menu-head{padding:6px 10px 2px;font-size:10.5px;font-weight:700;letter-spacing:.06em;text-transform:uppercase;color:var(--muted)}.dash-menu-check{display:flex;align-items:center;gap:7px;padding:5px 10px;font-size:12.5px;color:var(--text);cursor:pointer;white-space:nowrap}.dash-menu-check:hover{background:var(--bg)}.dash-menu-check input{flex:0 0 auto;margin:0}.lk-suggest{position:relative;flex:1 1 auto;min-width:160px}.lk-suggest-control{display:flex;flex-wrap:wrap;align-items:center;gap:5px;min-height:34px;padding:4px 6px;background:var(--surface, #fff);border:1px solid var(--border-strong, #d0d5dd);border-radius:var(--r-sm);cursor:text;transition:border-color .12s,box-shadow .12s}.lk-suggest-control:hover{border-color:var(--primary, #4f46e5)}.lk-suggest-control:focus-within{border-color:var(--primary, #4f46e5);box-shadow:var(--focus-ring, 0 0 0 3px #eef2ff)}.lk-suggest-input,.lk-filter-row .lk-suggest-input{flex:1;min-width:72px;border:none;outline:none;background:none;font-size:12px;color:var(--text, #1d2433);padding:3px 2px}.lk-suggest-chip{display:inline-flex;align-items:center;gap:2px;font-size:12px;line-height:1.5;background:var(--primary-soft, #eef2ff);color:var(--primary, #4f46e5);border:1px solid transparent;border-radius:var(--r-xs);padding:1px 3px 1px 8px;max-width:100%}.lk-suggest-chip>:first-child{overflow:hidden;text-overflow:ellipsis;white-space:nowrap}.lk-suggest-chip button{display:inline-flex;align-items:center;justify-content:center;width:16px;height:16px;flex:none;border:none;border-radius:var(--r-xs);background:none;color:inherit;cursor:pointer;font-size:10px;padding:0;opacity:.65}.lk-suggest-chip button:hover{opacity:1;background:#4f46e529}.lk-suggest-panel{z-index:1000;min-width:200px;max-height:288px;overflow-y:auto;background:var(--surface, #ffffff);border:1px solid var(--border, #e4e7ec);border-radius:var(--r-md);box-shadow:var(--shadow-lg);padding:4px}.lk-suggest-opt{display:block;width:100%;text-align:left;border:none;background:none;padding:7px 10px;border-radius:var(--r-xs);font-size:12px;color:var(--text, #1d2433);cursor:pointer;white-space:nowrap;overflow:hidden;text-overflow:ellipsis}.lk-suggest-opt+.lk-suggest-opt{position:relative}.lk-suggest-opt+.lk-suggest-opt:before{content:"";position:absolute;left:10px;right:10px;top:0;border-top:1px solid var(--border, #e4e7ec);opacity:.6}.lk-suggest-opt:hover:before,.lk-suggest-opt.active:before,.lk-suggest-opt:hover+.lk-suggest-opt:before,.lk-suggest-opt.active+.lk-suggest-opt:before{border-color:transparent}.lk-suggest-opt:hover,.lk-suggest-opt.active{background:var(--primary-soft, #eef2ff);color:var(--primary, #4f46e5)}.lk-suggest-empty{padding:10px;font-size:12px;color:var(--muted, #667085);text-align:center}.lk-infotip{flex:0 0 auto;display:inline-flex;align-items:center;justify-content:center;width:15px;height:15px;margin-left:5px;border:1px solid var(--border);border-radius:50%;color:var(--muted);font-size:10px;font-style:italic;font-weight:700;line-height:1;cursor:help;-webkit-user-select:none;user-select:none}.lk-infotip:hover,.lk-infotip:focus-visible{color:var(--text);border-color:var(--muted);outline:none}.lk-infotip-bubble{position:fixed;z-index:1000;max-width:280px;padding:8px 10px;background:var(--surface);color:var(--text);border:1px solid var(--border);border-radius:var(--r-sm);box-shadow:0 6px 20px #0000002e;font-size:12.5px;font-weight:400;line-height:1.45;text-align:left;text-transform:none;letter-spacing:normal;white-space:normal;pointer-events:none}.lk-infotip-title{font-weight:650;margin-bottom:3px}.lk-infotip-meta{margin-top:5px;color:var(--muted);font-size:11px}.lk-col-info{vertical-align:middle}.lk-flow-wrap{width:100%;overflow:auto;padding:12px;box-sizing:border-box}.lk-flow-canvas{position:relative}.lk-flow-links{position:absolute;top:0;right:0;bottom:0;left:0;color:var(--muted);pointer-events:none}.lk-flow-link{fill:none;stroke:currentColor;stroke-width:1.4;opacity:.75}.lk-flow-box{position:absolute;box-sizing:border-box;display:flex;flex-direction:column;align-items:center;justify-content:center;gap:2px;padding:10px 12px;text-align:center;background:var(--bg);border:1px solid var(--border);border-radius:var(--r-md);color:var(--text);overflow:hidden}.lk-flow-box.drillable{cursor:pointer}.lk-flow-box.drillable:hover{filter:brightness(1.06);box-shadow:0 2px 10px #0000001f}.lk-flow-label{font-size:13px;font-weight:600;line-height:1.25;display:-webkit-box;-webkit-line-clamp:2;-webkit-box-orient:vertical;overflow:hidden}.lk-flow-value{font-size:22px;font-weight:650;line-height:1.1}.lk-flow-sub{font-size:12px;opacity:.75}.tree-folder,.tree-file{cursor:grab}.tree-folder:active,.tree-file:active{cursor:grabbing}.tree-folder.drop-target{background:var(--primary-soft);box-shadow:inset 2px 0 0 var(--primary);border-radius:var(--r-xs)}.file-list.drop-target{outline:2px dashed var(--primary);outline-offset:-3px;border-radius:var(--r-sm)}.tree-new-in-folder{opacity:0;transition:opacity .1s}.tree-folder:hover .tree-new-in-folder,.tree-new-in-folder:focus-visible{opacity:1}.map-scale{display:flex;align-items:center;gap:8px;flex-wrap:wrap;padding:6px 4px 2px;font-size:11px;color:var(--muted)}.map-scale-label{font-weight:600;color:var(--text)}.map-scale-bar{flex:0 1 180px;height:8px;border-radius:var(--r-pill);border:1px solid var(--border)}.map-scale-end{font-variant-numeric:tabular-nums}.map-scale-nodata{display:inline-flex;align-items:center;gap:4px;margin-left:6px}.map-scale-nodata i{width:10px;height:10px;border-radius:3px;display:inline-block;border:1px solid var(--border)}.dfb-mapped{margin-left:5px;font-size:11px;color:var(--primary)}.fcm-map-row{align-items:center;gap:12px}.fcm-map-row>span{flex:0 1 38%;min-width:0;overflow:hidden;text-overflow:ellipsis;white-space:nowrap}.fcm-map-row select{flex:1 1 62%;min-width:0}.fcm-unbound>span{color:var(--muted)}.fcm-unbound-tag{font-style:normal;font-size:11px;color:#f59e0b;margin-left:6px}.page-head-actions{display:flex;align-items:center;gap:8px}.recharts-legend-wrapper{max-height:30%;overflow-y:auto;overflow-x:hidden}.google-connect{display:flex;align-items:center;gap:10px;flex-wrap:wrap;margin:6px 0}.google-connect-state{font-size:12px;color:var(--muted)}.google-connect-state.ok{color:#067647}[data-theme=dark] .google-connect-state.ok{color:#86efac}.lk-vs-row{display:flex;align-items:center;justify-content:space-between;gap:8px;margin:5px 0}.lk-vs-row>span{color:var(--lk-text, var(--text));flex:0 1 auto;min-width:0;overflow-wrap:break-word}.lk-vs-row select,.lk-vs-row input{flex:1 1 55%;width:auto;min-width:96px;max-width:100%;border:1px solid var(--lk-border, var(--border));border-radius:var(--r-xs);padding:4px 6px;font-size:12px;background:var(--lk-surface, var(--surface));color:var(--lk-text, var(--text))}@container (max-width: 290px){.lk-vs-row{flex-direction:column;align-items:stretch;gap:3px}.lk-vs-row select,.lk-vs-row input{flex:1 1 auto;width:100%}}.lk-flow-editor{display:flex;flex-direction:column;gap:10px}.lk-flow-node-row{display:flex;flex-direction:column;gap:4px;padding:8px;border:1px solid var(--border);border-radius:var(--r-sm)}.lk-flow-node-head{display:flex;align-items:center;gap:4px}.lk-flow-node-label{flex:1 1 auto;min-width:0}.lk-flow-node-btn{flex:0 0 auto;background:none;border:1px solid var(--border);border-radius:var(--r-xs);color:var(--muted);cursor:pointer;padding:2px 6px;line-height:1.2}.lk-flow-node-btn:disabled{opacity:.4;cursor:default}.lk-flow-node-btn:hover:not(:disabled){color:var(--text)}.modal-overlay{position:fixed;top:0;right:0;bottom:0;left:0;background:#0a0e198c;-webkit-backdrop-filter:blur(3px);backdrop-filter:blur(3px);display:flex;align-items:center;justify-content:center;z-index:100;padding:20px}.modal{width:440px;max-width:100%;max-height:90vh;overflow:auto}.modal.card{padding:20px 22px}.modal.wide{width:560px}.modal>h3{margin:0 0 6px;font-size:17px}.modal>h3+p.muted{margin:0 0 14px;font-size:13px;line-height:1.5}.modal-actions{display:flex;justify-content:flex-end;gap:8px;margin-top:18px;padding-top:14px;border-top:1px solid var(--border)}.multiselect,.attrs{margin:12px 0}.ms-label{display:block;font-size:12px;color:var(--muted);font-weight:600;margin-bottom:6px}.attr-grid{display:flex;flex-wrap:wrap;gap:8px;margin:4px 0 10px}.attr-chip{display:inline-flex;align-items:center;gap:6px;padding:5px 6px 5px 10px;background:var(--surface, #f8fafc);border:1px solid var(--border, #e2e8f0);border-radius:var(--r-sm);font-size:13px;max-width:100%}.attr-chip .attr-key{font-weight:600;color:var(--primary, #4f46e5);background:none;padding:0}.attr-chip .attr-eq{color:var(--muted);font-weight:600}.attr-chip .attr-val{color:var(--text);overflow:hidden;text-overflow:ellipsis;white-space:nowrap;max-width:220px}.attr-chip.attr-all{background:#ecfdf5;border-color:#a7f3d0}.attr-chip.attr-all .attr-key{color:#047857}.attr-chip.attr-all .attr-val{color:#047857;font-weight:600}.attr-del{border:none;background:none;color:var(--muted);cursor:pointer;font-size:12px;line-height:1;padding:3px 4px;border-radius:var(--r-xs)}.attr-del:hover{background:#fee2e2;color:#b91c1c}.attr-empty{padding:8px 10px;border:1px dashed var(--border, #e2e8f0);border-radius:var(--r-sm);margin:4px 0 10px}.attr-add{display:flex;align-items:center;gap:8px;margin-top:8px}.attr-add input{min-width:0;flex:1}.attr-add .attr-eq{color:var(--muted);font-weight:600}.member-list{display:flex;flex-direction:column}.shares-list{display:flex;flex-direction:column;gap:4px;margin-bottom:14px}.share-row{display:flex;justify-content:space-between;font-size:13px}.share-form{display:flex;gap:8px;flex-wrap:wrap;align-items:center}.dash-grid{position:relative}.tile{height:100%;display:flex;flex-direction:column;padding:12px;overflow:hidden}.tile-head{display:flex;justify-content:space-between;align-items:center;margin-bottom:8px}.tile-title{font-weight:600;font-size:14px}.tile-actions{display:flex;gap:4px}.tile-body{flex:1;overflow:auto;min-height:0}.react-grid-item.react-grid-placeholder{background:var(--primary);opacity:.15;border-radius:var(--radius)}.looks{display:grid;grid-template-columns:1fr;gap:16px}.look-viewer{margin-top:8px}.roles-toolbar{display:flex;align-items:flex-start;justify-content:space-between;gap:16px}.role-actions{display:flex;gap:2px;justify-content:center;margin-top:3px}.role-act{background:none;border:none;cursor:pointer;color:var(--muted);font-size:12px;padding:1px 4px;border-radius:var(--r-xs)}.role-act:hover{color:var(--primary);background:var(--primary-soft)}.role-modal{width:560px;max-width:94vw;max-height:86vh;overflow-y:auto}.role-form{display:flex;gap:12px;margin:12px 0}.role-form label{flex:1;display:flex;flex-direction:column;gap:4px;font-size:12px;color:var(--muted)}.role-perms{display:grid;grid-template-columns:1fr 1fr;gap:14px 22px;margin:6px 0 12px}.role-perm-group{display:flex;flex-direction:column;gap:5px}.role-perm-cat{display:flex;align-items:center;gap:7px;font-size:11px;font-weight:700;text-transform:uppercase;letter-spacing:.05em;color:var(--muted);padding-bottom:3px;border-bottom:1px solid var(--border);cursor:pointer}.role-perm-item{display:flex;align-items:center;gap:7px;font-size:13px;cursor:pointer}.role-perm-item .perm-code{font-size:10px;color:var(--muted);margin-left:auto}.role-modal .modal-actions{align-items:center}.role-modal .modal-actions .muted{margin-right:auto}.share-modal{width:520px;max-width:94vw}.share-add{display:flex;flex-direction:column;gap:8px;margin:12px 0 16px}.share-add-label{font-size:11px;font-weight:600;letter-spacing:.04em;text-transform:uppercase;color:var(--muted)}.share-add-row{display:flex;gap:8px;align-items:center}.share-add-row select{flex:1 1 auto;min-width:0}.share-add-row select:first-child{flex:0 0 110px}.share-add-row .share-add-perm{flex:0 0 130px}.share-add-row input,.share-add-spacer{flex:1}.share-list-head{font-size:11px;font-weight:600;text-transform:uppercase;letter-spacing:.05em;color:var(--muted);margin-bottom:6px}.share-empty{padding:10px 2px}.share-item{display:flex;align-items:center;gap:10px;padding:8px 6px;border-radius:var(--r-sm)}.share-item:hover{background:var(--bg)}.share-avatar{flex:0 0 32px;width:32px;height:32px;border-radius:50%;display:inline-flex;align-items:center;justify-content:center;font-size:12px;font-weight:700;background:var(--primary-soft);color:var(--primary)}.share-avatar.group,.share-avatar.all{font-size:15px;background:var(--bg)}.share-who{flex:1;min-width:0;display:flex;flex-direction:column;line-height:1.25}.share-name{font-weight:500;overflow:hidden;text-overflow:ellipsis;white-space:nowrap}.share-sub{font-size:12px}.share-perm{flex:0 0 100px;font-size:12px}.share-remove{flex:0 0 auto;background:none;border:none;cursor:pointer;color:var(--muted);font-size:13px;padding:4px 6px;border-radius:var(--r-xs)}.share-remove:hover{color:var(--danger);background:var(--bg)}.dev-global-banner{display:flex;align-items:center;gap:10px;padding:7px 20px;background:#312e81;color:#e0e7ff;font-size:13px}.dev-global-dot{width:8px;height:8px;border-radius:50%;background:#fbbf24;animation:dev-pulse 2s infinite}@keyframes dev-pulse{0%,to{opacity:1}50%{opacity:.35}}.dev-global-branch{font-family:ui-monospace,SFMono-Regular,Menlo,monospace;font-size:12px;padding:1px 8px;border-radius:var(--r-xs);background:#ffffff1f}.dev-global-hint{opacity:.75}.dev-global-spacer{flex:1}.dev-global-exit{background:none;border:1px solid rgba(255,255,255,.4);color:#e0e7ff;border-radius:var(--r-xs);padding:4px 12px;font-size:12px;cursor:pointer}.dev-global-exit:hover{background:#ffffff1f}.dev-mode-bar{display:flex;align-items:center;gap:10px;flex-wrap:wrap;padding:10px 14px;margin-bottom:14px;border:1px solid var(--border);border-radius:var(--radius);background:var(--surface);box-shadow:var(--shadow);font-size:13px}.dev-mode-bar.on{border-color:var(--primary);background:var(--primary-soft)}.dev-mode-bar .spacer{flex:1}.dev-mode-switch{display:inline-flex;align-items:center;gap:7px;font-weight:600;cursor:pointer}.dev-mode-branch{font-family:ui-monospace,SFMono-Regular,Menlo,monospace;font-size:12px;padding:2px 8px;border-radius:var(--r-xs);background:var(--bg);border:1px solid var(--border)}.dev-mode-chip{font-size:11px;padding:2px 8px;border-radius:var(--r-pill);font-weight:600}.dev-mode-chip.warn{background:#fef3c7;color:#92400e}.dev-mode-chip.ahead{background:#dcfce7;color:#166534}[data-theme=dark] .dev-mode-chip.warn{background:#3a2e10;color:#fbbf24}[data-theme=dark] .dev-mode-chip.ahead{background:#10331e;color:#4ade80}.dev-new-wrap{position:relative}.dev-new-menu{position:absolute;top:calc(100% + 6px);right:0;z-index:40;min-width:230px;background:var(--surface);border:1px solid var(--border);border-radius:var(--r-md);box-shadow:var(--shadow-md);padding:6px}.dev-new-head{font-size:11px;font-weight:600;color:var(--muted);padding:8px 10px 4px;border-top:1px solid var(--border);margin-top:4px}.dev-new-head:first-child{border-top:none;margin-top:0}.dev-new-menu button{display:flex;align-items:center;gap:10px;width:100%;background:none;border:none;border-radius:var(--r-xs);padding:8px 10px;font-size:13px;color:var(--text);cursor:pointer;text-align:left}.dev-new-menu button:hover{background:var(--primary-soft);color:var(--primary)}.dev-new-menu button svg{width:16px;height:16px;flex:0 0 16px;color:var(--muted)}.dev-new-menu button:hover svg{color:var(--primary)}.dev-shell{display:flex;gap:16px;align-items:flex-start}.dev-rail{display:flex;flex-direction:column;gap:6px;padding:8px 6px;background:var(--surface);border:1px solid var(--border);border-radius:var(--radius);box-shadow:var(--shadow);position:sticky;top:80px}.dev-rail-btn{display:flex;flex-direction:column;align-items:center;gap:4px;width:68px;padding:10px 4px 8px;background:none;border:1px solid transparent;border-radius:var(--r-sm);color:var(--muted);font-size:11px;font-weight:500;cursor:pointer}.dev-rail-btn svg{width:22px;height:22px}.dev-rail-btn:hover{background:var(--bg);color:var(--text)}.dev-rail-btn.active{background:var(--primary-soft);border-color:var(--primary);color:var(--primary)}.dev-content{flex:1;min-width:0}.ide{display:grid;grid-template-columns:320px 1fr;gap:16px;align-items:start}.ide-files{padding:16px}.ide-files .file-list{list-style:none;margin:8px 0;padding:0;max-height:60vh;overflow:auto}.file-item{display:flex;align-items:center;gap:6px;width:100%;text-align:left;background:none;border:none;padding:6px 8px;border-radius:var(--r-xs);cursor:pointer;font-size:13px;color:inherit}.file-item:hover{background:#0000000a}.file-item.active{background:#3b82f61f;font-weight:600}.tree-file-name{overflow:hidden;text-overflow:ellipsis;white-space:nowrap;min-width:0}.ide-reload{display:flex;align-items:center;justify-content:center;gap:6px;width:100%;margin-top:10px}.tag{display:inline-block;flex-shrink:0;font-size:10px;padding:1px 6px;border-radius:var(--r-pill);text-transform:uppercase;letter-spacing:.04em}.tag-model{background:#ede9fe;color:#6d28d9}.tag-view{background:#dcfce7;color:#15803d}.tag-other{background:#f1f5f9;color:#64748b}.badge{font-size:10px;padding:1px 6px;border-radius:var(--r-pill);margin-left:6px}.badge.warn{background:#fef3c7;color:#92400e}.small{font-size:12px}.ide-editor{padding:16px;min-height:70vh;display:flex;flex-direction:column}.ide-toolbar{display:flex;align-items:center;gap:8px;margin-bottom:10px}.ide-toolbar .spacer{flex:1}.code-area{flex:1;min-height:50vh;width:100%;box-sizing:border-box;resize:vertical;font-family:ui-monospace,SFMono-Regular,Menlo,Consolas,monospace;font-size:13px;line-height:1.5;padding:12px;border:1px solid #e2e8f0;border-radius:var(--r-sm);background:#0f172a;color:#e2e8f0;-moz-tab-size:2;tab-size:2}.ide-errors{margin-top:12px;background:#fef2f2;border:1px solid #fecaca;border-radius:var(--r-sm);padding:10px 12px;color:#991b1b;font-size:13px}.ide-errors ul{margin:6px 0 0;padding-left:18px}.look-pick-list{display:flex;flex-direction:column;gap:4px;max-height:50vh;overflow:auto;margin:8px 0}.field-browser{display:flex;flex-direction:column;gap:14px;margin-top:10px}.view-block{border:1px solid #e5e7eb;border-radius:var(--r-md);padding:10px 12px;background:#fafafa}.view-title{font-weight:700;font-size:13px;color:#111827;margin-bottom:8px;text-transform:uppercase;letter-spacing:.03em}.field-subsection{margin-bottom:8px}.subsection-label{font-size:11px;font-weight:600;text-transform:uppercase;letter-spacing:.04em;margin:6px 0 4px}.subsection-label.dim{color:var(--primary)}.subsection-label.measure{color:#ea580c}.pill-dim{background:#eff6ff;color:#1d4ed8;border:1px solid #bfdbfe}.pill-dim:hover{background:#dbeafe}.pill-dim.pill-active{background:var(--primary);color:#fff;border-color:var(--primary)}.pill-measure{background:#fff7ed;color:#c2410c;border:1px solid #fed7aa}.pill-measure:hover{background:#ffedd5}.pill-measure.pill-active{background:#ea580c;color:#fff;border-color:#ea580c}.date-group{margin:4px 0;border-left:2px solid #bfdbfe}.date-group.has-selected{border-left-color:var(--primary)}.date-group-head{display:flex;align-items:center;gap:6px;width:100%;text-align:left;background:none;border:none;cursor:pointer;padding:4px 6px;font-size:13px;color:#1e3a8a;font-weight:600}.date-group-head:hover{background:#eff6ff;border-radius:var(--r-xs)}.date-group-head .chev{width:12px;color:#64748b}.date-group-head .dg-icon{font-size:12px}.date-group-head .dg-count{margin-left:auto;background:var(--primary);color:#fff;border-radius:var(--r-pill);font-size:10px;padding:0 7px;line-height:16px}.field-pills.indented{padding-left:22px}.git-panel{margin-top:12px;padding:10px;border:1px solid #e2e8f0;border-radius:var(--r-sm);background:#f8fafc;display:flex;flex-direction:column;gap:6px}.git-row{display:flex;align-items:center;gap:8px;justify-content:space-between}.git-branch{display:inline-flex;align-items:center;gap:4px;font-weight:600;font-size:13px}.git-branch select{font-weight:600;border:1px solid #cbd5e1;border-radius:var(--r-xs);padding:2px 4px;max-width:150px}.git-commit{display:flex;gap:6px}.git-commit input{flex:1;padding:5px 8px;border:1px solid #cbd5e1;border-radius:var(--r-xs);font-size:13px}.git-actions{display:flex;gap:6px;flex-wrap:wrap}.git-last{font-style:italic}.dash-filter-bar{display:flex;align-items:center;gap:10px;flex-wrap:wrap;padding:10px 12px;margin:8px 0 14px;background:#f1f5f9;border:1px solid #e2e8f0;border-radius:var(--r-md)}.dfb-icon{font-size:15px;color:#64748b}.dfb-filter{display:inline-flex;align-items:center;gap:6px;background:#fff;border:1px solid #d8dee9;border-radius:var(--r-sm);padding:4px 8px}.dfb-field{font-weight:600;font-size:13px;color:var(--text)}.dfb-op{font-size:12px;color:var(--muted)}.dfb-filter select,.dfb-filter input,.dash-filter-bar>select{border:1px solid var(--border-strong);border-radius:var(--r-xs);padding:3px 6px;font-size:13px;background:var(--surface);color:var(--text)}.dfb-value{width:140px}[data-theme=dark]{--bg: #0f172a;--surface: #1e293b;--border: #2a3650;--border-strong: #3a4a6b;--text: #e2e8f0;--muted: #94a3b8;--primary: #6366f1;--primary-hover: #818cf8;--primary-soft: #1e2a4a;--shadow: 0 1px 2px rgba(0, 0, 0, .4);color-scheme:dark}[data-theme=dark] .btn:hover,[data-theme=dark] .btn.ghost:hover,[data-theme=dark] .nav-link:hover{background:#243049}[data-theme=dark] input,[data-theme=dark] select,[data-theme=dark] textarea{background:#0f172a;color:var(--text);border-color:var(--border)}[data-theme=dark]{--table-head-bg: #16213a}[data-theme=dark] .data-table th,[data-theme=dark] .data-table td{border-color:var(--border)}[data-theme=dark] .data-table tbody tr:hover td{background:#635bff1a}[data-theme=dark] code,[data-theme=dark] .tag-other,[data-theme=dark] .pill.static{background:#0f172a;color:var(--text)}[data-theme=dark] .error-banner{background:#3a1d1d;color:#fca5a5;border-color:#5a2a2a}[data-theme=dark] .success-banner,[data-theme=dark] .badge{background:#223049;color:#cbd5e1}[data-theme=dark] .badge.cache{background:#16321f;color:#86efac}[data-theme=dark] .badge.rls{background:#3a2614;color:#fcd34d}[data-theme=dark] .ide-errors{background:#3a1d1d;color:#fca5a5;border-color:#5a2a2a}[data-theme=dark] .modal.card{background:var(--surface)}[data-theme=dark] .modal-overlay{background:#0009}[data-theme=dark] .view-block,[data-theme=dark] .git-panel,[data-theme=dark] .dash-filter-bar{background:#16213a;border-color:var(--border)}[data-theme=dark] .dfb-filter{background:var(--surface);border-color:var(--border)}[data-theme=dark] .ide-files,[data-theme=dark] .ide-editor{background:var(--surface)}[data-theme=dark] .file-item:hover{background:#243049}[data-theme=dark] .file-item.active{background:var(--primary-soft)}[data-theme=dark] .attr-chip{background:#0f172a}[data-theme=dark] .attr-chip.attr-all{background:#052e23;border-color:#065f46}[data-theme=dark] .attr-chip.attr-all .attr-key,[data-theme=dark] .attr-chip.attr-all .attr-val{color:#6ee7b7}[data-theme=dark] .attr-del:hover{background:#450a0a;color:#fca5a5}[data-theme=dark] .pill-dim{background:#14304f;color:#93c5fd;border-color:#1e3a5f}[data-theme=dark] .pill-measure{background:#3a2614;color:#fdba74;border-color:#5a3a1a}[data-theme=dark] .tag-model{background:#2e1065;color:#c4b5fd}[data-theme=dark] .tag-view{background:#14321f;color:#86efac}.theme-toggle{background:none;border:none;cursor:pointer;font-size:16px;padding:4px 8px;border-radius:var(--r-xs);color:var(--text)}.theme-toggle:hover{background:var(--primary-soft)}.project-group{margin-bottom:10px}.project-group-title{font-size:11px;font-weight:700;text-transform:uppercase;letter-spacing:.04em;color:var(--muted);padding:4px 6px}.project-group ul{list-style:none;margin:0;padding:0}.tree-folder{display:flex;align-items:center;gap:4px;padding:3px 6px;border-radius:var(--r-xs);cursor:default}.tree-folder:hover{background:#00000008}.tree-toggle{background:none;border:none;cursor:pointer;padding:0 2px;font-size:11px;color:var(--muted);line-height:1;flex-shrink:0}.tree-folder-name{font-size:12px;font-weight:600;color:var(--muted);flex:1;min-width:0}.tree-new-in-folder{opacity:0;font-size:11px;padding:0 5px;line-height:18px;margin-left:auto;flex-shrink:0}.tree-folder:hover .tree-new-in-folder{opacity:1}.tree-file{padding-top:4px;padding-bottom:4px}.btn.tiny{font-size:11px;padding:1px 6px}[data-theme=dark] .tree-folder:hover{background:#243049}.develop-git{max-width:460px;margin-top:12px}.generate-view{margin-top:12px;padding:16px}.gen-grid{display:grid;grid-template-columns:1fr 1fr;gap:12px;align-items:end;margin-bottom:12px}.gen-actions{display:flex;gap:8px;align-items:end}.gen-preview{margin-top:12px}[data-theme=dark] .project-group-title{color:var(--muted)}.folder-layout{display:grid;grid-template-columns:220px 1fr;gap:18px;align-items:start}.folder-content{min-width:0}.folder-panel{border:1px solid var(--border);border-radius:var(--r-md);padding:10px;background:var(--surface)}.folder-head{display:flex;align-items:center;justify-content:space-between;margin-bottom:6px}.folder-title{font-weight:700;font-size:12px;text-transform:uppercase;letter-spacing:.04em;color:var(--muted)}.folder-item{display:block;width:100%;text-align:left;background:none;border:none;cursor:pointer;padding:6px 10px;border-radius:var(--r-xs);font-size:13px;color:var(--text)}.folder-item:hover{background:var(--primary-soft)}.folder-item.active{background:var(--primary-soft);color:var(--primary);font-weight:600}.folder-tree{margin:4px 0;max-height:50vh;overflow:auto}.folder-ro{color:var(--muted);font-size:11px}.folder-actions{display:flex;gap:4px;border-top:1px solid var(--border);padding-top:8px;margin-top:6px}.item-card .item-actions select{font-size:12px;padding:2px 4px;border:1px solid var(--border);border-radius:var(--r-xs);background:var(--surface);color:var(--text);max-width:130px}.date-filter{display:inline-flex;align-items:center;gap:6px;flex-wrap:wrap}.date-filter select,.date-filter input{font-size:13px;padding:3px 6px;border:1px solid var(--border);border-radius:var(--r-xs);background:var(--surface);color:var(--text)}.date-filter .date-n{width:56px}.run-bar{display:flex;align-items:center;gap:10px;margin-bottom:12px}.run-bar h3{margin:0}.run-bar-spacer{flex:1}.head-actions .lk-relative-time,.run-bar .lk-relative-time{font-size:12px;color:var(--muted);white-space:nowrap}.head-actions .lk-tz,.run-bar .lk-tz{font-size:13px;color:var(--text);padding:5px 8px;border:1px solid var(--border-strong);border-radius:var(--r-xs);background:var(--surface);white-space:nowrap}.admin-body,.toolbar{margin-top:4px}.row-actions{display:flex;gap:8px;justify-content:flex-end;white-space:nowrap}.data-table td.row-actions{padding-right:16px}.item-card .btn{align-self:flex-start;margin-top:8px}.item-card .item-meta{margin-bottom:2px}.admin-note{font-size:13px;color:var(--muted);background:var(--primary-soft);border:1px solid var(--border);border-radius:var(--r-sm);padding:10px 14px;margin:0 0 16px}.admin-note strong{color:var(--text)}.matrix-wrap{overflow-x:auto;border:1px solid var(--border);border-radius:var(--r-md)}.perm-matrix{width:100%;border-collapse:collapse;font-size:13px}.perm-matrix th,.perm-matrix td{padding:10px 14px;border-bottom:1px solid var(--border)}.perm-matrix thead th{position:sticky;top:0;background:var(--surface);text-align:center;vertical-align:bottom;font-weight:600}.perm-matrix th.perm-col{text-align:left;color:var(--muted);font-size:12px}.perm-matrix .role-col{min-width:120px}.perm-matrix .role-name{display:block;color:var(--text)}.perm-matrix .role-count{display:block;font-size:11px;font-weight:400;color:var(--muted);margin-top:2px}.perm-matrix td.perm-col{display:flex;flex-direction:column;gap:2px}.perm-matrix .perm-label{color:var(--text)}.perm-matrix .perm-code{font-size:11px;color:var(--muted)}.perm-matrix td.cell{text-align:center}.perm-matrix .yes{color:#16a34a;font-weight:700}.perm-matrix .no{color:var(--border-strong)}.perm-matrix tr.cat-row td{background:#f6f7f9;font-size:11px;font-weight:700;text-transform:uppercase;letter-spacing:.04em;color:var(--muted);padding:6px 14px}.perm-matrix tbody tr:not(.cat-row):hover td{background:var(--primary-soft)}[data-theme=dark] .perm-matrix thead th{background:#16213a}[data-theme=dark] .perm-matrix tr.cat-row td{background:#0f172a}[data-theme=dark] .perm-matrix .yes{color:#4ade80}.tile-format{border-top:1px solid var(--border);border-bottom:1px solid var(--border);padding:8px 10px;display:flex;flex-direction:column;gap:8px;background:var(--primary-soft);max-height:220px;overflow:auto}.tile-format .viz-picker{gap:4px}.tile-format-fields{display:flex;flex-direction:column;gap:6px}.tile-format-y{display:flex;flex-wrap:wrap;align-items:center;gap:8px}.tile-format .inline-check{gap:4px;font-size:12px}.tile-format select{font-size:12px;padding:2px 4px;border:1px solid var(--border-strong);border-radius:var(--r-xs);background:var(--surface);color:var(--text)}.dfb-settings-wrap{position:relative;display:inline-flex;align-items:center;gap:4px}.dfb-tilelink{position:absolute;top:calc(100% + 6px);right:0;z-index:30;min-width:200px;max-height:280px;overflow:auto;background:var(--surface);border:1px solid var(--border-strong);border-radius:var(--r-sm);padding:10px;box-shadow:0 8px 24px #0000002e;display:flex;flex-direction:column;gap:6px}.dfb-tilelink-head{font-size:11px;font-weight:700;text-transform:uppercase;letter-spacing:.04em;color:var(--muted)}.dfb-tilelink-list{display:flex;flex-direction:column;gap:5px;border-top:1px solid var(--border);padding-top:6px}.dfb-tilelink .inline-check{font-size:13px;gap:6px}.tile-format input[type=color]{width:20px;height:20px;padding:0;border:1px solid var(--border-strong);border-radius:var(--r-xs);background:none;cursor:pointer}.mono{font-family:ui-monospace,SFMono-Regular,SF Mono,Menlo,Consolas,monospace;font-size:12px}.adm-tabs{border-bottom:1px solid var(--border);padding-bottom:8px;margin-bottom:12px}.tab-count{display:inline-block;margin-left:7px;min-width:18px;padding:0 6px;font-size:11px;font-weight:600;line-height:17px;text-align:center;border-radius:var(--r-pill);background:var(--border);color:var(--muted);font-variant-numeric:tabular-nums}.tab.active .tab-count{background:var(--primary);color:#fff}.adm-toolbar{align-items:center}.toolbar-spacer{flex:1}.adm-search{width:280px;max-width:100%;padding:7px 11px;border:1px solid var(--border-strong);border-radius:var(--r-sm);font-size:13px;background:var(--surface);color:var(--text)}.adm-search:focus{outline:2px solid var(--primary-soft);border-color:var(--primary)}.adm-principal{display:flex;align-items:center;gap:10px}.adm-principal-text{display:flex;flex-direction:column;gap:1px;min-width:0}.adm-principal-name{font-weight:600;color:var(--text)}.adm-principal-sub{color:var(--muted)}.adm-mono{display:inline-flex;align-items:center;justify-content:center;width:32px;height:32px;flex:0 0 32px;border-radius:var(--r-sm);background:var(--primary-soft);color:var(--primary);font-size:12px;font-weight:700;letter-spacing:.02em;text-transform:uppercase}.adm-mono-sm{width:24px;height:24px;flex-basis:24px;border-radius:var(--r-xs);font-size:10px}.adm-status{display:inline-flex;align-items:center;gap:6px;font-size:12px}.adm-status-dot{width:7px;height:7px;border-radius:var(--r-pill);background:currentColor}.adm-status.on{color:#16a34a}.adm-status.off{color:var(--muted)}.adm-badge{display:inline-flex;align-items:center;gap:4px;padding:2px 8px;border-radius:var(--r-pill);font-size:11px;font-weight:600;white-space:nowrap}.adm-badge.admin{background:#eef2ff;color:var(--primary)}.adm-badge.provider{background:var(--border);color:var(--muted)}.adm-badge.key{background:#fef3c7;color:#92400e}.adm-badge.default{background:#ecfdf5;color:#047857;margin-left:8px}.adm-chips{display:flex;flex-wrap:wrap;gap:4px}.adm-chip{padding:2px 8px;border-radius:var(--r-xs);font-size:12px;background:var(--surface);border:1px solid var(--border-strong);color:var(--text)}.adm-table td{vertical-align:middle}.adm-table td.adm-row-end{text-align:right}.adm-table .row-actions{display:inline-flex;gap:4px;justify-content:flex-end}.adm-group-card{gap:10px}.adm-group-head{display:flex;align-items:baseline;justify-content:space-between;gap:8px}.adm-group-head h3{margin:0}.adm-group-slug{color:var(--muted)}.adm-group-members{display:flex;align-items:center;gap:10px;margin-top:auto}.adm-avatars{display:flex}.adm-avatars .adm-avatar{margin-left:-6px;box-shadow:0 0 0 2px var(--surface);border-radius:var(--r-xs)}.adm-avatars .adm-avatar:first-child{margin-left:0}.adm-member-row{display:flex;align-items:center;gap:10px;padding:6px 0;border-bottom:1px solid var(--border)}.adm-member-row .adm-principal-text{flex:1}.adm-modal-head{display:flex;align-items:center;gap:10px;margin-bottom:12px}.adm-modal-head h3{margin:0}.adm-hint{margin:-2px 0 8px}.adm-dot{display:inline-block;width:12px;height:12px;border-radius:var(--r-pill)}.adm-dot.on{background:var(--primary);box-shadow:0 0 0 3px var(--primary-soft)}.adm-dot.off{background:transparent;border:1.5px solid var(--border-strong)}.adm-empty{border:1px dashed var(--border-strong);border-radius:var(--radius);padding:32px 24px;text-align:center;background:var(--surface)}.adm-empty-title{font-weight:600;font-size:15px;margin-bottom:4px}.adm-empty p{margin:0 auto;max-width:440px}[data-theme=dark] .adm-search{background:#0f172a}[data-theme=dark] .adm-mono{background:#1e293b;color:#a5b4fc}[data-theme=dark] .adm-chip{background:#0f172a}[data-theme=dark] .tab-count{background:#243049;color:var(--muted)}[data-theme=dark] .tab.active .tab-count{background:var(--primary);color:#fff}[data-theme=dark] .adm-badge.admin{background:#1e1b4b;color:#a5b4fc}[data-theme=dark] .adm-badge.provider{background:#243049;color:var(--muted)}[data-theme=dark] .adm-badge.key{background:#3a2614;color:#fdba74}[data-theme=dark] .adm-badge.default{background:#16321f;color:#86efac}[data-theme=dark] .adm-status.on{color:#4ade80}[data-theme=dark] .adm-dot.on{box-shadow:0 0 0 3px #4f46e540}[data-theme=dark] .adm-empty{background:var(--surface)}[data-theme=dark] .adm-avatars .adm-avatar{box-shadow:0 0 0 2px var(--surface)}.field input,.field textarea,.field select{border:1px solid var(--border-strong);border-radius:var(--r-sm);padding:7px 9px;font-size:13px;background:var(--surface);color:var(--text)}.field textarea:focus{outline:none;border-color:var(--primary);box-shadow:0 0 0 3px var(--primary-soft)}.field small{font-size:11px;line-height:1.4}.field small code,.conn-auth-hint code{font-size:11px}.conn-modal{width:560px;max-width:100%;max-height:88vh;overflow:auto}.conn-sub{margin:-4px 0 14px}.form-section{border-top:1px solid var(--border);padding-top:12px;margin-top:4px}.form-section:first-of-type{border-top:none;padding-top:0}.form-section-label{font-size:11px;font-weight:700;text-transform:uppercase;letter-spacing:.05em;color:var(--muted);margin-bottom:10px}.conn-grid{display:grid;grid-template-columns:1fr 1fr;gap:12px}.conn-grid .field{margin-bottom:12px}@media (max-width: 520px){.conn-grid{grid-template-columns:1fr}}.conn-default{font-weight:400;color:var(--text);padding:7px 0}.seg{display:flex;gap:2px;padding:3px;border-radius:var(--r-sm);background:var(--bg);border:1px solid var(--border)}.seg-btn{flex:1;border:none;background:none;cursor:pointer;padding:7px 10px;border-radius:var(--r-xs);font-size:12px;font-weight:500;color:var(--muted)}.seg-btn:hover{color:var(--text)}.seg-btn.active{background:var(--surface);color:var(--primary);box-shadow:var(--shadow);font-weight:600}.conn-auth-hint{margin:8px 0 12px}.creds-area{width:100%;min-height:92px;resize:vertical;border:1px solid var(--border-strong);border-radius:var(--r-sm);padding:8px 9px;background:var(--surface);color:var(--text);line-height:1.5}.creds-upload{display:flex;align-items:center;gap:10px;margin-top:8px;flex-wrap:wrap}.creds-stored{display:flex;align-items:center;gap:8px;flex-wrap:wrap;padding:9px 11px;border-radius:var(--r-sm);font-size:13px;background:var(--primary-soft);color:var(--text)}.conn-cap{display:flex;align-items:center;gap:8px}.conn-cap input{width:120px}.conn-cap-unit{font-size:13px;color:var(--muted);font-weight:500}[data-theme=dark] .seg{background:#0f172a}[data-theme=dark] .seg-btn.active{background:#243049;color:#a5b4fc}[data-theme=dark] .creds-stored{background:#1e1b4b}.topbar-account-wrap{position:relative}.topbar-account{display:flex;align-items:center;gap:8px;background:none;border:1px solid transparent;border-radius:var(--r-sm);padding:4px 8px;cursor:pointer;color:inherit;font:inherit}.topbar-account:hover{background:var(--bg);border-color:var(--border)}.topbar-account-caret{font-size:9px;color:var(--muted)}.topbar-account-menu{position:absolute;top:calc(100% + 6px);right:0;z-index:60;min-width:210px;padding:6px;background:var(--surface);border:1px solid var(--border);border-radius:var(--r-md);box-shadow:var(--shadow-md)}.topbar-account-menu button{display:flex;align-items:baseline;justify-content:space-between;gap:10px;width:100%;padding:8px 10px;border:none;border-radius:var(--r-xs);background:none;color:var(--text);font-size:13px;text-align:left;cursor:pointer}.topbar-account-menu button:hover{background:var(--primary-soft);color:var(--primary)}.topbar-account-sep{height:1px;margin:4px 6px;background:var(--border)}.topbar-email{font-size:13px;color:var(--muted);max-width:220px;overflow:hidden;text-overflow:ellipsis;white-space:nowrap}.theme-toggle{border:none;background:none;cursor:pointer;font-size:15px;padding:4px;border-radius:var(--r-xs);line-height:1}.theme-toggle:hover{background:var(--bg)}@media (max-width: 640px){.topbar-email{display:none}}.login-card{width:380px;padding:28px;gap:12px}.login-divider{display:flex;align-items:center;gap:10px;color:var(--muted);font-size:12px;margin:2px 0}.login-divider:before,.login-divider:after{content:"";flex:1;height:1px;background:var(--border)}.login-google{display:inline-flex;align-items:center;justify-content:center;gap:8px}.login-none{text-align:center;margin:4px 0 0}.empty-state{border:1px dashed var(--border-strong);border-radius:var(--radius);padding:40px 24px;text-align:center;background:var(--surface)}.empty-state-icon{width:40px;height:40px;margin:0 auto 12px;color:var(--muted);opacity:.7}.empty-state-icon svg{width:40px;height:40px}.empty-state-title{font-weight:600;font-size:16px;margin-bottom:4px}.empty-state p{margin:0 auto;max-width:460px}.empty-state-action{margin-top:16px}.list-card{display:flex;flex-direction:column;gap:0;padding:0;overflow:hidden;transition:box-shadow .14s,border-color .14s,transform .14s}.list-card:hover{border-color:var(--border-strong);box-shadow:0 4px 14px #10182814;transform:translateY(-1px)}.list-card.selected{border-color:var(--primary);box-shadow:0 0 0 1px var(--primary)}.list-card-main{display:flex;align-items:flex-start;gap:12px;text-align:left;padding:16px;background:none;border:none;cursor:pointer;color:inherit;width:100%;text-decoration:none;flex:1}.list-card-main:hover .list-card-title{color:var(--primary)}.list-card-icon{display:inline-flex;flex:0 0 34px;width:34px;height:34px;border-radius:var(--r-sm);align-items:center;justify-content:center;background:var(--primary-soft);color:var(--primary);transition:background .15s,color .15s}.list-card:hover .list-card-icon{background:var(--primary);color:#fff}.list-card-icon svg{width:18px;height:18px}.list-card-text{display:flex;flex-direction:column;gap:3px;min-width:0}.list-card-title{font-weight:600;font-size:15px;color:var(--text);line-height:1.35;letter-spacing:-.01em;display:-webkit-box;-webkit-line-clamp:2;-webkit-box-orient:vertical;overflow:hidden}.list-card-desc{font-size:13px;line-height:1.45;overflow:hidden;text-overflow:ellipsis;white-space:nowrap}.list-card-desc.empty{font-style:italic;opacity:.7}.list-card-count{font-size:11px;font-weight:600;color:var(--muted);border:1px solid var(--border);padding:2px 8px;border-radius:var(--r-pill);white-space:nowrap}.list-card-foot{display:flex;align-items:center;gap:8px;padding:10px 16px;border-top:1px solid var(--border);background:transparent}.list-card-foot .list-card-move{margin-left:auto;font-size:12px;padding:4px 6px;max-width:150px;border:1px solid transparent;background:transparent;color:var(--muted);border-radius:var(--r-xs);cursor:pointer}.list-card-foot .list-card-move:hover,.list-card-foot .list-card-move:focus{border-color:var(--border);color:var(--text);background:var(--surface)}.list-card-actions{display:flex;gap:2px}.looks .list-card-foot .list-card-move{margin-left:0;margin-right:auto}.ide-files-head{display:flex;align-items:center;justify-content:space-between;margin-bottom:8px}.ide-files-head h3{margin:0}.ide-counts{display:flex;align-items:center;gap:12px;margin-bottom:6px}.ide-count{display:inline-flex;align-items:center;gap:5px;font-size:12px;color:var(--muted);font-variant-numeric:tabular-nums}.file-item.active{background:var(--primary-soft);color:var(--primary);font-weight:600;box-shadow:inset 2px 0 0 var(--primary)}.ide-path{font-size:12px}.ide-unsaved{font-size:11px;font-weight:600;padding:1px 7px;border-radius:var(--r-pill);background:#fef3c7;color:#92400e}.ide-empty{flex:1;display:flex;flex-direction:column;align-items:center;justify-content:center;text-align:center;color:var(--muted);padding:40px}.ide-empty svg{width:44px;height:44px;opacity:.5;margin-bottom:12px}.ide-empty-title{font-weight:600;font-size:15px;color:var(--text);margin-bottom:4px}.ide-empty p{margin:0;max-width:320px}[data-theme=dark] .list-card:hover{box-shadow:0 4px 14px #0006}[data-theme=dark] .list-card-icon{background:#1e1b4b;color:#a5b4fc}[data-theme=dark] .empty-state{background:#0f172a}[data-theme=dark] .ide-unsaved{background:#3a2614;color:#fdba74}.ide-git-badge{font-size:10px;font-weight:700;letter-spacing:.04em;padding:1px 6px;border-radius:var(--r-pill);background:var(--primary-soft);color:var(--primary)}.ide-commit-wrap{position:relative;display:inline-flex}.ide-commit-count{margin-left:6px;font-size:10px;font-weight:700;padding:0 5px;border-radius:var(--r-pill);background:var(--primary);color:#fff}.ide-commit-pop{position:absolute;top:calc(100% + 6px);right:0;z-index:40;width:320px;display:flex;flex-direction:column;gap:8px;padding:12px;background:var(--surface);border:1px solid var(--border);border-radius:var(--r-md);box-shadow:var(--shadow-md);text-align:left}.ide-commit-pop input{width:100%;padding:7px 9px;font-size:13px;border:1px solid var(--border);border-radius:var(--r-sm);background:var(--bg);color:var(--text)}.ide-commit-pop p{margin:0}.ide-commit-scope{display:flex;gap:4px;padding:3px;background:var(--bg);border-radius:var(--r-sm)}.ide-commit-scope button{flex:1;padding:5px 8px;font-size:12px;font-weight:600;background:none;border:none;border-radius:var(--r-xs);color:var(--muted);cursor:pointer}.ide-commit-scope button.active{background:var(--surface);color:var(--primary);box-shadow:0 1px 3px #1018281f}.ide-commit-files{list-style:none;margin:0;padding:0;max-height:132px;overflow-y:auto;font-size:12px;display:flex;flex-direction:column;gap:2px}.ide-commit-files li{color:var(--muted);white-space:nowrap;overflow:hidden;text-overflow:ellipsis}.ide-commit-files li.current{color:var(--text);font-weight:600}.ide-commit-files li .mono{color:var(--primary);margin-right:4px}.ide-commit-actions{display:flex;justify-content:flex-end;gap:6px}[data-theme=dark] .ide-commit-pop{box-shadow:0 8px 24px #00000080}[data-theme=dark] .ide-commit-scope button.active{box-shadow:0 1px 3px #0006}.develop-git{max-width:520px;margin-top:12px}.git-panel{display:flex;flex-direction:column;gap:14px;padding:16px}.git-head{display:flex;align-items:center;justify-content:space-between;gap:8px}.git-branch{display:inline-flex;align-items:center;gap:6px;font-weight:600;font-size:14px}.git-branch-icon{font-size:15px;color:var(--muted)}.git-branch select{font-weight:600;border:1px solid var(--border-strong);border-radius:var(--r-sm);padding:5px 8px;max-width:190px;background:var(--surface);color:var(--text)}.git-prod-tag{font-size:10px;font-weight:700;text-transform:uppercase;letter-spacing:.04em;padding:1px 6px;border-radius:var(--r-pill);background:#ecfdf5;color:#047857}.git-head-right{display:inline-flex;align-items:center;gap:6px}.git-track{font-size:12px;font-weight:600;font-variant-numeric:tabular-nums;padding:2px 7px;border-radius:var(--r-pill);background:var(--primary-soft);color:var(--primary)}.git-track.behind{background:#fef3c7;color:#92400e}.git-sync{display:flex;align-items:center;justify-content:space-between;gap:8px;padding:8px 10px;border-radius:var(--r-sm);background:var(--bg)}.git-state{display:inline-flex;align-items:center;gap:7px;font-size:13px;font-weight:500}.git-state-dot{width:8px;height:8px;border-radius:var(--r-pill);background:currentColor}.git-state.clean{color:#16a34a}.git-state.dirty{color:#b45309}.git-sync-actions{display:inline-flex;gap:4px}.git-changes{list-style:none;margin:0;padding:0;display:flex;flex-direction:column;border:1px solid var(--border);border-radius:var(--r-sm);overflow:hidden;max-height:220px;overflow-y:auto}.git-change{display:flex;align-items:center;gap:9px;padding:7px 10px;border-bottom:1px solid var(--border)}.git-change:last-child{border-bottom:none}.git-status-badge{flex:0 0 20px;width:20px;height:20px;border-radius:var(--r-xs);display:inline-flex;align-items:center;justify-content:center;font-size:11px;font-weight:700}.git-status-badge.mod{background:#fef3c7;color:#92400e}.git-status-badge.add{background:#dcfce7;color:#15803d}.git-status-badge.del{background:#fee2e2;color:#b91c1c}.git-status-badge.ren{background:#dbeafe;color:#1d4ed8}.git-status-badge.unt{background:var(--border);color:var(--muted)}.git-change-path{font-size:12px;overflow:hidden;text-overflow:ellipsis;white-space:nowrap}.git-commit{display:flex;gap:8px}.git-commit input{flex:1;padding:8px 10px;border:1px solid var(--border-strong);border-radius:var(--r-sm);font-size:13px;background:var(--surface);color:var(--text)}.git-publish{display:flex;align-items:center;gap:10px;padding-top:12px;border-top:1px solid var(--border)}.git-publish .btn strong{font-weight:700}.git-remote-row{display:flex;align-items:center;justify-content:space-between;gap:8px}.git-remote-name{overflow:hidden;text-overflow:ellipsis;white-space:nowrap}.git-config{display:flex;flex-direction:column;gap:8px;padding:12px;border:1px solid var(--border);border-radius:var(--r-sm);background:var(--bg)}.git-config .field{margin-bottom:0}.git-config-actions{display:flex;justify-content:flex-end;gap:8px}.git-last{display:flex;flex-direction:column;gap:2px;padding:10px 12px;border-radius:var(--r-sm);background:var(--bg)}.git-last-label{text-transform:uppercase;letter-spacing:.05em;font-weight:700}.git-last-msg{font-size:13px}[data-theme=dark] .git-sync,[data-theme=dark] .git-config,[data-theme=dark] .git-last{background:#0f172a}[data-theme=dark] .git-prod-tag{background:#16321f;color:#86efac}[data-theme=dark] .git-track.behind{background:#3a2614;color:#fdba74}[data-theme=dark] .git-state.dirty{color:#fbbf24}[data-theme=dark] .git-status-badge.mod{background:#3a2614;color:#fdba74}[data-theme=dark] .git-status-badge.add{background:#14321f;color:#86efac}[data-theme=dark] .git-status-badge.del{background:#3a1d1d;color:#fca5a5}[data-theme=dark] .git-status-badge.ren{background:#14304f;color:#93c5fd}.gen-head{margin-bottom:8px}.gen-head h3{margin:0 0 2px}.gen-head p{margin:0}.gen-step{display:grid;grid-template-columns:32px 1fr;gap:12px}.gen-step-rail{display:flex;flex-direction:column;align-items:center}.gen-step-num{flex:0 0 28px;width:28px;height:28px;border-radius:var(--r-pill);display:inline-flex;align-items:center;justify-content:center;font-size:13px;font-weight:700;background:var(--border);color:var(--muted)}.gen-step.active .gen-step-num{background:var(--primary);color:#fff}.gen-step:not(.last) .gen-step-rail:after{content:"";flex:1;width:2px;background:var(--border);margin:6px 0}.gen-step-body{padding-bottom:20px;min-width:0}.gen-step.pending .gen-step-body{opacity:.55}.gen-step-title{font-weight:600;font-size:14px;margin-bottom:10px}.gen-step-hint{margin:0}.gen-row{display:flex;gap:12px;align-items:flex-end;flex-wrap:wrap}.gen-row .field{flex:1;min-width:180px;margin-bottom:0}.gen-step-actions{display:flex;gap:8px}.gen-save-actions{display:flex;justify-content:flex-end;margin-top:12px}.gen-preview{margin-top:4px}.gen-preview .code-area{min-height:280px}.combo{position:relative}.combo-input-wrap{position:relative;display:flex;align-items:center}.combo-input-wrap input{width:100%;padding-right:28px}.combo-clear{position:absolute;right:6px;border:none;background:none;cursor:pointer;color:var(--muted);font-size:12px;line-height:1;padding:4px;border-radius:var(--r-xs)}.combo-clear:hover{background:var(--bg);color:var(--text)}.combo-panel{position:absolute;top:100%;left:0;right:0;z-index:30;margin-top:4px;max-height:260px;overflow-y:auto;background:var(--surface);border:1px solid var(--border-strong);border-radius:var(--r-sm);box-shadow:0 8px 24px #1018281f;padding:4px}.combo-opt{display:block;width:100%;text-align:left;border:none;background:none;cursor:pointer;padding:7px 9px;border-radius:var(--r-xs);font-size:13px;color:var(--text);overflow:hidden;text-overflow:ellipsis;white-space:nowrap}.combo-opt.active{background:var(--primary-soft);color:var(--primary)}.combo-opt.picked{font-weight:600}.combo-opt.picked:after{content:" ✓";color:var(--primary)}.combo-empty{padding:9px;font-size:12px;text-align:center}[data-theme=dark] .combo-panel{box-shadow:0 8px 24px #00000080}[data-theme=dark] .combo-clear:hover{background:#243049}.pdt-panel{padding:16px}.pdt-head{display:flex;flex-direction:column;gap:4px;margin-bottom:12px}.pdt-badge{font-size:11px;font-weight:600;padding:2px 8px;border-radius:var(--r-pill)}.pdt-badge.ok{background:#dcfce7;color:#166534}.pdt-badge.stale{background:#fef3c7;color:#92400e}[data-theme=dark] .pdt-badge.ok{background:#10331e;color:#4ade80}[data-theme=dark] .pdt-badge.stale{background:#3a2e10;color:#fbbf24}.pdt-head-row{display:flex;align-items:center;justify-content:space-between;gap:12px}.caching-stack{display:flex;flex-direction:column;gap:16px}.data-table td.drillable{cursor:pointer}.data-table td.drillable:hover{background:var(--primary-soft);color:var(--primary);text-decoration:underline}.drill-modal{width:900px;max-width:96vw;max-height:86vh;display:flex;flex-direction:column}.drill-head{display:flex;align-items:center;justify-content:space-between;gap:12px}.drill-actions{display:flex;gap:6px;align-items:center}.drill-count{margin:6px 0}.drill-body{overflow:auto;min-height:0}.oauth-consent{width:420px;max-width:92vw;padding:24px;display:flex;flex-direction:column;gap:12px}.oauth-consent h2{margin:0}.oauth-login-form{display:flex;flex-direction:column;gap:10px}.oauth-consent-actions{display:flex;gap:10px}.oauth-consent-actions .btn{flex:1}.insight-modal{width:720px;max-width:94vw;max-height:86vh;display:flex;flex-direction:column}.insight-body{overflow:auto;min-height:0;display:flex;flex-direction:column;gap:12px;padding-top:8px}.insight-headline{font-size:16px;font-weight:600;line-height:1.35}.insight-totals{display:flex;gap:16px;flex-wrap:wrap}.insight-total{border:1px solid var(--border);border-radius:var(--r-sm);padding:10px 14px;min-width:150px}.insight-total-label{font-size:12px;color:var(--muted)}.insight-total-value{font-size:20px;font-weight:600}.insight-delta{font-size:13px;font-weight:600}.insight-delta.up,.insight-up{color:#10b981}.insight-delta.down,.insight-down{color:#ef4444}.insight-narrative{margin:0;line-height:1.5}.insight-drivers{margin:0;padding-left:20px;display:flex;flex-direction:column;gap:6px}.insight-movers summary{cursor:pointer;font-size:13px;color:var(--muted);padding:4px 0}.insight-movers table{margin-top:6px}.insight-foot{border-top:1px solid var(--border);padding-top:8px}.lk-params{display:flex;align-items:center;gap:14px;flex-wrap:wrap;margin-top:10px;padding-top:10px;border-top:1px solid var(--lk-border, var(--border))}.lk-params input,.lk-params select{border:1px solid var(--lk-border, var(--border));border-radius:var(--r-xs);padding:4px 8px;font-size:12px}.calc-modal{width:620px;max-width:94vw}.calc-list{display:flex;flex-direction:column;margin:10px 0;border:1px solid var(--border);border-radius:var(--r-sm);overflow:hidden}.calc-item{display:flex;align-items:center;gap:10px;padding:8px 10px}.calc-item+.calc-item{border-top:1px solid var(--border)}.calc-item.editing{background:var(--primary-soft)}.calc-item .calc-label{font-weight:600;flex:0 0 auto}.calc-item .calc-expr{flex:1;overflow:hidden;text-overflow:ellipsis;white-space:nowrap;font-size:12px;color:var(--muted)}.calc-form{display:flex;flex-direction:column;gap:10px;margin-top:8px}.calc-form label{display:flex;flex-direction:column;gap:4px;font-size:12px;color:var(--muted)}.calc-form textarea{font-family:ui-monospace,SFMono-Regular,Menlo,monospace;font-size:12.5px}.calc-hints{display:flex;gap:6px;flex-wrap:wrap;align-items:center}.calc-hint{cursor:pointer;padding:1px 6px;border:1px solid var(--border);border-radius:var(--r-xs)}.calc-hint:hover{background:var(--primary-soft);color:var(--primary)}.board-card .board-icon{flex:0 0 34px;width:34px;height:34px;display:inline-flex;align-items:center;justify-content:center;border-radius:var(--r-sm);background:var(--primary-soft);color:var(--primary)}.board-card .board-icon svg{width:18px;height:18px}.board-section{margin-bottom:26px}.board-section-head{display:flex;align-items:center;gap:10px;margin-bottom:10px}.board-section-head h3{margin:0}.board-section-actions{display:flex;gap:4px;flex-wrap:wrap}.board-items{display:grid;grid-template-columns:repeat(auto-fill,minmax(280px,1fr));gap:12px}.board-item{display:flex;align-items:center;padding:12px 14px;gap:8px}.board-item-main{display:flex;align-items:center;gap:12px;flex:1;min-width:0;text-decoration:none;color:var(--text)}.board-item-main.disabled{opacity:.6}.board-item-icon{flex:0 0 30px;width:30px;height:30px;display:inline-flex;align-items:center;justify-content:center;border-radius:var(--r-sm);font-size:14px;background:var(--bg);color:var(--muted)}.board-item-icon.dashboard{background:var(--primary-soft);color:var(--primary)}.board-item-icon.look{background:#dcfce7;color:#166534}.board-item-icon.link{background:#fef3c7;color:#92400e}[data-theme=dark] .board-item-icon.look{background:#10331e;color:#4ade80}[data-theme=dark] .board-item-icon.link{background:#3a2e10;color:#fbbf24}.board-item-text{display:flex;flex-direction:column;min-width:0}.board-item-title{font-weight:600;display:flex;align-items:center;gap:8px}.board-item-sub{font-size:12px;overflow:hidden;text-overflow:ellipsis;white-space:nowrap}.board-item-actions{display:flex;gap:2px}.data-table .subtotal-row td{font-weight:600;background:var(--bg);border-top:1px solid var(--border-strong);font-size:12px}.cf-editor{display:flex;flex-direction:column;gap:6px}.cf-rule{display:flex;align-items:center;gap:4px;flex-wrap:wrap}.cf-rule select,.cf-rule input{font-size:11.5px;padding:3px 4px}.cf-rule .cf-value{width:64px}.cf-rule input[type=color]{width:24px;height:24px;padding:0;border:1px solid var(--border);border-radius:var(--r-xs)}.cf-remove{background:none;border:none;color:var(--muted);cursor:pointer}.cf-remove:hover{color:var(--danger)}.lk-custom-head{display:flex;align-items:center;justify-content:space-between}.lk-custom-add{flex:0 0 auto}.lk-custom-empty{padding:6px 12px;font-size:12px}.custom-field-modal{width:440px;max-width:94vw}.cfm-form{display:flex;flex-direction:column;gap:12px;margin:12px 0}.cfm-form label{display:flex;flex-direction:column;gap:4px;font-size:12px;color:var(--muted)}.cfm-form>label>span,.calc-form>label>span,.alert-condition label>span{font-size:11px;font-weight:600;letter-spacing:.04em;text-transform:uppercase}.activity-toolbar{display:flex;align-items:center;justify-content:space-between;gap:12px}.activity-cards{display:grid;grid-template-columns:repeat(auto-fit,minmax(150px,1fr));gap:12px;margin:12px 0 16px}.activity-card{padding:14px 16px;display:flex;flex-direction:column;gap:4px}.ac-num{font-size:22px;font-weight:700}.ac-num.ac-bad{color:var(--danger)}.ac-label{font-size:12px;color:var(--muted)}.activity-cols{display:grid;grid-template-columns:1fr 1fr;gap:12px;margin-bottom:16px}.activity-mini,.activity-recent{padding:14px 16px}.activity-mini h4,.activity-recent h4{margin:0 0 10px}.api-docs-card,.api-keys-card{padding:16px;margin-bottom:14px}.api-docs-card h4,.api-keys-card h4{margin:0 0 4px}.api-docs-links{display:flex;gap:8px;margin-top:10px}.api-keys-head{display:flex;align-items:flex-start;justify-content:space-between;gap:12px;margin-bottom:10px}.api-key-form{display:flex;gap:8px;align-items:center;margin:10px 0;flex-wrap:wrap}.api-key-reveal{display:flex;flex-direction:column;gap:8px;align-items:flex-start}.api-key-secret{font-size:13px;word-break:break-all;padding:6px 10px;background:var(--bg);border:1px solid var(--border);border-radius:var(--r-xs)}.api-key-reveal span{display:flex;gap:6px}.data-table tfoot .totals-row td.sortable{cursor:pointer}.data-table tfoot .totals-row td.sortable:hover{color:var(--primary);text-decoration:underline}.schedule-modal{width:760px;max-width:96vw}.schedule-table{width:100%;font-size:13px}.schedule-table th{text-align:left;padding:6px 8px;color:var(--muted)}.schedule-table td{padding:6px 8px;border-top:1px solid var(--border)}.schedule-history{margin:6px 0;padding-left:18px;font-size:12px}.schedule-history li{margin:2px 0}.schedule-ok{color:var(--ok, #16a34a);font-weight:600}.schedule-error{color:var(--danger, #dc2626);font-weight:600}.ok-banner{background:#16a34a1a;border:1px solid rgba(22,163,74,.35);color:var(--text);border-radius:var(--r-sm);padding:8px 12px;margin:8px 0;font-size:13px}.alert-condition{display:flex;gap:10px}.alert-condition label{flex:1;display:flex;flex-direction:column;gap:4px;font-size:12px;color:var(--muted)}.cfm-form .inline-check{flex-direction:row;align-items:center}.xf-chips{display:flex;align-items:center;flex-wrap:wrap;gap:8px;margin:8px 0 12px}.xf-chip{display:inline-flex;align-items:center;gap:6px;padding:3px 10px;border-radius:var(--r-pill);border:1px solid var(--accent, #4f46e5);background:#4f46e51f;color:var(--text);font-size:12px;cursor:pointer}.xf-chip:hover{background:#4f46e538}.merge-modal{width:720px;max-width:96vw}.merge-source{display:flex;gap:10px}.merge-source label{flex:1}.merge-fields{display:grid;grid-template-columns:1fr 1fr;gap:12px}.merge-field-list{max-height:180px;overflow:auto;border:1px solid var(--border);border-radius:var(--r-sm);padding:6px 8px;display:flex;flex-direction:column;gap:4px;margin-top:4px}.merge-join-row{display:flex;align-items:center;gap:8px;margin-top:6px}.merge-join-left{min-width:160px;font-size:13px}.merge-join-row select{flex:1}.sqlr{display:flex;gap:16px;align-items:flex-start}.sqlr-side{width:280px;flex:none;padding:12px;max-height:calc(100vh - 140px);overflow:auto}.sqlr-conn{display:flex;flex-direction:column;gap:4px;font-size:12px;margin-bottom:10px}.sqlr-main{flex:1;min-width:0}.sqlr-note{margin-top:-6px}.sqlr-tree{font-size:13px}.sqlr-node{display:flex;align-items:center;gap:6px;background:none;border:none;color:var(--text);cursor:pointer;padding:3px 2px;width:100%;text-align:left;border-radius:var(--r-xs)}.sqlr-node:hover{background:var(--hover, rgba(127,127,127,.12))}.sqlr-caret{width:12px;color:var(--muted)}.sqlr-tables{margin-left:16px}.sqlr-table-row{display:flex;align-items:center;gap:4px}.sqlr-table-row .btn{visibility:hidden}.sqlr-table-row:hover .btn{visibility:visible}.sqlr-schema{margin:2px 0 6px 22px;padding:0;list-style:none;font-size:12px}.sqlr-editor{margin-bottom:12px}.sqlr-results{padding:10px 12px}.sqlr-results .table-wrap{max-height:420px;overflow:auto}.merge-step{border:1px solid var(--border);border-radius:var(--r-md);padding:10px 12px;margin-bottom:10px}.merge-list{list-style:none;margin:0 0 12px;padding:0;display:flex;flex-direction:column;gap:6px}.merge-list-row{display:flex;align-items:center;gap:8px;padding:7px 10px;font-size:13px;border:1px solid var(--border);border-radius:var(--r-sm);background:var(--bg)}.merge-list-num{flex:none;width:20px;height:20px;border-radius:var(--r-pill);display:grid;place-items:center;font-size:11px;font-weight:700;background:var(--primary-soft);color:var(--primary)}.merge-list-name{font-weight:600;white-space:nowrap;overflow:hidden;text-overflow:ellipsis}.merge-list-on{min-width:0;overflow:hidden;text-overflow:ellipsis;white-space:nowrap}.merge-editor-actions{display:flex;justify-content:flex-end;gap:6px;margin-top:4px}.merge-step-head{display:flex;align-items:center;gap:8px;font-weight:600;font-size:13px;margin-bottom:8px}.merge-step-num{display:inline-flex;align-items:center;justify-content:center;width:20px;height:20px;border-radius:50%;background:var(--accent, #4f46e5);color:#fff;font-size:12px;flex:none}.merge-step-hint{font-weight:400;font-size:12px}.merge-empty{margin:4px 0 8px}.merge-join-row{display:flex;align-items:center;gap:8px;margin-bottom:6px}.merge-join-side{flex:1;min-width:0}.merge-join-eq{color:var(--accent, #4f46e5);font-weight:700;flex:none}.merge-group-head th{text-align:left;padding:4px 8px;font-size:11px;text-transform:uppercase;letter-spacing:.04em;color:var(--muted);border-bottom:1px solid var(--border)}.merge-group-tag{font-size:10px;background:#10b9812e;color:#059669;padding:1px 6px;border-radius:var(--r-pill);margin-left:4px;letter-spacing:0}.data-table .merged-col{background:#10b9810f}.data-table th.merged-col{background:#10b9811f}.data-table .merged-col-start{border-left:2px solid rgba(16,185,129,.55)}[data-theme=dark] .data-table .merged-col{background:#10b9811a}[data-theme=dark] .merge-group-tag{color:#34d399}.lk-merge-bar{display:flex;align-items:center;gap:8px;background:#10b9811a;border:1px solid rgba(16,185,129,.35);border-radius:var(--r-sm);padding:6px 12px;margin:10px 0;font-size:13px}.lk-merge-icon{color:#059669;font-weight:700}.lk-merge-text{color:var(--text)}.lk-merge-spacer{flex:1}.cv-panel{padding:16px 18px}.cv-summary{font-weight:600}.cv-good{color:var(--ok, #16a34a)}.cv-bad{color:var(--danger, #dc2626)}.cv-table{width:100%;font-size:13px}.cv-table th{text-align:left;padding:6px 8px;color:var(--muted)}.cv-table td{padding:6px 8px;border-top:1px solid var(--border);vertical-align:top}.cv-kind{display:inline-block;padding:1px 8px;border-radius:var(--r-pill);font-size:11px;font-weight:600;background:#4f46e524}.cv-kind-tile{background:#10b98129}.cv-kind-alert{background:#dc262624}.cv-errors{margin:0;padding-left:16px}.cv-errors li{margin:2px 0}.chips-input{display:flex;flex-wrap:wrap;gap:6px;align-items:center;border:1px solid var(--border-strong);border-radius:var(--r-sm);padding:5px 7px;background:var(--surface);cursor:text;min-height:36px}.chips-input:focus-within{border-color:var(--primary);box-shadow:0 0 0 3px var(--primary-soft)}.chips-input.invalid{border-color:var(--danger)}.chips-input input,.chips-input input[type=email]{border:none;box-shadow:none;outline:none;background:transparent;flex:1;min-width:140px;padding:3px 2px;font-size:13px;color:var(--text)}.chips-input input:focus{border:none;box-shadow:none}.chip{display:inline-flex;align-items:center;gap:5px;background:var(--primary-soft);color:var(--primary);font-size:12px;font-weight:500;padding:3px 8px;border-radius:var(--r-pill);white-space:nowrap}.chip-x{background:none;border:none;cursor:pointer;color:inherit;font-size:10px;padding:0 1px;opacity:.7}.chip-x:hover{opacity:1}.chips-error{flex-basis:100%;font-size:11px;color:var(--danger);padding:1px 2px}.dict-search{width:240px}.dict-nav{position:sticky;top:16px;max-height:calc(100vh - 100px);overflow:auto}.dict-nav-model{margin-bottom:10px}.dict-nav-model-name{font-size:11px;font-weight:600;color:var(--muted);padding:4px 8px 2px}.dict-nav .folder-item{display:flex;align-items:center;justify-content:space-between;gap:6px}.dict-rls{flex-shrink:0;font-size:9px;font-weight:700;letter-spacing:.04em;padding:1px 5px;border-radius:var(--r-pill);background:#fef3c7;color:#b45309}[data-theme=dark] .dict-rls{background:#3a2e10;color:#fbbf24}.dict-explore-desc{margin:0 0 12px;max-width:760px}.dict-view{margin-bottom:16px;overflow-x:auto}.dict-view-head{display:flex;align-items:baseline;gap:10px;flex-wrap:wrap;padding-bottom:10px;border-bottom:1px solid var(--border);margin-bottom:4px}.dict-view-name{font-weight:700}.dict-source-table{background:#f1f5f9;color:#64748b}.dict-source-derived{background:#ede9fe;color:#6d28d9}.dict-source-pdt{background:#dcfce7;color:#15803d}[data-theme=dark] .dict-source-table{background:#1e293b;color:#94a3b8}[data-theme=dark] .dict-source-derived{background:#2e1065;color:#c4b5fd}[data-theme=dark] .dict-source-pdt{background:#10331e;color:#4ade80}.dict-join{font-size:12px}.dict-table-name{font-size:11px;margin-left:auto}.dict-fields{table-layout:fixed;width:100%}.dict-fields th:nth-child(1){width:26%}.dict-fields th:nth-child(2){width:18%}.dict-fields th:nth-child(3){width:26%}.dict-fields th:nth-child(4){width:30%}.dict-fields th,.dict-fields td{white-space:normal}.dict-fields td{vertical-align:top;overflow-wrap:anywhere}.dict-field-label{font-weight:600;display:flex;align-items:center;gap:6px}.dict-field-id{font-size:11px;color:var(--muted)}.dict-pk{font-size:9px;font-weight:700;padding:1px 5px;border-radius:var(--r-pill);background:var(--primary-soft);color:var(--primary)}.dict-kind{display:inline-block;font-size:10px;font-weight:700;letter-spacing:.04em;text-transform:uppercase;padding:1px 6px;border-radius:var(--r-pill)}.dict-kind-dimension{background:#dbeafe;color:#1d4ed8}.dict-kind-measure{background:#ffedd5;color:#b45309}[data-theme=dark] .dict-kind-dimension{background:#172554;color:#93c5fd}[data-theme=dark] .dict-kind-measure{background:#3a2408;color:#fdba74}.dict-type{font-size:12px;color:var(--muted)}.dict-tf{font-size:11px;margin-top:2px}.dict-desc{max-width:380px}.dict-drill{font-size:11px;margin-top:2px}.dict-sql{font-size:11px;color:var(--muted);max-width:340px;overflow-wrap:anywhere}.dict-params{font-size:12px;padding-top:8px;border-top:1px solid var(--border);margin-top:4px}.sheet-toolbar{display:flex;align-items:center;gap:12px;flex-wrap:wrap;margin-bottom:8px}.sheet-toolbar-sep{width:1px;height:18px;background:var(--border)}.sheet-hint{margin-left:auto}.sheet-clear{color:var(--danger)}.sheet-wrap{max-height:560px}.sheet-table th{cursor:default}.sheet-table td{cursor:cell;-webkit-user-select:none;user-select:none}.sheet-table td.sheet-sel{background:var(--primary-soft);box-shadow:inset 0 0 0 1px var(--primary)}.sheet-table td.sheet-merged{vertical-align:middle}.sheet-table td.sheet-edited{position:relative;font-style:italic}.sheet-table td.sheet-edited:after{content:"";position:absolute;top:0;right:0;border-top:6px solid var(--primary);border-left:6px solid transparent}.sheet-table th.sheet-edited-h{font-style:italic}.sheet-input{width:100%;min-width:60px;box-sizing:border-box;border:1px solid var(--primary)!important;border-radius:var(--r-xs);padding:2px 4px;font:inherit;background:var(--surface);color:var(--text)}.sheet-subtotal td{background:#fafbfc;font-weight:600;border-top:1px solid var(--border-strong)}.sheet-total td{background:#f1f3f6;font-weight:700;border-top:2px solid var(--border-strong)}[data-theme=dark] .sheet-subtotal td{background:#16213a}[data-theme=dark] .sheet-total td{background:#1b2745}[data-theme=dark] .sheet-table td.sheet-sel{background:#4f46e540}.sheet-fmtbar{gap:4px;margin-top:-4px}.sheet-fmt-btn{min-width:26px;height:26px;padding:0 6px;border:1px solid var(--border);border-radius:var(--r-xs);background:var(--surface);color:var(--text);cursor:pointer;font-size:13px}.sheet-fmt-btn:hover:not(:disabled){background:var(--primary-soft)}.sheet-fmt-btn.on{background:var(--primary-soft);border-color:var(--primary);color:var(--primary)}.sheet-fmt-btn:disabled{opacity:.45;cursor:default}.sheet-fmt-color{display:inline-flex;align-items:center;gap:3px;font-size:12px;color:var(--muted)}.sheet-fmt-color input[type=color]{width:22px;height:22px;padding:0;border:1px solid var(--border-strong);border-radius:var(--r-xs);background:none;cursor:pointer}.sheet-fmt-size{max-width:84px}.sheet-rules{display:flex;flex-direction:column;gap:8px;padding:12px;margin-bottom:8px}.sheet-rule{display:flex;align-items:center;gap:8px;flex-wrap:wrap}.sheet-rule input[type=number]{width:110px}.sheet-rule input[type=color]{width:26px;height:26px;padding:0;border:1px solid var(--border-strong);border-radius:var(--r-xs);background:none;cursor:pointer}.sheet-rules>.btn{align-self:flex-start}.lk-wf-tip{background:var(--surface);border:1px solid var(--border);border-radius:var(--r-sm);padding:8px 10px;font-size:12px;box-shadow:var(--shadow)}.lk-wf-tip-x{font-weight:600;margin-bottom:2px}.heatmap-wrap{max-height:560px}.heatmap-table td.num{font-variant-numeric:tabular-nums}.field-combo{position:relative;display:inline-block;width:230px}.field-combo-input{width:100%;box-sizing:border-box;padding-right:22px!important;text-overflow:ellipsis}.field-combo.open .field-combo-input{border-color:var(--primary)}.field-combo-caret{position:absolute;right:8px;top:50%;transform:translateY(-50%);color:var(--muted);font-size:10px;pointer-events:none}.field-combo-pop{z-index:60;background:var(--surface);border:1px solid var(--border);border-radius:var(--r-md);box-shadow:var(--shadow-md);padding:6px}.field-combo-list{max-height:260px;overflow:auto;display:flex;flex-direction:column}.field-combo-item{text-align:left;background:none;border:none;cursor:pointer;padding:6px 8px;border-radius:var(--r-xs);font-size:13px;color:var(--text)}.field-combo-item:hover{background:var(--primary-soft)}.field-combo-item.active{color:var(--primary);font-weight:600}.field-combo-empty{padding:8px}.sort-level{font-size:9px;color:var(--muted);margin-left:1px}[data-theme=dark] ::selection{background:#6366f180;color:#f6f7f9}.dash-menu-wrap{position:relative}.dash-menu{position:absolute;right:0;top:calc(100% + 6px);z-index:60;min-width:190px;background:var(--surface);border:1px solid var(--border);border-radius:var(--r-md);box-shadow:var(--shadow-md);padding:6px;display:flex;flex-direction:column}.dash-menu>button{text-align:left;background:none;border:none;cursor:pointer;padding:7px 10px;border-radius:var(--r-xs);font-size:13px;color:var(--text);white-space:nowrap}.dash-menu>button:hover:not(:disabled){background:var(--primary-soft)}.dash-menu>button:disabled{opacity:.5;cursor:default}.dash-menu-sep{height:1px;background:var(--border);margin:4px 2px}.dash-menu-danger{color:var(--danger)!important}.ai-config-grid{display:flex;flex-direction:column;gap:14px;max-width:620px}.ai-key-row{display:flex;gap:8px;align-items:center}.ai-key-row input{flex:1}.ai-test-row{display:flex;gap:10px;align-items:center}.react-grid-layout{position:relative;transition:height .2s ease}.react-grid-item{transition:all .2s ease;transition-property:left,top,width,height}.react-grid-item img{pointer-events:none;-webkit-user-select:none;user-select:none}.react-grid-item.cssTransforms{transition-property:transform,width,height}.react-grid-item.resizing{transition:none;z-index:1;will-change:width,height}.react-grid-item.react-draggable-dragging{transition:none;z-index:3;will-change:transform}.react-grid-item.dropping{visibility:hidden}.react-grid-item.react-grid-placeholder{background:red;opacity:.2;transition-duration:.1s;z-index:2;-webkit-user-select:none;-moz-user-select:none;-ms-user-select:none;-o-user-select:none;user-select:none}.react-grid-item.react-grid-placeholder.placeholder-resizing{transition:none}.react-grid-item>.react-resizable-handle{position:absolute;width:20px;height:20px}.react-grid-item>.react-resizable-handle:after{content:"";position:absolute;right:3px;bottom:3px;width:5px;height:5px;border-right:2px solid rgba(0,0,0,.4);border-bottom:2px solid rgba(0,0,0,.4)}.react-resizable-hide>.react-resizable-handle{display:none}.react-grid-item>.react-resizable-handle.react-resizable-handle-sw{bottom:0;left:0;cursor:sw-resize;transform:rotate(90deg)}.react-grid-item>.react-resizable-handle.react-resizable-handle-se{bottom:0;right:0;cursor:se-resize}.react-grid-item>.react-resizable-handle.react-resizable-handle-nw{top:0;left:0;cursor:nw-resize;transform:rotate(180deg)}.react-grid-item>.react-resizable-handle.react-resizable-handle-ne{top:0;right:0;cursor:ne-resize;transform:rotate(270deg)}.react-grid-item>.react-resizable-handle.react-resizable-handle-w,.react-grid-item>.react-resizable-handle.react-resizable-handle-e{top:50%;margin-top:-10px;cursor:ew-resize}.react-grid-item>.react-resizable-handle.react-resizable-handle-w{left:0;transform:rotate(135deg)}.react-grid-item>.react-resizable-handle.react-resizable-handle-e{right:0;transform:rotate(315deg)}.react-grid-item>.react-resizable-handle.react-resizable-handle-n,.react-grid-item>.react-resizable-handle.react-resizable-handle-s{left:50%;margin-left:-10px;cursor:ns-resize}.react-grid-item>.react-resizable-handle.react-resizable-handle-n{top:0;transform:rotate(225deg)}.react-grid-item>.react-resizable-handle.react-resizable-handle-s{bottom:0;transform:rotate(45deg)}.react-resizable{position:relative}.react-resizable-handle{position:absolute;width:20px;height:20px;background-repeat:no-repeat;background-origin:content-box;box-sizing:border-box;background-image:url(data:image/svg+xml;base64,PHN2ZyB4bWxucz0iaHR0cDovL3d3dy53My5vcmcvMjAwMC9zdmciIHZpZXdCb3g9IjAgMCA2IDYiIHN0eWxlPSJiYWNrZ3JvdW5kLWNvbG9yOiNmZmZmZmYwMCIgeD0iMHB4IiB5PSIwcHgiIHdpZHRoPSI2cHgiIGhlaWdodD0iNnB4Ij48ZyBvcGFjaXR5PSIwLjMwMiI+PHBhdGggZD0iTSA2IDYgTCAwIDYgTCAwIDQuMiBMIDQgNC4yIEwgNC4yIDQuMiBMIDQuMiAwIEwgNiAwIEwgNiA2IEwgNiA2IFoiIGZpbGw9IiMwMDAwMDAiLz48L2c+PC9zdmc+);background-position:bottom right;padding:0 3px 3px 0}.react-resizable-handle-sw{bottom:0;left:0;cursor:sw-resize;transform:rotate(90deg)}.react-resizable-handle-se{bottom:0;right:0;cursor:se-resize}.react-resizable-handle-nw{top:0;left:0;cursor:nw-resize;transform:rotate(180deg)}.react-resizable-handle-ne{top:0;right:0;cursor:ne-resize;transform:rotate(270deg)}.react-resizable-handle-w,.react-resizable-handle-e{top:50%;margin-top:-10px;cursor:ew-resize}.react-resizable-handle-w{left:0;transform:rotate(135deg)}.react-resizable-handle-e{right:0;transform:rotate(315deg)}.react-resizable-handle-n,.react-resizable-handle-s{left:50%;margin-left:-10px;cursor:ns-resize}.react-resizable-handle-n{top:0;transform:rotate(225deg)}.react-resizable-handle-s{bottom:0;transform:rotate(45deg)}
