:root {
  --runtime-blue:#3643ba;
  --runtime-ink:#101010;
  --runtime-line:#d9d9d9;
  --dec-content-brand:#3643ba;
  --dec-content-neutral:#101010;
  --dec-content-quiet:#616161;
  --dec-content-tertiary:#949494;
  --dec-content-on-gray:#ededed;
  --dec-content-inverse:#fff;
  --portal-blue:#3643ba;
  --portal-rail:#3643ba;
  --portal-ink:#101010;
  --portal-muted:#616161;
  --portal-paper:#ededed;
  --v2-blue:#3643ba;
  --v2-surface:#fff;
  --runtime-page-title-size:clamp(32px,3vw,40px);
  --runtime-page-title-leading:1;
  --runtime-page-title-tracking:-.05em;
  --runtime-tree-disclosure-size:14px;
  --runtime-tree-disclosure-ink:#555d68;
  --runtime-tree-disclosure-surface:#e3e5e8;
  --runtime-folder-tab:#9ba7ea;
  --runtime-folder-body:#7784df;
}

html.runtime-auth-pending { background:var(--dec-content-on-gray); }
html.runtime-auth-pending body { visibility:hidden; }
html.runtime-auth-open .rail,
html.runtime-auth-open .main,
html.runtime-auth-open .portal-assistant,
html.runtime-auth-open .runtime-agent-panel { display:none !important; }
html.runtime-auth-open .home-hero { background-image:none !important; }
html:not(.runtime-auth-open) .home-hero { background-image:url('/assets/homepage-hero-snow-poster-web.jpg'); }
body { color:var(--dec-content-neutral); background:var(--dec-content-on-gray); }
.rail,.rail-brand { background:var(--dec-content-brand); }
.rail,.rail button,.rail .ti { color:var(--dec-content-inverse); }
.account-avatar { display:grid !important; visibility:visible !important; opacity:1 !important; border-color:var(--dec-content-inverse); color:var(--dec-content-inverse); background:rgba(255,255,255,.12); }
.template-topic-icon,.v2-manager-item-name .template-topic-icon { color:var(--dec-content-tertiary); background:var(--dec-content-on-gray); }
.v2-qbi-brand-mark,.v2-qbi-shell.is-analysis .v2-qbi-brand-mark { border-radius:4px; color:var(--dec-content-tertiary); background:var(--dec-content-on-gray); }
.v2-qbi-brand-mark .v2-qbi-icon { width:14px; height:14px; fill:none; stroke:currentColor; stroke-width:1.8; stroke-linecap:round; stroke-linejoin:round; }
.runtime-folder-icon { width:17px; height:14px; flex:none; display:block; color:#757b87; fill:none; stroke:currentColor; stroke-width:1.7; stroke-linecap:round; stroke-linejoin:round; }
.runtime-folder-icon .runtime-folder-tab { fill:var(--runtime-folder-tab); stroke:none; }
.runtime-folder-icon .runtime-folder-body { fill:var(--runtime-folder-body); stroke:none; }
/* Static markup is only a pre-runtime fallback; retain a visible solid folder until hydration. */
.runtime-folder-icon > path:only-child { fill:var(--runtime-folder-body); stroke:none; }
.runtime-homepage-config { padding-top:40px; }
.template-date,.v2-manager-table th,.v2-manager-table td,.v2-dataset-option small,.v2-dataset-owner span,.v2-dataset-description,.v2-dataset-facts dt,.v2-data-block h4,.v2-data-tag { color:var(--dec-content-quiet); }
.template-name,.template-name strong,.v2-manager-open,.v2-dataset-detail h3,.v2-dataset-owner strong,.v2-dataset-facts dd { color:var(--dec-content-neutral); }
.v2-action.is-primary,.v2-choice-chip[aria-pressed="true"],button.v2-dataset-option[aria-selected="true"],.v2-mode-card[aria-pressed="true"] { border-color:var(--dec-content-brand); color:var(--dec-content-inverse); background:var(--dec-content-brand); }
.v2-manager-tab { color:var(--dec-content-tertiary) !important; }
.v2-manager-tab:hover,.v2-manager-tab:focus-visible,.v2-manager-tab[aria-selected="true"] { color:var(--dec-content-neutral) !important; }
.v2-manager-table td:last-child .v2-manager-row-actions { justify-content:center; }
.v2-manager-table td:last-child .v2-manager-row-actions.is-favorite-only { padding-right:0; }
.v2-manager-table td:last-child > .v2-manager-row-action { left:50%; }

.runtime-auth {
  position:fixed; inset:0; z-index:1200; display:grid; place-items:center;
  min-height:100dvh; padding:24px; color:var(--dec-content-neutral); background:var(--dec-content-on-gray);
}
.runtime-auth[hidden] { display:none; }
.runtime-auth-card { width:min(460px,calc(100vw - 32px)); padding:40px; border:1px solid #d9d9d9; border-radius:20px; background:#fff; box-shadow:0 24px 64px rgba(16,16,16,.12); }
.runtime-auth-brand { display:flex; align-items:center; gap:10px; margin-bottom:42px; color:var(--dec-content-brand); font-size:15px; font-weight:780; letter-spacing:.01em; }
.runtime-demo-tag { display:inline-flex; align-items:center; min-height:22px; padding:0 8px; border-radius:5px; color:var(--dec-content-inverse); background:var(--dec-content-brand); font-size:11px; font-weight:720; letter-spacing:.02em; text-transform:uppercase; }
.runtime-auth-card h1 { margin:0 0 26px; color:var(--dec-content-neutral); font-size:34px; line-height:1.08; letter-spacing:-.045em; }
.runtime-auth-card p.runtime-auth-copy { margin:-14px 0 22px; color:var(--dec-content-quiet); font-size:14px; line-height:1.5; }
.runtime-auth-card label { display:grid; gap:8px; margin:16px 0; color:var(--dec-content-neutral); font-size:13px; font-weight:700; }
.runtime-auth-card input { min-height:48px; border:1px solid #c9c9c9; border-radius:8px; padding:0 13px; color:var(--dec-content-neutral); background:#fff; font:inherit; }
.runtime-auth-card input:focus { border-color:var(--dec-content-brand); outline:3px solid rgba(54,67,186,.16); }
.runtime-auth-card button { cursor:pointer; font:700 14px inherit; }
.runtime-auth-card [data-runtime-auth-submit] { width:100%; min-height:48px; margin-top:20px; border:1px solid var(--dec-content-brand); border-radius:8px; color:var(--dec-content-inverse); background:var(--dec-content-brand); }
.runtime-auth-card [data-runtime-auth-submit]:hover { background:#2d39a5; }
.runtime-auth-copy[hidden] { display:none; }
.runtime-auth-error { min-height:20px; margin-top:10px; color:#b42318; font-size:13px; }
.runtime-global-search { width:clamp(168px,18vw,240px); height:32px; flex:0 0 auto; display:flex; align-items:center; gap:8px; margin:0 16px 0 auto; padding:0 4px 0 10px; border:1px solid #d9dee8; border-radius:7px; color:#7a8290; background:#fff; transition:border-color .16s ease,box-shadow .16s ease; }
.runtime-global-search:focus-within { border-color:#8d97ef; box-shadow:0 0 0 3px rgba(54,67,186,.08); }
.runtime-global-search-icon { width:15px; height:15px; flex:none; fill:none; stroke:currentColor; stroke-width:1.8; stroke-linecap:round; stroke-linejoin:round; }
.runtime-global-search input { min-width:0; width:100%; padding:0; border:0; outline:0; color:#505766; background:transparent; font:500 12px/1 Arial,"Microsoft YaHei",sans-serif; }
.runtime-global-search input::placeholder { color:#969daa; opacity:1; }
.runtime-global-search-submit { width:19px; height:19px; flex:none; display:grid; place-items:center; padding:0; border:0; border-radius:50%; color:#fff; background:var(--dec-content-brand); cursor:pointer; transition:background .16s ease,transform .16s ease; }
.runtime-global-search-submit:hover { background:#2d39a5; transform:translateX(1px); }
.runtime-global-search-submit:focus-visible { outline:2px solid var(--dec-content-brand); outline-offset:2px; }
.runtime-global-search-submit:disabled { cursor:wait; opacity:.65; transform:none; }
.runtime-global-search-submit svg { width:11px; height:11px; fill:none; stroke:currentColor; stroke-width:2; stroke-linecap:round; stroke-linejoin:round; }
.runtime-report-metadata-dialog { width:min(520px,calc(100vw - 32px)); }
.runtime-report-metadata-dialog textarea { min-height:94px; resize:vertical; padding:11px 12px; border:1px solid #111318; border-radius:10px; color:#232938; background:#fff; font:inherit; font-size:12px; line-height:1.5; }
.runtime-report-metadata-dialog textarea:focus { border-color:var(--dec-content-brand); outline:3px solid rgba(54,67,186,.11); }
.runtime-unavailable { position:relative; cursor:not-allowed !important; opacity:1 !important; filter:none !important; }
.runtime-tooltip { position:fixed; z-index:1400; max-width:240px; padding:7px 9px; border-radius:6px; background:#202636; color:#fff; font-size:12px; line-height:1.4; pointer-events:none; box-shadow:0 6px 18px rgba(11,18,35,.22); }
.runtime-update-pending { position:relative; box-shadow:0 0 0 2px rgba(255,153,0,.22) inset; }
.runtime-update-pending::after { content:"注意！"; position:absolute; top:-10px; right:-8px; min-width:36px; padding:2px 5px; border-radius:8px; color:#fff; background:#d92d20; font-size:9px; font-weight:750; line-height:1.2; box-shadow:0 2px 5px rgba(157,31,23,.24); }
.v2-analysis-undo button { display:inline-grid; place-items:center; width:24px; height:24px; padding:0; border:0; background:transparent; color:inherit; cursor:pointer; }
.v2-analysis-undo button[aria-disabled="true"] { cursor:default; }
.v2-analysis-undo button[aria-disabled="true"] svg { opacity:.35; }

.runtime-field { cursor:grab; }
.runtime-field:active { cursor:grabbing; }
.runtime-field-info-target:focus-visible { outline:2px solid var(--dec-content-brand); outline-offset:2px; }
.runtime-field-type-icon { width:14px; height:14px; fill:none; stroke:currentColor; stroke-linecap:round; stroke-linejoin:round; }
.runtime-field .v2-field-type,.runtime-field .v2-field-kind { width:27px; flex:0 0 27px; font-size:10px; line-height:1; }
.runtime-field .v2-field-name { font-size:11px; }
.v2-native-field-toolbar .runtime-field-add { width:28px; font-size:20px; line-height:1; }
.v2-analysis-field-toolbar .runtime-field-add { width:28px; font-size:19px; line-height:1; }
.runtime-vertical-field-search { width:calc(100% - 18px); min-height:28px; margin:7px 9px 3px; padding:0 11px; border:1px solid #cfd5df; border-radius:16px; color:#303744; background:#fff; font-size:11px; }
.runtime-vertical-field-search[hidden] { display:none; }
.v2-native-field-catalog > section { display:contents; }
.v2-native-field-catalog > section[hidden] { display:none; }
.runtime-pill { position:relative; display:inline-flex !important; align-items:center; gap:5px; max-width:220px; padding-right:20px !important; cursor:grab; }
.v2-qbi-shell.is-download .runtime-pill { padding-right:38px !important; }
.runtime-pill > .runtime-pill-kind { flex:0 0 auto; width:auto; min-width:0; padding:0; border:0; color:#3478f6; background:transparent; font-size:inherit; }
.runtime-pill > .runtime-pill-kind .runtime-field-type-icon { display:block; }
.runtime-pill[data-kind="measure"] > .runtime-pill-kind { color:#16b86c; }
.runtime-pill > .runtime-pill-label { min-width:0; overflow:hidden; padding:0; border:0; background:transparent; text-overflow:ellipsis; white-space:nowrap; }
.v2-native-drop .runtime-pill { width:100%; max-width:100%; }
.v2-native-drop .runtime-pill.is-dimension { border-color:#6ea1ff; color:#1f2937; background:#dfeaff; }
.v2-native-drop .runtime-pill:not(.is-dimension) { border-color:#50d18f; color:#1f2937; background:#dcf6e7; }
.v2-native-drop .runtime-pill > .runtime-pill-kind,
.v2-native-drop .runtime-pill > .runtime-pill-label { width:auto; min-width:0; padding:0; border:0; background:transparent; }
.v2-native-drop .runtime-pill > .runtime-pill-label { flex:1 1 auto; }
.runtime-pill button { position:absolute; right:3px; width:16px; height:16px; border:0; padding:0; border-radius:4px; background:transparent; color:inherit; cursor:pointer; line-height:16px; }
.v2-qbi-shell.is-download .runtime-pill .runtime-pill-more { right:20px; }
.runtime-pill .runtime-pill-delete { right:3px; display:grid; place-items:center; color:#667085; }
.runtime-pill .runtime-pill-delete svg { width:13px; height:13px; fill:none; stroke:currentColor; stroke-linecap:round; stroke-linejoin:round; }
.runtime-pill .runtime-pill-delete:hover,.runtime-pill .runtime-pill-delete:focus-visible { color:#b42318; background:rgba(180,35,24,.08); }
.runtime-pill-menu { position:fixed; z-index:1000; width:270px; padding:8px; border:1px solid #d9deea; border-radius:9px; background:#fff; box-shadow:0 16px 40px rgba(30,42,75,.18); }
.runtime-pill-menu[hidden] { display:none; }
.runtime-pill-menu label { display:grid; grid-template-columns:82px 1fr; align-items:center; gap:8px; padding:5px; font-size:12px; }
.runtime-pill-menu.is-vertical { width:250px; padding:6px; }
.runtime-pill-menu.is-vertical label { grid-template-columns:92px minmax(0,1fr); min-height:42px; border-bottom:1px solid #f0f2f5; }
.runtime-pill-menu.is-vertical label:last-child { border-bottom:0; }
.runtime-pill-menu select,.runtime-pill-menu input { min-width:0; height:30px; border:1px solid #d5dae5; border-radius:5px; background:#fff; }
.runtime-pill-menu footer { display:flex; justify-content:flex-end; gap:7px; margin-top:7px; padding-top:7px; border-top:1px solid #edf0f5; }
.runtime-pill-menu button { min-height:30px; padding:0 8px; border:1px solid #d6dbe5; border-radius:5px; background:#fff; cursor:pointer; white-space:nowrap; }
.runtime-pill-menu button.is-danger { color:#b42318; }
.runtime-pill-menu > .runtime-pill-rename { width:100%; justify-content:flex-start; border:0; color:#202631; background:#fff; text-align:left; }
.runtime-pill-menu > .runtime-pill-rename:hover,.runtime-pill-menu > .runtime-pill-rename:focus-visible { background:#f3f5f8; }

.runtime-field-command-menu { position:fixed; z-index:1050; width:160px; padding:6px; border:1px solid #d9deea; border-radius:6px; background:#fff; box-shadow:0 14px 34px rgba(30,42,75,.18); }
.runtime-field-command-menu[hidden] { display:none; }
.runtime-field-command-menu button { width:100%; min-height:34px; display:flex; align-items:center; justify-content:space-between; gap:12px; padding:0 10px; border:0; border-radius:4px; color:#202631; background:#fff; text-align:left; font-size:12px; white-space:nowrap; }
.runtime-field-command-menu button:hover,.runtime-field-command-menu button:focus-visible { background:#f3f5f8; }
.runtime-field-command-more { position:relative; }
.runtime-field-command-submenu { position:absolute; top:0; left:calc(100% + 5px); width:142px; padding:6px; border:1px solid #d9deea; border-radius:6px; background:#fff; box-shadow:0 14px 34px rgba(30,42,75,.18); visibility:hidden; opacity:0; pointer-events:none; }
.runtime-field-command-more:hover .runtime-field-command-submenu,.runtime-field-command-more:focus-within .runtime-field-command-submenu { visibility:visible; opacity:1; pointer-events:auto; }
.runtime-field-info-tooltip { position:fixed; z-index:1450; max-width:360px; padding:13px 15px; border:1px solid #e0e4eb; border-radius:8px; color:#303744; background:#fff; box-shadow:0 14px 36px rgba(30,42,75,.16); font-size:12px; line-height:1.45; pointer-events:none; }
.runtime-field-info-tooltip[hidden] { display:none; }
.runtime-field-info-tooltip dl { display:grid; gap:7px; margin:0; }
.runtime-field-info-tooltip p { margin:0; }
.runtime-field-info-tooltip dl > div { display:grid; grid-template-columns:78px minmax(0,1fr); gap:5px; }
.runtime-field-info-tooltip dt { color:var(--dec-content-tertiary); }
.runtime-field-info-tooltip dd { min-width:0; margin:0; overflow-wrap:anywhere; color:var(--dec-content-quiet); }
.runtime-query-control { padding:0; border:0; color:#3478f6; background:transparent; font:inherit; cursor:pointer; }
.runtime-subtotal-menu { position:fixed; z-index:1100; width:180px; display:grid; gap:8px; padding:11px; border:1px solid #d9deea; border-radius:7px; color:#303744; background:#fff; box-shadow:0 14px 34px rgba(30,42,75,.18); font-size:12px; }
.runtime-subtotal-menu[hidden] { display:none; }
.runtime-subtotal-menu strong { padding-bottom:7px; border-bottom:1px solid #eceff3; }
.runtime-subtotal-menu label { display:flex; align-items:center; gap:7px; min-height:25px; }

.runtime-filter-dialog { width:min(620px,calc(100vw - 40px)); border:0; border-radius:12px; padding:0; box-shadow:0 28px 90px rgba(24,35,68,.26); }
.runtime-filter-dialog::backdrop { background:rgba(25,32,50,.28); backdrop-filter:blur(2px); }
.runtime-filter-dialog form { padding:0; }
.runtime-filter-head { display:flex; align-items:center; justify-content:space-between; gap:16px; padding:17px 20px; border-bottom:1px solid #e4e7ed; }
.runtime-filter-dialog h2 { margin:0; font-size:18px; }
.runtime-filter-close { width:30px; height:30px; border:0; color:#707783; background:transparent; cursor:pointer; font-size:22px; line-height:1; }
.runtime-filter-context { padding:12px 20px; background:#fafbfc; color:#697181; font-size:11px; }
.runtime-filter-context label { display:grid; grid-template-columns:90px minmax(0,1fr); align-items:center; gap:9px; }
.runtime-filter-context select { min-width:0; min-height:36px; padding:0 9px; border:1px solid #d8dde7; border-radius:4px; background:#fff; color:#303746; font-size:12px; }
.runtime-filter-condition { display:grid; grid-template-columns:150px minmax(0,1fr); gap:12px; align-items:end; padding:15px 20px 10px; }
.runtime-filter-condition label { display:grid; gap:6px; color:#555d6b; font-size:11px; font-weight:650; }
.runtime-filter-condition select,.runtime-filter-condition input { width:100%; min-height:36px; border:1px solid #d3d9e4; border-radius:4px; padding:0 9px; background:#fff; }
.runtime-filter-condition input[hidden],.runtime-filter-values[hidden] { display:none; }
.runtime-filter-values { display:grid; grid-template-columns:repeat(2,minmax(0,1fr)); gap:8px; max-height:250px; overflow:auto; margin:0 20px 15px; padding:10px; border:1px solid #e0e4ec; border-radius:4px; }
.runtime-filter-values label { overflow:hidden; text-overflow:ellipsis; white-space:nowrap; font-size:12px; }
.runtime-filter-empty { grid-column:1/-1; color:#6a7280; font-size:12px; }
.runtime-filter-actions { display:flex; justify-content:flex-end; gap:8px; padding:13px 20px; border-top:1px solid #e7e9ee; }

.runtime-result-scroll { width:100%; height:100%; overflow:auto; }
.runtime-result-table { width:max-content; min-width:100%; border-collapse:collapse; font-size:12px; font-variant-numeric:tabular-nums; }
.runtime-result-table th,.runtime-result-table td { min-width:112px; padding:8px 10px; border:1px solid #d9deea; text-align:left; white-space:nowrap; }
.runtime-result-table th { position:sticky; top:0; z-index:1; background:#edf2fb; color:#252d3d; font-weight:650; }
.runtime-result-table td.is-number { text-align:right; }
.runtime-s2-host { width:100%; min-width:640px; height:100%; min-height:430px; }
.runtime-result-loading { display:grid; place-items:center; height:100%; color:#5c6475; font-size:13px; }
.runtime-result-error { margin:20px; padding:14px; border:1px solid #d96a6a; border-radius:4px; background:#fff2f2; color:#8d2424; }

.v2-qbi-shell.is-download .v2-native-sidepanel { width:330px; }
.v2-qbi-shell.is-download .v2-native-task { grid-template-columns:18px minmax(0,1fr) 34px; gap:8px; padding:13px 4px; border-bottom:1px solid #edf0f4; }
.v2-qbi-shell.is-download .v2-native-task-success { width:16px; height:16px; font-size:10px; }
.v2-qbi-shell.is-download .v2-native-task strong { font-size:12px; line-height:1.45; }
.v2-qbi-shell.is-download .v2-native-task small { margin-top:3px; font-size:10px; }
.v2-qbi-shell.is-download .v2-native-task-download { width:34px; height:34px; border-radius:6px; }
.v2-qbi-shell.is-download .v2-native-task-download { font-size:18px; line-height:1; }
.v2-qbi-shell.is-download .v2-native-task-download:hover { color:var(--dec-content-brand); background:#f0f2ff; }
.v2-qbi-shell.is-download .v2-native-task-download svg { width:17px; height:17px; }
.v2-qbi-shell.is-analysis .v2-field-panel .runtime-field-info-target { cursor:grab; }
.v2-qbi-shell.is-analysis [data-v2-shelf="filters"] { min-height:38px; border:1px dashed #cbd3e1; border-radius:3px; }
.v2-qbi-shell.is-analysis [data-v2-shelf="filters"]:empty::before { content:"拖动维度到此处添加过滤"; display:grid; place-items:center; width:100%; color:#8a92a0; font-size:10px; }
.v2-qbi-shell.is-analysis .v2-native-query-bar { display:none !important; }

/* 2026-08-18 Create Report: governed cross-domain field catalogue. */
.v2-qbi-shell.is-analysis .v2-analysis-dataset-row { display:none !important; }
.v2-qbi-shell.is-analysis .v2-analysis-field-toolbar { min-height:38px; }
.v2-qbi-shell.is-analysis .v2-field-panel { height:calc(100dvh - 84px); max-height:760px; overflow:hidden; display:flex; flex-direction:column; }
.v2-qbi-shell.is-analysis .v2-field-group { min-height:0; flex:1 1 0; overflow-y:auto; padding-inline:8px; }
.v2-qbi-shell.is-analysis .runtime-cross-domain-list { display:grid; gap:2px; }
.runtime-cross-domain-group { margin:0; }
.runtime-cross-domain-group > summary {
  min-height:29px;
  display:grid;
  grid-template-columns:14px minmax(0,1fr);
  align-items:center;
  gap:3px;
  padding:0 5px;
  color:#4b535f;
  cursor:pointer;
  list-style:none;
  font-size:10px;
}
.runtime-cross-domain-group > summary::-webkit-details-marker { display:none; }
.runtime-cross-domain-group > summary:hover { color:#202631; background:transparent; }
.runtime-cross-domain-toggle::before { content:"+"; width:var(--runtime-tree-disclosure-size); height:var(--runtime-tree-disclosure-size); display:grid; place-items:center; flex:none; border:0; border-radius:50%; box-shadow:none; color:var(--runtime-tree-disclosure-ink); background:var(--runtime-tree-disclosure-surface); font-size:10px; line-height:1; }
.runtime-cross-domain-group[open] .runtime-cross-domain-toggle::before { content:"−"; }
.runtime-cross-domain-group > .v2-field-list { display:grid; padding:1px 0 4px 14px; }
.runtime-cross-domain-group:not([open]) > .v2-field-list { display:none; }
.v2-qbi-shell.is-analysis .runtime-cross-domain-field { position:relative; width:100%; display:flex; align-items:center; text-align:left; }
.runtime-cross-domain-field .v2-field-name { min-width:0; overflow:hidden; text-overflow:ellipsis; }
.runtime-cross-domain-field[aria-disabled="true"] { color:#b0b5bd !important; cursor:not-allowed; background:#fafafa !important; }
.runtime-cross-domain-field[aria-disabled="true"] .v2-field-kind { color:#c5c9cf !important; }

/* 2026-08-18 Download Raw Data: one configuration surface, then filters and result. */
.v2-qbi-shell.is-download .v2-qbi-body {
  grid-template-columns:minmax(0,1fr) 96px !important;
  grid-template-rows:max-content max-content max-content minmax(0,1fr);
}
.v2-qbi-shell.is-download .v2-download-data {
  display:block !important;
  height:max-content;
  align-self:start;
  grid-column:1 / -1;
  grid-row:1;
  border:0;
  background:#fff;
}
.v2-qbi-shell.is-download .v2-download-config { display:none !important; }
.v2-qbi-shell.is-download .v2-native-query-bar { grid-column:1 / -1; grid-row:2; }
.v2-qbi-shell.is-download .v2-qbi-top { grid-column:1; grid-row:3; }
.v2-qbi-shell.is-download .v2-editor-main { grid-column:1; grid-row:4; }
.v2-qbi-shell.is-download .v2-qbi-rail { grid-column:2; grid-row:3 / 5; }
.v2-qbi-shell.is-download [data-v2-settings-toggle],.v2-qbi-shell.is-download [data-v2-settings-panel] { display:none !important; }
.v2-qbi-shell.is-download .v2-qbi-rail { display:flex !important; }
.v2-qbi-shell.is-download .v2-qbi-rail [data-v2-task-toggle] { flex:1; }
.v2-qbi-shell.is-download .v2-native-canvas-title { display:none !important; }
.runtime-download-configuration { height:max-content; border-bottom:1px solid #e3e7ee; background:#fff; }
.runtime-download-configuration > summary {
  min-height:44px;
  display:flex;
  align-items:center;
  justify-content:space-between;
  padding:0 18px;
  color:#171b22;
  cursor:pointer;
  list-style:none;
  font-size:13px;
}
.runtime-download-configuration > summary::-webkit-details-marker { display:none; }
.runtime-download-configuration > summary > span { display:flex; align-items:center; gap:7px; color:#4e5664; font-size:11px; }
.runtime-download-configuration > summary [data-runtime-download-toggle-arrow] { color:#697180; font-size:13px; line-height:1; }
.runtime-download-config-body { height:max-content; display:grid; align-content:start; gap:0; }
.runtime-download-config-body > section { padding:14px 18px; border-top:1px solid #eef0f4; }
.runtime-download-source { display:grid; grid-template-columns:minmax(220px,.8fr) minmax(320px,1.2fr); gap:18px; }
.runtime-download-source label,.runtime-download-dates label { display:grid; align-items:center; gap:7px; color:#596170; font-size:11px; }
.runtime-download-source select {
  min-height:38px;
  padding:0 42px 0 11px;
  border:1px solid #d9dee7;
  border-radius:5px;
  color:#1c222c;
  background:#fff;
}
.runtime-download-source label > span,.runtime-download-columns header > strong,.runtime-download-dates > strong,.runtime-download-output > strong { color:#596170; font-size:11px; font-weight:650; }
.runtime-download-columns header { display:flex; align-items:center; justify-content:space-between; gap:16px; margin-bottom:10px; }
.runtime-download-columns header label { color:#6d7583; font-size:10px; }
.runtime-download-columns header input { accent-color:#3478f6; }
.runtime-download-columns > div { display:flex; flex-wrap:wrap; gap:8px; }
.runtime-download-column {
  min-height:30px;
  display:inline-flex;
  align-items:center;
  gap:7px;
  padding:5px 9px;
  border:1px solid #dfe4ec;
  border-radius:5px;
  color:#343b47;
  background:#fff;
  cursor:pointer;
  font-size:11px;
}
.runtime-download-column:has(input:checked) { border-color:#b9c7dc; background:#f8faff; }
.runtime-download-column input { margin:0; accent-color:#3478f6; }
.runtime-field-role { min-width:24px; color:#3478f6; font-size:9px; }
.runtime-field-role.is-measure { color:#14a865; }
.runtime-download-output { height:max-content; display:flex; align-items:center; gap:16px; }
.runtime-download-mode { display:flex; align-items:center; gap:14px; }
.runtime-download-mode button { min-height:32px; display:inline-flex; align-items:center; gap:7px; padding:0 10px; border:0; border-radius:4px; color:#3b4350; background:transparent; cursor:pointer; }
.runtime-download-mode button > span { width:14px; height:14px; display:grid; place-items:center; border:1px solid #aab1bd; border-radius:50%; color:transparent; font-size:9px; line-height:1; }
.runtime-download-mode button.is-active { color:#202631; background:#f4f6ff; font-weight:650; }
.runtime-download-mode button.is-active > span { border-color:#3478f6; color:#fff; background:#3478f6; }
.runtime-download-dates { display:grid; grid-template-columns:auto minmax(0,1fr); align-items:start; gap:9px 18px; }
.runtime-download-dates > div { display:grid; gap:8px; }
.runtime-download-dates label { grid-template-columns:minmax(96px,140px) 150px auto 150px; justify-content:start; }
.runtime-download-dates input { min-height:34px; padding:0 9px; border:1px solid #d9dee7; border-radius:5px; color:#1c222c; }
.runtime-download-dates em { color:#9299a5; font-style:normal; }
.v2-qbi-shell.is-download .v2-native-query-bar { min-height:52px; display:block; margin:0; border:0; border-bottom:1px solid #e3e7ee; }
.runtime-download-filter-bar { min-height:52px; display:flex; align-items:center; justify-content:flex-start; gap:12px; padding:7px 14px; }
.runtime-download-filter-list { display:flex; flex-wrap:wrap; gap:7px; }
.runtime-download-filter { display:flex; border:1px solid #cad8f8; border-radius:4px; background:#f4f7ff; }
.runtime-download-filter > button { min-height:34px; border:0; color:#2a3340; background:transparent; cursor:pointer; }
.runtime-download-filter > button:first-child { display:grid; grid-template-columns:auto auto; align-items:center; gap:0 7px; padding:4px 8px; text-align:left; }
.runtime-download-filter strong { font-size:11px; }
.runtime-download-filter small { grid-column:2; color:#8a919c; font-size:9px; }
.runtime-download-filter > button:last-child { padding:0 8px; color:#7b8491; font-size:16px; }
.runtime-add-filter { min-height:34px; flex:0 0 auto; border:0; color:#3478f6; background:transparent; cursor:pointer; font-weight:600; }
.runtime-filter-context select,.runtime-filter-condition select { padding-right:30px; }
.v2-qbi-shell.is-download .v2-native-footnote { font-size:12px; line-height:1.45; }
.v2-qbi-shell.is-analysis .v2-native-footnote { right:12px; bottom:5px; left:auto; color:#7d8490; background:transparent; font-size:10px; font-variant-numeric:tabular-nums; text-align:right; }
.v2-qbi-shell.is-inline-preview.is-analysis .v2-editor-main,.v2-qbi-shell.is-inline-preview.is-analysis .v2-editor-canvas,.v2-qbi-shell.is-inline-preview.is-analysis .v2-editor-grid,.v2-qbi-shell.is-inline-preview.is-analysis .v2-native-result { width:100%; }

.runtime-workbook-tabs {
  order:2;
  min-height:38px;
  display:flex;
  align-items:flex-end;
  gap:2px;
  padding:4px 10px 0;
  border-top:1px solid #dfe3ea;
  background:#f5f6f8;
}
.runtime-workbook-tabs[hidden] { display:none; }
.runtime-workbook-tab { height:34px; min-width:96px; display:flex; align-items:center; border:1px solid transparent; border-bottom:0; border-radius:5px 5px 0 0; color:#68707d; background:transparent; }
.runtime-workbook-tab.is-active { border-color:#dfe3ea; color:#303744; background:#fff; }
.runtime-workbook-tab > button:first-child { min-width:70px; height:32px; flex:1; padding:0 8px 0 12px; overflow:hidden; border:0; color:inherit; background:transparent; cursor:pointer; text-align:left; text-overflow:ellipsis; white-space:nowrap; font-size:11px; }
.runtime-workbook-tab > button:last-child { width:24px; height:28px; padding:0; border:0; color:#a0a6b0; background:transparent; cursor:pointer; font-size:15px; }
.runtime-workbook-tab > button:last-child:hover { color:#303744; }
.runtime-workbook-tab input { width:86px; height:26px; margin:3px 5px; padding:0 7px; border:1px solid #cfd5df; border-radius:4px; color:#303744; background:#fff; font-size:11px; outline:0; }
.runtime-workbook-tab input:focus { border-color:#3478f6; box-shadow:0 0 0 2px rgba(52,120,246,.12); }
.runtime-workbook-add { width:32px; height:32px; display:grid; place-items:center; padding:0; border:0; color:#56606e; background:transparent; cursor:pointer; font-size:19px; }
.runtime-workbook-add:hover,.runtime-workbook-add:focus-visible { color:#3478f6; background:#edf2ff; outline:0; }

[data-runtime-workspace-tab] { max-width:210px; }
[data-runtime-workspace-tab] .page-tab-label { overflow:hidden; text-overflow:ellipsis; }
@media (max-width:960px) {
  .runtime-download-source,.runtime-download-output { grid-template-columns:1fr; }
  .runtime-download-dates { grid-template-columns:1fr; }
  .runtime-download-dates > strong,.runtime-download-dates > div { grid-column:1; grid-row:auto; }
  .runtime-download-dates label { grid-template-columns:1fr 140px auto 140px; }
}

.runtime-empty { padding:34px !important; text-align:center; color:#70798b; }

/* Shared report/folder location contract: visual Public/My roots with their real folder hierarchy. */
.v2-location-root { min-height:36px; display:flex; align-items:center; gap:9px; padding:0 10px; color:var(--dec-content-neutral); font-size:12px; font-weight:760; }
.v2-location-root + .v2-location-option.is-level-2,.v2-location-option.is-level-2 { padding-left:34px; }
.v2-location-option.is-level-3 { padding-left:56px; }
.v2-location-option.is-permission-locked,.v2-location-root.is-permission-locked { color:var(--dec-content-tertiary); background:transparent; }
.v2-location-option.is-permission-locked::before { background:#d9d9d9; }
.v2-location-tree .runtime-unavailable { opacity:1; }
.v2-location-tree .v2-location-search { position:sticky; z-index:1; top:0; min-height:32px; display:flex; align-items:center; gap:7px; margin:0 0 8px; padding:0 8px; border:1px solid #d7dbe3; border-radius:6px; color:#8b93a0; background:#fff; }
.v2-location-tree .runtime-location-search-icon { width:14px; height:14px; flex:none; color:#8b93a0; fill:none; stroke:currentColor; stroke-width:1.8; stroke-linecap:round; }
.v2-location-tree .v2-location-search input { min-width:0; width:100%; padding:0; border:0; outline:0; color:var(--dec-content-neutral); background:transparent; font:inherit; font-size:12px; font-weight:400; }
.v2-location-tree .v2-location-search input::placeholder { color:#949aa5; }
.runtime-location-tree-list { display:grid; gap:2px; }
.v2-location-tree .v2-location-branch { min-width:0; display:grid; grid-template-columns:18px minmax(0,1fr); align-items:center; padding:0; }
.v2-location-tree .v2-location-branch::before { content:none; }
.v2-location-tree .v2-location-branch.is-level-2 { padding-left:18px; }
.v2-location-tree .v2-location-branch.is-level-3 { padding-left:36px; }
.v2-location-tree .v2-location-branch.is-level-4 { padding-left:54px; }
.v2-location-tree .v2-location-toggle,.v2-location-tree .v2-location-toggle-spacer { width:18px; min-height:30px; display:grid; place-items:center; padding:0; }
.v2-location-tree .v2-location-toggle { width:var(--runtime-tree-disclosure-size); min-height:var(--runtime-tree-disclosure-size); height:var(--runtime-tree-disclosure-size); justify-self:center; border:0; border-radius:50%; color:var(--runtime-tree-disclosure-ink); background:var(--runtime-tree-disclosure-surface); box-shadow:none; cursor:pointer; font-size:10px; line-height:1; }
.v2-location-tree .v2-location-toggle:hover,.v2-location-tree .v2-location-toggle:focus-visible { color:#39414e; background:#d8dce2; outline:2px solid rgba(54,67,186,.24); outline-offset:1px; }
.v2-location-tree .v2-location-branch > .v2-location-option { min-width:0; min-height:30px; gap:7px; padding:0 7px; border-radius:6px; }
.v2-location-tree .v2-location-branch > .v2-location-option.is-level-2,.v2-location-tree .v2-location-branch > .v2-location-option.is-level-3 { padding-left:7px; }
.v2-location-tree .v2-location-branch > .v2-location-option::before { content:none; }
.v2-location-tree .v2-location-option > .runtime-folder-icon { color:#757b87; }
.v2-location-tree .v2-location-option[aria-selected="true"] .runtime-folder-tab { fill:#c5ccff; }
.v2-location-tree .v2-location-option[aria-selected="true"] .runtime-folder-body { fill:var(--dec-content-inverse); }
.v2-location-tree .v2-location-option > span { min-width:0; overflow:hidden; text-overflow:ellipsis; white-space:nowrap; }
.v2-location-tree .v2-location-option.is-root { padding-left:7px; font-weight:760; }
.v2-location-tree .runtime-location-children { grid-column:1 / -1; display:grid; gap:2px; }
.v2-location-tree .runtime-location-children[hidden] { display:none; }
.v2-location-tree .runtime-location-empty { margin:10px 7px 2px; color:var(--dec-content-quiet); font-size:11px; }

/* Folder hierarchies use the sidebar's single round +/- cue; leaves have no disclosure control. */
.v2-manager-folder-button::before { content:none; }
.v2-manager-folder-button[aria-expanded]::before { content:"+"; width:var(--runtime-tree-disclosure-size); height:var(--runtime-tree-disclosure-size); display:grid; place-items:center; flex:none; border:0; border-radius:50%; color:var(--runtime-tree-disclosure-ink); background:var(--runtime-tree-disclosure-surface); box-shadow:none; font-size:10px; line-height:1; transform:none; transition:none; }
.v2-manager-folder-button[aria-expanded="true"]::before { content:"−"; transform:none; }
.v2-manager-folder-button .runtime-folder-icon { width:17px; height:14px; }
.v2-manager-table .v2-manager-node td,
.v2-manager-table .v2-manager-node.is-folder td,
.v2-manager-table .v2-manager-node td:first-child,
.v2-manager-table .v2-manager-node td:last-child,
.v2-manager-table .v2-manager-node.is-folder td:first-child,
.v2-manager-table .v2-manager-node.is-folder td:last-child { background:#fff; }

/* Create Report keeps the governed dataset list scrollable while the selected dataset remains fully visible. */
[data-view="builder"] .v2-page { height:auto; min-height:calc(100dvh - 50px); overflow:visible; }
[data-view="builder"] .v2-flow-grid,[data-view="builder"] .v2-flow-card { overflow:visible; }
[data-view="builder"] .v2-dataset-browser { height:auto; min-height:360px; grid-template-columns:minmax(280px,.68fr) minmax(0,1.62fr); align-items:stretch; }
[data-view="builder"] .v2-dataset-master { min-height:360px; display:grid; grid-template-rows:auto minmax(0,1fr); }
[data-view="builder"] .v2-dataset-list { min-height:0; max-height:360px; overflow-y:auto; }
[data-view="builder"] .v2-dataset-detail { min-height:360px; overflow:visible; }
[data-view="builder"] .v2-data-tags { max-height:none; overflow:visible; }

/* Dashboard marketplace: only the accepted local navigation/detail extension. */
.rail-subnav { padding-left:44px; }
.rail-tertiary { padding-left:18px; }
.rail-subgroup[data-scenario] > summary[aria-current="page"],.rail-subgroup[data-qbi-favorites-group] > summary[aria-current="page"] { color:var(--dec-content-inverse); }
.scenario-page { min-height:calc(100dvh - 50px); padding:12px 28px 40px; background:var(--dec-content-on-gray); }
.scenario-hero { display:flex; align-items:flex-start; justify-content:space-between; gap:24px; padding:28px 4px 26px; }
.scenario-hero-copy { min-width:0; }
.scenario-hero h1 { margin:0; color:var(--dec-content-neutral); font-size:clamp(32px,3vw,40px); line-height:1; letter-spacing:-.05em; }
.scenario-hero p { max-width:760px; margin:8px 0 0; color:var(--dec-content-quiet); font-size:14px; line-height:1.45; }
.scenario-grid { display:grid; grid-template-columns:repeat(4,minmax(0,1fr)); gap:16px; }
.scenario-card { position:relative; min-width:0; color:var(--dec-content-neutral); text-align:left; }
.scenario-card-visual { position:relative; height:153px; min-height:153px; display:flex; flex-direction:column; padding:10px 12px; overflow:hidden; border:0; border-radius:10px; color:var(--dec-content-neutral); background:#fff; box-shadow:0 2px 7px rgba(20,28,49,.06); transition:box-shadow 160ms ease,transform 160ms cubic-bezier(.16,1,.3,1); }
.scenario-card-visual::before { content:none; }
.scenario-card:hover .scenario-card-visual,.scenario-card:focus-within .scenario-card-visual { box-shadow:0 8px 18px rgba(37,46,83,.12); transform:translateY(-1px); }
.scenario-card-heading { min-height:20px; display:flex; align-items:flex-start; justify-content:space-between; gap:8px; }
.scenario-card-topic { min-width:0; overflow:hidden; color:var(--dec-content-neutral); font-size:12px; font-weight:400; line-height:20px; letter-spacing:0; text-overflow:ellipsis; white-space:nowrap; }
.scenario-card-badge-row { min-height:20px; flex:none; display:flex; align-items:flex-start; justify-content:flex-end; }
.scenario-card-badge-row:empty { display:none; }
.scenario-core-tag { width:max-content; min-height:20px; display:inline-flex; align-items:center; padding:0 7px; border:0; border-radius:999px; color:#3643ba; background:#f5f6ff; box-shadow:none; font-size:9px; font-weight:400; letter-spacing:.01em; }
.scenario-card h2 { display:-webkit-box; margin:3px 0 0; overflow:hidden; color:var(--dec-content-neutral); font-size:16px; font-weight:400; line-height:20px; letter-spacing:0; white-space:normal; -webkit-box-orient:vertical; -webkit-line-clamp:1; }
.scenario-card-description { min-height:calc(3 * 1.5em); display:-webkit-box; margin:3px 0 0; overflow:hidden; color:#999; font-size:12px; font-weight:400; line-height:1.5; white-space:pre-line; -webkit-box-orient:vertical; -webkit-line-clamp:3; }
.scenario-card-footer { min-width:0; display:flex; align-items:center; justify-content:space-between; gap:10px; margin-top:auto; padding-top:5px; }
.scenario-card-stats { min-width:0; display:flex; align-items:baseline; gap:5px; margin:0; color:#778193; font-size:10px; letter-spacing:0; }
.scenario-card-stats strong { color:#293246; font-size:12px; font-weight:720; line-height:1; letter-spacing:-.015em; font-variant-numeric:tabular-nums; }
.scenario-views-inline { min-width:0; display:inline-flex; align-items:baseline; gap:5px; text-transform:none; white-space:nowrap; }
.scenario-card-actions { flex:none; display:flex; align-items:center; gap:7px; }
.scenario-card-actions button { width:22px; height:22px; display:grid; place-items:center; padding:0; border:1px solid #dfe4ff; border-radius:50%; color:#3643ba; background:#f7f8ff; cursor:pointer; transition:background 140ms ease,border-color 140ms ease,transform 140ms ease; }
.scenario-card-actions button:hover { border-color:#c7cffd; background:#eef0ff; transform:translateY(-1px); }
.scenario-card-actions button:active { transform:scale(.96); }
.scenario-card-actions button:focus-visible { outline:2px solid #3643ba; outline-offset:2px; }
.scenario-card-actions .scenario-card-favorite { width:28px; height:28px; border:0; border-radius:7px; color:#485365; background:transparent; }
.scenario-card-actions .scenario-card-favorite:hover,.scenario-card-actions .scenario-card-favorite:focus-visible { border:0; color:var(--portal-blue); background:#f1f3ff; transform:none; }
.scenario-card-actions .scenario-card-favorite svg { width:18px; height:18px; fill:none; stroke:currentColor; stroke-width:1.9; stroke-linecap:round; stroke-linejoin:round; }
.scenario-card-actions .scenario-card-favorite[aria-pressed="true"] { border:0; color:#3643ba; background:transparent; }
.scenario-card-actions .scenario-card-favorite[aria-pressed="true"] svg { fill:currentColor; }
.scenario-card-actions .scenario-card-favorite[aria-pressed="true"] .scenario-favorite-plus { display:none; }
.scenario-card-open { color:#fff !important; border-color:#3643ba !important; background:#3643ba !important; }
.scenario-card-open:hover { background:#2d39a5 !important; }
.scenario-card-open svg { width:11px; height:11px; fill:none; stroke:currentColor; stroke-width:2; stroke-linecap:round; stroke-linejoin:round; }
.scenario-card-open .ti { width:11px; height:11px; display:block; font-size:0; }
.scenario-card-open .ti::after { content:""; display:block; width:100%; height:100%; background:currentColor; -webkit-mask:url("data:image/svg+xml,%3Csvg xmlns='http://www.w3.org/2000/svg' viewBox='0 0 24 24'%3E%3Cpath d='M5 12h13M13 6l6 6-6 6' fill='none' stroke='black' stroke-width='2' stroke-linecap='round' stroke-linejoin='round'/%3E%3C/svg%3E") center/contain no-repeat; mask:url("data:image/svg+xml,%3Csvg xmlns='http://www.w3.org/2000/svg' viewBox='0 0 24 24'%3E%3Cpath d='M5 12h13M13 6l6 6-6 6' fill='none' stroke='black' stroke-width='2' stroke-linecap='round' stroke-linejoin='round'/%3E%3C/svg%3E") center/contain no-repeat; }

/* Titles are renamed only in Save Report; readonly inputs remain keyboard-focusable. */
.v2-qbi-title-input[readonly] { cursor:default; border-color:transparent !important; background:transparent; }
.v2-qbi-title-input[readonly]:hover { border-color:transparent !important; }
.v2-qbi-title-input[readonly]:focus-visible { border-color:transparent !important; outline:2px solid rgba(54,67,186,.48); outline-offset:2px; }
.v2-qbi-shell.has-template-label .v2-preview-badge { display:inline-flex; white-space:nowrap; }

.runtime-dashboard-page { height:calc(100dvh - 50px); min-height:0; display:grid; grid-template-rows:auto auto minmax(0,1fr); background:var(--dec-content-on-gray); }
.runtime-dashboard-page[hidden] { display:none; }
.runtime-dashboard-head[hidden] { display:none; }
.runtime-dashboard-head { min-height:76px; display:grid; grid-template-columns:32px minmax(0,1fr); align-items:center; gap:14px; padding:12px 24px; border-bottom:1px solid #d9d9d9; background:var(--dec-content-inverse); }
.runtime-dashboard-head > button { width:32px; height:32px; display:grid; place-items:center; padding:0; border:0; color:var(--dec-content-neutral); background:transparent; cursor:pointer; font-size:24px; font-weight:650; line-height:1; }
.runtime-dashboard-head > button:hover,.runtime-dashboard-head > button:focus-visible { color:var(--dec-content-brand); outline:0; }
.runtime-dashboard-heading { min-width:0; }
.runtime-dashboard-parent { display:block; color:var(--dec-content-tertiary); font-size:10px; font-weight:700; letter-spacing:.04em; }
.runtime-dashboard-title-line { min-width:0; display:flex; align-items:center; column-gap:16px; row-gap:8px; margin-top:2px; }
.runtime-dashboard-title-line h1 { min-width:0; flex:0 1 auto; margin:0; overflow:hidden; color:var(--dec-content-neutral); font-size:22px; line-height:1.1; text-overflow:ellipsis; white-space:nowrap; }
.runtime-dashboard-favorite { width:28px; height:28px; flex:none; display:grid; place-items:center; padding:0; border:0; border-radius:6px; color:var(--dec-content-quiet); background:transparent; cursor:pointer; }
.runtime-dashboard-favorite svg { width:18px; height:18px; fill:none; stroke:currentColor; stroke-width:1.8; stroke-linecap:round; stroke-linejoin:round; }
.runtime-dashboard-favorite:hover,.runtime-dashboard-favorite:focus-visible { color:var(--dec-content-brand); background:#f1f2fb; outline:0; }
.runtime-dashboard-favorite:focus-visible { box-shadow:0 0 0 2px rgba(54,67,186,.2); }
.runtime-dashboard-favorite[aria-pressed="true"] { color:var(--dec-content-brand); }
.runtime-dashboard-favorite[aria-pressed="true"] svg { fill:currentColor; }
.runtime-dashboard-favorite:disabled { cursor:wait; opacity:.55; }
.runtime-dashboard-meta { flex:none; display:flex; align-items:center; gap:0; margin:0 0 0 auto; padding:0; color:var(--dec-content-tertiary); font-size:10px; list-style:none; white-space:nowrap; }
.runtime-dashboard-meta li { display:flex; align-items:baseline; }
.runtime-dashboard-meta li + li::before { content:"·"; margin:0 8px; color:#c9c9c9; }
.runtime-dashboard-meta strong { margin-right:3px; color:var(--dec-content-quiet); font-variant-numeric:tabular-nums; }
.runtime-saved-views { position:relative; flex:none; }
.runtime-saved-views[hidden] { display:none; }
.runtime-saved-view-trigger { min-width:120px; max-width:220px; height:32px; display:flex; align-items:center; justify-content:space-between; gap:10px; padding:0 11px; border:1px solid #d7d9df; border-radius:7px; color:var(--dec-content-neutral); background:var(--dec-content-inverse); cursor:pointer; font:inherit; font-size:12px; font-weight:650; }
.runtime-saved-view-trigger span { overflow:hidden; text-overflow:ellipsis; white-space:nowrap; }
.runtime-saved-view-trigger:hover,.runtime-saved-view-trigger:focus-visible { border-color:var(--dec-content-brand); color:var(--dec-content-brand); outline:0; }
.runtime-saved-view-menu { position:absolute; top:38px; left:0; z-index:20; width:min(340px,calc(100vw - 32px)); padding:7px; border:1px solid #dedfe4; border-radius:10px; background:var(--dec-content-inverse); box-shadow:0 16px 40px rgba(20,27,61,.18); }
.runtime-saved-view-menu[hidden] { display:none; }
.runtime-saved-view-menu button { border:0; color:var(--dec-content-neutral); background:transparent; cursor:pointer; font:inherit; font-size:12px; }
.runtime-saved-view-original,.runtime-saved-view-create { width:100%; min-height:38px; display:flex; align-items:center; gap:8px; padding:0 10px; border-radius:7px !important; text-align:left; }
.runtime-saved-view-original:hover,.runtime-saved-view-original:focus-visible,.runtime-saved-view-create:hover,.runtime-saved-view-create:focus-visible { color:var(--dec-content-brand); background:#f1f2fb; outline:0; }
.runtime-saved-view-original[aria-checked="true"] { color:var(--dec-content-brand); background:#f1f2fb; font-weight:700; }
.runtime-saved-view-list { padding:5px 0; border-top:1px solid #ececf0; border-bottom:1px solid #ececf0; }
.runtime-saved-view-list:empty { display:none; }
.runtime-saved-view-row { min-height:40px; display:grid; grid-template-columns:minmax(0,1fr) repeat(3,28px); align-items:center; gap:2px; border-radius:7px; }
.runtime-saved-view-row:hover { background:#f7f7f9; }
.runtime-saved-view-select { min-width:0; height:36px; padding:0 9px; overflow:hidden; border-radius:7px; text-align:left; text-overflow:ellipsis; white-space:nowrap; }
.runtime-saved-view-select[aria-checked="true"] { color:var(--dec-content-brand); font-weight:700; }
.runtime-saved-view-select:disabled { color:var(--dec-content-tertiary); cursor:not-allowed; }
.runtime-saved-view-action { width:28px; height:28px; display:grid; place-items:center; padding:0; border-radius:6px !important; color:var(--dec-content-quiet) !important; }
.runtime-saved-view-action:hover,.runtime-saved-view-action:focus-visible { color:var(--dec-content-brand) !important; background:#eceef9; outline:0; }
.runtime-saved-view-action.is-default { color:#a66a00 !important; }
.runtime-saved-view-outdated { display:block; color:#8a5a00; font-size:9px; font-weight:650; }
.runtime-saved-view-dialog { width:min(520px,calc(100vw - 32px)); }
.runtime-saved-view-summary { display:flex; flex-wrap:wrap; gap:6px; }
.runtime-saved-view-summary span { padding:5px 8px; border-radius:5px; color:var(--dec-content-quiet); background:#f0f1f5; font-size:11px; font-weight:650; }
.runtime-saved-view-default { display:flex !important; flex-direction:row !important; align-items:center; gap:9px; }
.runtime-saved-view-default input { width:16px !important; height:16px; margin:0; accent-color:var(--dec-content-brand); }
.runtime-global-filters { min-height:58px; display:flex; align-items:flex-end; gap:16px; padding:10px 24px; border-bottom:1px solid #e2e3e7; background:#f8f8fa; }
.runtime-global-filters[hidden] { display:none; }
.runtime-global-filters-title { flex:none; align-self:center; color:var(--dec-content-neutral); font-size:12px; font-weight:750; }
.runtime-global-filter-fields { min-width:0; display:flex; flex:1; flex-wrap:wrap; gap:10px; }
.runtime-global-filter-fields label { min-width:168px; display:grid; gap:3px; color:var(--dec-content-quiet); font-size:10px; font-weight:650; }
.runtime-global-filter-fields select { width:100%; height:32px; padding:0 30px 0 9px; border:1px solid #d7d9df; border-radius:6px; color:var(--dec-content-neutral); background:var(--dec-content-inverse); font:inherit; font-size:12px; }
.runtime-global-filter-fields select:focus-visible { border-color:var(--dec-content-brand); outline:2px solid rgba(54,67,191,.18); outline-offset:1px; }
.runtime-global-filter-actions { flex:none; display:flex; gap:8px; }
.runtime-global-filter-actions button { height:32px; padding:0 12px; border:1px solid #cfd1d8; border-radius:6px; color:var(--dec-content-neutral); background:var(--dec-content-inverse); cursor:pointer; font:inherit; font-size:12px; font-weight:650; }
.runtime-global-filter-actions button:hover,.runtime-global-filter-actions button:focus-visible { border-color:var(--dec-content-brand); color:var(--dec-content-brand); outline:0; }
.runtime-global-filter-actions button.is-primary { border-color:var(--dec-content-brand); color:var(--dec-content-inverse); background:var(--dec-content-brand); }
.runtime-global-filter-actions button:disabled { border-color:#dddfe4; color:#9a9ca5; background:#eff0f3; cursor:not-allowed; }
.runtime-dashboard-stage { position:relative; grid-row:3; min-height:0; margin:0; overflow:hidden; border-radius:0; background:var(--dec-content-inverse); box-shadow:none; }
.runtime-dashboard-stage iframe { width:100%; height:100%; min-height:0; display:block; border:0; background:var(--dec-content-inverse); }
.runtime-dashboard-loading { position:absolute; inset:0; z-index:1; display:grid; place-items:center; margin:0; color:var(--dec-content-quiet); background:var(--dec-content-inverse); font-size:13px; }
.runtime-dashboard-loading[hidden] { display:none; }
.topic-recent-empty { display:block; padding:7px 0; color:rgba(255,255,255,.64); font-size:11px; }

/* Portal-owned dashboard composer backed by real Quick BI components. */
.dashboard-builder-page { min-height:calc(100dvh - 50px); padding-top:40px; padding-bottom:24px; }
.dashboard-builder-head { display:flex; align-items:center; justify-content:space-between; gap:20px; margin-bottom:20px; }
.dashboard-builder-head .v2-page-head-main { min-width:0; flex:1; }
.dashboard-builder-head h1 { margin:0; font-size:clamp(32px,3vw,40px); line-height:1; letter-spacing:-.05em; }
.analytics-hero h1,.v2-manager-head h1,.dashboard-builder-head h1,.runtime-homepage-config-head h1 { font-size:var(--runtime-page-title-size); line-height:var(--runtime-page-title-leading); letter-spacing:var(--runtime-page-title-tracking); }
.v2-manager-head > :first-child { align-self:flex-start; }
.dashboard-builder-head { align-items:flex-start; }
.dashboard-builder-actions { display:flex; align-items:center; gap:8px; flex:none; margin-bottom:2px; }
.dashboard-builder-actions .v2-action { min-height:42px; display:inline-flex; align-items:center; justify-content:center; margin:0; }
.dashboard-builder-add { flex:none; }
.dashboard-builder-canvas { min-height:620px; padding:16px; overflow:hidden; border-radius:16px; background:var(--dec-content-inverse); }
.dashboard-builder-grid { display:grid; grid-template-columns:repeat(12,minmax(0,1fr)); gap:14px; align-items:start; }
.dashboard-builder-grid.is-new-row-target::after { content:"Drop on a new row"; grid-column:1 / -1; min-height:96px; border:2px dashed #7f8cff; border-radius:12px; display:grid; place-items:center; color:#616161; background:#f8f9ff; font-size:13px; }
.v2-native-dataset-choice { background:transparent; }
.v2-native-dataset-choice:hover { background:#edf3ff; }
.v2-native-dataset-choice[aria-selected="true"] { color:#286ee8; background:#edf3ff; }
.v2-native-dataset-choice:disabled { color:var(--dec-content-tertiary); background:transparent; cursor:not-allowed; opacity:.72; }
.dashboard-builder-empty { min-height:520px; display:grid; place-items:center; align-content:center; gap:10px; color:var(--dec-content-quiet); text-align:center; }
.dashboard-builder-empty[hidden] { display:none; }
.dashboard-builder-empty > .ti { color:var(--dec-content-brand); font-size:42px; }
.dashboard-builder-empty h2,.dashboard-builder-empty p { margin:0; }
.dashboard-builder-empty h2 { color:var(--dec-content-neutral); font-size:20px; }
.dashboard-builder-empty p { font-size:13px; }
.dashboard-builder-card { position:relative; min-width:0; overflow:visible; display:flex; flex-direction:column; border:1px solid #d9d9d9; border-radius:12px; background:var(--dec-content-inverse); box-shadow:0 5px 15px rgba(20,27,61,.05); }
.dashboard-builder-card:has(.dashboard-card-menu:not([hidden])) { z-index:6; }
.dashboard-builder-card:fullscreen { width:100vw; height:100vh !important; border:0; border-radius:0; background:var(--dec-content-inverse); }
.dashboard-builder-card:fullscreen .dashboard-card-toolbar { opacity:1; }
.dashboard-builder-card.is-dragging { opacity:.56; outline:2px dashed var(--dec-content-brand); }
.dashboard-builder-card.is-drag-over { outline:3px solid rgba(54,67,186,.28); outline-offset:2px; }
.dashboard-card-toolbar { position:absolute; inset:0; z-index:4; pointer-events:none; opacity:0; transition:opacity 150ms ease; }
.dashboard-builder-card:hover .dashboard-card-toolbar,.dashboard-builder-card:focus-within .dashboard-card-toolbar { opacity:1; }
.dashboard-card-toolbar > button { pointer-events:auto; border-radius:6px; color:var(--dec-content-quiet); background:transparent; box-shadow:none; }
.dashboard-drag-handle,.dashboard-card-action,.dashboard-resize-handle,.dashboard-icon-button { display:grid; place-items:center; padding:0; border:0; color:var(--dec-content-quiet); background:transparent; cursor:pointer; }
.dashboard-drag-handle { position:absolute; top:6px; left:50%; width:30px; height:26px; transform:translateX(-50%); cursor:grab; touch-action:none; font-size:17px; }
.dashboard-drag-handle:active { cursor:grabbing; }
.dashboard-card-action { position:absolute; top:7px; left:8px; width:28px; height:28px; border-radius:6px; font-size:20px; line-height:1; }
.dashboard-card-action:hover,.dashboard-card-action:focus-visible,.dashboard-icon-button:hover,.dashboard-icon-button:focus-visible { color:var(--dec-content-brand); background:#f1f2fb; outline:0; }
.dashboard-card-menu { position:absolute; top:39px; left:8px; z-index:5; width:190px; padding:6px; border:1px solid #e0e0e0; border-radius:10px; background:var(--dec-content-inverse); box-shadow:0 14px 34px rgba(20,27,61,.18); pointer-events:auto; }
.dashboard-card-menu[hidden] { display:none; }
.dashboard-card-menu button { width:100%; min-height:36px; padding:0 10px; border:0; border-radius:6px; color:var(--dec-content-neutral); background:transparent; cursor:pointer; font:inherit; font-size:12px; text-align:left; }
.dashboard-card-menu button:hover,.dashboard-card-menu button:focus-visible { color:var(--dec-content-brand); background:#f1f2fb; outline:0; }
.dashboard-card-menu button.is-danger { color:#ba1a1a; }
.dashboard-card-menu hr { height:1px; margin:5px 8px; border:0; background:#e8e8e8; }
.dashboard-card-title { position:relative; z-index:2; flex:none; min-height:38px; margin:0; padding:11px 48px 9px 14px; overflow:hidden; border-bottom:1px solid #eceef2; color:var(--dec-content-neutral); background:var(--dec-content-inverse); font-size:13px; font-weight:650; line-height:18px; text-overflow:ellipsis; white-space:nowrap; }
.dashboard-card-title[hidden] { display:none; }
.dashboard-card-select { position:absolute; top:10px; left:10px; z-index:5; width:28px; height:28px; display:grid; place-items:center; border-radius:6px; background:rgba(255,255,255,.95); box-shadow:0 2px 8px rgba(16,16,16,.12); }
.dashboard-card-select[hidden] { display:none; }
.dashboard-card-select input { width:16px; height:16px; margin:0; accent-color:var(--dec-content-brand); }
.dashboard-card-frame-wrap { position:relative; width:100%; min-height:0; flex:1; overflow:hidden; border-radius:inherit; background:var(--dec-content-inverse); }
.dashboard-card-frame-wrap iframe { position:absolute; top:-36px; left:-32px; width:calc(100% + 64px); height:calc(100% + 72px); border:0; background:var(--dec-content-inverse); }
.dashboard-card-frame-wrap > p { position:absolute; inset:0; z-index:1; display:grid; place-items:center; margin:0; color:var(--dec-content-quiet); background:var(--dec-content-inverse); font-size:12px; }
.dashboard-card-frame-wrap > p[hidden] { display:none; }
.dashboard-builder-card.is-interacting iframe { visibility:hidden; }
.dashboard-builder-card.is-interacting .dashboard-card-frame-wrap::after { content:"Adjusting layout…"; position:absolute; inset:0; z-index:2; display:grid; place-items:center; color:var(--dec-content-tertiary); background:#f7f7f7; font-size:12px; }
.v2-toast { top:18px !important; right:auto !important; bottom:auto !important; left:50% !important; transform:translate(-50%,-10px) !important; }
.v2-toast.is-visible { transform:translate(-50%,0) !important; }
.dashboard-resize-handle { position:absolute; right:4px; bottom:4px; z-index:2; width:22px; height:22px; cursor:nwse-resize; touch-action:none; }
.dashboard-resize-handle::after { content:""; position:absolute; right:3px; bottom:3px; width:8px; height:8px; border-right:1px solid var(--dec-content-tertiary); border-bottom:1px solid var(--dec-content-tertiary); }
.dashboard-picker { width:min(1180px,calc(100vw - 40px)); height:min(760px,calc(100dvh - 40px)); max-width:none; max-height:none; padding:0; border:0; border-radius:16px; color:var(--dec-content-neutral); background:var(--dec-content-inverse); box-shadow:0 30px 90px rgba(16,16,16,.28); }
.dashboard-picker::backdrop { background:rgba(16,16,16,.48); backdrop-filter:blur(3px); }
.dashboard-picker-shell { height:100%; display:grid; grid-template-rows:78px minmax(0,1fr) 68px; }
.dashboard-picker-head,.dashboard-picker-foot { display:flex; align-items:center; justify-content:space-between; gap:20px; padding:0 24px; }
.dashboard-picker-head { border-bottom:1px solid #e3e3e3; }
.dashboard-picker-head .eyebrow { margin:0 0 3px; color:var(--dec-content-brand); font-size:10px; font-weight:750; letter-spacing:.12em; }
.dashboard-picker-head h2 { margin:0; font-size:22px; }
.dashboard-icon-button { width:36px; height:36px; border-radius:50%; font-size:20px; }
.dashboard-picker-body { min-height:0; display:grid; grid-template-columns:260px minmax(0,1fr); }
.dashboard-picker-list-panel { min-height:0; padding:18px 14px; overflow:auto; border-right:1px solid #e3e3e3; background:#fafafa; }
.dashboard-picker-search { height:40px; display:flex; align-items:center; gap:8px; padding:0 10px; border:1px solid #cfcfcf; border-radius:8px; background:var(--dec-content-inverse); }
.dashboard-picker-search:focus-within { border-color:var(--dec-content-brand); box-shadow:0 0 0 3px rgba(54,67,186,.12); }
.dashboard-picker-search input { min-width:0; width:100%; border:0; outline:0; background:transparent; font:inherit; font-size:12px; }
.dashboard-picker-label { margin:16px 0 7px; color:var(--dec-content-tertiary); font-size:10px; font-weight:720; text-transform:uppercase; letter-spacing:.06em; }
.dashboard-picker-list { display:grid; gap:4px; }
.dashboard-picker-option { width:100%; min-height:40px; padding:0 11px; border:0; border-radius:7px; color:var(--dec-content-neutral); background:transparent; text-align:left; cursor:pointer; font-size:12px; }
.dashboard-picker-option:hover { background:#ededed; }
.dashboard-picker-option[aria-selected="true"] { color:var(--dec-content-inverse); background:var(--dec-content-brand); font-weight:700; }
.dashboard-component-panel { min-width:0; min-height:0; display:grid; grid-template-rows:64px minmax(0,1fr); padding:0 20px 20px; }
.dashboard-component-panel > header { display:flex; align-items:center; justify-content:space-between; gap:18px; }
.dashboard-component-panel h3 { margin:0; font-size:16px; }
.dashboard-component-panel header .dashboard-picker-label { margin:0 0 3px; }
.dashboard-component-panel header > span { color:var(--dec-content-tertiary); font-size:11px; }
.dashboard-component-grid { min-height:0; overflow:auto; display:grid; grid-template-columns:repeat(2,minmax(300px,1fr)); align-content:start; gap:12px; padding:2px; }
.dashboard-component-tile { min-width:0; min-height:270px; overflow:hidden; border:1px solid #d9d9d9; border-radius:10px; background:var(--dec-content-inverse); }
.dashboard-component-tile.is-selected { border-color:var(--dec-content-brand); box-shadow:0 0 0 2px rgba(54,67,186,.14); }
.dashboard-component-tile > header { height:42px; display:flex; align-items:center; gap:8px; padding:0 11px; border-bottom:1px solid #e5e5e5; }
.dashboard-component-tile input { width:16px; height:16px; flex:none; accent-color:var(--dec-content-brand); }
.dashboard-component-tile strong { min-width:0; flex:1; overflow:hidden; text-overflow:ellipsis; white-space:nowrap; font-size:11px; }
.dashboard-component-tile small { color:var(--dec-content-tertiary); font-size:9px; }
.dashboard-component-preview { position:relative; height:226px; background:var(--dec-content-inverse); }
.dashboard-component-preview iframe { position:absolute; inset:0; width:100%; height:100%; border:0; background:var(--dec-content-inverse); }
.dashboard-component-placeholder { height:100%; display:grid; place-items:center; gap:8px; align-content:center; color:var(--dec-content-tertiary); font-size:11px; text-align:center; }
.dashboard-component-placeholder button { min-height:32px; padding:0 12px; border:1px solid #cfcfcf; border-radius:7px; color:var(--dec-content-neutral); background:var(--dec-content-inverse); cursor:pointer; font-size:11px; }
.dashboard-picker-foot { border-top:1px solid #e3e3e3; }
.dashboard-picker-foot > p { margin:0; color:var(--dec-content-tertiary); font-size:11px; }
.dashboard-picker-foot > div { display:flex; gap:8px; }

/* Draggable Miku launcher and focused Portal assistant panel. */
.portal-assistant { position:fixed; right:24px; bottom:18px; z-index:80; width:88px; height:88px; user-select:none; }
.assistant-launcher { position:relative; width:88px; height:88px; display:grid; place-items:center; padding:0; border:0; border-radius:30px; background:transparent; cursor:grab; touch-action:none; filter:drop-shadow(0 10px 16px rgba(18,24,71,.2)); animation:assistant-float 3.8s ease-in-out infinite; }
.assistant-launcher img { width:100%; height:100%; object-fit:contain; pointer-events:none; -webkit-user-drag:none; }
.assistant-launcher:focus-visible { outline:3px solid rgba(54,67,186,.32); outline-offset:4px; }
.portal-assistant.is-dragging .assistant-launcher { cursor:grabbing; }
.runtime-agent-panel { position:absolute; right:calc(100% + 12px); bottom:2px; width:min(440px,calc(100vw - 132px)); height:min(660px,calc(100vh - 32px)); display:grid; grid-template-rows:auto minmax(180px,1fr) auto; overflow:hidden; border:1px solid #dfe2f0; border-radius:20px 20px 8px 20px; color:var(--dec-content-neutral); background:var(--dec-content-inverse); box-shadow:0 28px 72px rgba(25,31,76,.2),0 3px 12px rgba(25,31,76,.08); user-select:text; }
.runtime-agent-panel[hidden] { display:none; }
.runtime-agent-head { display:flex; align-items:center; justify-content:space-between; min-height:52px; padding:8px 14px 8px 16px; border-bottom:1px solid #eceef5; background:#fff; }
.runtime-agent-brand { display:flex; align-items:center; gap:9px; min-width:0; }
.runtime-agent-brand strong { font-size:14px; line-height:1.2; letter-spacing:-.01em; }
.runtime-agent-close { width:32px; height:32px; padding:0; border:0; border-radius:8px; color:var(--dec-content-quiet); background:transparent; cursor:pointer; font-size:22px; line-height:1; transition:background .18s ease,color .18s ease,transform .18s ease; }
.runtime-agent-close:hover { color:var(--dec-content-neutral); background:#eceef5; }
.runtime-agent-close:active { transform:translateY(1px); }
.runtime-agent-close:focus-visible { outline:3px solid rgba(54,67,186,.18); outline-offset:2px; }
.runtime-agent-messages { min-height:0; overflow:auto; display:flex; flex-direction:column; gap:18px; padding:22px 22px 26px; background:#fff; scroll-behavior:smooth; }
.runtime-agent-suggestions { min-height:100%; display:grid; align-content:start; justify-items:start; padding:12px 2px 20px; }
.runtime-agent-suggestions[hidden] { display:none; }
.runtime-agent-welcome-mascot { width:74px; height:74px; margin:0 0 12px -4px; object-fit:contain; filter:drop-shadow(0 8px 10px rgba(18,24,71,.14)); }
.runtime-agent-suggestions h2 { margin:0; max-width:360px; color:var(--dec-content-neutral); font-size:27px; font-weight:780; line-height:1.08; letter-spacing:-.04em; text-wrap:balance; }
.runtime-agent-suggestions > p { margin:34px 0 12px; color:var(--dec-content-neutral); font-size:13px; font-weight:750; }
.runtime-agent-starters { width:100%; display:grid; gap:8px; }
.runtime-agent-suggestions button { width:100%; min-height:50px; display:grid; grid-template-columns:minmax(0,1fr) 28px; align-items:center; gap:10px; padding:10px 10px 10px 14px; border:1px solid #dfe2f0; border-radius:10px; color:var(--dec-content-neutral); background:#f8f8fb; cursor:pointer; text-align:left; font-size:12px; font-weight:650; line-height:1.45; transition:border-color .18s ease,background .18s ease,transform .18s ease; }
.runtime-agent-suggestions button i { width:28px; height:28px; display:grid; place-items:center; border-radius:7px; color:var(--dec-content-brand); background:#fff; font-style:normal; font-size:15px; transition:color .18s ease,background .18s ease,transform .18s ease; }
.runtime-agent-suggestions button:hover { border-color:#aeb5df; background:#f4f6ff; }
.runtime-agent-suggestions button:hover i { color:#fff; background:var(--dec-content-brand); transform:translate(1px,-1px); }
.runtime-agent-suggestions button:active { transform:translateY(1px); }
.runtime-agent-suggestions button:focus-visible { outline:3px solid rgba(54,67,186,.16); outline-offset:1px; }
.runtime-agent-message { max-width:88%; font-size:12px; line-height:1.6; overflow-wrap:anywhere; }
.runtime-agent-message p { margin:0; white-space:pre-wrap; }
.runtime-agent-message.is-user { align-self:flex-end; padding:10px 13px; border-radius:13px 13px 4px 13px; color:#fff; background:var(--dec-content-brand); }
.runtime-agent-message.is-assistant { align-self:stretch; max-width:100%; display:grid; grid-template-columns:30px minmax(0,1fr); align-items:start; gap:10px; color:var(--dec-content-neutral); }
.runtime-agent-avatar { width:30px; height:30px; object-fit:contain; border-radius:9px; background:#f4f6ff; filter:drop-shadow(0 4px 6px rgba(18,24,71,.1)); }
.runtime-agent-message-body { min-width:0; padding:5px 0; }
.runtime-agent-answer { display:grid; gap:8px; }
.runtime-agent-answer:empty { display:none; }
.runtime-agent-answer p { margin:0; white-space:pre-wrap; }
.runtime-agent-answer h3 { margin:5px 0 0; color:#252b3b; font-size:12px; font-weight:780; line-height:1.45; letter-spacing:-.005em; }
.runtime-agent-answer strong { color:#252b3b; font-weight:780; }
.runtime-agent-answer ul,.runtime-agent-answer ol { display:grid; gap:3px; margin:0; padding-inline-start:19px; }
.runtime-agent-answer li { padding-inline-start:2px; }
.runtime-agent-answer li::marker { color:var(--dec-content-brand); font-weight:750; }
.runtime-agent-actions { display:flex; flex-wrap:wrap; gap:8px; margin-top:8px; }
.runtime-agent-action { min-height:28px; width:fit-content; display:inline-flex; align-items:center; gap:5px; padding:2px 0; border:0; border-radius:4px; color:var(--dec-content-brand); background:transparent; cursor:pointer; font:inherit; font-weight:720; text-align:left; transition:color .16s ease,transform .16s ease; }
.runtime-agent-action-icon { font-size:14px; line-height:1; transition:transform .16s ease; }
.runtime-agent-action:hover { color:#202c9c; }
.runtime-agent-action:hover .runtime-agent-action-icon { transform:translate(2px,-2px); }
.runtime-agent-action:active { transform:translateY(1px); }
.runtime-agent-action:focus-visible { outline:3px solid rgba(54,67,186,.18); outline-offset:3px; }
.runtime-agent-action:disabled { cursor:wait; opacity:.55; }
.runtime-agent-trace { margin:0 0 12px; border-top:1px solid #e5e7ef; border-bottom:1px solid #e5e7ef; color:#404657; }
.runtime-agent-trace summary { position:relative; min-height:38px; display:grid; grid-template-columns:minmax(0,1fr) auto; align-items:center; gap:10px; padding:8px 2px 8px 20px; cursor:pointer; list-style:none; font-size:11px; line-height:1.4; }
.runtime-agent-trace summary::-webkit-details-marker { display:none; }
.runtime-agent-trace summary::marker { content:""; }
.runtime-agent-trace summary::before { content:""; position:absolute; inset-inline-start:5px; width:6px; height:6px; border-right:1.5px solid #656c7e; border-bottom:1.5px solid #656c7e; transform:rotate(-45deg); transform-origin:center; transition:transform .16s ease; }
.runtime-agent-trace[open] summary::before { transform:rotate(45deg); }
.runtime-agent-trace summary:hover .runtime-agent-trace-summary { color:var(--dec-content-brand); }
.runtime-agent-trace summary:focus-visible { border-radius:6px; outline:3px solid rgba(54,67,186,.16); outline-offset:2px; }
.runtime-agent-trace-summary { min-width:0; overflow-wrap:anywhere; font-weight:700; transition:color .16s ease; }
.runtime-agent-trace-state { color:#636a7a; font-size:10px; font-weight:650; white-space:nowrap; }
.runtime-agent-trace.is-live .runtime-agent-trace-state { color:var(--dec-content-brand); }
.runtime-agent-trace.is-failed .runtime-agent-trace-state { color:#9d241b; }
.runtime-agent-trace-list { max-height:230px; display:grid; gap:0; overflow:auto; margin:0; padding:2px 2px 8px; border-top:1px solid #eef0f5; list-style:none; }
.runtime-agent-trace-item { position:relative; min-width:0; display:grid; grid-template-columns:10px minmax(0,1fr); gap:8px; padding:8px 4px; }
.runtime-agent-trace-item + .runtime-agent-trace-item { border-top:1px solid #f0f1f5; }
.runtime-agent-trace-marker { width:7px; height:7px; margin-top:5px; border:1.5px solid #81889a; border-radius:50%; background:#fff; }
.runtime-agent-trace-item.is-complete .runtime-agent-trace-marker { border-color:#778092; background:#778092; }
.runtime-agent-trace-item.is-active .runtime-agent-trace-marker { border-color:var(--dec-content-brand); background:#fff; box-shadow:0 0 0 2px rgba(54,67,186,.12); }
.runtime-agent-trace-item.is-failed .runtime-agent-trace-marker { border-color:#9d241b; background:#fff4f2; }
.runtime-agent-trace-item.is-tool .runtime-agent-trace-marker { border-color:var(--dec-content-brand); background:#eef0ff; }
.runtime-agent-trace-item.is-tool .runtime-agent-trace-marker { border-radius:2px; }
.runtime-agent-trace-item.is-response.is-complete .runtime-agent-trace-marker { border-color:#13795b; background:#13795b; }
.runtime-agent-trace-item.is-tool.is-returned .runtime-agent-trace-marker { border-color:#13795b; background:#dff5eb; }
.runtime-agent-trace.is-live .runtime-agent-trace-item.is-active .runtime-agent-trace-marker { animation:agent-trace-pulse 1.1s ease-in-out infinite; }
.runtime-agent-trace-copy { min-width:0; display:grid; gap:1px; }
.runtime-agent-trace-copy strong { color:#303646; font-size:11px; font-weight:700; line-height:1.4; overflow-wrap:anywhere; }
.runtime-agent-trace-copy > span { color:#636a7a; font-size:10px; line-height:1.45; overflow-wrap:anywhere; }
.runtime-agent-message.is-pending .runtime-agent-message-body { color:var(--dec-content-tertiary); }
.runtime-agent-message.is-pending .runtime-agent-message-body::after { content:""; display:inline-block; width:18px; height:4px; margin-left:6px; border-radius:2px; background:linear-gradient(90deg,var(--dec-content-tertiary) 0 20%,transparent 20% 40%,var(--dec-content-tertiary) 40% 60%,transparent 60% 80%,var(--dec-content-tertiary) 80%); animation:agent-thinking 1s steps(3,end) infinite; }
.runtime-agent-message.is-error .runtime-agent-answer { display:block; padding:8px 10px; border-radius:8px; color:#9d241b; background:#fff4f2; }
.runtime-agent-form { display:grid; gap:7px; padding:11px 14px 12px; border-top:1px solid #eceef5; background:#fff; }
.runtime-agent-composer { display:grid; grid-template-columns:minmax(0,1fr) 36px; align-items:end; gap:8px; padding:7px; border:1px solid #cfd3e3; border-radius:12px; background:#fff; transition:border-color .18s ease,box-shadow .18s ease; }
.runtime-agent-composer:focus-within { border-color:var(--dec-content-brand); box-shadow:0 0 0 3px rgba(54,67,186,.13); }
.runtime-agent-form textarea { min-height:48px; max-height:120px; resize:none; padding:8px 7px; border:0; outline:0; color:var(--dec-content-neutral); background:#fff; font:inherit; font-size:12px; line-height:1.5; }
.runtime-agent-form button { width:36px; height:36px; display:grid; place-items:center; padding:0; border:1px solid var(--dec-content-brand); border-radius:9px; color:#fff; background:var(--dec-content-brand); cursor:pointer; font-size:17px; font-weight:750; transition:background .18s ease,transform .18s ease,opacity .18s ease; }
.runtime-agent-form button:hover { background:#2d39a5; }
.runtime-agent-form button:active { transform:translateY(1px); }
.runtime-agent-form button:focus-visible { outline:3px solid rgba(54,67,186,.18); outline-offset:2px; }
.runtime-agent-form button:disabled { cursor:not-allowed; opacity:.28; }
.runtime-agent-form textarea:disabled { cursor:wait; opacity:.62; }
.runtime-agent-form > p { margin:0 2px; color:var(--dec-content-tertiary); font-size:9px; line-height:1.4; }
.sr-only { position:absolute; width:1px; height:1px; padding:0; margin:-1px; overflow:hidden; clip:rect(0,0,0,0); white-space:nowrap; border:0; }
@keyframes assistant-float { 0%,100% { transform:translateY(0) rotate(-1deg); } 50% { transform:translateY(-7px) rotate(1.5deg); } }
@keyframes agent-thinking { 0%,100% { opacity:.35; } 50% { opacity:1; } }
@keyframes agent-trace-pulse { 0%,100% { transform:scale(.82); opacity:.5; } 50% { transform:scale(1); opacity:1; } }

@media (max-width:900px) {
  .runtime-filter-context,.runtime-filter-condition { grid-template-columns:1fr; }
  .runtime-auth { padding:16px; }
  .runtime-auth-card { padding:30px 24px; }
  [data-view="builder"] .v2-dataset-browser { grid-template-columns:1fr; }
  [data-view="builder"] .v2-dataset-master { min-height:300px; max-height:360px; border-right:0; border-bottom:1px solid #d9d9d9; }
  [data-view="builder"] .v2-dataset-list { max-height:290px; }
  .scenario-grid { grid-template-columns:repeat(2,minmax(0,1fr)); }
  .runtime-dashboard-title-line { flex-wrap:wrap; }
  .runtime-dashboard-meta { width:100%; margin-left:0; }
  .dashboard-component-grid { grid-template-columns:1fr; }
}
@media (max-width:720px) {
  :root { --runtime-page-title-size:clamp(32px,8.4vw,42px); }
  .v2-manager-page,.dashboard-builder-page,.runtime-homepage-config { padding-top:32px; }
  .runtime-global-search { width:132px; margin-right:8px; }
  .scenario-page { padding:10px 14px 28px; }
  .scenario-hero { flex-direction:column; }
  .scenario-grid { grid-template-columns:1fr; }
  .runtime-dashboard-head { grid-template-columns:28px minmax(0,1fr); padding:10px 14px; }
  .runtime-dashboard-head > button { width:28px; }
  .runtime-dashboard-title-line h1 { max-width:calc(100vw - 190px); }
  .runtime-dashboard-meta { max-width:100%; overflow-x:auto; }
  .runtime-global-filters { align-items:stretch; flex-direction:column; gap:8px; padding:10px 14px; }
  .runtime-global-filters-title { align-self:flex-start; }
  .runtime-global-filter-fields { display:grid; grid-template-columns:1fr; }
  .runtime-global-filter-fields label { min-width:0; }
  .runtime-global-filter-actions { justify-content:flex-end; }
  .portal-assistant { right:12px; bottom:12px; width:78px; height:78px; }
  .runtime-agent-panel { position:fixed; right:12px; bottom:102px; width:calc(100vw - 24px); height:min(660px,calc(100dvh - 120px)); border-radius:18px; }
  .assistant-launcher { width:78px; height:78px; }
  .dashboard-builder-head { align-items:flex-start; }
  .dashboard-builder-grid { grid-template-columns:1fr; }
  .dashboard-builder-card { grid-column:1 / -1 !important; }
  .dashboard-picker-body { grid-template-columns:1fr; }
  .dashboard-picker-list-panel { max-height:180px; border-right:0; border-bottom:1px solid #e3e3e3; }
  .dashboard-picker-foot > p { display:none; }
}
@media (prefers-reduced-motion:reduce) {
  .assistant-launcher { animation:none; }
  .runtime-agent-message.is-pending .runtime-agent-message-body::after { animation:none; }
  .runtime-agent-trace.is-live .runtime-agent-trace-item.is-active .runtime-agent-trace-marker { animation:none; }
  .scenario-card-visual,.scenario-card-actions button { transition:none; }
  .scenario-card:hover .scenario-card-visual,.scenario-card:focus-within .scenario-card-visual,.scenario-card-actions button:hover { transform:none; }
}

/* 2026-08-19 report workspaces: stable canvas, compact controls, and shared visual rhythm. */
* { scrollbar-width:thin; scrollbar-color:#d7dce4 transparent; }
*::-webkit-scrollbar { width:8px; height:8px; }
*::-webkit-scrollbar-track { background:transparent; }
*::-webkit-scrollbar-thumb { border:2px solid transparent; border-radius:999px; background:#d7dce4; background-clip:padding-box; }
*::-webkit-scrollbar-thumb:hover { background:#c7cdd7; background-clip:padding-box; }

.runtime-download-configuration > summary > span,
.runtime-download-columns header label,
.v2-qbi-shell.is-download .v2-native-footnote,
.v2-qbi-shell.is-analysis .v2-native-footnote { font-size:12px; line-height:1.45; }
.runtime-download-config-body > section { padding-block:12px; }
.runtime-download-columns > div { gap:7px; }
.runtime-download-column { border-left-width:3px; background:#fff !important; }
.runtime-download-column.is-dimension { border-left-color:#3478f6; }
.runtime-download-column.is-measure { border-left-color:#14a865; }
.runtime-download-column:focus-visible { outline:2px solid rgba(52,120,246,.28); outline-offset:1px; }

.runtime-download-dates { display:block; }
.runtime-download-dates > strong { display:block; margin-bottom:9px; }
.runtime-download-dates > div { gap:7px; }
.runtime-download-dates label { grid-template-columns:minmax(96px,140px) 142px auto 142px; }
.runtime-download-output { display:grid; justify-items:start; gap:5px; }
.runtime-download-mode { gap:18px; }
.runtime-download-mode button { padding:0; background:transparent !important; font-size:11px; font-weight:400; }
.runtime-download-mode button.is-active { color:#202631; background:transparent !important; font-weight:600; }

.v2-qbi-shell.is-download .v2-native-query-bar { position:relative; }
.runtime-download-filter-bar { min-height:50px; padding:7px 14px; }
.runtime-download-filter-list { min-width:0; }
.runtime-download-filter { max-width:min(440px,45vw); background:#f5f6f8; border-color:#e0e3e8; }
.runtime-download-filter > button:first-child { min-width:0; display:flex; padding:4px 7px 4px 9px; }
.runtime-download-filter > button:first-child span { overflow:hidden; color:#48505d; font-size:11px; text-overflow:ellipsis; white-space:nowrap; }
.v2-qbi-shell.is-download [data-v2-workspace-preview].runtime-preview-refresh { border-color:var(--dec-content-brand) !important; color:var(--dec-content-inverse) !important; background:var(--dec-content-brand) !important; }
.v2-qbi-shell .v2-qbi-top [data-v2-workspace-preview] { border-color:var(--dec-content-brand) !important; color:var(--dec-content-inverse) !important; background:var(--dec-content-brand) !important; }
.v2-qbi-shell .v2-qbi-top [data-v2-workspace-preview]:hover,.v2-qbi-shell .v2-qbi-top [data-v2-workspace-preview]:focus-visible { border-color:#2f399f !important; color:var(--dec-content-inverse) !important; background:#2f399f !important; }

/* Save dialogs keep labels and actions strong, but values inside field frames remain regular. */
.v2-folder-form input:not([type="checkbox"]):not([type="radio"]),
.v2-folder-form select,
.v2-folder-form textarea,
.v2-save-form input,
.v2-save-form select,
.v2-save-form textarea,
.v2-folder-form .v2-location-trigger,
.v2-save-form .v2-location-trigger,
.v2-save-form .v2-theme-filter-trigger,
.v2-save-form .v2-theme-filter-option { font-weight:400; }
.runtime-result-is-computing { position:relative; }
.runtime-result-is-computing::after { content:"正在计算…"; position:absolute; z-index:9; inset:0; display:grid; place-items:center; color:#303743; background:rgba(255,255,255,.74); font-size:12px; font-weight:650; pointer-events:none; }
.v2-qbi-shell.is-download { height:calc(100dvh - 56px); min-height:0; }
.v2-qbi-shell.is-download .v2-qbi-body { height:100%; min-height:0; grid-template-rows:max-content max-content max-content minmax(0,1fr); overflow:hidden; }
.v2-qbi-shell.is-download .v2-editor-main { min-height:0; display:flex; flex-direction:column; }
.v2-qbi-shell.is-download .v2-native-query-bar { flex:none; }
.v2-qbi-shell.is-download .v2-editor-canvas { height:auto; min-height:0; flex:1 1 auto; box-sizing:border-box; }
.v2-qbi-shell.is-download .v2-editor-grid { height:100%; min-height:0; }
.v2-qbi-shell.is-download .v2-native-result { position:absolute; inset:0 0 28px; max-height:none; overflow:hidden; padding:0 12px; }
.v2-qbi-shell.is-download .v2-native-footnote { right:12px; bottom:0; left:12px; min-height:28px; display:flex; align-items:center; padding:0; }
.runtime-workbook-tabs { position:sticky; z-index:8; bottom:0; flex:none; }

.v2-qbi-shell.is-download .v2-native-sidepanel[data-v2-task-panel] { position:relative; top:auto; right:auto; bottom:auto; grid-column:1; grid-row:3 / 5; align-self:stretch; justify-self:end; width:282px; height:auto; min-height:0; max-height:none; overflow:auto; }
.v2-qbi-shell.is-download .v2-native-sidepanel[data-v2-task-panel] h3 { font-size:12px; }
.v2-qbi-shell.is-download .v2-native-task { grid-template-columns:18px minmax(0,1fr) 30px; }
.v2-qbi-shell.is-download .v2-native-task-download { width:30px; height:30px; }

.v2-qbi-shell.is-analysis .v2-field-group > h3::before { display:none !important; content:none !important; }
.v2-qbi-shell.is-analysis { height:calc(100dvh - 56px); min-height:0; }
.v2-qbi-shell.is-analysis .v2-qbi-body { height:calc(100% - 54px); min-height:0; overflow:hidden; }
.v2-qbi-shell.is-analysis .v2-field-panel { height:100%; max-height:none; }
.v2-qbi-shell.is-analysis .v2-editor-main { min-height:0; display:flex; flex-direction:column; }
.v2-qbi-shell.is-analysis .v2-analysis-toolbar,.v2-qbi-shell.is-analysis .v2-shelves { flex:none; }
.v2-qbi-shell.is-analysis .v2-editor-canvas { height:auto; min-height:0; flex:1 1 auto; box-sizing:border-box; }
.v2-qbi-shell.is-analysis .v2-editor-grid { height:100%; min-height:0; }
.v2-qbi-shell.is-analysis .v2-native-result { position:absolute; inset:0; overflow:hidden; padding:0 0 28px; }
.runtime-s2-host { width:100%; height:100%; }
.v2-qbi-shell.is-analysis .v2-native-footnote,
.v2-qbi-shell.is-analysis .v2-native-footnote.is-analysis-count { right:12px; bottom:5px; left:auto; font-size:12px; }

body:has([data-view="workspace"]:not([hidden])) .portal-assistant { right:20px; bottom:8px; width:58px; height:58px; }
body:has([data-view="workspace"]:not([hidden])) .assistant-launcher { width:58px; height:58px; border-radius:20px; }

/* Tree hierarchy disclosure: the same circular plus/minus as the left rail. */
.v2-native-dataset-tree .v2-native-tree-caret { display:none; }
.v2-native-dataset-tree details:has(> .v2-native-tree-children) > summary::before {
  content:"+";
  width:var(--runtime-tree-disclosure-size);
  height:var(--runtime-tree-disclosure-size);
  display:grid;
  place-items:center;
  flex:none;
  border:0;
  border-radius:50%;
  box-shadow:none;
  color:var(--runtime-tree-disclosure-ink);
  background:var(--runtime-tree-disclosure-surface);
  font-size:10px;
  line-height:1;
}
.v2-native-dataset-tree details:has(> .v2-native-tree-children)[open] > summary::before { content:"−"; }
.v2-native-tree-leaf { min-height:30px; display:flex; align-items:center; gap:7px; padding:0 4px 0 24px; }
