/* v2.89 Data Explorer 2.0 — the ad hoc pivot builder (explorer.js) */
.xp { display:flex; flex:1; min-height:0; min-width:0; background:#fff; }
.xp-loading { padding:40px; color:var(--muted); }

/* the ribbon down the side */
.xp-side { width:248px; flex:none; border-right:1px solid var(--line); display:flex; flex-direction:column; min-height:0; background:var(--chipbg); }
.xp-ds { padding:16px 16px 12px; border-bottom:1px solid var(--line2); }
.xp-lbl { font-size:10.5px; letter-spacing:.08em; text-transform:uppercase; color:var(--muted); font-weight:600; margin-bottom:5px; }
.xp-dsname { font-size:14.5px; font-weight:600; color:var(--ink); }
.xp-dsmeta { font-size:11.5px; color:var(--muted); margin-top:2px; }
.xp-search { padding:10px 12px 4px; }
.xp-search input { width:100%; border:1px solid var(--line); border-radius:8px; padding:7px 10px; font:inherit; font-size:12.5px; background:#fff; outline:none; }
.xp-search input:focus { border-color:var(--orange); }
.xp-tree { flex:1; min-height:0; overflow-y:auto; padding:4px 8px 10px; }
.xp-grp { margin-top:6px; }
.xp-gh { display:flex; align-items:center; gap:7px; width:100%; border:none; background:none; font:inherit; font-size:12.5px; font-weight:600; color:var(--ink); padding:6px 6px; cursor:pointer; border-radius:6px; text-align:left; }
.xp-gh:hover { background:var(--line3); }
.xp-car { width:10px; color:var(--muted); font-size:10px; }
.xp-dot { width:8px; height:8px; border-radius:2px; flex:none; }
.xp-f { display:flex; align-items:center; gap:8px; padding:5px 6px 5px 22px; border-radius:6px; font-size:12.5px; color:var(--body); cursor:grab; user-select:none; }
.xp-f:hover { background:#fff; box-shadow:0 0 0 1px var(--line); }
.xp-f.on { color:var(--ink); font-weight:500; }
.xp-m { cursor:pointer; }
.xp-box { width:14px; height:14px; border:1.5px solid var(--edge); border-radius:4px; font-size:10px; line-height:11px; text-align:center; color:#fff; flex:none; }
.xp-f.on .xp-box { background:var(--ink); border-color:var(--ink); }
.xp-fl { flex:1; min-width:0; white-space:nowrap; overflow:hidden; text-overflow:ellipsis; }
.xp-at { font-size:10px; color:var(--muted); text-transform:uppercase; letter-spacing:.05em; }
.xp-add { border:none; background:none; width:20px; height:20px; border-radius:5px; color:var(--muted); cursor:pointer; font-size:14px; line-height:1; visibility:hidden; }
.xp-f:hover .xp-add { visibility:visible; }
.xp-add:hover { background:var(--orange-tint); color:var(--orange-dk); }
.xp-none { font-size:12px; color:var(--muted); padding:6px 8px; }
.xp-saved { border-top:1px solid var(--line2); padding:12px 12px 14px; max-height:34%; overflow-y:auto; }
.xp-sv { display:flex; align-items:center; gap:6px; padding:4px 4px; border-radius:6px; font-size:12.5px; }
.xp-sv.on { background:var(--orange-pale); }
.xp-sv a { flex:1; min-width:0; color:var(--ink); cursor:pointer; white-space:nowrap; overflow:hidden; text-overflow:ellipsis; }
.xp-sv a:hover { color:var(--orange-dk); }
.xp-svsp { font-size:10px; color:var(--muted); }
.xp-sv button { border:none; background:none; color:var(--faint); cursor:pointer; font-size:11px; visibility:hidden; }
.xp-sv:hover button { visibility:visible; }
.xp-sv button:hover { color:var(--red); }

/* the work area */
.xp-main { flex:1; min-width:0; display:flex; flex-direction:column; min-height:0; }
.xp-top { display:flex; align-items:center; gap:14px; padding:14px 20px 12px; border-bottom:1px solid var(--line2); flex-wrap:wrap; }
.xp-title { display:flex; flex-direction:column; flex:1; min-width:200px; }
.xp-crumb { font-size:11px; color:var(--muted); font-weight:500; }
.xp-v2 { font-family:'Geist Mono',monospace; font-size:9px; background:var(--ink); color:#fff; border-radius:4px; padding:1px 5px; margin-left:3px; vertical-align:1px; }
.xp-name { border:none; outline:none; font:inherit; font-size:18px; font-weight:600; letter-spacing:-.015em; color:var(--ink); padding:2px 0; background:transparent; width:100%; }
.xp-name::placeholder { color:var(--faint); }
.xp-seg { display:inline-flex; align-items:center; background:var(--line3); border-radius:9px; padding:2px; gap:2px; }
.xp-seg button { border:none; background:none; font:inherit; font-size:12px; font-weight:500; color:var(--sec); padding:5px 9px; border-radius:7px; cursor:pointer; }
.xp-seg button.on { background:#fff; color:var(--ink); box-shadow:0 1px 3px rgba(27,29,49,.12); }
.xp-seg > span { font-size:11px; color:var(--muted); padding:0 6px 0 8px; }
.xp-acts { display:flex; gap:8px; }
.xp-acts button:disabled { opacity:.45; cursor:default; }

.xp-shelves { padding:10px 20px 4px; display:flex; flex-direction:column; gap:6px; }
.xp-shelf { display:flex; align-items:center; gap:10px; min-height:38px; border:1px dashed var(--edge); border-radius:10px; padding:4px 8px; background:#fff; transition:background .12s, border-color .12s; }
.xp-shelf.over { border-color:var(--orange); background:var(--orange-pale); }
.xp-shl { width:62px; flex:none; font-size:10.5px; letter-spacing:.08em; text-transform:uppercase; color:var(--muted); font-weight:600; }
.xp-shz { flex:1; display:flex; flex-wrap:wrap; gap:6px; align-items:center; min-height:28px; }
.xp-hint { font-size:12px; color:var(--faint); }
.xp-chip { display:inline-flex; align-items:center; gap:2px; border-radius:7px; padding:3px 3px 3px 9px; font-size:12.5px; font-weight:500; color:var(--ink);
  background:color-mix(in srgb, var(--c) 10%, #fff); border:1px solid color-mix(in srgb, var(--c) 35%, #fff); cursor:grab; user-select:none; }
.xp-chip b { color:var(--c); font-weight:600; }
.xp-chipl { padding-right:3px; }
.xp-cb { border:none; background:none; width:20px; height:20px; border-radius:5px; color:var(--sec); cursor:pointer; font-size:11px; line-height:1; }
.xp-cb:hover { background:color-mix(in srgb, var(--c) 18%, #fff); color:var(--ink); }
.xp-mon { margin-left:auto; }

.xp-status { padding:8px 22px 6px; font-size:12px; color:var(--sec); display:flex; align-items:center; gap:6px; flex-wrap:wrap; min-height:30px; }
.xp-status b { color:var(--ink); font-weight:600; }
.xp-fsum { margin-left:auto; color:var(--muted); }
.xp-err { color:var(--red); }
.xp-savedbar { background:var(--teal-pale); color:#076B64; border-radius:7px; padding:3px 9px; margin-right:6px; }
.xp-savedbar a { color:#076B64; font-weight:600; cursor:pointer; text-decoration:underline; }
.xp-spin { width:11px; height:11px; border:2px solid var(--line); border-top-color:var(--orange); border-radius:50%; display:inline-block; animation:xpSpin .7s linear infinite; vertical-align:-1px; margin-right:4px; }
@keyframes xpSpin { to { transform:rotate(360deg); } }

.xp-gridwrap { flex:1; min-height:0; display:flex; flex-direction:column; padding:2px 20px 18px; }
.xp-scroll { flex:1; min-height:0; overflow:auto; border:1px solid var(--line); border-radius:10px; }
.xp-note { font-size:12px; color:var(--muted); padding:2px 2px 8px; }
.xp-empty { margin:50px auto; max-width:460px; text-align:center; color:var(--sec); font-size:13.5px; display:flex; flex-direction:column; gap:14px; align-items:center; line-height:1.55; }
.xp-emh { font-size:19px; font-weight:600; color:var(--ink); }

/* the Engine grid */
.xp-t { border-collapse:separate; border-spacing:0; font-size:12.5px; min-width:100%; }
.xp-t th, .xp-t td { border-right:1px solid var(--line2); border-bottom:1px solid var(--line2); padding:6px 10px; white-space:nowrap; }
.xp-t thead th { position:sticky; background:#F7F8FA; z-index:2; font-weight:600; color:var(--ink); }
.xp-t thead tr:nth-child(1) th { top:0; }
.xp-t thead tr:nth-child(2) th { top:31px; }
.xp-t thead tr:nth-child(3) th { top:62px; }
.xp-t thead tr:nth-child(4) th { top:93px; }
.xp-t thead tr:nth-child(5) th { top:124px; }
.xp-ch { text-align:center; }
.xp-ml { font-weight:500 !important; color:var(--sec) !important; font-size:11.5px; }
.xp-ch.more, .xp-rh.more { color:var(--muted) !important; font-style:italic; font-weight:400 !important; }
.xp-corner { text-align:left; background:#F1F2F5 !important; }
.xp-cfl { text-align:right !important; }
.xp-hd { display:inline-flex; align-items:center; gap:3px; font-weight:600; color:var(--ink); border-left:3px solid var(--c); padding-left:7px; }
.xp-hd b { color:var(--c); }
.xp-hd button { border:none; background:none; color:var(--muted); cursor:pointer; font-size:10px; width:18px; height:18px; border-radius:4px; }
.xp-hd button:hover { background:var(--line); color:var(--ink); }
.xp-rh { background:#FBFBFC; text-align:left; font-weight:500; color:var(--ink); vertical-align:top; }
.xp-t td { text-align:right; font-family:'Geist Mono',ui-monospace,monospace; font-size:12px; color:var(--ink); }
.xp-t tbody tr:hover td { background:#FFFBF9; }
.xp-t td.neg, .xp-neg { color:var(--red) !important; }
.xp-t td.pos, .xp-pos { color:var(--green) !important; }
.xp-tot { font-weight:600 !important; background:#F7F8FA; }
.xp-totr td, .xp-totr th { border-top:1.5px solid var(--edge); }
.xp-t.skel td { background:repeating-linear-gradient(90deg, #fff, #fff 4px, #FAFAFB 4px, #FAFAFB 8px); }
.xp-sk { display:inline-block; width:56px; height:9px; border-radius:4px; background:linear-gradient(90deg, var(--line3), var(--line), var(--line3)); background-size:200% 100%; animation:xpSh 1.2s ease-in-out infinite; }
@keyframes xpSh { 0% { background-position:100% 0; } 100% { background-position:-100% 0; } }
.xp-ag { flex:1; min-height:360px; }

/* pop-overs and the modal */
.xp-pop { position:fixed; z-index:1000; background:#fff; border:1px solid var(--line); border-radius:11px; box-shadow:var(--shadow-pop); min-width:190px; }
.xp-menu { display:flex; flex-direction:column; padding:5px; }
.xp-menu a { padding:7px 10px; border-radius:7px; font-size:13px; color:var(--ink); cursor:pointer; }
.xp-menu a:hover { background:var(--line3); }
.xp-menu a.xp-danger { color:var(--red); }
.xp-fpop { width:280px; }
.xp-flt, .xp-save { padding:12px; display:flex; flex-direction:column; gap:8px; }
.xp-save { width:300px; }
.xp-flh { font-weight:600; font-size:13.5px; display:flex; justify-content:space-between; align-items:baseline; }
.xp-flh span { font-size:11.5px; color:var(--muted); font-weight:400; }
.xp-flt input[type=text], .xp-flt input:not([type]), .xp-save input { border:1px solid var(--line); border-radius:8px; padding:7px 10px; font:inherit; font-size:12.5px; outline:none; }
.xp-flt input:focus, .xp-save input:focus { border-color:var(--orange); }
.xp-fla { display:flex; gap:12px; font-size:12px; }
.xp-fla a { color:var(--orange); cursor:pointer; }
.xp-fll { max-height:260px; overflow-y:auto; border:1px solid var(--line2); border-radius:8px; padding:4px; }
.xp-flr { display:flex; align-items:center; gap:8px; padding:4px 6px; border-radius:6px; font-size:12.5px; cursor:pointer; }
.xp-flr:hover { background:var(--line3); }
.xp-flr input { accent-color:var(--orange); }
.xp-flf { display:flex; justify-content:flex-end; gap:8px; margin-top:2px; }
.xp-flf button { padding:6px 13px; font-size:12.5px; }
.xp-sp { align-self:flex-start; }
.xp-muted { font-size:12px; color:var(--muted); line-height:1.45; }
.xp-modal { position:fixed; inset:0; background:rgba(27,29,49,.35); z-index:1001; display:flex; align-items:center; justify-content:center; padding:16px; }
.xp-mbox { background:#fff; border-radius:14px; box-shadow:var(--shadow-modal); width:min(860px, 100%); max-height:86vh; display:flex; flex-direction:column; }
.xp-mh { display:flex; justify-content:space-between; align-items:center; padding:14px 18px; border-bottom:1px solid var(--line2); font-weight:600; font-size:15px; }
.xp-mh button { border:none; background:none; cursor:pointer; color:var(--muted); font-size:14px; }
.xp-mb { padding:14px 18px; overflow-y:auto; display:flex; flex-direction:column; gap:8px; }
.xp-mf { padding:10px 18px; border-top:1px solid var(--line2); display:flex; justify-content:flex-end; }
.xp-sql { background:#F7F8FA; border:1px solid var(--line2); border-radius:8px; padding:10px 12px; font-family:'Geist Mono',ui-monospace,monospace; font-size:11.5px; white-space:pre; overflow-x:auto; color:var(--ink); }

/* v2.90 metric pills: the editor, the marks on a chip, Run / Auto-run */
.xp-mchip { max-width:340px; }
.xp-mchip .xp-chipl { overflow:hidden; text-overflow:ellipsis; white-space:nowrap; }
.xp-mark { font-style:normal; font-size:9.5px; font-weight:600; text-transform:uppercase; letter-spacing:.05em; color:var(--c); background:#fff; border:1px solid color-mix(in srgb, var(--c) 35%, #fff); border-radius:4px; padding:0 4px; margin-left:3px; flex:none; }
.xp-calcbtn { border:1px dashed var(--edge); background:#fff; border-radius:7px; font:inherit; font-size:12px; font-weight:500; color:var(--sec); padding:4px 9px; cursor:pointer; margin-left:8px; white-space:nowrap; }
.xp-calcbtn:hover { border-color:#B7791F; color:#8A5A12; }
.xp-tip { font-size:11px; color:var(--faint); padding:4px 8px 0 22px; }
.xp-auto { display:inline-flex; align-items:center; gap:5px; font-size:12px; color:var(--sec); cursor:pointer; white-space:nowrap; }
.xp-auto input { accent-color:var(--orange); }
.xp-run.stale { box-shadow:0 0 0 3px var(--orange-tint); }
.xp-stale { color:var(--orange-dk); }
.xp-dash { color:var(--faint); }
.xp-exs { display:flex; gap:8px; flex-wrap:wrap; justify-content:center; }
.xp-inex { align-self:flex-start; }
.xp-ppop { width:400px; max-height:82vh; overflow-y:auto; }
.xp-pe { padding:12px 14px; display:flex; flex-direction:column; gap:9px; }
.xp-pr { display:flex; align-items:center; gap:8px; font-size:12.5px; }
.xp-pr > span:first-child { width:78px; flex:none; font-size:11px; font-weight:600; color:var(--muted); text-transform:uppercase; letter-spacing:.05em; }
.xp-pr.xp-top { align-items:flex-start; }
.xp-pr.xp-top > span:first-child { padding-top:6px; }
.xp-pr input:not([type=checkbox]), .xp-pr select { flex:1; min-width:0; border:1px solid var(--line); border-radius:7px; padding:6px 8px; font:inherit; font-size:12.5px; background:#fff; outline:none; }
.xp-pr input:focus, .xp-pr select:focus { border-color:var(--orange); }
.xp-pr .xp-num { flex:0 0 120px; }
.xp-pr .xp-seg button { padding:4px 8px; font-size:11.5px; }
.xp-range em { font-style:normal; color:var(--muted); font-size:12px; }
.xp-conds { flex:1; min-width:0; display:flex; flex-direction:column; gap:6px; }
.xp-cond { border:1px solid var(--line2); border-radius:8px; padding:6px; display:flex; flex-direction:column; gap:4px; }
.xp-condh { display:flex; align-items:center; gap:6px; }
.xp-condh select { flex:1; min-width:0; border:1px solid var(--line); border-radius:7px; padding:5px 7px; font:inherit; font-size:12px; }
.xp-not { display:inline-flex; align-items:center; gap:3px; font-size:11.5px; color:var(--sec); white-space:nowrap; }
.xp-condv { max-height:120px; overflow-y:auto; }
.xp-addc { font-size:12px; color:var(--orange); cursor:pointer; padding:2px 0; }
.xp-addc:hover { color:var(--orange-dk); }
.xp-pnote { margin-top:-2px; }
.xp-danger-b { color:var(--red) !important; margin-right:auto; }

/* v2.90.2 the app's top bar on this page: Data Explorer's actions, not RetailGPT's chat ones */
.xp-topacts { display:none !important; }
#app.vw-explorer .xp-topacts { display:flex !important; }
#app.vw-explorer .top-right:not(.xp-topacts), #app.vw-explorer .crumb-app, #app.vw-explorer .crumb-sep,
#app.vw-explorer .rail-toggle { display:none; }
#app.vw-explorer .crumb-title { font-size:15px; }
.xp-topacts .top-btn:disabled { opacity:.4; cursor:default; background:transparent; }
.xp-newbtn { background:var(--orange); border-color:var(--orange); color:#fff; font-weight:600; }
.xp-newbtn:hover { background:var(--orange-dk); border-color:var(--orange-dk); }

/* v2.92 time ranges */
.xp-addrange { display:block; font-size:12px; color:var(--orange); cursor:pointer; padding:4px 8px 2px 22px; }
.xp-addrange:hover { color:var(--orange-dk); }
.xp-del:hover { background:#FDECEC !important; color:var(--red) !important; }
.xp-rpop .xp-range select { flex:1; min-width:0; border:1px solid var(--line); border-radius:7px; padding:6px 8px; font:inherit; font-size:12.5px; }
.xp-cust .xp-fl { font-style:italic; }
.xp-addrange { padding-top:0; padding-bottom:4px; }

/* v2.94 time made explicit; folded editor sections */
.xp-period.dim button { color:var(--faint); }
.xp-period.dim button:hover { color:var(--sec); }
.xp-ptag { font-size:11px; color:var(--muted); padding:0 8px 0 4px; white-space:nowrap; }
.xp-span { font-size:10.5px; font-weight:400; color:var(--muted); white-space:nowrap; }
.xp-more { display:block; font-size:12.5px; color:var(--orange); cursor:pointer; padding:2px 0; }
.xp-more:hover { color:var(--orange-dk); }
.xp-more em { font-style:normal; color:var(--muted); font-size:11.5px; margin-left:4px; }

/* v2.95 View SQL: one grid's SQL; the rest folded */
.xp-sqld { margin-top:4px; }
.xp-sqld summary { cursor:pointer; font-size:12.5px; color:var(--orange); padding:4px 0; }
.xp-sqld summary:hover { color:var(--orange-dk); }
.xp-mb > pre.xp-sql, .xp-sqld pre.xp-sql { flex-shrink:0; }

/* v2.96 recipe panel; subtotal rows */
.xp-recipe { display:none; width:300px; flex:none; border-left:1px solid var(--line); background:var(--chipbg); overflow-y:auto; padding:14px 16px 18px; }
.xp-recipe.on { display:block; }
.xp-rch { display:flex; justify-content:space-between; align-items:center; font-weight:600; font-size:14px; margin-bottom:6px; }
.xp-rch button { border:none; background:none; color:var(--muted); cursor:pointer; font-size:12px; }
.xp-rcs { margin-top:12px; }
.xp-rcs .xp-lbl { margin-bottom:4px; }
.xp-rcr { display:grid; grid-template-columns:96px 1fr; gap:8px; font-size:12px; line-height:1.45; padding:3px 0; border-bottom:1px solid var(--line3); }
.xp-rcr span { color:var(--muted); }
.xp-rcr div { color:var(--ink); overflow-wrap:anywhere; }
.xp-rccopy { margin-top:14px; width:100%; }
.xp-recbtn.on { border-color:var(--ink); color:var(--ink); background:var(--line3); }
.xp-subr th, .xp-subr td { background:#F7F8FA; font-weight:600; }
.xp-subh { font-style:italic; }
@media (max-width:1300px) { .xp-recipe { width:250px; } }
/* v2.96.1 subtotal toggle on row chips and row headers */
.xp-sigma { font-weight:700; font-size:12px; }
.xp-sigma.on { background:var(--c, var(--orange)); color:#fff; }
.xp-sigma.on:hover { background:color-mix(in srgb, var(--c, var(--orange)) 80%, #000); color:#fff; }
/* v2.97 chart view */
.xp-chh { display:flex; align-items:center; gap:12px; flex-wrap:wrap; margin:2px 0 8px; }
.xp-chm { font-size:12.5px; color:var(--sec); display:flex; align-items:center; gap:6px; }
.xp-chm select { font:inherit; font-size:12.5px; color:var(--ink); border:1px solid var(--edge); border-radius:6px; padding:4px 8px; background:#fff; }
.xp-chd { font-size:12.5px; color:var(--body); }
.xp-chart { width:100%; min-height:200px; background:#fff; border:1px solid var(--line); border-radius:10px; padding:14px 16px 8px; box-sizing:border-box; }
.xp-chart .vega-embed { width:100%; }
.xp-chf { font-size:11.5px; margin-top:6px; }
.xp-tiles { display:flex; flex-wrap:wrap; gap:12px; }
.xp-tile { background:#fff; border:1px solid var(--line); border-radius:10px; padding:14px 18px; min-width:180px; }
.xp-tv { font-size:26px; font-weight:600; color:var(--ink); margin-top:4px; font-variant-numeric:tabular-nums; }
/* v2.97 paste a list into a filter */
.xp-fla .xp-pastea { margin-left:auto; }
.xp-paste textarea { width:100%; box-sizing:border-box; height:160px; resize:vertical; font:12.5px/1.45 'Geist Mono', ui-monospace, monospace; border:1px solid var(--edge); border-radius:8px; padding:8px 10px; }
.xp-pastef { display:flex; align-items:center; gap:8px; margin-top:8px; }
.xp-pastef .xp-muted { margin-right:auto; font-size:12px; }
.xp-pres { font-size:12.5px; line-height:1.45; background:#F0FDF4; border:1px solid #BBF7D0; border-radius:8px; padding:8px 10px; margin:6px 0; color:var(--body); word-break:break-word; }
.xp-pres.warn { background:var(--orange-tint); border-color:var(--orange-lt); }
.xp-pres a { color:var(--orange); cursor:pointer; margin-left:4px; }
.xp-pres .xp-muted { font-size:11.5px; margin-top:2px; }
.xp-chwrap { flex:1; min-height:0; overflow:auto; }
.xp-chwrap > * { flex-shrink:0; }
/* v2.97 the filter popover never runs off the bottom of the window (the paste result makes it taller) */
.xp-fpop { max-height:calc(100vh - 24px); overflow-y:auto; }
.xp-fll { max-height:min(260px, 34vh); }
.xp-paste textarea { height:min(160px, 26vh); }
/* v2.98 chart panel above the grid: open by default, minimise, full screen */
.xp-cp { margin:0 20px 8px; border:1px solid var(--line); border-radius:10px; background:#fff; flex:none; display:flex; flex-direction:column; }
.xp-cp.gone { display:none; }
.xp-cph { display:flex; align-items:center; gap:10px; flex-wrap:wrap; padding:6px 10px 6px 6px; border-bottom:1px solid var(--line2); }
.xp-cp.min .xp-cph { border-bottom:none; }
.xp-cpt { border:none; background:none; font:inherit; font-size:12.5px; font-weight:600; color:var(--ink); cursor:pointer; padding:4px 6px; border-radius:6px; display:flex; align-items:center; gap:4px; }
.xp-cpt:hover, .xp-cpb:hover { background:var(--hair); }
.xp-cpc { color:var(--muted); font-size:11px; width:10px; }
.xp-cpsp { flex:1; }
.xp-cpb { border:1px solid var(--line); background:#fff; color:var(--sec); width:28px; height:26px; border-radius:6px; cursor:pointer; font-size:14px; line-height:1; }
.xp-cpbody { max-height:300px; overflow:auto; padding:8px 14px 10px; }
.xp-cp .xp-chart { border:none; padding:0; min-height:0; }
.xp-cp .xp-note { margin:0 0 6px; }
.xp-cpmsg { padding:18px 8px; text-align:center; }
.xp-cp.full { position:fixed; inset:0; z-index:950; margin:0; border-radius:0; border:none; }
.xp-cp.full .xp-cpbody { max-height:none; flex:1; padding:12px 28px 20px; }
.xp-cp.full .xp-cph { padding:10px 16px; }
/* v2.98 small screens: the chart takes at most ~30% of the height and the grid keeps a usable minimum; when both
   don't fit, the page scrolls instead of squeezing the grid to a strip */
.xp-main { overflow-y:auto; }
.xp-gridwrap { min-height:260px; }
.xp-cpbody { max-height:clamp(150px, 30vh, 300px); }
.xp-cp.full .xp-cpbody { max-height:none; }

/* v3.01 Data view: the flat table under its own small bar */
.xp-dbar { display:flex; align-items:center; gap:14px; flex-wrap:wrap; padding:4px 0 8px; font-size:12px; color:var(--sec); }
.xp-dbar > span { flex:1; min-width:220px; }
.xp-dwrap { flex:1; min-height:0; overflow:auto; border:1px solid var(--line2); border-radius:8px; }
.xp-t.xp-data td { text-align:left; font-family:inherit; }
.xp-t.xp-data td.n { text-align:right; font-family:'Geist Mono',ui-monospace,monospace; }
.xp-t.xp-data th.metric { color:#1F7A48; }
.xp-t.xp-data th.part { color:var(--sec); font-weight:500; }

/* v3.11 data sources by key level: the picker, table folders */
.xp-dssel { width:100%; margin:4px 0 2px; padding:6px 8px; border:1px solid var(--line); border-radius:8px; background:#fff; font:inherit; font-size:13px; font-weight:600; color:var(--ink); }
.xp-gtab { margin-left:auto; font-size:9.5px; font-weight:600; letter-spacing:.04em; text-transform:uppercase; color:var(--muted); border:1px solid var(--line2); border-radius:4px; padding:0 4px; }
.xp-addcl { display:block; font-size:12px; color:var(--orange); cursor:pointer; padding:0 8px 4px 22px; }
.xp-addcl:hover { color:var(--orange-dk); }
/* filters by type and blank tests */
.xp-fmode { margin:2px 0 8px; }
.xp-opf { display:flex; align-items:center; gap:6px; flex-wrap:wrap; margin:6px 0; }
.xp-opf select, .xp-opf input { padding:5px 7px; border:1px solid var(--line); border-radius:6px; font:inherit; font-size:12.5px; }
.xp-opf input { width:120px; }
.xp-opf em { font-style:normal; color:var(--muted); font-size:12px; }
.xp-cmode { padding:3px 5px; border:1px solid var(--line); border-radius:6px; font:inherit; font-size:12px; }
.xp-applyto { margin-top:6px; padding:6px 8px; border:1px dashed var(--line); border-radius:8px; }
.xp-applyl { display:inline-block; margin-left:10px; }
/* several metrics selected (Ctrl/⌘-click) */
.xp-mchip.xp-sel { outline:2px solid var(--c); outline-offset:1px; background:color-mix(in srgb, var(--c) 14%, #fff); }
.xp-selbar { display:flex; align-items:center; gap:6px; flex-wrap:wrap; width:100%; margin-top:6px; padding:6px 8px; border-radius:8px; background:var(--hair); font-size:12px; }
.xp-selbar .btn-secondary { padding:3px 9px; font-size:12px; }
.xp-seltip { font-size:11px; color:var(--muted); margin-left:6px; }
/* layout A / B */
.xp-lmode { margin-left:auto; }
.xp-lmode span { font-size:11px; color:var(--muted); margin-right:4px; }
/* the saved-views start page */
.xp-start { padding:4px 2px 12px; }
.xp-sth { font-size:12px; font-weight:600; color:var(--sec); text-transform:uppercase; letter-spacing:.04em; margin:10px 0 8px; display:flex; gap:8px; align-items:baseline; }
.xp-sth span { color:var(--muted); font-weight:500; }
.xp-cards { display:grid; grid-template-columns:repeat(auto-fill, minmax(240px, 1fr)); gap:10px; }
.xp-card { display:flex; flex-direction:column; gap:4px; text-align:left; padding:10px 12px; border:1px solid var(--line); border-radius:10px; background:#fff; cursor:pointer; font:inherit; }
.xp-card:hover, .xp-card:focus-visible { border-color:#F05323; box-shadow:0 1px 6px rgba(0,0,0,.06); }
.xp-cn { font-weight:600; font-size:13.5px; color:var(--ink); }
.xp-cd { font-size:12px; color:var(--sec); display:-webkit-box; -webkit-line-clamp:3; -webkit-box-orient:vertical; overflow:hidden; }
.xp-cm { font-size:11px; color:var(--muted); }
/* What stands out (AI) */
.xp-ai { margin:0 20px 8px; flex:none; }
.xp-status { flex:none; }
.xp-ai.gone { display:none; }
.xp-aib { border:1px dashed var(--line); background:#fff; border-radius:8px; padding:6px 10px; font:inherit; font-size:12.5px; color:var(--ink); cursor:pointer; }
.xp-aib em { font-style:normal; color:var(--muted); }
.xp-aistar { color:#F05323; }
.xp-aih { display:flex; align-items:center; gap:10px; flex-wrap:wrap; font-size:12.5px; font-weight:600; }
.xp-aih .xp-muted { font-weight:400; font-size:11.5px; }
.xp-aih a { font-weight:400; font-size:12px; cursor:pointer; }
.xp-aitog { border:none; background:none; font:inherit; font-weight:600; cursor:pointer; padding:0; color:var(--ink); }
.xp-aiul { margin:6px 0 0; padding:8px 12px 8px 28px; background:#FFF8F4; border:1px solid #F7D9C9; border-radius:8px; font-size:13px; line-height:1.45; }
.xp-aiul li { margin:2px 0; }
/* clusters */
.xp-clf { width:380px; max-width:calc(100vw - 32px); }
.xp-clrow { display:grid; grid-template-columns:1fr auto; gap:4px 6px; margin:6px 0; padding:6px; border:1px solid var(--line2); border-radius:8px; }
.xp-clrow input { grid-column:1; }
.xp-clrow textarea { grid-column:1; min-height:52px; resize:vertical; font:inherit; font-size:12px; padding:5px 7px; border:1px solid var(--line); border-radius:6px; }
.xp-clrow .xp-cb { grid-column:2; grid-row:1 / span 2; align-self:start; }
/* v3.11 QA: the selection bar on its own row; no sideways scroll in the middle column; long cluster dialogs scroll;
   filter links don't break mid-word */
.xp-shelves > .xp-selbar { margin:0 0 6px; }
.xp-main { overflow-x:hidden; }
.xp-shelf { flex-wrap:wrap; }
.xp-lmode { flex-wrap:nowrap; white-space:nowrap; }
.xp-clf { max-height:calc(100vh - 48px); overflow-y:auto; }
.xp-fla { display:flex; flex-wrap:wrap; gap:4px 10px; }
.xp-fla a { white-space:nowrap; }
.xp-cpb0 { padding:4px 8px; font-weight:400; font-size:12px; }
.xp-mchip:focus-visible { outline:2px solid #F05323; outline-offset:2px; }
/* v3.11.1 a tab running an older Data Explorer than the server's */
.xp-newver { display:flex; align-items:center; gap:12px; padding:10px 16px; margin:8px 16px; border:1px solid #F7D9C9; background:#FFF4EE; border-radius:10px; font-size:13px; color:var(--ink); }
.xp-newver .btn-primary { padding:5px 12px; }
/* v3.12 the Format control (Nested | Wide | Long) beside Report | Data */
.xp-fmt button { min-width:58px; }
