/* Geonos chart layer styles. Both themes. Marks stay thin; the data is the only loud thing. */
.app-shell{
  --viz-1:#9085E9; --viz-2:#D95926; --viz-3:#3987E5; --viz-4:#D55181; --viz-5:#C98500; --viz-6:#199E70;
  --viz-surface:#131318; --viz-grid:rgba(255,255,255,.075); --viz-track:rgba(255,255,255,.07);
  --viz-bar:linear-gradient(90deg,#7FB8FF,#9A7BEA 55%,#E58AB0);
  --viz-heat:144,133,233;
}
html[data-theme="light"] .app-shell{
  --viz-1:#4A3AA7; --viz-2:#EB6834; --viz-3:#2A78D6; --viz-4:#E87BA4; --viz-5:#EDA100; --viz-6:#1BAF7A;
  --viz-surface:#FFFFFF; --viz-grid:rgba(30,30,60,.09); --viz-track:rgba(30,30,60,.07);
  --viz-bar:linear-gradient(90deg,#2F7DE1,#7B4FD8 55%,#D9487D);
  --viz-heat:74,58,167;
}

.gnv-card{position:relative;}
.gnv-head{display:flex;align-items:flex-start;justify-content:space-between;gap:12px;margin-bottom:14px;}
.gnv-title{font-weight:600;font-size:15px;letter-spacing:-.01em;}
.gnv-sub{font-size:12.5px;color:var(--text2);margin-top:3px;line-height:1.45;}
.gnv-tools{display:flex;align-items:center;gap:8px;flex-shrink:0;}
.gnv-seg{display:inline-flex;padding:3px;border-radius:999px;background:var(--viz-track);gap:2px;}
.gnv-seg button{font:inherit;font-size:11.5px;line-height:1;padding:5px 11px;border:0;border-radius:999px;background:transparent;color:var(--text2);cursor:pointer;}
.gnv-seg button.is-on{background:var(--text);color:var(--bg);font-weight:600;}
.gnv-seg button:focus-visible{outline:2px solid var(--accent);outline-offset:1px;}
.gnv-note{font-size:11.5px;color:var(--text3);margin-top:10px;line-height:1.5;}

.gnv{position:relative;}
.gnv-upg{margin-top:2px;}
.gnv-canvas{position:relative;min-height:60px;}
.gnv-svg{display:block;overflow:visible;max-width:100%;}
.gnv-svg text{font-family:inherit;}
.gnv-grid{stroke:var(--viz-grid);stroke-width:1;fill:none;shape-rendering:crispEdges;}
.gnv-ax{font-size:10.5px;fill:var(--text3);}
.gnv-line{fill:none;stroke-width:2;stroke-linecap:round;stroke-linejoin:round;}
.gnv-area{opacity:.10;stroke:none;}
.gnv-ring{fill:var(--viz-surface);}
.gnv-end{font-size:11.5px;font-weight:600;fill:var(--text);}
.gnv-ev{stroke:var(--text3);stroke-width:1;opacity:.55;shape-rendering:crispEdges;}
.gnv-evt{font-size:10.5px;fill:var(--text2);}
.gnv-mark{stroke:var(--viz-surface);stroke-width:2;}
.gnv-cross{stroke:var(--text3);stroke-width:1;opacity:.6;shape-rendering:crispEdges;pointer-events:none;}
.gnv-hd{stroke:var(--viz-surface);stroke-width:2;pointer-events:none;}
.gnv-hit{cursor:crosshair;}
.gnv:focus-visible,.gnv-canvas:focus-visible{outline:2px solid var(--accent);outline-offset:4px;border-radius:8px;}
.gnv-col{transition:opacity .12s;}
.gnv-col:hover,.gnv-col:focus{opacity:.82;outline:none;}
.gnv-arc{transition:opacity .12s;}
.gnv-arc:hover,.gnv-arc:focus{opacity:.82;outline:none;}
.gnv-empty{padding:28px 0;text-align:center;color:var(--text3);font-size:13px;}

/* tooltip: values lead, names follow, line keys not boxes */
.gnv-tip{position:absolute;display:none;z-index:6;pointer-events:none;min-width:140px;max-width:260px;padding:9px 11px;border-radius:12px;
  background:rgba(22,22,28,.94);color:#F5F5F7;font-size:12px;line-height:1.35;box-shadow:0 12px 32px -8px rgba(0,0,0,.45),0 0 0 1px rgba(255,255,255,.08);
  -webkit-backdrop-filter:blur(14px);backdrop-filter:blur(14px);}
html[data-theme="light"] .app-shell .gnv-tip{background:rgba(255,255,255,.96);color:#1D1D1F;box-shadow:0 14px 34px -10px rgba(40,30,110,.35),0 0 0 1px rgba(30,30,60,.08);}
.gnv-tip-t{font-size:11px;color:#A1A1A6;margin-bottom:6px;font-weight:500;}
html[data-theme="light"] .app-shell .gnv-tip-t{color:#6E6E73;}
.gnv-tip-r{display:flex;align-items:center;gap:8px;padding:2px 0;}
.gnv-tip-r b{font-weight:650;min-width:44px;font-variant-numeric:tabular-nums;}
.gnv-tip-r span{color:#A1A1A6;}
html[data-theme="light"] .app-shell .gnv-tip-r span{color:#6E6E73;}
.gnv-key{width:12px;height:3px;border-radius:2px;flex-shrink:0;}

/* legend */
.gnv-legend{display:flex;flex-wrap:wrap;gap:6px 16px;margin-top:10px;font-size:12px;color:var(--text2);}
.gnv-li{display:inline-flex;align-items:center;gap:7px;}
.gnv-k{display:inline-block;flex-shrink:0;}
.gnv-k-line{width:14px;height:3px;border-radius:2px;}
.gnv-k-box{width:10px;height:10px;border-radius:3px;}
.gnv-k-dot{width:9px;height:9px;border-radius:50%;}

/* bars: thin, rounded ends, one colour, tip value */
.gnv-blist{display:flex;flex-direction:column;gap:11px;}
.gnv-brow{display:grid;grid-template-columns:minmax(120px,190px) 1fr minmax(64px,auto);align-items:center;gap:14px;border-radius:8px;outline:none;}
.gnv-brow:focus-visible{box-shadow:0 0 0 2px var(--accent);}
.gnv-blab{font-size:13px;color:var(--text);line-height:1.25;display:flex;flex-direction:column;}
.gnv-blab small{font-size:11px;color:var(--text3);margin-top:1px;}
.gnv-btrack{position:relative;height:10px;border-radius:999px;background:var(--viz-track);overflow:visible;}
.gnv-bfill{display:block;height:100%;border-radius:0 5px 5px 0;min-width:4px;}
.gnv-brow.is-you .gnv-blab span{font-weight:650;}
.gnv-target{position:absolute;top:-4px;bottom:-4px;width:2px;background:var(--text);opacity:.55;border-radius:1px;}
.gnv-bval{font-size:13px;font-weight:600;text-align:right;font-variant-numeric:tabular-nums;white-space:nowrap;}
.gnv-bval small{display:block;font-size:10.5px;font-weight:400;color:var(--text3);}

/* stacked */
.gnv-stack{display:flex;flex-direction:column;gap:12px;}
.gnv-srow{display:grid;grid-template-columns:minmax(120px,190px) 1fr;gap:14px;align-items:center;}
.gnv-stk{display:flex;gap:2px;height:22px;}
.gnv-stk .gnv-sg{display:flex;align-items:center;justify-content:center;height:100%;min-width:3px;border-radius:3px;font-style:normal;outline:none;padding:0;background:none;}
.gnv-stk .gnv-sg:first-child{border-radius:6px 3px 3px 6px;}
.gnv-stk .gnv-sg:last-child{border-radius:3px 6px 6px 3px;}
.gnv-stk .gnv-sg span{font-size:11px;font-weight:600;color:#fff;font-style:normal;white-space:nowrap;}
.gnv-stk .gnv-sg:hover,.gnv-stk .gnv-sg:focus{filter:brightness(1.12);}

/* donut */
.gnv-donut{display:flex;align-items:center;gap:26px;flex-wrap:wrap;position:relative;}
.gnv-dwrap{position:relative;width:168px;height:168px;flex-shrink:0;}
.gnv-dc{position:absolute;inset:0;display:flex;flex-direction:column;align-items:center;justify-content:center;pointer-events:none;}
.gnv-dc b{font-size:24px;font-weight:650;letter-spacing:-.02em;}
.gnv-dc span{font-size:11px;color:var(--text3);margin-top:1px;}
.gnv-dleg{flex:1;min-width:180px;display:flex;flex-direction:column;gap:8px;}
.gnv-dli{display:grid;grid-template-columns:12px 1fr auto;gap:10px;align-items:center;font-size:13px;}
.gnv-sw{width:10px;height:10px;border-radius:3px;}
.gnv-dli b{font-weight:600;font-variant-numeric:tabular-nums;}

/* heat */
.gnv-heat{display:grid;gap:3px;font-size:12px;}
.gnv-hc{padding:9px 8px;border-radius:7px;display:flex;align-items:center;}
.gnv-hh{justify-content:center;color:var(--text3);font-size:11px;padding:4px;text-align:center;}
.gnv-hr{color:var(--text);font-size:12.5px;}
.gnv-cell{justify-content:center;font-weight:600;font-variant-numeric:tabular-nums;background:rgba(var(--viz-heat),var(--k,.2));outline:none;}
.gnv-cell.is-na{background:var(--viz-track);color:var(--text3);font-weight:400;}
.gnv-cell:hover,.gnv-cell:focus{box-shadow:0 0 0 2px var(--text);}

/* table twin */
.gnv-tablewrap{overflow-x:auto;border-radius:10px;}
.gnv-table{width:100%;border-collapse:collapse;font-size:12.5px;}
.gnv-table th{font-weight:500;color:var(--text3);text-align:left;padding:8px 10px;border-bottom:1px solid var(--viz-grid);font-size:11.5px;white-space:nowrap;}
.gnv-table td{padding:8px 10px;border-bottom:1px solid var(--viz-grid);color:var(--text);}
.gnv-table .r{text-align:right;font-variant-numeric:tabular-nums;}
.gnv-table tr:last-child td{border-bottom:0;}

/* meta strip: where every number comes from */
.gnv-meta{display:flex;flex-wrap:wrap;gap:4px 18px;margin-top:14px;padding-top:11px;border-top:1px solid var(--viz-grid);font-size:11.5px;color:var(--text2);line-height:1.5;}
.gnv-mi{display:inline-flex;align-items:baseline;gap:6px;flex-wrap:wrap;}
.gnv-mi em{font-style:normal;font-size:10.5px;letter-spacing:.06em;text-transform:uppercase;color:var(--text3);}
.gnv-mi code{font-family:ui-monospace,SFMono-Regular,Menlo,monospace;font-size:11px;padding:2px 7px;border-radius:6px;background:var(--viz-track);color:var(--text);}
.gnv-st{font-size:10.5px;font-weight:600;padding:2px 8px;border-radius:999px;}
.gnv-st.is-live{background:rgba(25,158,112,.16);color:#2FBF8A;}
.gnv-st.is-plan{background:var(--viz-track);color:var(--text2);}
html[data-theme="light"] .app-shell .gnv-st.is-live{color:#0E7A52;background:rgba(27,175,122,.15);}

/* row of cards */
.gnv-row{display:flex;gap:16px;flex-wrap:wrap;margin-top:16px;}
.gnv-row > .card{flex:1;min-width:300px;margin:0;}
.gnv-card + .gnv-card,.card + .gnv-card{margin-top:16px;}
.gnv-tbl-card{padding:0;overflow:hidden;}
.gnv-tbl-card .gnv-meta{margin:0;padding:12px 20px 14px;border-top:1px solid var(--viz-grid);}

/* light glass: keep chart cards on the same frosted surface */
html[data-theme="light"] .app-shell .gnv-seg{background:rgba(30,30,60,.07);}
@media (max-width:720px){
  .gnv-brow{grid-template-columns:minmax(90px,120px) 1fr auto;gap:10px;}
  .gnv-srow{grid-template-columns:1fr;gap:6px;}
}
@media (prefers-reduced-motion:reduce){ .gnv-col,.gnv-arc{transition:none;} }

.gnv-old{display:none!important;}

.gnv-foot{display:flex;align-items:center;justify-content:space-between;gap:12px;flex-wrap:wrap;margin-top:10px;}
.gnv-foot .gnv-legend{margin-top:0;}

/* in-table comparison marks */
.app-shell{--viz-pos:#2FBF8A;--viz-neg:#FF5A5F;}
html[data-theme="light"] .app-shell{--viz-pos:#1BA06E;--viz-neg:#C62828;}
.gnv-tdv .gnv-cb{display:block;position:relative;height:6px;border-radius:999px;background:var(--viz-track);margin-top:6px;width:min(100%,150px);}
.gnv-tdv.num .gnv-cb,.gnv-tdv[style*="text-align:right"] .gnv-cb,.gnv-etable td.r .gnv-cb,.gnv-etable th.r ~ td .gnv-cb{margin-left:auto;}
.gnv-cb u{position:absolute;top:0;bottom:0;left:0;border-radius:0 4px 4px 0;display:block;text-decoration:none;}
.gnv-cb.is-div::before{content:"";position:absolute;left:50%;top:-2px;bottom:-2px;width:1px;background:var(--text3);opacity:.6;}
.gnv-cb.is-you{height:8px;}
.gnv-hcell{background:rgba(var(--viz-heat),var(--k,.2))!important;font-weight:600;text-align:center;color:var(--text);}
.gnv-dot{display:inline-block;width:9px;height:9px;border-radius:50%;margin-right:8px;vertical-align:baseline;flex-shrink:0;}
.gnv-meta.in-card{margin:0;padding:12px 20px 14px;}

/* ordinal ramp (ordered categories such as rank buckets or pipeline stages) */
.app-shell{--viz-o1:#E6DEFF;--viz-o2:#A99AF5;--viz-o3:#6F60CE;--viz-o4:#3E3585;--viz-o1-ink:#1B1433;--viz-o2-ink:#150F2A;--viz-o3-ink:#fff;--viz-o4-ink:#fff;--viz-s1:#1FAE78;--viz-s2:#8ADCB3;--viz-s3:#8E8E9A;--viz-s4:#F5C242;--viz-s5:#FF5A5F;--viz-s1-ink:#fff;--viz-s2-ink:#0E2A1E;--viz-s3-ink:#fff;--viz-s4-ink:#33230A;--viz-s5-ink:#fff;--viz-ok:#2FBF8A;--viz-warn:#F5C242;--viz-bad:#FF5A5F;--viz-mute:#A3A3B0;}
html[data-theme="light"] .app-shell{--viz-o1:#2A1E70;--viz-o2:#5B49C2;--viz-o3:#9C8EE8;--viz-o4:#D8D1F8;--viz-o1-ink:#fff;--viz-o2-ink:#fff;--viz-o3-ink:#1D1D1F;--viz-o4-ink:#1D1D1F;--viz-s1:#138A5E;--viz-s2:#7AD0A6;--viz-s3:#A3A3AE;--viz-s4:#F2B01E;--viz-s5:#C62828;--viz-s1-ink:#fff;--viz-s2-ink:#0E2A1E;--viz-s3-ink:#1D1D1F;--viz-s4-ink:#33230A;--viz-s5-ink:#fff;--viz-ok:#1BA06E;--viz-warn:#F2B01E;--viz-bad:#C62828;--viz-mute:#B3B3BE;}
.gnv-tc{table-layout:auto;}
.gnv-tc th,.gnv-tc td{padding:11px 16px;}
.gnv-tc tr.is-you td:first-child{box-shadow:inset 3px 0 0 var(--lime);}
.gnv-tsub{display:block;font-size:11px;color:var(--text3);margin-top:1px;}
.gnv-delta,.gnv-chip{display:inline-block;font-size:11.5px;font-weight:600;padding:2px 9px;border-radius:999px;white-space:nowrap;}
.gnv-delta.is-up,.gnv-chip.is-ok{background:rgba(47,191,138,.16);color:var(--success);}
.gnv-delta.is-down,.gnv-chip.is-bad{background:rgba(255,90,95,.16);color:var(--danger);}
.gnv-delta.is-flat,.gnv-chip.is-flat{background:var(--viz-track);color:var(--text2);}
.gnv-chip.is-warn{background:rgba(245,194,66,.18);color:var(--warning);}
.gnv-thead{padding:18px 20px 12px;margin:0;}
.gnv-pad{padding:10px 20px 0;}

.gnv-new{margin-top:16px;}
.gnv-row.gnv-new{margin-top:16px;}
.gnv-row > .gnv-new{margin-top:0;}
.gnv-card{padding:22px;}
.gnv-card.gnv-tbl-card{padding:0;overflow:hidden;}
.gnv-row > .gnv-card,.gnv-row > .card{margin-top:0!important;margin-bottom:0!important;}

/* legacy bar components share the new bar geometry: 10px hairline track, rounded track, 5px rounded data end */
.app-shell .mb-bar,.app-shell .rr-bar,.app-shell [style*="overflow:hidden"][style*="height:14px"],.app-shell [style*="overflow:hidden"][style*="height:8px"][style*="border-radius:6px"]{height:10px!important;border-radius:999px!important;background:var(--viz-track)!important;}
.app-shell .mb-bar>i{background:var(--viz-bar)!important;border-radius:0 5px 5px 0;}
.app-shell .rr-bar i{border-radius:0 5px 5px 0;}
.app-shell [style*="overflow:hidden"][style*="height:14px"]>div,.app-shell [style*="overflow:hidden"][style*="height:8px"][style*="border-radius:6px"]>div{border-radius:0 5px 5px 0;}

.gnv-meta.is-compact{gap:2px 12px;padding-top:8px;margin-top:8px;}
.gnv-meta.is-compact .gnv-mi code{font-size:10.5px;}
.gnv-nss{margin-top:4px;font-size:12px;font-weight:650;}
.gnv-nss.is-pos{color:var(--success);}.gnv-nss.is-neg{color:var(--danger);}.gnv-nss.is-flat{color:var(--warning);}

.gnv-srow.single{grid-template-columns:1fr;}
.gnv-more{display:inline-block;margin-top:8px;font-size:12px;color:var(--accent);text-decoration:underline;cursor:pointer;}
.gnv-sg{gap:0;}

/* ==== glass and depth: gloss layer, coloured lift, recessed tracks, soft glow under lines ==== */
.app-shell{--gloss:linear-gradient(180deg,rgba(255,255,255,.22) 0%,rgba(255,255,255,.04) 50%,rgba(0,0,0,0) 60%,rgba(0,0,0,.08) 100%);}
html[data-theme="light"] .app-shell{--gloss:linear-gradient(180deg,rgba(255,255,255,.34) 0%,rgba(255,255,255,.06) 50%,rgba(0,0,0,0) 60%,rgba(20,10,80,.06) 100%);}
.gnv-bfill{background:var(--gloss),var(--fill,var(--viz-bar));border-radius:999px;box-shadow:inset 0 1px 0 rgba(255,255,255,.28),0 4px 10px -6px var(--glowc,rgba(130,110,240,.35));}
.gnv-btrack{height:10px;box-shadow:inset 0 1px 3px rgba(0,0,0,.34),inset 0 0 0 1px rgba(255,255,255,.04);}
html[data-theme="light"] .app-shell .gnv-btrack{box-shadow:inset 0 1px 3px rgba(40,30,110,.16),inset 0 0 0 1px rgba(255,255,255,.7);}
.gnv-cb{height:8px!important;box-shadow:inset 0 1px 2px rgba(0,0,0,.30);}
html[data-theme="light"] .app-shell .gnv-cb{box-shadow:inset 0 1px 2px rgba(40,30,110,.14);}
.gnv-cb u{background:var(--gloss),var(--fill,var(--viz-bar));border-radius:999px!important;box-shadow:inset 0 1px 0 rgba(255,255,255,.4);}
.gnv-stk .gnv-sg{background:var(--gloss),var(--fill);box-shadow:inset 0 1px 0 rgba(255,255,255,.22);height:100%;}
.gnv-stk{height:24px;}
.gnv-line{filter:drop-shadow(0 3px 4px var(--glow,transparent));stroke-width:2;}
.gnv-col{filter:drop-shadow(0 4px 5px var(--glow,transparent));}
.gnv-arc{filter:drop-shadow(0 3px 4px rgba(0,0,0,.18));}
.gnv-sw,.gnv-k-box,.gnv-k-dot{box-shadow:inset 0 1px 0 rgba(255,255,255,.4),0 2px 5px -2px rgba(0,0,0,.4);}
.gnv-card{background-image:linear-gradient(180deg,rgba(255,255,255,.035),rgba(255,255,255,0) 40%);}
/* legacy bar components get the same gloss */
.app-shell .mb-bar>i,.app-shell .rr-bar i,.app-shell [style*="height:100%"][style*="background:var(--"]{position:relative;}
.app-shell .mb-bar>i::after,.app-shell .rr-bar i::after,.app-shell [style*="height:100%"][style*="background:var(--"]::after{content:"";position:absolute;inset:0;border-radius:inherit;background:var(--gloss);pointer-events:none;}

/* ==== 3D details: pearl knobs on bars, beveled donut, glass gauges ==== */
.gnv-bfill{position:relative;min-width:14px;}
.gnv-bfill::after{content:"";position:absolute;right:-1px;top:50%;width:14px;height:14px;transform:translateY(-50%);border-radius:50%;background:radial-gradient(circle at 36% 30%,#fff 0%,#f1eeff 55%,#cfc8f4 100%);box-shadow:0 2px 5px rgba(0,0,0,.35),inset 0 -1px 1px rgba(60,40,140,.25);}
.gnv-bev-o{fill:none;stroke:rgba(255,255,255,.28);stroke-width:1.2;}
.gnv-bev-i{fill:none;stroke:rgba(0,0,0,.32);stroke-width:2;}
.gnv-medal{fill:rgba(255,255,255,.05);stroke:rgba(255,255,255,.14);stroke-width:1;filter:drop-shadow(0 3px 5px rgba(0,0,0,.35));}
html[data-theme="light"] .app-shell .gnv-medal{fill:rgba(255,255,255,.75);stroke:rgba(255,255,255,.9);filter:drop-shadow(0 4px 7px rgba(60,40,140,.22));}
html[data-theme="light"] .app-shell .gnv-bev-i{stroke:rgba(60,40,140,.22);}
.gnv-arc{filter:drop-shadow(0 7px 8px rgba(0,0,0,.34));}
html[data-theme="light"] .app-shell .gnv-arc{filter:drop-shadow(0 7px 8px rgba(60,40,140,.28));}
.gnv-dwrap{width:184px;height:184px;}
.gnv-rings{display:grid;grid-template-columns:repeat(auto-fit,minmax(150px,1fr));gap:14px;}
.gnv-ring-cell{display:flex;flex-direction:column;align-items:center;gap:6px;padding:16px 10px 14px;border-radius:22px;background:linear-gradient(180deg,rgba(255,255,255,.06),rgba(255,255,255,.015));box-shadow:inset 0 1px 0 rgba(255,255,255,.10),0 14px 26px -16px rgba(0,0,0,.6);outline:none;}
html[data-theme="light"] .app-shell .gnv-ring-cell{background:linear-gradient(180deg,rgba(255,255,255,.75),rgba(255,255,255,.45));box-shadow:inset 0 1px 0 #fff,0 14px 26px -16px rgba(60,40,140,.35);}
.gnv-rwrap{position:relative;width:112px;height:112px;}
.gnv-rtrack{fill:none;stroke:var(--viz-track);}
.gnv-rarc{fill:none;filter:drop-shadow(0 4px 6px var(--glow,transparent));}
.gnv-rmid{position:absolute;inset:0;display:flex;align-items:center;justify-content:center;}
.gnv-rmid b{font-size:19px;font-weight:650;letter-spacing:-.02em;}
.gnv-rlab{font-size:12.5px;font-weight:600;text-align:center;}
.gnv-rsub{font-size:11px;color:var(--text3);text-align:center;}

.eng-viz > .card,.eng-viz > .gnv-row{margin-top:16px;}
