/* v0.66.0 FLP Command Center skin. Loaded last. Scoped to the owner Dashboard (main.visual-main) and Performance (main.performance-main)
   page chrome plus the .flp-skin component roots (.visual-intelligence-dashboard / .performance-page). The member portal, shared bearer
   reports, other owner pages and the sidebar keep their own system. Colours: green favourable/verified, amber attention/partial/stale,
   red unfavourable/invalid, blue info; every status colour is paired with a text label. Glows and the neon ring are decorative only.
   Performance: a class list in the rightmost compound is written out as plain comma-separated selectors, never :is(.a,.b,...), so
   Chromium can bucket each rule by class instead of matching it against every element on every re-render (measured ~15-20% less
   layout/style work per Performance click). tests/flp-command-ui.test.mjs keeps that from regressing. */
@property --flp-ang{syntax:'<angle>';initial-value:0deg;inherits:false}
@property --flp-edge{syntax:'<length>';initial-value:0px;inherits:false}
main.visual-main,main.performance-main,.flp-skin{--flp-bg:#06070c;--flp-fg:#f2f4f8;--flp-mut:#9aa3b2;--flp-dim:#8f9daf;--flp-ac:#ff7a4f;--flp-ac2:#c82b00;--flp-blu:#6ea8ff;--flp-vio:#a78bfa;--flp-amb:#fbbf24;--flp-grn:#34d399;--flp-red:#fb7185;--flp-glass:rgba(255,255,255,.05);--flp-bd:rgba(255,255,255,.09);--flp-bd2:rgba(255,255,255,.16);--flp-radius:18px;--flp-font:-apple-system,BlinkMacSystemFont,"SF Pro Text","Segoe UI",Roboto,Inter,sans-serif;--flp-label:#ffb694;--flp-hi:#ffc3a8;--flp-well:rgba(255,255,255,.035);--flp-well-bd:rgba(255,255,255,.075);--flp-solid:#0d0f16;--flp-shadow:0 12px 32px rgba(0,0,0,.35),inset 0 1px 0 rgba(255,255,255,.09);--flp-topbar-h:64px}
main.visual-main,main.performance-main,.flp-skin{--flp-tone-ac:linear-gradient(90deg,#ff7a4f,#c82b00);--flp-tone-amb:linear-gradient(90deg,#fbbf24,#f59e0b);--flp-tone-goal:linear-gradient(90deg,#6ea8ff,#a78bfa);--flp-tone-grn:linear-gradient(90deg,#34d399,#10b981);--flp-tone-vio:linear-gradient(90deg,#a78bfa,#7c5cf0);--flp-tone-blu:linear-gradient(90deg,#6ea8ff,#3b82f6);--flp-step-ac:linear-gradient(90deg,rgba(255,122,79,.30),rgba(200,43,0,.18));--flp-step-amb:linear-gradient(90deg,rgba(251,191,36,.28),rgba(245,158,11,.16));--flp-step-grn:linear-gradient(90deg,rgba(52,211,153,.30),rgba(52,211,153,.14));--flp-step-blu:linear-gradient(90deg,rgba(110,168,255,.30),rgba(110,168,255,.14));--flp-step-goal:linear-gradient(90deg,rgba(110,168,255,.30),rgba(167,139,250,.18));--flp-step-vio:linear-gradient(90deg,rgba(167,139,250,.30),rgba(124,92,240,.16))}
/* Tokens APX used but never defined (valid only inside these roots; --mono/--sans only on .flp-skin, whose type overrides below keep
   the now-valid `font:… var(--mono)` shorthands readable) + APX tokens re-pointed at the FLP palette. */
.flp-skin{--mono:ui-monospace,SFMono-Regular,Menlo,Consolas,monospace;--sans:var(--flp-font)}
main.visual-main,main.performance-main,.flp-skin{--surface:var(--flp-glass);--danger:var(--flp-red);--warning:var(--flp-amb);--bg:var(--flp-bg);--text:var(--flp-fg);--muted:var(--flp-mut);--border:var(--flp-bd);--accent:var(--flp-ac);--green:var(--flp-grn);--amber:var(--flp-amb);--red:var(--flp-red);--panel:var(--flp-solid);--panel2:#12151e;color-scheme:dark}
@media(max-width:720px){main.visual-main,main.performance-main,.flp-skin{--flp-topbar-h:61px}}

/* ---- Page chrome: background + glows. The glow layer is a sticky, zero-height-in-flow first box of <main>, so it stays in the viewport
   while scrolling but can never extend under (or tint) the sidebar at any breakpoint. Content sits above it. ---- */
main.visual-main,main.performance-main{position:relative;isolation:isolate;background:var(--flp-bg);color:var(--flp-fg)}
main.visual-main::before,main.performance-main::before{content:'';display:block;position:sticky;top:0;z-index:0;height:100vh;margin-bottom:-100vh;pointer-events:none;background:radial-gradient(900px 500px at 12% -8%,rgba(255,122,79,.13),transparent 60%),radial-gradient(1000px 600px at 95% 15%,rgba(110,168,255,.09),transparent 60%),radial-gradient(900px 700px at 50% 110%,rgba(167,139,250,.08),transparent 60%)}
main.visual-main>.content,main.performance-main>.content{position:relative;z-index:1}
main.visual-main>.topbar,main.performance-main>.topbar{background:rgba(10,12,18,.62);-webkit-backdrop-filter:blur(28px) saturate(170%);backdrop-filter:blur(28px) saturate(170%);border-bottom-color:var(--flp-bd)}
main.visual-main>.topbar .breadcrumb strong,main.performance-main>.topbar .breadcrumb strong{color:var(--flp-fg)}
main.visual-main>.topbar .search-wrap input,main.performance-main>.topbar .search-wrap input{background:rgba(255,255,255,.05);border-color:var(--flp-bd);color:var(--flp-fg)}
:is(main.visual-main,main.performance-main) .page-heading h1{font-family:var(--flp-font);font-weight:650;letter-spacing:-.025em;color:var(--flp-fg)}
:is(main.visual-main,main.performance-main) .page-heading p{color:var(--flp-mut);font-size:13px;line-height:1.55}
:is(main.visual-main,main.performance-main) .eyebrow{font:650 12px/1.3 var(--flp-font);letter-spacing:.14em;color:var(--flp-label)}
:is(main.visual-main,main.performance-main) .compact-select{height:36px;background-color:rgba(255,255,255,.06);border:1px solid var(--flp-bd);border-radius:12px;color:var(--flp-fg);font:560 12.5px/1.2 var(--flp-font)}
:is(main.visual-main,main.performance-main) .compact-select:hover{border-color:var(--flp-bd2)}
:is(main.visual-main,main.performance-main) .compact-select option{background:var(--flp-solid);color:var(--flp-fg)}
:is(main.visual-main,main.performance-main) .status-label{color:var(--flp-mut);font-size:12px}
:is(main.visual-main,main.performance-main) .sample-banner{background:rgba(251,191,36,.07);border:1px solid rgba(251,191,36,.28);border-radius:14px;color:#f7d690;font-size:12px}
:is(main.visual-main,main.performance-main) .sample-banner button{color:#fde7b0}
/* The owner-only recovery-key notice shares the banner slot: blue info glass instead of the legacy lavender slab (global rule unchanged elsewhere). */
:is(main.visual-main,main.performance-main) .info-box.owner-warning{background:rgba(110,168,255,.08);border:1px solid rgba(110,168,255,.28);border-radius:14px;color:var(--flp-mut);font-size:12.5px;line-height:1.55}
:is(main.visual-main,main.performance-main) .info-box.owner-warning strong{color:var(--flp-fg)}
:is(main.visual-main,main.performance-main) .info-box.owner-warning .btn{min-height:30px;padding:6px 12px;border:1px solid var(--flp-bd);border-radius:10px;background:rgba(255,255,255,.06);color:var(--flp-fg);font:560 12px/1.2 var(--flp-font);box-shadow:inset 0 1px 0 rgba(255,255,255,.08)}
:is(main.visual-main,main.performance-main) .info-box.owner-warning .btn:hover{background:rgba(255,255,255,.1);border-color:var(--flp-bd2)}
:is(main.visual-main,main.performance-main) :is(button,a,select,summary,input,textarea,[tabindex]):focus-visible{outline:2px solid #ffb08f;outline-offset:2px}
:is(main.visual-main,main.performance-main) .performance-welcome{margin:0;max-width:none;padding:26px 28px;background:var(--flp-glass);border:1px solid var(--flp-bd);border-radius:var(--flp-radius);-webkit-backdrop-filter:blur(28px) saturate(160%);backdrop-filter:blur(28px) saturate(160%);box-shadow:var(--flp-shadow)}
:is(main.visual-main,main.performance-main) .performance-welcome h2{margin:0;font:650 20px/1.3 var(--flp-font);letter-spacing:-.015em;color:var(--flp-fg)}
:is(main.visual-main,main.performance-main) .performance-welcome p{max-width:760px;margin:8px 0 0;color:var(--flp-mut);font-size:13px;line-height:1.6}
:is(main.visual-main,main.performance-main) .performance-welcome .btn{margin-top:14px}
:is(main.visual-main,main.performance-main) .performance-welcome.error{border-color:rgba(251,113,133,.35)}
:is(main.visual-main,main.performance-main) .performance-welcome.error h2{color:var(--flp-red)}

/* ---- Layout fixes (unscoped on purpose): the grid roots never let one wide child (e.g. the website bridge track) set every
   sibling's width, and the drilldown tables always scroll inside themselves instead of clipping or widening the page. ---- */
.visual-intelligence-dashboard,.performance-page{grid-template-columns:minmax(0,1fr)}
.visual-intelligence-dashboard>*,.performance-page>*{min-width:0}
.offer-journey-table,.segment-journey-table,.campaign-delivery-table,.ad-group-delivery-table,.ad-delivery-table,.placement-delivery-table,.performance-provider-table{overflow-x:auto}
.offer-journey-row,.segment-journey-header,.segment-journey-row,.campaign-delivery-row,.ad-group-delivery-row,.ad-delivery-row,.placement-delivery-row{min-width:min-content}

/* ---- .flp-skin root: FLP type system, spacing, scrollbars and shared controls ---- */
.flp-skin{container:flp/inline-size;gap:20px;font:13.5px/1.5 var(--flp-font);letter-spacing:0;color:var(--flp-fg)}
.flp-skin,.flp-skin *{scrollbar-width:thin;scrollbar-color:rgba(255,255,255,.18) transparent}
.flp-skin ::-webkit-scrollbar{width:11px;height:11px}
.flp-skin ::-webkit-scrollbar-track{background:transparent}
.flp-skin ::-webkit-scrollbar-thumb{background:rgba(255,255,255,.16);border-radius:99px;border:3px solid transparent;background-clip:padding-box}
.flp-skin ::-webkit-scrollbar-thumb:hover{background:rgba(255,255,255,.3);background-clip:padding-box}
.flp-skin .flp-table-wrap,.flp-skin .offer-journey-table,.flp-skin .segment-journey-table,.flp-skin .campaign-delivery-table,.flp-skin .ad-group-delivery-table,.flp-skin .ad-delivery-table,.flp-skin .placement-delivery-table,.flp-skin .performance-provider-table,.flp-skin .website-bridge-track,.flp-skin .rhythm-canvas{overscroll-behavior-x:contain;scrollbar-color:rgba(255,122,79,.5) transparent}
.flp-skin .flp-table-wrap::-webkit-scrollbar-thumb,.flp-skin .offer-journey-table::-webkit-scrollbar-thumb,.flp-skin .segment-journey-table::-webkit-scrollbar-thumb,.flp-skin .campaign-delivery-table::-webkit-scrollbar-thumb,.flp-skin .ad-group-delivery-table::-webkit-scrollbar-thumb,.flp-skin .ad-delivery-table::-webkit-scrollbar-thumb,.flp-skin .placement-delivery-table::-webkit-scrollbar-thumb,.flp-skin .performance-provider-table::-webkit-scrollbar-thumb{background:linear-gradient(90deg,rgba(255,122,79,.5),rgba(200,43,0,.5));background-clip:padding-box}
.flp-skin :focus-visible{outline:2px solid #ffb08f;outline-offset:2px}
.flp-skin h2,.flp-skin h3{color:var(--flp-fg)}
.flp-skin .muted{color:var(--flp-mut)}
.flp-skin .error-text{color:var(--flp-red);font-size:12.5px}
.flp-skin code{font:500 12px/1.3 var(--mono);color:var(--flp-mut);background:rgba(255,255,255,.06);border-radius:5px;padding:1px 4px}
.flp-skin .btn{min-height:32px;padding:7px 13px;border:1px solid var(--flp-bd);border-radius:10px;background:rgba(255,255,255,.06);color:var(--flp-fg);font:560 12px/1.2 var(--flp-font);box-shadow:inset 0 1px 0 rgba(255,255,255,.08)}
.flp-skin .btn:hover{background:rgba(255,255,255,.1);border-color:var(--flp-bd2)}
.flp-skin .btn.ghost{background:transparent;box-shadow:none;color:var(--flp-mut)}
.flp-skin .btn.ghost:hover{color:var(--flp-fg);background:rgba(255,255,255,.06)}
.flp-skin .btn.primary{background:linear-gradient(180deg,#ff8a62,#e5582a);border-color:rgba(255,122,79,.6);color:#1b0c05;font-weight:650;box-shadow:0 6px 18px rgba(255,122,79,.22),inset 0 1px 0 rgba(255,255,255,.25)}
.flp-skin .btn.primary:hover{background:linear-gradient(180deg,#ff9a76,#ec6435)}
.flp-skin .btn .icon{width:14px;height:14px}
.flp-skin .pill{display:inline-flex;align-items:center;gap:5px;padding:2px 10px;border:1px solid var(--flp-bd);border-radius:99px;background:rgba(255,255,255,.06);color:var(--flp-mut);font:620 12px/1.5 var(--flp-font);white-space:nowrap}
.flp-skin .pill.new{background:rgba(110,168,255,.13);border-color:rgba(110,168,255,.32);color:var(--flp-blu)}
.flp-skin .pill.contacted{background:rgba(167,139,250,.13);border-color:rgba(167,139,250,.32);color:#c4b5fd}
.flp-skin .pill.qualified,.flp-skin .pill.proposal{background:rgba(251,191,36,.12);border-color:rgba(251,191,36,.3);color:var(--flp-amb)}
.flp-skin .pill.won{background:rgba(52,211,153,.14);border-color:rgba(52,211,153,.35);color:var(--flp-grn)}
.flp-skin .pill.lost,.flp-skin .pill.warning{background:rgba(251,113,133,.13);border-color:rgba(251,113,133,.35);color:var(--flp-red)}
.flp-skin :where(input:not([type=range]):not([type=checkbox]):not([type=radio]),select,textarea){box-sizing:border-box;border:1px solid var(--flp-bd);border-radius:10px;background:rgba(0,0,0,.28);color:var(--flp-fg);font:13px/1.45 var(--flp-font);padding:8px 11px;box-shadow:inset 0 1px 0 rgba(255,255,255,.04)}
.flp-skin :where(input,select,textarea):focus{border-color:rgba(255,122,79,.6);box-shadow:0 0 0 3px rgba(255,122,79,.14);outline:none}
.flp-skin :is(input,textarea)::placeholder{color:var(--flp-dim)}
.flp-skin select option{background:var(--flp-solid);color:var(--flp-fg)}
.flp-skin :is(input[type=checkbox],input[type=radio],input[type=range]){accent-color:var(--flp-ac)}
.flp-skin details>summary{cursor:pointer}

/* ---- Existing Dashboard/Performance sections become FLP glass cards (markup unchanged). A section that the command center marks
   .flp-section stays an open FLP section (header + cards) instead of a card. ---- */
/* In-flow cards carry no backdrop-filter: a blur under every hover/entrance/scroll repaint collapsed frame rates, and the translucent
   --flp-glass tint over the page glows renders the same. Only surfaces over scrolling content (top bar, sticky command bar, tooltips) blur. */
.flp-skin .performance-journey:where(:not(.flp-section)),.flp-skin .ga4-event-journey:where(:not(.flp-section)),.flp-skin .submitted-journey:where(:not(.flp-section)),.flp-skin .performance-trends:where(:not(.flp-section)),.flp-skin .money-dashboard:where(:not(.flp-section)),.flp-skin .sales-path-dashboard:where(:not(.flp-section)),.flp-skin .eod-sales-dashboard:where(:not(.flp-section)),.flp-skin .performance-recent:where(:not(.flp-section)),.flp-skin .performance-compare-bar:where(:not(.flp-section)),.flp-skin .website-journey-bridge:where(:not(.flp-section)),.flp-skin .journey-change-signals:where(:not(.flp-section)),.flp-skin .offer-journey:where(:not(.flp-section)),.flp-skin .performance-rhythm:where(:not(.flp-section)),.flp-skin .performance-lens:where(:not(.flp-section)),.flp-skin .segment-journey:where(:not(.flp-section)),.flp-skin .performance-channel-section:where(:not(.flp-section)),.flp-skin .campaign-delivery:where(:not(.flp-section)),.flp-skin .ad-group-delivery:where(:not(.flp-section)),.flp-skin .ad-delivery:where(:not(.flp-section)),.flp-skin .placement-delivery:where(:not(.flp-section)),.flp-skin .performance-split:where(:not(.flp-section)),.flp-skin .performance-definitions:where(:not(.flp-section)),.flp-skin .performance-forecast:where(:not(.flp-section)),.flp-skin .performance-diagnosis:where(:not(.flp-section)),.flp-skin .performance-experiments:where(:not(.flp-section)),.flp-skin .performance-campaign-handoffs:where(:not(.flp-section)){position:relative;margin:0;padding:20px 22px;overflow:visible;background:var(--flp-glass);border:1px solid var(--flp-bd);border-radius:var(--flp-radius);box-shadow:var(--flp-shadow);color:var(--flp-fg)}
.flp-skin .performance-journey:is(:hover,:focus-within),.flp-skin .ga4-event-journey:is(:hover,:focus-within),.flp-skin .submitted-journey:is(:hover,:focus-within),.flp-skin .performance-trends:is(:hover,:focus-within),.flp-skin .money-dashboard:is(:hover,:focus-within),.flp-skin .sales-path-dashboard:is(:hover,:focus-within),.flp-skin .eod-sales-dashboard:is(:hover,:focus-within),.flp-skin .performance-recent:is(:hover,:focus-within),.flp-skin .performance-compare-bar:is(:hover,:focus-within),.flp-skin .website-journey-bridge:is(:hover,:focus-within),.flp-skin .journey-change-signals:is(:hover,:focus-within),.flp-skin .offer-journey:is(:hover,:focus-within),.flp-skin .performance-rhythm:is(:hover,:focus-within),.flp-skin .performance-lens:is(:hover,:focus-within),.flp-skin .segment-journey:is(:hover,:focus-within),.flp-skin .performance-channel-section:is(:hover,:focus-within),.flp-skin .campaign-delivery:is(:hover,:focus-within),.flp-skin .ad-group-delivery:is(:hover,:focus-within),.flp-skin .ad-delivery:is(:hover,:focus-within),.flp-skin .placement-delivery:is(:hover,:focus-within),.flp-skin .performance-split:is(:hover,:focus-within),.flp-skin .performance-definitions:is(:hover,:focus-within),.flp-skin .performance-forecast:is(:hover,:focus-within),.flp-skin .performance-diagnosis:is(:hover,:focus-within),.flp-skin .performance-experiments:is(:hover,:focus-within),.flp-skin .performance-campaign-handoffs:is(:hover,:focus-within){z-index:2}
.flp-skin .performance-forecast.flp-section,.flp-skin .performance-diagnosis.flp-section,.flp-skin .performance-experiments.flp-section,.flp-skin .performance-campaign-handoffs.flp-section,.flp-skin .campaign-delivery.flp-section,.flp-skin .ad-group-delivery.flp-section,.flp-skin .ad-delivery.flp-section,.flp-skin .placement-delivery.flp-section,.flp-skin .segment-journey.flp-section,.flp-skin .offer-journey.flp-section,.flp-skin .journey-change-signals.flp-section,.flp-skin .website-journey-bridge.flp-section,.flp-skin .submitted-journey.flp-section,.flp-skin .ga4-event-journey.flp-section,.flp-skin .performance-rhythm.flp-section,.flp-skin .performance-lens.flp-section,.flp-skin .performance-trends.flp-section,.flp-skin .performance-recent.flp-section,.flp-skin .performance-channel-section.flp-section,.flp-skin .performance-split.flp-section{margin:0;padding:0;border:0;border-radius:0;background:none;box-shadow:none;-webkit-backdrop-filter:none;backdrop-filter:none;overflow:visible}
.flp-skin .performance-journey::before{display:none}
.flp-skin .performance-journey-head,.flp-skin .performance-section-head,.flp-skin .money-dashboard-head,.flp-skin .panel-head{display:flex;flex-wrap:wrap;align-items:flex-start;justify-content:space-between;gap:10px 18px;margin:0;padding:0 0 14px;border:0}
.flp-skin :is(.performance-journey-head,.performance-section-head,.money-dashboard-head,.panel-head)>div:first-child{flex:1 1 340px;min-width:0}
.flp-skin .performance-journey.compact .performance-journey-head,.flp-skin .performance-journey .performance-journey-head{padding-bottom:6px;border:0}
.flp-skin :is(.performance-journey-head,.performance-section-head,.money-dashboard-head,.panel-head) h2{margin:6px 0 0;font:650 16px/1.3 var(--flp-font);letter-spacing:-.01em;color:var(--flp-fg)}
.flp-skin :is(.performance-journey-head,.performance-section-head,.money-dashboard-head,.panel-head) h3{margin:6px 0 0;font:620 13.5px/1.35 var(--flp-font);color:var(--flp-fg)}
.flp-skin :is(.performance-journey-head,.performance-section-head,.money-dashboard-head,.panel-head) p{max-width:820px;margin:5px 0 0;color:var(--flp-mut);font-size:12.5px;line-height:1.55}
.flp-skin :is(.performance-journey-head,.performance-section-head,.money-dashboard-head,.panel-head)>small,.flp-skin .journey-hint{flex:0 1 auto;max-width:340px;padding-top:4px;color:var(--flp-dim);font:500 12px/1.45 var(--flp-font);letter-spacing:0;text-align:right;white-space:normal}
.flp-skin .performance-label,.flp-skin .section-kicker{display:block;font:650 12px/1.3 var(--flp-font);letter-spacing:.14em;text-transform:uppercase;color:var(--flp-label)}
.flp-skin .performance-note{margin:12px 0 0;color:var(--flp-dim);font-size:12px;line-height:1.6}
.flp-skin>.performance-note.final{margin:0;padding:0 4px;border:0}
.flp-skin .performance-empty,.flp-skin .performance-spend-empty{padding:14px 0 0;border:0;color:var(--flp-mut);font-size:12.5px;line-height:1.55}

/* Journey: nodes become glass KPI tiles (<small> label / <strong> value kept). */
.flp-skin .journey-lane{padding:14px 0 0;border:0}
.flp-skin .lane-title{display:flex;flex-wrap:wrap;align-items:baseline;justify-content:space-between;gap:4px 14px;margin:0 0 10px}
.flp-skin .lane-title>span{font:600 12.5px/1.35 var(--flp-font);color:var(--flp-fg)}
.flp-skin .lane-title small{display:inline;margin:0;color:var(--flp-dim);font-size:12px}
.flp-skin .journey-track{display:flex;align-items:stretch;gap:0;min-width:0;overflow:visible;padding:0}
.flp-skin .journey-node,.flp-skin .journey-node:first-child{display:flex;flex-direction:column;justify-content:flex-start;align-items:stretch;flex:1 1 0;min-width:0;padding:14px 16px 13px;border:1px solid var(--flp-well-bd);border-radius:14px;background:var(--flp-well);color:var(--flp-fg);text-align:left}
.flp-skin .journey-node small{font:520 12px/1.3 var(--flp-font);letter-spacing:0;text-transform:none;color:var(--flp-mut)}
.flp-skin .journey-node strong{margin:7px 0 5px;font:660 25px/1.1 var(--flp-font);letter-spacing:-.02em;font-variant-numeric:tabular-nums;color:var(--flp-fg)}
.flp-skin .performance-journey.compact .journey-node strong{font-size:23px}
.flp-skin .journey-node span{font-size:12px;line-height:1.4;color:var(--flp-dim)}
.flp-skin .journey-node .journey-delta{align-self:flex-start;margin:0 0 6px}
.flp-skin .journey-node i{top:11px;right:12px;font:650 12px/1 var(--flp-font);letter-spacing:.08em;color:var(--flp-ac)}
.flp-skin .journey-node.accent{background:linear-gradient(180deg,rgba(255,122,79,.09),rgba(255,122,79,.02));border-color:rgba(255,122,79,.2)}
.flp-skin .journey-node.accent strong{color:var(--flp-hi)}
.flp-skin .journey-node:hover,.flp-skin .journey-node:focus-visible{background:rgba(255,255,255,.07);border-color:var(--flp-bd2);box-shadow:0 10px 24px rgba(0,0,0,.28)}
.flp-skin .journey-node.selected,.flp-skin .journey-node.selected:hover{background:linear-gradient(180deg,rgba(255,122,79,.17),rgba(255,122,79,.04));border-color:rgba(255,122,79,.55);box-shadow:inset 0 0 0 1px rgba(255,122,79,.3),0 10px 26px rgba(255,122,79,.12)}
.flp-skin .journey-node.selected strong{color:var(--flp-ac)}
.flp-skin .journey-track>.journey-arrow{display:grid;place-items:center;flex:0 0 22px;padding:0;transform:none;color:var(--flp-dim);font-size:14px}
.flp-skin .journey-bridge{height:22px;border:0;color:var(--flp-dim)}
.flp-skin .journey-branches{display:grid;grid-template-columns:minmax(0,1fr) minmax(0,1.35fr);gap:12px;margin-top:16px;background:transparent;border:0}
.flp-skin .journey-branch,.flp-skin .journey-branch+.journey-branch{position:relative;min-width:0;padding:14px;border:1px solid rgba(255,255,255,.065);border-radius:16px;background:rgba(255,255,255,.022)}
.flp-skin .journey-branch .lane-title{margin-bottom:10px}
.flp-skin .branch-line{top:-1px;left:18px;right:18px;height:1px;background:linear-gradient(90deg,var(--flp-ac),transparent 70%);opacity:.75}
.flp-skin .journey-branch.assisted .branch-line{background:linear-gradient(90deg,var(--flp-vio),transparent 70%)}
.flp-skin .performance-spend-strip{display:flex;flex-wrap:wrap;gap:10px;margin-top:14px;border:0}
.flp-skin .performance-spend-strip>div,.flp-skin .performance-spend-strip>div+div{flex:1 1 220px;min-width:0;margin:0;padding:12px 14px;border:1px solid var(--flp-well-bd);border-radius:14px;background:var(--flp-well)}
.flp-skin .performance-spend-strip small{color:var(--flp-mut);font-size:12px}
.flp-skin .performance-spend-strip strong{margin:5px 0 3px;font:650 16px/1.25 var(--flp-font);font-variant-numeric:tabular-nums;color:var(--flp-fg)}
.flp-skin .performance-spend-strip span{color:var(--flp-dim);font-size:12px}

/* Shared inner tiles (wells) used by the GA4, submitted, change-signal, delivery-summary and money grids. */
.flp-skin .ga4-event-grid,.flp-skin .submitted-journey-grid{display:grid;grid-template-columns:repeat(auto-fit,minmax(150px,1fr));gap:10px;margin-top:4px;border:0;border-radius:0;overflow:visible;background:transparent}
.flp-skin :is(.ga4-event-grid,.submitted-journey-grid,.journey-change-grid,.campaign-evidence-summary,.performance-forecast-grid) article:nth-child(n){min-width:0;padding:14px 15px;border:1px solid var(--flp-well-bd);border-radius:14px;background:var(--flp-well)}
.flp-skin :is(.ga4-event-grid,.submitted-journey-grid) span{font-size:12px;color:var(--flp-mut)}
.flp-skin :is(.ga4-event-grid,.submitted-journey-grid) strong{margin-top:8px;font:660 22px/1.1 var(--flp-font);letter-spacing:-.02em;font-variant-numeric:tabular-nums;color:var(--flp-fg)}
.flp-skin :is(.ga4-event-grid,.submitted-journey-grid) small{margin-top:6px;font-size:12px;line-height:1.45;color:var(--flp-dim)}
.flp-skin .ga4-event-journey details{margin-top:12px}
.flp-skin .ga4-event-journey summary{font-size:12px;color:var(--flp-mut)}
.flp-skin .ga4-event-inventory,.flp-skin .ga4-event-properties{gap:8px}
.flp-skin :is(.ga4-event-inventory,.ga4-event-properties) span{padding:4px 11px;border:1px solid var(--flp-bd);border-radius:99px;background:rgba(255,255,255,.05);color:var(--flp-mut);font-size:12px}
.flp-skin .ga4-event-inventory b{font:620 12px/1.3 var(--flp-font);font-variant-numeric:tabular-nums;color:var(--flp-fg)}

/* Daily signal sparks: fix the grey slab (gap-line on var(--border)) and draw FLP-orange lines. */
.flp-skin .spark-grid{display:grid;grid-template-columns:repeat(5,minmax(0,1fr));gap:10px;margin-top:4px;background:transparent;border:0}
.flp-skin .journey-spark,.flp-skin .journey-spark+.journey-spark,.flp-skin .journey-spark:nth-child(n){min-width:0;padding:13px 14px 10px;border:1px solid var(--flp-well-bd);border-radius:14px;background:var(--flp-well)}
.flp-skin .journey-spark small{font-size:12px;color:var(--flp-mut)}
.flp-skin .journey-spark strong{font:650 16px/1.1 var(--flp-font);font-variant-numeric:tabular-nums;color:var(--flp-fg)}
.flp-skin .journey-spark svg{height:56px;margin-top:8px}
.flp-skin .journey-spark path{stroke:var(--flp-ac);stroke-width:2;stroke-linejoin:round;stroke-linecap:round;filter:drop-shadow(0 0 6px rgba(255,122,79,.35))}
.flp-skin .journey-spark.unavailable p{margin:18px 0 0;font-size:12px;color:var(--flp-dim);line-height:1.45}

/* Money pulse, sales path and EOD operations panels (finance/funnel markup). */
.flp-skin .money-dashboard-head{padding:0 0 14px;border:0}
.flp-skin .money-metric-grid,.flp-skin .visual-intelligence-dashboard .money-metric-grid{display:grid;grid-template-columns:repeat(4,minmax(0,1fr));gap:10px}
.flp-skin .money-metric,.flp-skin .money-metric.dashboard-drill{min-width:0;padding:15px 16px 30px;border:1px solid var(--flp-well-bd);border-radius:14px;background:var(--flp-well);color:var(--flp-fg)}
.flp-skin .money-metric.primary,.flp-skin .money-metric.primary.dashboard-drill{background:linear-gradient(180deg,rgba(255,122,79,.1),rgba(255,122,79,.025));border-color:rgba(255,122,79,.24)}
.flp-skin .money-metric.dashboard-drill:hover,.flp-skin .money-metric.primary.dashboard-drill:hover,.flp-skin .money-metric.result.dashboard-drill:hover{background:rgba(255,255,255,.07);border-color:var(--flp-bd2)}
.flp-skin .money-metric small{font:520 12px/1.3 var(--flp-font);letter-spacing:0;text-transform:none;color:var(--flp-mut)}
.flp-skin .money-metric>strong,.flp-skin .money-metric .finance-amount{margin:7px 0 5px;font:660 25px/1.15 var(--flp-font);letter-spacing:-.02em;font-variant-numeric:tabular-nums;color:var(--flp-fg);overflow-wrap:anywhere}
.flp-skin .money-metric .finance-amount{margin:0}
.flp-skin .finance-amount.positive{color:var(--flp-grn)}
.flp-skin .finance-amount.negative{color:var(--flp-red)}
.flp-skin .money-metric p{font-size:12px;line-height:1.45;color:var(--flp-dim)}
.flp-skin .dashboard-drill .drill-cue{right:14px;bottom:10px;color:var(--flp-label);font-size:12px}
.flp-skin .money-dashboard-foot,.flp-skin .visual-intelligence-dashboard .money-dashboard-foot{margin-top:14px;padding:12px 0 0;border-top:1px dashed var(--flp-bd);color:var(--flp-dim);font-size:12px}
.flp-skin :is(.sales-path-dashboard,.eod-sales-dashboard) .panel-head{padding:0 0 14px;border:0}
.flp-skin :is(.sales-path-dashboard,.eod-sales-dashboard) .panel-head p{font-size:12.5px}
.flp-skin .sales-path-steps{display:flex;align-items:stretch;gap:8px;min-width:0;overflow-x:auto}
.flp-skin .sales-path-steps>div,.flp-skin .sales-path-steps>button{flex:1 1 0;min-width:120px;padding:14px 16px;border:1px solid var(--flp-well-bd);border-radius:14px;background:var(--flp-well);color:var(--flp-fg);text-align:left}
.flp-skin .sales-path-steps>button:hover{background:rgba(255,255,255,.07);border-color:var(--flp-bd2)}
.flp-skin .sales-path-steps>span{display:grid;place-items:center;flex:0 0 18px;width:auto;color:var(--flp-dim);font-size:14px}
.flp-skin .sales-path-steps small{font:520 12px/1.3 var(--flp-font);letter-spacing:0;text-transform:none;color:var(--flp-mut)}
.flp-skin .sales-path-steps strong{margin:6px 0 3px;font:660 25px/1.1 var(--flp-font);letter-spacing:-.02em;font-variant-numeric:tabular-nums;color:var(--flp-fg)}
.flp-skin .sales-path-steps em{font-size:12px;color:var(--flp-dim)}
.flp-skin .sales-path-rates{display:flex;flex-wrap:wrap;gap:8px;margin-top:12px;border:0;background:transparent}
.flp-skin .sales-path-rates span{padding:4px 12px;border:1px solid var(--flp-bd);border-radius:99px;background:rgba(255,255,255,.05)}
.flp-skin .sales-path-rates small{font-size:12px;color:var(--flp-mut)}
.flp-skin .sales-path-rates strong{font-size:12px;color:var(--flp-fg)}
.flp-skin .funnel-rate-grid,.flp-skin .funnel-money-grid{gap:10px;margin-top:4px}
.flp-skin :is(.funnel-rate-grid,.funnel-money-grid) article{border:1px solid var(--flp-well-bd);border-radius:14px;background:var(--flp-well);padding:14px 15px}
.flp-skin :is(.funnel-rate-grid,.funnel-money-grid) small{font-size:12px;color:var(--flp-mut)}
.flp-skin :is(.funnel-rate-grid,.funnel-money-grid) h2{margin:7px 0 0;font:660 24px/1.15 var(--flp-font);font-variant-numeric:tabular-nums}
.flp-skin :is(.funnel-rate-grid,.funnel-money-grid) p{font-size:12px;color:var(--flp-dim)}

/* Tables: recent people (lead grid) + FLP tables share the FLP table look. */
.flp-skin .performance-recent .lead-grid-scroll{border:0;overflow-x:auto}
.flp-skin .lead-grid,.flp-skin .flp-table{width:100%;border-collapse:collapse;font-size:12.5px;white-space:nowrap}
.flp-skin :is(.lead-grid,.flp-table) th{padding:9px 10px;border:0;border-bottom:1px solid var(--flp-bd);background:transparent;color:var(--flp-mut);font:520 12px/1.35 var(--flp-font);letter-spacing:0;text-transform:none;text-align:left}
.flp-skin :is(.lead-grid,.flp-table) td{padding:9px 10px;border:0;border-bottom:1px solid rgba(255,255,255,.05);color:var(--flp-fg);vertical-align:middle}
.flp-skin :is(.lead-grid,.flp-table) tbody tr:last-child td{border-bottom:0}
.flp-skin :is(.lead-grid,.flp-table) tbody tr:hover td,.flp-skin .lead-grid tr[data-lead]:hover{background:rgba(255,255,255,.04)}
.flp-skin .lead-grid .person strong{font-size:12.5px;color:var(--flp-fg)}
.flp-skin .lead-grid .person small,.flp-skin .lead-grid .cell-note{font-size:12px;color:var(--flp-dim)}
.flp-skin .lead-grid .avatar{background:rgba(255,122,79,.12);border:1px solid rgba(255,122,79,.28);color:var(--flp-hi)}
.flp-skin .lead-grid .lead-source{font-size:12px;color:var(--flp-fg)}
.flp-skin .lead-grid .row-arrow{color:var(--flp-dim)}
.flp-skin :is(.lead-grid,.flp-table) td.muted{color:var(--flp-mut)}

/* Compare bar */
.flp-skin .performance-compare-bar{display:flex;flex-wrap:wrap;align-items:center;justify-content:space-between;gap:12px 24px;padding:16px 20px}
.flp-skin .performance-compare-bar.active{border-left:2px solid var(--flp-ac);background:linear-gradient(90deg,rgba(255,122,79,.08),var(--flp-glass) 60%)}
.flp-skin .performance-compare-bar>div{flex:1 1 320px}
.flp-skin .performance-compare-bar strong{margin-top:5px;font:600 13px/1.4 var(--flp-font);color:var(--flp-fg)}
.flp-skin .performance-compare-bar small{margin-top:4px;color:var(--flp-dim);font-size:12px}

/* Website journey bridge */
.flp-skin .website-bridge-track{gap:8px;margin-top:4px;padding:2px 2px 12px}
/* A row of stages wider than its card fades out at the right edge while more stages remain, so an overlay scrollbar never hides that
   the row scrolls; the fade is tied to the scroll position (no timed motion) and clears at the end. A row that fits has an inactive
   scroll timeline, so it keeps the unregistered 0px edge and no fade. */
@supports (animation-timeline:scroll()){@media (prefers-reduced-motion:no-preference){
.flp-skin .website-bridge-track{-webkit-mask-image:linear-gradient(90deg,#000 calc(100% - var(--flp-edge)),transparent);mask-image:linear-gradient(90deg,#000 calc(100% - var(--flp-edge)),transparent);animation:flp-edge-fade linear both;animation-timeline:scroll(self inline)}
@keyframes flp-edge-fade{from,92%{--flp-edge:56px}to{--flp-edge:0px}}
}}
.flp-skin .website-bridge-stage{flex:0 0 172px;min-height:132px;padding:13px 14px 15px;border:1px solid var(--flp-well-bd);border-radius:14px;background:var(--flp-well);color:var(--flp-fg);--ev:var(--flp-ac)}
.flp-skin .website-bridge-stage.evidence-session{--ev:#7cc4e0}
.flp-skin .website-bridge-stage.evidence-ga4_event{--ev:var(--flp-vio)}
.flp-skin .website-bridge-stage.evidence-person{--ev:var(--flp-grn)}
.flp-skin .website-bridge-stage>div span{font:650 12px/1.3 var(--flp-font);letter-spacing:.08em;color:var(--ev)}
.flp-skin .website-bridge-stage>div strong{margin-top:6px;font:600 12.5px/1.35 var(--flp-font);color:var(--flp-fg)}
.flp-skin .website-bridge-stage>div small{margin-top:5px;font-size:12px;line-height:1.4;color:var(--flp-dim)}
.flp-skin .website-bridge-stage>b{font:660 22px/1.1 var(--flp-font);letter-spacing:-.02em;font-variant-numeric:tabular-nums;color:var(--flp-fg)}
.flp-skin .website-bridge-stage>i{height:3px;background:linear-gradient(90deg,var(--ev),transparent);opacity:.9}
.flp-skin .website-bridge-connector{flex:0 0 116px;min-width:116px;gap:5px;color:var(--flp-mut)}
.flp-skin .website-bridge-connector:before{font:500 18px/1 var(--flp-font)}
.flp-skin .website-bridge-connector span{font:620 12px/1.3 var(--flp-font);font-variant-numeric:tabular-nums}
.flp-skin .website-bridge-connector small{font-size:12px;line-height:1.3;color:var(--flp-dim)}
.flp-skin .website-bridge-connector.expand,.flp-skin .website-bridge-connector.contract{color:var(--flp-mut)}
.flp-skin .website-bridge-connector:is(.expand,.contract) span{color:var(--flp-fg)}
.flp-skin .website-bridge-connector.unit-change{color:var(--flp-dim)}

/* Journey change signals */
.flp-skin .journey-change-grid{gap:10px;margin-top:4px}
.flp-skin .journey-change-signal span{font:650 12px/1.3 var(--flp-font);letter-spacing:.08em;color:var(--flp-dim)}
.flp-skin .journey-change-signal strong{margin-top:5px;font:600 12.5px/1.35 var(--flp-font);color:var(--flp-fg)}
.flp-skin .journey-change-signal small{margin-top:4px;font-size:12px;color:var(--flp-dim)}
.flp-skin .journey-change-signal b{margin-top:12px;font:660 22px/1.1 var(--flp-font);letter-spacing:-.02em;font-variant-numeric:tabular-nums}
.flp-skin .journey-change-signal p{margin:6px 0 0;font:500 12px/1.4 var(--flp-font);color:var(--flp-dim)}
.flp-skin .journey-change-compare{padding:14px 15px;border:1px solid var(--flp-well-bd);border-radius:14px;background:var(--flp-well)}
.flp-skin .journey-change-compare strong{font-size:13px}
.flp-skin .journey-change-compare small{font-size:12px;color:var(--flp-dim)}
.flp-skin .journey-coverage-grid{grid-template-columns:repeat(auto-fit,minmax(min(260px,100%),1fr));gap:10px;margin-top:10px}
.flp-skin .journey-coverage-grid article{padding:12px 14px;border:1px dashed rgba(255,255,255,.13);border-radius:14px;background:rgba(0,0,0,.18)}
.flp-skin .journey-coverage-grid strong{font:600 12.5px/1.35 var(--flp-font)}
.flp-skin .journey-coverage-grid small{font-size:12px;line-height:1.5;color:var(--flp-mut)}

/* Grid-row tables: offer, segment, provider, campaign / ad-group / ad / placement delivery. */
.flp-skin .offer-journey-table,.flp-skin .segment-journey-table,.flp-skin .performance-provider-table,.flp-skin .campaign-delivery-table,.flp-skin .ad-group-delivery-table,.flp-skin .ad-delivery-table,.flp-skin .placement-delivery-table{margin-top:4px;border:1px solid var(--flp-bd);border-radius:14px;background:rgba(0,0,0,.14)}
.flp-skin .offer-journey-row,.flp-skin .segment-journey-row,.flp-skin .performance-provider-row,.flp-skin .campaign-delivery-row,.flp-skin .ad-group-delivery-row,.flp-skin .ad-delivery-row,.flp-skin .placement-delivery-row{border-top:1px solid rgba(255,255,255,.055);border-bottom:0;background:transparent;font-size:12px;font-variant-numeric:tabular-nums}
.flp-skin .offer-journey-row:first-child,.flp-skin .performance-provider-row:first-child,.flp-skin .campaign-delivery-row:first-child,.flp-skin .ad-group-delivery-row:first-child,.flp-skin .ad-delivery-row:first-child,.flp-skin .placement-delivery-row:first-child{border-top:0}
.flp-skin .offer-journey-row:not(.header):hover,.flp-skin .segment-journey-row:not(.header):hover,.flp-skin .campaign-delivery-row:not(.header):hover,.flp-skin .ad-group-delivery-row:not(.header):hover,.flp-skin .ad-delivery-row:not(.header):hover,.flp-skin .placement-delivery-row:not(.header):hover{background:rgba(255,255,255,.03)}
.flp-skin .offer-journey-row.header,.flp-skin .segment-journey-header.header,.flp-skin .performance-provider-row.header,.flp-skin .campaign-delivery-row.header,.flp-skin .ad-group-delivery-row.header,.flp-skin .ad-delivery-row.header,.flp-skin .placement-delivery-row.header,.flp-skin .segment-journey-header{min-height:0;background:rgba(255,255,255,.03);border-bottom:1px solid var(--flp-bd);color:var(--flp-mut);text-transform:none;letter-spacing:0}
.flp-skin :is(.offer-journey-row,.performance-provider-row,.campaign-delivery-row,.ad-group-delivery-row,.ad-delivery-row,.placement-delivery-row).header>*,.flp-skin .segment-journey-header span,.flp-skin .performance-provider-row.header span{font:520 12px/1.35 var(--flp-font);letter-spacing:0;text-transform:none;color:var(--flp-mut)}
.flp-skin :is(.campaign-delivery-row,.ad-group-delivery-row,.ad-delivery-row,.placement-delivery-row)>*,.flp-skin :is(.campaign-delivery-row,.ad-group-delivery-row,.ad-delivery-row,.placement-delivery-row)>*:first-child{padding:11px 12px;border-left:0;font-size:12px}
.flp-skin :is(.campaign-delivery-row,.ad-group-delivery-row,.ad-delivery-row,.placement-delivery-row) strong{font:620 12.5px/1.35 var(--flp-font);color:var(--flp-fg)}
.flp-skin :is(.campaign-delivery-row,.ad-group-delivery-row,.ad-delivery-row,.placement-delivery-row) div small,.flp-skin .placement-delivery-row>small{margin-top:4px;font:500 12px/1.45 var(--flp-font);color:var(--flp-dim)}
.flp-skin .campaign-delivery-row.has-evidence{background:rgba(110,168,255,.05)}
.flp-skin .campaign-id-evidence{margin-top:7px;padding:2px 9px;border:1px solid rgba(110,168,255,.32);border-radius:99px;background:rgba(110,168,255,.13);color:var(--flp-blu);font:620 12px/1.5 var(--flp-font);letter-spacing:0;text-transform:none}
.flp-skin .campaign-id-evidence.none{opacity:1;border-color:var(--flp-bd);background:rgba(255,255,255,.05);color:var(--flp-mut)}
.flp-skin .campaign-open{margin-top:8px;padding:5px 10px;border:1px solid var(--flp-bd);border-radius:9px;background:rgba(255,255,255,.06);color:var(--flp-fg);font:560 12px/1.2 var(--flp-font)}
.flp-skin .campaign-open:hover{background:rgba(255,255,255,.1);border-color:var(--flp-bd2)}
.flp-skin .campaign-evidence-summary{gap:10px;margin:0 0 12px}
.flp-skin .campaign-evidence-summary small{font:520 12px/1.35 var(--flp-font);letter-spacing:0;text-transform:none;color:var(--flp-mut)}
.flp-skin .campaign-evidence-summary strong{margin:7px 0 5px;font:660 22px/1.15 var(--flp-font);letter-spacing:-.02em;color:var(--flp-fg)}
.flp-skin .campaign-evidence-summary span{font-size:12px;line-height:1.45;color:var(--flp-dim)}
.flp-skin .performance-provider-row>*{padding:11px 12px;font-size:12.5px}
.flp-skin .performance-provider-row>*:first-child{padding-left:14px}
.flp-skin .performance-provider-row strong{font-weight:620;color:var(--flp-fg)}
.flp-skin .performance-provider-row>*:nth-child(n+5),.flp-skin .performance-provider-row.header>*:nth-child(n+5){display:block}
.flp-skin .performance-provider-row em{right:8px;top:4px;color:var(--flp-amb);font:600 12px/1.2 var(--flp-font)}
.flp-skin .offer-journey-row.header>span{padding:10px 12px}
.flp-skin .offer-name,.flp-skin .offer-stage,.flp-skin .offer-open{padding:12px;border-left:1px solid rgba(255,255,255,.05)}
.flp-skin .offer-name{border-left:0}
.flp-skin .offer-name strong{font:620 12.5px/1.35 var(--flp-font);color:var(--flp-fg)}
.flp-skin .offer-name small{margin-top:5px;font-size:12px;color:var(--flp-dim)}
.flp-skin .offer-stage span{font-size:12px;color:var(--flp-mut)}
.flp-skin .offer-stage strong{margin-top:6px;font:660 18px/1.1 var(--flp-font);font-variant-numeric:tabular-nums;color:var(--flp-fg)}
.flp-skin .offer-stage small{margin-top:5px;font-size:12px;color:var(--flp-dim)}
.flp-skin .offer-open{border-top:0;border-right:0;border-bottom:0;background:transparent;color:var(--flp-label);font:600 12px/1.3 var(--flp-font);text-align:left}
.flp-skin .offer-open:hover{background:rgba(255,122,79,.07)}
.flp-skin .offer-open.disabled{color:var(--flp-dim)}
.flp-skin .offer-journey-row.unassigned{background:rgba(255,255,255,.015)}
.flp-skin .segment-journey-header span{padding:10px}
.flp-skin .segment-name{padding:12px}
.flp-skin .segment-name strong{font:620 12.5px/1.35 var(--flp-font)}
.flp-skin .segment-name small{margin-top:4px;font-size:12px;color:var(--flp-dim)}
.flp-skin .segment-stage{padding:10px 10px 13px;border-left:1px solid rgba(255,255,255,.05);background:linear-gradient(90deg,var(--flp-ac) var(--segment-rate),rgba(255,255,255,.07) var(--segment-rate)) 10px calc(100% - 6px)/calc(100% - 20px) 3px no-repeat;color:var(--flp-fg)}
.flp-skin .segment-stage span{font-size:12px;color:var(--flp-mut)}
.flp-skin .segment-stage strong{margin-top:5px;font:660 15px/1.1 var(--flp-font);font-variant-numeric:tabular-nums}
.flp-skin .segment-stage small{margin-top:5px;font-size:12px;line-height:1.35;color:var(--flp-dim)}
.flp-skin .segment-stage.selected{box-shadow:inset 0 -2px 0 var(--flp-ac)}
.flp-skin button.segment-stage:hover,.flp-skin button.segment-stage:focus-visible{background-color:rgba(255,255,255,.05)}
.flp-skin .segment-journey-header span::first-letter{text-transform:uppercase}
.flp-skin .segment-open{border-left:1px solid rgba(255,255,255,.05);color:var(--flp-label);font:600 12px/1.3 var(--flp-font)}
.flp-skin .segment-open.disabled{color:var(--flp-dim)}

/* Metric cells never break mid-value ("USD / 2.185366"): the table owns the column tracks (numeric tracks grow to their widest
   value) and every row shares them through subgrid, so headers and values stay aligned; the table scrolls inside itself. */
.flp-skin :is(.campaign-delivery-row,.ad-group-delivery-row,.ad-delivery-row,.placement-delivery-row,.performance-provider-row)>span{white-space:nowrap}
.flp-skin .campaign-delivery-table,.flp-skin .ad-group-delivery-table,.flp-skin .ad-delivery-table,.flp-skin .placement-delivery-table{display:grid}
.flp-skin .campaign-delivery-table{grid-template-columns:minmax(180px,1.45fr) minmax(90px,.72fr) repeat(6,minmax(max-content,.64fr))}
.flp-skin .ad-group-delivery-table{grid-template-columns:minmax(170px,1.25fr) minmax(170px,1.15fr) minmax(90px,.7fr) repeat(6,minmax(max-content,.58fr))}
.flp-skin .ad-delivery-table{grid-template-columns:minmax(170px,1.2fr) minmax(160px,1.05fr) minmax(160px,1.05fr) minmax(86px,.65fr) repeat(6,minmax(max-content,.56fr))}
.flp-skin .placement-delivery-table{grid-template-columns:minmax(190px,1.3fr) minmax(90px,.68fr) minmax(115px,.78fr) repeat(6,minmax(max-content,.58fr))}
.flp-skin .campaign-delivery-row,.flp-skin .ad-group-delivery-row,.flp-skin .ad-delivery-row,.flp-skin .placement-delivery-row{grid-column:1/-1;grid-template-columns:subgrid;min-width:0}

/* Journey timeline (rhythm) + exact day inspector */
.flp-skin .rhythm-controls{grid-template-columns:repeat(auto-fit,minmax(168px,1fr));gap:8px;margin:4px 0 12px}
.flp-skin .rhythm-chip{padding:10px 12px;border:1px solid var(--flp-well-bd);border-radius:12px;background:var(--flp-well)}
.flp-skin .rhythm-chip span{font-size:12px}
.flp-skin .rhythm-chip strong{font:660 16px/1.15 var(--flp-font);font-variant-numeric:tabular-nums;color:var(--flp-fg)}
.flp-skin .rhythm-chip small{font-size:12px;color:var(--flp-dim)}
.flp-skin .rhythm-chip:hover{border-color:var(--flp-bd2)}
.flp-skin .rhythm-chip.active{background:rgba(255,255,255,.075);border-color:color-mix(in srgb,currentColor 45%,transparent);box-shadow:inset 0 1px 0 rgba(255,255,255,.08)}
.flp-skin .rhythm-chip.metric-sessions{color:#7cc4e0}
.flp-skin .rhythm-line.metric-sessions{stroke:#7cc4e0}
.flp-skin .rhythm-marker.metric-sessions{fill:#7cc4e0}
.flp-skin .rhythm-period-legend{font:560 12px/1.4 var(--flp-font);color:var(--flp-mut)}
.flp-skin .rhythm-period-legend small{font-size:12px;color:var(--flp-dim)}
.flp-skin .rhythm-canvas{padding:8px;border:1px solid rgba(255,255,255,.07);border-radius:14px;background:linear-gradient(180deg,rgba(255,255,255,.02),rgba(0,0,0,.2))}
.flp-skin .performance-rhythm.comparing .rhythm-canvas{background:linear-gradient(180deg,rgba(255,122,79,.035),rgba(0,0,0,.2))}
.flp-skin .rhythm-grid line{stroke:rgba(255,255,255,.08)}
.flp-skin :is(.rhythm-grid text,.rhythm-axis-note){fill:var(--flp-dim);font:500 12px var(--flp-font)}
.flp-skin .rhythm-scale-note{padding:4px 9px;border:1px solid var(--flp-bd);background:rgba(10,12,18,.8);color:var(--flp-mut);font:600 12px/1.2 var(--flp-font);letter-spacing:0}
.flp-skin .rhythm-inspector-guide{stroke:var(--flp-fg)}
.flp-skin .rhythm-marker{stroke:#0b0d13}
.flp-skin .rhythm-inspector{margin-top:14px;padding:14px 16px;border:1px solid rgba(255,255,255,.08);border-radius:14px;background:rgba(0,0,0,.22)}
.flp-skin .rhythm-inspector.comparing{background:linear-gradient(180deg,rgba(255,122,79,.05),rgba(0,0,0,.22))}
.flp-skin .rhythm-inspector-head{flex-wrap:wrap}
.flp-skin .rhythm-inspector-head>div:first-child strong{font:660 18px/1.2 var(--flp-font);font-variant-numeric:tabular-nums}
.flp-skin .rhythm-inspector-head>div:first-child small{font-size:12px;color:var(--flp-dim)}
.flp-skin .rhythm-previous-day{font:600 12px/1.35 var(--flp-font)!important;color:var(--flp-label)!important;letter-spacing:0}
.flp-skin .rhythm-day-values{gap:8px;border:0;border-radius:0;overflow:visible;background:transparent}
.flp-skin .rhythm-day-value,.flp-skin .rhythm-day-value:nth-child(n){padding:11px 12px;border:1px solid var(--flp-well-bd);border-radius:12px;background:var(--flp-well)}
.flp-skin .rhythm-day-value span{font-size:12px;color:var(--flp-mut)}
.flp-skin .rhythm-day-value strong{margin-top:5px;font:660 16px/1.15 var(--flp-font);font-variant-numeric:tabular-nums;color:var(--flp-fg)}
.flp-skin .rhythm-day-value small{margin-top:6px;font-size:12px;color:var(--flp-dim)}
.flp-skin .rhythm-day-delta{margin-top:6px;padding:1px 8px;border-radius:99px;font:620 12px/1.5 var(--flp-font);font-variant-numeric:tabular-nums}
.flp-skin .rhythm-inspector>p,.flp-skin .rhythm-inspector-foot p{font-size:12px;line-height:1.5;color:var(--flp-dim)}

/* Explore lens */
.flp-skin .performance-lens{scroll-margin-top:calc(var(--flp-topbar-h) + 16px)}
/* M7 alignment: performance.css draws the lens with stroke-dasharray:1200 on a non-scaling stroke, which Chromium measures in screen
   pixels (a line longer than 1200px keeps an unpainted tail) and which replays on every re-render. Inside the skin the line is
   always whole and static; the one-shot .flp-lens-enter (first render of new data or a focus change) runs the clip-wipe draw. */
.flp-skin .performance-lens{animation:none}
.flp-skin .lens-chart .lens-line.current{stroke-dasharray:none;animation:none}
.flp-skin .performance-lens-head{gap:18px 36px;padding-bottom:16px}
.flp-skin .performance-lens-head h2{margin:6px 0 6px;font:650 22px/1.2 var(--flp-font);letter-spacing:-.02em}
.flp-skin .performance-lens-head p{font-size:12.5px;color:var(--flp-mut)}
.flp-skin .lens-primary strong{font:660 34px/1.05 var(--flp-font);letter-spacing:-.025em;font-variant-numeric:tabular-nums;color:var(--flp-fg)}
.flp-skin .lens-primary span{margin-top:8px;font:500 12px/1.35 var(--flp-font);color:var(--flp-dim)}
.flp-skin .lens-primary small{font-size:12px;color:var(--flp-dim)}
.flp-skin .performance-lens-grid{border-top:1px solid rgba(255,255,255,.07)}
.flp-skin .lens-visual{border-right:1px solid rgba(255,255,255,.07)}
.flp-skin :is(.lens-chart-head,.lens-side-head)>span,.flp-skin .lens-side-head>div:first-child>span{font:600 12.5px/1.35 var(--flp-font);color:var(--flp-fg)}
.flp-skin .lens-chart-head b{font:660 17px/1.1 var(--flp-font);font-variant-numeric:tabular-nums}
.flp-skin :is(.lens-chart-head,.lens-side-head) small{font-size:12px;color:var(--flp-dim)}
.flp-skin .lens-chart-legend{font-size:12px;color:var(--flp-mut)}
.flp-skin .lens-chart .lens-area{fill:rgba(255,122,79,.2);-webkit-mask-image:linear-gradient(180deg,#000,transparent);mask-image:linear-gradient(180deg,#000,transparent)}
.flp-skin .lens-chart .lens-line.current{stroke:var(--flp-ac)}
.flp-skin .lens-chart circle{fill:#0b0d13;stroke:var(--flp-ac)}
.flp-skin .lens-chart text{fill:var(--flp-dim);font:500 12px var(--flp-font)}
.flp-skin .lens-no-series{border-left:1px dashed rgba(255,255,255,.1)}
.flp-skin .lens-no-series span{font:650 12px/1.3 var(--flp-font);letter-spacing:.14em;color:var(--flp-dim)}
.flp-skin .lens-no-series strong{font:660 30px/1.1 var(--flp-font);font-variant-numeric:tabular-nums}
.flp-skin .lens-no-series p{font-size:12px;color:var(--flp-mut)}
.flp-skin .lens-breakdown-row{padding:11px 8px;border-top:1px solid rgba(255,255,255,.06);border-radius:10px}
.flp-skin .lens-breakdown-row:first-child{border-top:0}
.flp-skin .lens-breakdown-row strong{font:600 12.5px/1.35 var(--flp-font);color:var(--flp-fg)}
.flp-skin .lens-breakdown-row span{font-size:12px;line-height:1.4;color:var(--flp-dim)}
.flp-skin .lens-breakdown-value b{font:650 13px/1.2 var(--flp-font);font-variant-numeric:tabular-nums}
.flp-skin .lens-breakdown-value small{font-size:12px;color:var(--flp-dim)}
.flp-skin .lens-bar{height:4px;border-radius:99px;background:rgba(255,255,255,.07)}
.flp-skin .lens-bar i{border-radius:99px;background:var(--flp-tone-ac)}
.flp-skin .lens-breakdown-row.clickable:hover,.flp-skin .lens-breakdown-row.clickable:focus-visible{background:rgba(255,255,255,.05)}
.flp-skin .lens-breakdown-row.clickable strong::after{color:var(--flp-ac);font-size:12px}
.flp-skin .lens-breakdown-empty{font-size:12px;color:var(--flp-mut)}
.flp-skin .lens-definition{border-top:1px solid rgba(255,255,255,.07)}
.flp-skin .lens-definition strong{font-size:12px}
.flp-skin :is(.lens-definition,.lens-compare-note) p{font-size:12px;line-height:1.55;color:var(--flp-mut)}
.flp-skin .lens-compare-note{border-top:1px solid rgba(255,255,255,.07)}
.flp-skin .journey-delta{padding:1px 8px;border:1px solid var(--flp-bd);border-radius:99px;background:rgba(255,255,255,.04);font:620 12px/1.5 var(--flp-font);letter-spacing:0;font-variant-numeric:tabular-nums}
/* Descriptive previous-period changes carry no win/loss valence (v0.56): one neutral tone, direction by sign and a ▲/▼ glyph that
   assistive tech skips (the signed text already says it). Green/red stay reserved for favourable/unfavourable state. */
.flp-skin .journey-delta:is(.up,.down),.flp-skin .rhythm-day-delta:is(.up,.down){color:var(--flp-fg);border-color:var(--flp-bd2);background:rgba(255,255,255,.06)}
.flp-skin .journey-delta.up::before,.flp-skin .rhythm-day-delta.up::before,.flp-skin .journey-change-signal.up b::before{content:'▲ ' / '';font-size:.8em}
.flp-skin .journey-delta.down::before,.flp-skin .rhythm-day-delta.down::before,.flp-skin .journey-change-signal.down b::before{content:'▼ ' / '';font-size:.8em}
.flp-skin .journey-delta.flat,.flp-skin .rhythm-day-delta.flat{color:var(--flp-mut)}
.flp-skin .journey-change-signal:is(.up,.down) b{color:var(--flp-fg)}
.flp-skin .journey-change-signal b::before{font-size:.55em;vertical-align:.3em}

/* FLP segmented control look for the existing dimension switch */
.flp-skin .lens-dimension-switch{display:inline-flex;gap:2px;padding:3px;border:1px solid var(--flp-bd);border-radius:12px;background:rgba(255,255,255,.06)}
.flp-skin .lens-dimension-switch button{padding:5px 13px;border-radius:9px;color:var(--flp-mut);font:520 12px/1.3 var(--flp-font);letter-spacing:0;text-transform:none}
.flp-skin .lens-dimension-switch button:hover{color:var(--flp-fg)}
.flp-skin .lens-dimension-switch button[aria-pressed="true"]{background:rgba(255,255,255,.13);color:var(--flp-fg);font-weight:600;box-shadow:0 1px 6px rgba(0,0,0,.35),inset 0 1px 0 rgba(255,255,255,.14)}

/* Commerce split + definitions */
.flp-skin .performance-split{display:grid;grid-template-columns:minmax(0,1fr) minmax(0,1fr);gap:18px 26px}
.flp-skin .performance-split>div,.flp-skin .performance-split>div+div{min-width:0;padding:0;border:0}
.flp-skin .commerce-providers,.flp-skin .assisted-mini{display:grid;grid-template-columns:repeat(auto-fit,minmax(130px,1fr));gap:10px;background:transparent;border:0}
.flp-skin :is(.commerce-providers>div,.assisted-mini>span),.flp-skin :is(.commerce-providers>div+div,.assisted-mini>span+span),.flp-skin .assisted-mini span:nth-child(n){min-width:0;padding:13px 14px;border:1px solid var(--flp-well-bd);border-radius:14px;background:var(--flp-well)}
.flp-skin .commerce-providers strong{font:620 12.5px/1.35 var(--flp-font);text-transform:capitalize;color:var(--flp-fg)}
.flp-skin .commerce-providers span{margin-top:7px;font:660 20px/1.15 var(--flp-font);font-variant-numeric:tabular-nums;color:var(--flp-fg)}
.flp-skin :is(.commerce-providers,.assisted-mini) small{font-size:12px;color:var(--flp-mut)}
.flp-skin .assisted-mini strong{margin:6px 0 0;font:660 22px/1.1 var(--flp-font);font-variant-numeric:tabular-nums;color:var(--flp-fg)}
.flp-skin .performance-definitions{padding:14px 22px}
.flp-skin .performance-definitions summary{padding:2px 0;font:600 12.5px/1.4 var(--flp-font);color:var(--flp-fg)}
.flp-skin .performance-definitions[open] summary{margin-bottom:8px}
.flp-skin .performance-definitions p{padding:0;margin:8px 0 0;font-size:12px;line-height:1.6;color:var(--flp-mut)}

/* Existing FLP-APX-07/08/10/11 panels (forecast, diagnosis, experiments, handoffs) */
.flp-skin .performance-plan-select{gap:6px}
.flp-skin .performance-plan-select span{white-space:nowrap;font:520 12px/1.3 var(--flp-font);letter-spacing:0;text-transform:none;color:var(--flp-dim)}
.flp-skin .performance-plan-select select{min-height:34px;max-width:100%;padding:0 12px;border-radius:10px;background:rgba(255,255,255,.06);font:600 13px/1.2 var(--flp-font)}
.flp-skin .performance-forecast-status{gap:8px 10px;margin:4px 0 12px;overflow:hidden}
.flp-skin .performance-forecast-status small{margin-left:-1px;padding-left:10px;border-left:1px solid var(--flp-bd);color:var(--flp-mut);font-size:12px;line-height:1.45}
.flp-skin .performance-forecast-grid{display:grid;grid-template-columns:repeat(5,minmax(0,1fr));gap:10px;border:0;border-radius:0;overflow:visible}
.flp-skin .performance-forecast-grid span{font:520 12px/1.3 var(--flp-font);text-transform:none;color:var(--flp-mut)}
.flp-skin .performance-forecast-grid strong{margin-top:7px;font:660 25px/1.1 var(--flp-font);letter-spacing:-.02em;font-variant-numeric:tabular-nums;overflow-wrap:anywhere}
.flp-skin .performance-forecast-grid small{margin-top:7px;font-size:12px;line-height:1.45;color:var(--flp-dim)}
.flp-skin .performance-forecast-cost{gap:10px;margin-top:10px}
.flp-skin :is(.performance-forecast-cost>div,.performance-diagnosis-gate,.performance-diagnosis-empty,.campaign-handoff-issues,.campaign-handoff-preview){padding:14px 15px;border:1px solid var(--flp-well-bd);border-radius:14px;background:var(--flp-well)}
.flp-skin .performance-forecast-cost h3{margin:6px 0 0;font:620 13px/1.35 var(--flp-font)}
.flp-skin :is(.performance-forecast-cost p,.performance-diagnosis-gate>p,.performance-diagnosis-empty>p,.campaign-handoff-issues p,.campaign-handoff-preview p){margin:6px 0 0;font-size:12px;line-height:1.55;color:var(--flp-mut)}
.flp-skin .performance-forecast-limits,.flp-skin .performance-diagnosis-withheld,.flp-skin .performance-diagnosis-limits{margin-top:12px}
.flp-skin :is(.performance-forecast-limits,.performance-diagnosis-withheld,.performance-diagnosis-limits) summary{font-size:12px;color:var(--flp-mut)}
.flp-skin :is(.performance-forecast-limits,.performance-diagnosis-withheld,.performance-diagnosis-limits) p{margin:7px 0 0;font-size:12px;line-height:1.55;color:var(--flp-dim)}
.flp-skin .performance-diagnosis-state{gap:7px}
.flp-skin .performance-diagnosis-gate{border-color:rgba(251,191,36,.28);background:rgba(251,191,36,.055)}
.flp-skin :is(.performance-diagnosis-gate,.performance-diagnosis-empty)>strong{font:620 13px/1.35 var(--flp-font)}
.flp-skin .performance-diagnosis-gate>div span{padding:2px 10px;border:1px solid rgba(251,191,36,.3);border-radius:99px;background:rgba(251,191,36,.1);color:var(--flp-amb);font:620 12px/1.5 var(--flp-font)}
.flp-skin .performance-hypotheses-grid{gap:12px;margin-top:12px}
.flp-skin .performance-hypothesis:where(:not(.flp-card)),.flp-skin .performance-experiment:where(:not(.flp-card)),.flp-skin .campaign-handoff-card:where(:not(.flp-card)){min-width:0;padding:16px 18px;border:1px solid var(--flp-well-bd);border-radius:16px;background:var(--flp-well)}
.flp-skin .performance-hypothesis-head>span,.flp-skin .performance-hypothesis-metrics small{font:520 12px/1.3 var(--flp-font);letter-spacing:0;text-transform:none;color:var(--flp-dim)}
.flp-skin :is(.performance-hypothesis,.performance-experiment,.campaign-handoff-card) h3{margin:8px 0 0;font:620 13.5px/1.4 var(--flp-font);color:var(--flp-fg)}
.flp-skin .performance-hypothesis-metrics{gap:8px;background:transparent;border:0;border-radius:0;overflow:visible}
.flp-skin .performance-hypothesis-metrics>div,.flp-skin .performance-hypothesis-metrics>div:first-child{padding:10px 11px;border:1px solid rgba(255,255,255,.06);border-radius:11px;background:rgba(0,0,0,.2)}
.flp-skin .performance-hypothesis-metrics strong{margin-top:5px;font:650 15px/1.2 var(--flp-font);font-variant-numeric:tabular-nums}
.flp-skin .performance-hypothesis-metrics span{font-size:12px;color:var(--flp-dim)}
.flp-skin .performance-hypothesis-evidence,.flp-skin .performance-hypothesis-alternatives,.flp-skin .performance-hypothesis-test,.flp-skin .performance-hypothesis-track,.flp-skin .performance-experiment-guardrails,.flp-skin .experiment-evidence-form,.flp-skin .experiment-conclusion{border-top:1px dashed rgba(255,255,255,.08)}
.flp-skin :is(.performance-hypothesis-evidence,.performance-hypothesis-alternatives,.performance-hypothesis-test,.performance-experiment-guardrails)>strong{font:620 12px/1.35 var(--flp-font)}
.flp-skin :is(.performance-hypothesis-evidence p,.performance-hypothesis-test p,.performance-hypothesis-test small,.performance-hypothesis-alternatives li,.performance-experiment>p,.performance-experiment-guardrails li,.experiment-conclusion p){font-size:12px;line-height:1.55;color:var(--flp-mut)}
.flp-skin .performance-experiment-meta span{padding:2px 10px;border:1px solid var(--flp-bd);border-radius:99px;background:rgba(255,255,255,.05);color:var(--flp-mut);font-size:12px}
.flp-skin .performance-experiment-meta strong,.flp-skin .performance-experiment>p strong{color:var(--flp-fg)}
.flp-skin :is(.experiment-evidence-form,.performance-hypothesis-track) :is(textarea,input,select){font:12.5px/1.45 var(--flp-font)}
.flp-skin :is(.performance-hypotheses-grid,.flp-grid) .performance-hypothesis-track{grid-template-columns:minmax(0,1fr)}
.flp-skin :is(.performance-hypotheses-grid,.flp-grid) .performance-hypothesis-track .btn{justify-self:start}
.flp-skin .campaign-handoff-stages{gap:10px}
.flp-skin .campaign-handoff-stage{padding:12px 13px;border:1px solid rgba(255,255,255,.06);border-radius:12px;background:rgba(0,0,0,.2)}
.flp-skin .campaign-handoff-stage-head strong{font:620 12px/1.3 var(--flp-font);text-transform:none}
.flp-skin .campaign-handoff-stage-head span{font:500 12px/1.3 var(--flp-font);color:var(--flp-dim)}
.flp-skin .campaign-handoff-stage p{font-size:12px;line-height:1.5;color:var(--flp-mut)}
.flp-skin .campaign-handoff-stage b{color:var(--flp-fg)}
.flp-skin :is(.campaign-handoff-issues,.campaign-handoff-preview) strong{font:620 12.5px/1.35 var(--flp-font)}
.flp-skin .campaign-handoff-issues{border-color:rgba(251,113,133,.3);background:rgba(251,113,133,.05)}
.flp-skin .campaign-handoff-issues.warning{border-color:rgba(251,191,36,.3);background:rgba(251,191,36,.05);border-style:dashed}
.flp-skin .campaign-handoff-editor{border-top:1px solid var(--flp-bd)}
.flp-skin .campaign-handoff-editor summary{font:600 12.5px/1.4 var(--flp-font)}
.flp-skin .campaign-handoff-editor>p{font-size:12px;color:var(--flp-mut)}
.flp-skin .campaign-handoff-editor textarea{font:12px/1.55 var(--mono)}

/* ================= New FLP components (class vocabulary shared with performance-ui.js) ================= */
.flp-skin .flp-section{position:relative;margin:0;min-width:0}
.flp-skin .flp-section>*+*{margin-top:12px}
.flp-skin .flp-section>.flp-shead+*{margin-top:0}
.flp-skin :is(.flp-section,.flp-tabpanel)>*+.flp-section{margin-top:40px}
.flp-skin>.flp-command{margin-bottom:20px}
.flp-skin .flp-tabpanel>*+*{margin-top:14px}
.flp-skin .flp-shead{display:flex;flex-wrap:wrap;align-items:center;gap:6px 10px;margin:0 0 14px}
.flp-skin .flp-shead>.flp-label{flex:0 0 100%}
.flp-skin .flp-shead :is(h2,h3){margin:0;font:650 16px/1.3 var(--flp-font);letter-spacing:-.01em;color:var(--flp-fg)}
.flp-skin :is(.flp-command,.flp-pulse)>.flp-shead h2{margin-top:2px;font-size:19px;letter-spacing:-.015em}
.flp-skin .flp-shead>:is(.flp-shead-main,div:first-child:not(:only-child)){flex:1 1 320px;min-width:0}
.flp-skin .flp-shead-desc,.flp-skin .flp-shead-main>p:not(.error-text){max-width:820px;margin:5px 0 0;font-size:12.5px;line-height:1.55;color:var(--flp-mut)}
.flp-skin .flp-shead-note{margin-left:auto;color:var(--flp-dim);font-size:12px;line-height:1.45;text-align:right}
.flp-skin .flp-shead-note b{color:var(--flp-amb);font-weight:600}
.flp-skin .flp-label{display:inline-block;font:650 12px/1.3 var(--flp-font);letter-spacing:.14em;text-transform:uppercase;color:var(--flp-label)}
.flp-skin .flp-divider{display:flex;flex-wrap:wrap;align-items:baseline;gap:6px 14px;padding-top:22px;border-top:1px solid var(--flp-bd)}
.flp-skin .flp-divider h2{margin:0;font:650 16px/1.3 var(--flp-font);color:var(--flp-fg)}
.flp-skin .flp-card{position:relative;min-width:0;padding:18px 20px;background:var(--flp-glass);border:1px solid var(--flp-bd);border-radius:var(--flp-radius);box-shadow:var(--flp-shadow);color:var(--flp-fg)}
.flp-skin .flp-card:is(:hover,:focus-within){z-index:3}
/* A card whose tooltip is open paints above the sticky command bar (z-index 5). Sections leave no stacking context behind (entrance
   animations fill backwards only), so this z-index competes with the bar directly and the tooltip is never trapped under it. */
.flp-skin .flp-card:has(.flp-tip-wrap:hover,.flp-tip:focus-visible){z-index:6}
.flp-skin .flp-card.is-mark{border-left:2px solid var(--mark,var(--flp-bd2))}
/* Scenario case titles: the dot, the name and the "selected" chip stay on one line and only the name text wraps (a 60-character name
   never leaves the dot alone on the first line); the dot and chip sit on the name's first line. The chip's block margins keep it inside
   the title's line box, so the selected card's rows line up with its neighbours'. */
.flp-skin .flp-card h4.flp-case-title{flex-wrap:nowrap;align-items:flex-start}
.flp-skin .flp-case-title>.flp-dot{margin-top:calc((1.4em - 7px) / 2)}
.flp-skin .flp-case-title>.flp-case-name{min-width:0;overflow-wrap:anywhere}
.flp-skin .flp-case-title>.flp-chip{flex:none;margin-block:-3px -4px}
.flp-skin .flp-card.is-quiet{background:rgba(255,255,255,.025);box-shadow:none}
.flp-skin .flp-card :is(h3,h4,.flp-card-title){display:flex;flex-wrap:wrap;align-items:center;gap:8px;margin:0 0 12px;font:600 13px/1.4 var(--flp-font);letter-spacing:-.005em;color:var(--flp-fg)}
.flp-skin .flp-grid{display:grid;gap:12px}
.flp-skin .flp-grid>*{min-width:0}
.flp-skin .flp-g2{grid-template-columns:repeat(2,minmax(0,1fr))}
.flp-skin .flp-g3{grid-template-columns:repeat(3,minmax(0,1fr))}
.flp-skin .flp-g4{grid-template-columns:repeat(4,minmax(0,1fr))}
.flp-skin .flp-g5{grid-template-columns:repeat(5,minmax(0,1fr))}
.flp-skin .flp-g23{grid-template-columns:minmax(0,2fr) minmax(0,1fr)}
.flp-skin .flp-g32{grid-template-columns:minmax(0,1.25fr) minmax(0,1fr)}
.flp-skin .flp-actions{display:flex;flex-wrap:wrap;align-items:center;gap:8px}
/* KPI */
.flp-skin .flp-kpi{position:relative;min-width:0}
.flp-skin .flp-kpi-label{display:block;font-size:12px;font-weight:520;line-height:1.35;color:var(--flp-mut)}
/* The 17px trigger overflows a shorter inline box (negative block margins), so a label with a tip keeps the plain 1.35 line height. */
.flp-skin .flp-kpi-label>.flp-tip-wrap{margin-left:6px;vertical-align:middle}
.flp-skin .flp-kpi-label .flp-tip{margin:-4px 0}
@container flp (min-width:981px){.flp-skin .flp-g5>.flp-kpi>.flp-kpi-label{min-height:calc(2em * 1.35)}}
.flp-skin .flp-kpi-value{margin-top:6px;font-size:25px;font-weight:660;line-height:1.15;letter-spacing:-.02em;font-variant-numeric:tabular-nums;color:var(--flp-fg);overflow-wrap:anywhere}
.flp-skin .flp-kpi-value.is-unavailable{font-size:18px;font-weight:620;letter-spacing:-.01em;color:var(--flp-mut)}
.flp-skin .flp-kpi-sub{margin-top:6px;font-size:12px;line-height:1.45;color:var(--flp-mut)}
.flp-skin :where(.flp-kpi-sub,.flp-read,.flp-note,.flp-tip-body,.flp-step-rate,.flp-source-label) b{color:var(--flp-fg);font-weight:580}
.flp-skin .flp-meter{position:relative;height:10px;margin-top:12px;border-radius:6px;background:rgba(255,255,255,.07);overflow:hidden}
.flp-skin .flp-meter>i{display:block;height:100%;width:clamp(0%,var(--fill,0%),100%);border-radius:6px;background:var(--tone,var(--flp-tone-ac))}
/* Status text + tones: base <b> colours use :where() so status classes always win (FLP delta-colour bug fixed). */
.flp-skin .is-good,.flp-skin :is(td,th,b,strong,span,div,p,small).is-good{color:var(--flp-grn)}
.flp-skin .is-bad,.flp-skin :is(td,th,b,strong,span,div,p,small).is-bad{color:var(--flp-red)}
.flp-skin .is-attn,.flp-skin :is(td,th,b,strong,span,div,p,small).is-attn{color:var(--flp-amb)}
.flp-skin .is-accent,.flp-skin :is(td,th,b,strong,span,div,p,small).is-accent{color:var(--flp-ac)}
.flp-skin b.is-good,.flp-skin b.is-bad,.flp-skin b.is-attn,.flp-skin b.is-accent{font-weight:620}
/* Chips */
.flp-skin .flp-chip{display:inline-flex;align-items:center;gap:6px;padding:2px 10px;border:1px solid var(--flp-bd);border-radius:99px;background:rgba(255,255,255,.06);color:var(--flp-mut);font:620 12px/1.5 var(--flp-font);letter-spacing:0;white-space:nowrap;vertical-align:middle}
.flp-skin .flp-chip.is-ok{background:rgba(52,211,153,.14);border-color:rgba(52,211,153,.35);color:var(--flp-grn)}
.flp-skin .flp-chip.is-attn{background:rgba(251,191,36,.13);border-color:rgba(251,191,36,.32);color:var(--flp-amb)}
.flp-skin .flp-chip.is-risk{background:rgba(251,113,133,.13);border-color:rgba(251,113,133,.35);color:var(--flp-red)}
.flp-skin .flp-chip.is-info{background:rgba(110,168,255,.13);border-color:rgba(110,168,255,.32);color:var(--flp-blu)}
.flp-skin .flp-chip.is-neutral{background:rgba(255,255,255,.06);border-color:var(--flp-bd);color:var(--flp-mut)}
.flp-skin .flp-chip.is-live::before,.flp-skin .flp-live-dot{content:'';display:inline-block;flex:none;width:6px;height:6px;border-radius:50%;background:currentColor}
/* Segmented control */
.flp-skin .flp-seg{display:inline-flex;gap:2px;max-width:100%;padding:3px;overflow-x:auto;border:1px solid var(--flp-bd);border-radius:12px;background:rgba(255,255,255,.06);scrollbar-width:none;vertical-align:middle}
.flp-skin .flp-seg::-webkit-scrollbar{display:none}
.flp-skin :is(.flp-seg-opt,.flp-seg>button){appearance:none;display:inline-flex;align-items:center;gap:7px;flex:none;margin:0;padding:5px 14px;border:0;border-radius:9px;background:transparent;color:var(--flp-mut);font:520 12.5px/1.35 var(--flp-font);white-space:nowrap;cursor:pointer;user-select:none}
.flp-skin :is(.flp-seg-opt,.flp-seg>button):hover{color:var(--flp-fg)}
.flp-skin :is(.flp-seg-opt,.flp-seg>button)[aria-pressed="true"]{background:rgba(255,255,255,.13);color:var(--flp-fg);font-weight:600;box-shadow:0 1px 6px rgba(0,0,0,.35),inset 0 1px 0 rgba(255,255,255,.14)}
.flp-skin :is(.flp-seg-opt,.flp-seg>button):focus-visible{outline-offset:-2px}
.flp-skin :is(.flp-seg-opt,.flp-seg>button):disabled{opacity:.4;cursor:default}
.flp-skin .flp-seg.is-sm{padding:2px;border-radius:10px}
.flp-skin .flp-seg.is-sm :is(.flp-seg-opt,.flp-seg>button){padding:3px 11px;border-radius:8px;font-size:12px}
/* Plan scenarios (up to six cases, names up to 60 characters) wrap onto more lines inside the command bar: every choice stays in view
   and whole, never scrolled past a hidden scrollbar or cut mid-word. Whole chips move to a new row first (single-line pills while the
   bar has room); a chip's text breaks only when that one chip is wider than the row. */
.flp-skin .flp-commandbar .flp-seg:has([data-flp-scenario]){flex-wrap:wrap;overflow:visible}
.flp-skin .flp-commandbar .flp-seg [data-flp-scenario]{flex:0 1 auto;min-width:0;max-width:100%;white-space:normal;text-align:left;overflow-wrap:break-word}
.flp-skin .flp-dot{display:inline-block;flex:none;width:7px;height:7px;border-radius:50%;background:var(--dot,var(--flp-ac))}
/* Horizontal bars (race / composition). Middle column never collapses (FLP fixed-210px compbars bug). */
/* The columns live on .flp-bars and every row is a subgrid of them, so all rows share one label, track and value column: the
   tracks start and end at the same x and bar length stays comparable across Recorded / Conditional finish / Goal. */
.flp-skin .flp-bars{display:grid;grid-template-columns:minmax(0,1.1fr) minmax(90px,1.6fr) auto;align-items:center;gap:11px 12px}
.flp-skin .flp-bar-row{display:grid;grid-column:1/-1;grid-template-columns:subgrid;grid-template-areas:"l t v";align-items:center;font-size:12.5px}
.flp-skin .flp-bar-label{grid-area:l;min-width:0;color:var(--flp-mut);overflow-wrap:anywhere}
.flp-skin .flp-bar-track{grid-area:t;display:flex;height:9px;min-width:0;border-radius:99px;background:rgba(255,255,255,.08);overflow:hidden}
.flp-skin .flp-bar-track>i{display:block;height:100%;width:clamp(0%,var(--fill,0%),100%);border-radius:99px;background:var(--tone,var(--flp-tone-ac))}
.flp-skin .flp-bar-value{grid-area:v;text-align:right;font-weight:580;font-variant-numeric:tabular-nums;white-space:nowrap;color:var(--flp-fg)}
.flp-skin .flp-bar-value small{margin-left:5px;font-size:12px;font-weight:500;color:var(--flp-dim)}
/* Step funnel */
.flp-skin .flp-steps{display:flex;flex-direction:column;align-items:center}
.flp-skin .flp-step{display:flex;align-items:center;justify-content:space-between;gap:16px;box-sizing:border-box;width:var(--w,100%);min-width:min(250px,100%);max-width:100%;min-height:46px;padding:0 18px;border-radius:13px;background:var(--tone,var(--flp-step-ac));box-shadow:inset 0 1px 0 rgba(255,255,255,.1);font-size:13px;font-weight:560;color:var(--flp-fg)}
.flp-skin .flp-step>:first-child{min-width:0;overflow-wrap:anywhere}
.flp-skin .flp-step>b,.flp-skin .flp-step-value{flex:none;font-size:14px;font-weight:670;font-variant-numeric:tabular-nums}
.flp-skin .flp-step-rate{padding:5px 0;text-align:center;font-size:12px;line-height:1.35;color:var(--flp-mut)}
.flp-skin .flp-step-rate b{color:var(--flp-ac);font-weight:640}
.flp-skin .flp-step-rate small{display:block;margin-top:2px;font-size:12px;color:var(--flp-dim)}
/* Key / value list */
.flp-skin .flp-kv{display:flex;flex-direction:column;gap:7px;font-size:12.5px}
.flp-skin .flp-kv-row{display:flex;align-items:baseline;justify-content:space-between;gap:12px;padding-bottom:6px;border-bottom:1px dashed rgba(255,255,255,.07)}
.flp-skin .flp-kv-row:last-child{padding-bottom:0;border-bottom:0}
.flp-skin .flp-kv-row>span{flex:0 0 auto;min-width:0;max-width:48%;color:var(--flp-mut)}
.flp-skin .flp-kv-row>b{flex:1 1 0;min-width:0;text-align:right;font-weight:620;font-variant-numeric:tabular-nums;overflow-wrap:anywhere}
.flp-skin .flp-kv-row>b small{display:block;font-size:12px;font-weight:500;color:var(--flp-dim)}
/* Prose read + notes */
.flp-skin .flp-read p{margin:0 0 10px;font-size:13px;line-height:1.6;color:var(--flp-mut)}
.flp-skin .flp-read p:last-child{margin-bottom:0}
.flp-skin .flp-read ul{display:flex;flex-direction:column;gap:9px;margin:0;padding-left:18px;font-size:12.5px;line-height:1.55;color:var(--flp-mut)}
.flp-skin :where(.flp-read) b{font-weight:600}
.flp-skin .flp-note{margin:12px 0 0;font-size:12px;line-height:1.6;color:var(--flp-dim)}
.flp-skin :where(.flp-note) b{color:var(--flp-mut)}
/* Tooltip (WCAG 1.4.13): a fine-pointer hover or keyboard focus (:focus-visible) opens it; a mouse click never pins it (touch screens
   use the browser's sticky hover). The open body is hoverable (a transparent bridge spans the 8px gap), Escape dismisses it
   ([data-flp-tip-dismissed], set and cleared by performance-ui.js) and .is-below opens it downward when there is no room under the top bar. */
.flp-skin .flp-tip-wrap{position:relative;display:inline-flex;align-items:center;vertical-align:middle;text-transform:none;letter-spacing:0}
.flp-skin .flp-tip{appearance:none;position:relative;display:inline-flex;align-items:center;justify-content:center;flex:none;width:17px;height:17px;margin:0;padding:0;border:1px solid var(--flp-bd);border-radius:50%;background:rgba(255,255,255,.08);color:var(--flp-mut);font:650 12px/1 var(--flp-font);cursor:help}
.flp-skin .flp-tip::after{content:'';position:absolute;inset:-8px}
.flp-skin .flp-tip:hover,.flp-skin .flp-tip:focus-visible{color:var(--flp-fg);border-color:var(--flp-bd2)}
.flp-skin .flp-tip-body{position:absolute;bottom:calc(100% + 8px);left:50%;z-index:70;box-sizing:border-box;width:272px;max-width:calc(100vw - 32px);padding:11px 13px;border:1px solid var(--flp-bd2);border-radius:13px;background:rgba(22,26,36,.95);-webkit-backdrop-filter:blur(22px) saturate(160%);backdrop-filter:blur(22px) saturate(160%);box-shadow:0 14px 36px rgba(0,0,0,.55),inset 0 1px 0 rgba(255,255,255,.1);color:var(--flp-mut);font:400 12px/1.55 var(--flp-font);letter-spacing:0;text-align:left;text-transform:none;white-space:normal;opacity:0;visibility:hidden;pointer-events:none;transform:translate(-50%,5px)}
.flp-skin .flp-tip-body::before{content:'';position:absolute;left:0;right:0;top:100%;height:10px}
.flp-skin .flp-tip-wrap:hover>.flp-tip-body,.flp-skin .flp-tip:focus-visible~.flp-tip-body{opacity:1;visibility:visible;pointer-events:auto;transform:translate(-50%,0)}
/* Edge anchoring so a tooltip never runs under the sidebar or past the viewport: first/left-column cards open to the right,
   last/right-column cards open to the left, single-column layouts span the card. .is-start/.is-end force a side. */
.flp-skin .flp-tip-body.is-start,.flp-skin .flp-table th:first-child .flp-tip-body{left:-10px;right:auto;transform:translate(0,5px)}
.flp-skin .flp-tip-body.is-end{left:auto;right:-10px;transform:translate(0,5px)}
.flp-skin :is(.flp-tip-wrap:hover>.flp-tip-body,.flp-tip:focus-visible~.flp-tip-body).is-start,.flp-skin :is(.flp-tip-wrap:hover>.flp-tip-body,.flp-tip:focus-visible~.flp-tip-body).is-end,.flp-skin .flp-table th:first-child :is(.flp-tip-wrap:hover>.flp-tip-body,.flp-tip:focus-visible~.flp-tip-body){transform:translate(0,0)}
@container flp (min-width:981px){
.flp-skin .flp-grid>:first-child .flp-tip-body{left:-10px;right:auto;transform:translate(0,5px)}
.flp-skin .flp-grid>:last-child:not(:first-child) .flp-tip-body{left:auto;right:-10px;transform:translate(0,5px)}
.flp-skin .flp-grid>:is(:first-child,:last-child) :is(.flp-tip-wrap:hover>.flp-tip-body,.flp-tip:focus-visible~.flp-tip-body){transform:translate(0,0)}
}
@container flp (min-width:601px) and (max-width:980px){
.flp-skin .flp-grid>:nth-child(odd) .flp-tip-body{left:-10px;right:auto;transform:translate(0,5px)}
.flp-skin .flp-grid>:nth-child(even) .flp-tip-body{left:auto;right:-10px;transform:translate(0,5px)}
.flp-skin .flp-grid>* :is(.flp-tip-wrap:hover>.flp-tip-body,.flp-tip:focus-visible~.flp-tip-body){transform:translate(0,0)}
}
@container flp (min-width:601px){
.flp-skin :is(.flp-tip-wrap.is-below,th .flp-tip-wrap)>.flp-tip-body{top:calc(100% + 8px);bottom:auto}
.flp-skin :is(.flp-tip-wrap.is-below,th .flp-tip-wrap)>.flp-tip-body::before{top:auto;bottom:100%}
}
@container flp (max-width:600px){
.flp-skin .flp-tip-wrap{position:static}
.flp-skin .flp-tip-body,.flp-skin .flp-grid>* .flp-tip-body{top:auto;bottom:auto;left:12px;right:12px;width:auto;max-width:none;margin-top:26px;transform:translate(0,5px)}
.flp-skin :is(.flp-tip-wrap:hover>.flp-tip-body,.flp-tip:focus-visible~.flp-tip-body),.flp-skin .flp-grid>* :is(.flp-tip-wrap:hover>.flp-tip-body,.flp-tip:focus-visible~.flp-tip-body){transform:translate(0,0)}
/* The static position is taken inside the inline-flex wrap: anchor it to the wrap's top (not its centre), so margin-top places the body
   below the 17px trigger instead of over it, and the hover bridge spans the gap above the downward-opening body (WCAG 1.4.13, 2.4.11). */
.flp-skin .flp-tip-body{align-self:flex-start}
.flp-skin .flp-tip-body::before{top:auto;bottom:100%;height:18px}
}
.flp-skin .flp-tip-wrap[data-flp-tip-dismissed]>.flp-tip-body{opacity:0!important;visibility:hidden!important;pointer-events:none!important}
.flp-skin th .flp-tip-wrap{margin-left:6px}
/* Screen-reader-only text (the final value next to the aria-hidden count-up digits). */
.flp-skin .flp-sr{position:absolute;width:1px;height:1px;margin:-1px;padding:0;overflow:hidden;clip:rect(0 0 0 0);clip-path:inset(50%);white-space:nowrap;border:0}
/* Tables */
.flp-skin .flp-table-wrap{max-width:100%;overflow-x:auto;overscroll-behavior-x:contain}
.flp-skin .flp-table :is(td,th).n{text-align:right;font-variant-numeric:tabular-nums}
.flp-skin .flp-table tbody th{border-bottom-color:rgba(255,255,255,.05);color:var(--flp-mut)}
.flp-skin .flp-table tbody tr:last-child>*{border-bottom:0}
.flp-skin .flp-table tr.is-sep>*{border-top:1px solid var(--flp-bd2)}
.flp-skin .flp-table tr.is-total>*{background:rgba(255,122,79,.07);color:var(--flp-fg);font-weight:640}
.flp-skin .flp-table th .flp-dot{margin-right:6px;vertical-align:1px}
.flp-skin .flp-table :is(td,th).is-selected{background:rgba(255,255,255,.035);color:var(--flp-fg);font-weight:600}
.flp-skin .flp-table tr.is-total>.is-selected{background:linear-gradient(rgba(255,122,79,.07),rgba(255,122,79,.07)),rgba(255,255,255,.035)}
.flp-skin .flp-table td.is-wrap{min-width:220px;white-space:normal}
.flp-skin .flp-table td small,.flp-skin .flp-table th small{display:block;font-size:12px;font-weight:500;color:var(--flp-dim)}
/* Text cells wrap when a card is narrow (e.g. a half-width card at 1024px) so no column hides behind a sideways scroll; numbers stay on one line. */
.flp-skin .flp-table :is(td,th):not(.n){white-space:normal}
.flp-skin .flp-table td.is-date{white-space:nowrap}
/* Scenario column headers wrap like other headers, so up to six cases fit the card instead of forcing a sideways scroll. */
.flp-skin .flp-table th.n:has(>.flp-case-lead){white-space:normal;overflow-wrap:break-word}
.flp-skin .flp-table th .flp-case-lead{white-space:nowrap}
/* Charts */
.flp-skin .flp-chart{position:relative;box-sizing:border-box;width:100%;min-width:0;margin:0;padding:0}
.flp-skin :is(.flp-chart,.flp-chart-plot)>svg{display:block;width:100%;height:var(--flp-chart-h,150px);overflow:visible}
/* viewBox-scaled charts (data-flp-chart): height follows the viewBox ratio so nothing letterboxes or paints outside the card */
.flp-skin .flp-chart[data-flp-chart] .flp-chart-plot>svg{height:auto;max-width:100%;overflow:hidden}
.flp-skin .flp-chart-plot{position:relative;min-width:0}
.flp-skin .flp-chart.is-sm>svg{height:var(--flp-chart-h,56px)}
.flp-skin .flp-chart-area:not([fill]){fill:rgba(255,122,79,.16)}
.flp-skin .flp-chart-area{stroke:none}
.flp-skin .flp-chart-line{fill:none;stroke-width:2;stroke-linejoin:round;stroke-linecap:round;vector-effect:non-scaling-stroke}
.flp-skin .flp-chart-line:not([stroke]){stroke:var(--flp-ac)}
.flp-skin .flp-chart-line.is-partial{stroke-dasharray:4 4;opacity:.85}
.flp-skin .flp-chart-required,.flp-skin .flp-chart-pace,.flp-skin .flp-chart-plan,.flp-skin .flp-chart-goal{fill:none;vector-effect:non-scaling-stroke}
/* defaults only when the renderer gave no presentation attribute, so each line keeps the colour its legend shows */
.flp-skin .flp-chart-required:not([stroke]){stroke:rgba(255,255,255,.34);stroke-width:1.2;stroke-dasharray:5 5}
.flp-skin .flp-chart-pace:not([stroke]){stroke:var(--flp-amb);stroke-width:1.4;stroke-dasharray:7 4}
.flp-skin .flp-chart-plan:not([stroke]){stroke:#8fb3ff;stroke-width:1.8;stroke-dasharray:.5 4.5;stroke-linecap:round}
.flp-skin .flp-chart-goal:not([stroke]){stroke:var(--flp-vio);stroke-width:1.2}
.flp-skin .flp-chart-plan[stroke-dasharray]{stroke-linecap:round;stroke-width:2}
.flp-skin .flp-chart text{fill:var(--flp-dim);font:500 12px var(--flp-font)}
/* Data dots are HTML markers over the plot (--x/--y in viewBox percent): one constant CSS size at every chart width. */
.flp-skin .flp-chart-plot>.flp-chart-dot{position:absolute;left:var(--x,0);top:var(--y,0);z-index:1;box-sizing:border-box;width:7px;height:7px;border:1.5px solid #0b0d13;border-radius:50%;background:var(--dot,var(--flp-ac));transform:translate(-50%,-50%);pointer-events:none}
.flp-skin .flp-chart-plot>.flp-chart-dot.is-partial{width:9px;height:9px;border:2px solid var(--dot,var(--flp-ac));background:#0b0d13}
.flp-skin .flp-chart-axis.is-single{justify-content:center}
.flp-skin .flp-chart-axis{display:flex;justify-content:space-between;gap:8px;margin-top:6px;font-size:12px;color:var(--flp-dim);font-variant-numeric:tabular-nums}
.flp-skin .flp-legend{display:flex;flex-wrap:wrap;align-items:center;gap:6px 16px;margin-top:10px}
.flp-skin .flp-legend-item{display:inline-flex;align-items:center;gap:6px;font-size:12px;color:var(--flp-mut)}
.flp-skin .flp-legend-item b{color:var(--flp-fg);font-weight:600}
.flp-skin .flp-legend-item>i{display:inline-block;flex:none;width:10px;height:10px;border-radius:3px;background:var(--sw,var(--flp-ac))}
.flp-skin .flp-legend-item>i.is-dash,.flp-skin .flp-legend-item>i.is-dot{width:16px;height:0;border-radius:0;background:none;border-top:2px dashed var(--sw,rgba(255,255,255,.4))}
.flp-skin .flp-legend-item>i.is-dot{border-top-style:dotted}
.flp-skin :is(.flp-legend-item.is-dashed,.flp-legend-item.is-dotted)>i{width:16px;height:0;border-radius:0;background:none;border-top:2px dashed var(--sw,rgba(255,255,255,.4))}
.flp-skin .flp-legend-item.is-dotted>i{border-top-style:dotted;border-top-width:3px}
.flp-skin .flp-legend-item.is-hollow>i{width:8px;height:8px;border:2px solid var(--sw,var(--flp-ac));border-radius:50%;background:transparent}
.flp-skin .flp-legend-item>i.is-hollow{width:8px;height:8px;border:2px solid var(--sw,var(--flp-ac));border-radius:50%;background:transparent}
.flp-skin .flp-legend-item.is-band>i{box-sizing:border-box;width:9px;height:13px;border:1px dashed var(--sw,rgba(255,255,255,.34));border-radius:2px;background:rgba(255,255,255,.07)}
/* Command bar: navigation + identification only (no metrics). Sticks under the APX top bar on desktop. */
.flp-skin .flp-commandbar{position:relative;z-index:5;display:flex;flex-direction:column;gap:10px;padding:12px 16px;border:1px solid var(--flp-bd);border-radius:16px;background:rgba(10,12,18,.66);-webkit-backdrop-filter:blur(28px) saturate(170%);backdrop-filter:blur(28px) saturate(170%);box-shadow:0 10px 28px rgba(0,0,0,.3)}
.flp-skin .flp-commandbar-row{display:flex;flex-wrap:wrap;align-items:center;gap:10px 12px;min-width:0}
.flp-skin .flp-commandbar-row>.flp-spacer,.flp-skin .flp-spacer{flex:1 1 0}
.flp-skin .flp-sublbl,.flp-skin .flp-commandbar-label{font-size:12px;color:var(--flp-dim)}
.flp-skin .flp-source-label{margin-left:auto;font-size:12px;line-height:1.45;color:var(--flp-dim);text-align:right}
.flp-skin .flp-source-label b{color:var(--flp-amb);font-weight:600}
.flp-skin .flp-commandbar-group{display:inline-flex;flex-wrap:nowrap;align-items:center;gap:8px;min-width:0;max-width:100%}
.flp-skin .flp-commandbar .performance-plan-select{display:inline-flex;flex:0 1 auto;flex-direction:row;align-items:center;gap:8px;min-width:0;max-width:100%}
.flp-skin .flp-commandbar .performance-plan-select select{flex:1 1 auto;width:auto;min-width:0;height:32px;min-height:32px;max-width:min(380px,100%);border-radius:10px;font:650 13px/1.2 var(--flp-font);letter-spacing:-.01em}
/* Plan / Live tab panels */
.flp-skin .flp-tabpanel{min-width:0;margin-top:22px}
.flp-skin .flp-tabpanel:not(.is-active){display:none}
/* Range calendar */
.flp-skin .flp-cal{position:relative;display:inline-block}
.flp-skin .flp-cal-toggle{appearance:none;display:inline-flex;align-items:center;gap:6px;min-height:28px;padding:4px 10px;border:1px solid var(--flp-bd);border-radius:8px;background:var(--flp-glass);color:var(--flp-fg);font:500 12px/1.2 var(--flp-font);cursor:pointer}
.flp-skin .flp-cal-toggle:hover{border-color:var(--flp-bd2)}
.flp-skin .flp-cal-toggle.is-active,.flp-skin .flp-cal-toggle[aria-pressed="true"]{border-color:var(--flp-ac);color:var(--flp-ac)}
.flp-skin .flp-cal-toggle[aria-expanded="true"]{border-color:var(--flp-bd2);background:rgba(255,255,255,.09)}
.flp-skin .flp-cal-pop{position:absolute;top:calc(100% + 6px);left:0;z-index:40;box-sizing:border-box;width:268px;max-width:calc(100vw - 32px);padding:12px;border:1px solid var(--flp-bd2);border-radius:12px;background:var(--flp-solid);box-shadow:0 18px 40px rgba(0,0,0,.55)}
.flp-skin .flp-cal-pop[hidden]{display:none!important}
.flp-skin .flp-cal-head{display:flex;align-items:center;justify-content:space-between;gap:8px;margin-bottom:8px}
.flp-skin .flp-cal-head :is(b,strong,span){font-size:12.5px;font-weight:620;letter-spacing:-.01em;color:var(--flp-fg)}
.flp-skin .flp-cal-nav{appearance:none;width:26px;height:26px;padding:0;border:1px solid var(--flp-bd);border-radius:7px;background:none;color:var(--flp-mut);font-size:13px;line-height:1;cursor:pointer}
.flp-skin .flp-cal-nav:hover:not(:disabled){border-color:var(--flp-bd2);color:var(--flp-fg)}
.flp-skin .flp-cal-nav:disabled{opacity:.25;cursor:default}
.flp-skin .flp-cal-grid{display:grid;grid-template-columns:repeat(7,minmax(0,1fr));gap:2px}
.flp-skin .flp-cal-dow{padding:2px 0;text-align:center;font-size:12px;text-transform:uppercase;color:var(--flp-dim)}
.flp-skin .flp-cal-day{appearance:none;min-width:0;margin:0;padding:5px 0;border:1px solid transparent;border-radius:6px;background:none;color:var(--flp-dim);font:500 12px/1.35 var(--flp-font);font-variant-numeric:tabular-nums;text-align:center;opacity:.35;cursor:default}
.flp-skin .flp-cal-day.is-available{opacity:1;color:var(--flp-fg);cursor:pointer}
.flp-skin .flp-cal-day.is-available:hover{background:rgba(255,255,255,.07)}
.flp-skin .flp-cal-day.is-between{background:rgba(255,122,79,.16)}
.flp-skin .flp-cal-day.is-selected,.flp-skin .flp-cal-day.is-selected:hover{background:var(--flp-ac);color:#141414;font-weight:640}
.flp-skin .flp-cal-day.is-today{border-color:var(--flp-amb)}
.flp-skin .flp-cal-day:focus-visible{outline:2px solid #ffb08f;outline-offset:0}
.flp-skin .flp-cal-foot{display:flex;align-items:center;justify-content:space-between;gap:8px;margin-top:10px}
.flp-skin .flp-cal-clear{appearance:none;padding:0;border:0;background:none;color:var(--flp-mut);font:500 12px/1.3 var(--flp-font);cursor:pointer}
.flp-skin .flp-cal-clear:hover{color:var(--flp-fg)}
.flp-skin .flp-cal-info{font-size:12px;color:var(--flp-dim);text-align:right}
/* Plan builder base (details.flp-builder.flp-card); full form styles live with the other v0.66 components below. */
.flp-skin .flp-form-grid{display:grid;grid-template-columns:repeat(auto-fit,minmax(200px,1fr));gap:12px}
.flp-skin .flp-builder fieldset{min-width:0;border:1px solid var(--flp-well-bd);border-radius:14px;background:var(--flp-well)}
/* Live summary: modeled cost strip (plan inputs, never observed spend) and the scenario-classification caveat. */
.flp-skin .flp-costline{display:flex;flex-wrap:wrap;align-items:center;row-gap:6px;padding:11px 16px;border:1px solid var(--flp-well-bd);border-radius:14px;background:var(--flp-well);font-size:12.5px;line-height:1.5;color:var(--flp-fg)}
.flp-skin .flp-costline>.flp-chip{margin-right:12px}
.flp-skin .flp-costline-item{font-variant-numeric:tabular-nums;white-space:nowrap}
.flp-skin .flp-costline-item+.flp-costline-item::before{content:'·';margin:0 10px;color:var(--flp-dim)}
.flp-skin .flp-costline-note{flex:1 0 100%;margin:4px 0 0;font-size:12px;line-height:1.55;color:var(--flp-dim)}
.flp-skin .flp-caveat{display:flex;align-items:center;gap:9px;margin:14px 0 0;font-size:12px;line-height:1.45;color:var(--flp-mut)}
.flp-skin .flp-caveat::before{content:'i';display:inline-grid;place-items:center;flex:none;width:17px;height:17px;border:1px solid rgba(110,168,255,.4);border-radius:50%;background:rgba(110,168,255,.1);color:var(--flp-blu);font:650 12px/1 var(--flp-font)}
.flp-skin .performance-forecast-status time,.flp-skin .flp-kv time{font-variant-numeric:tabular-nums;white-space:nowrap}
/* Wide tooltip holding a raw reason code: the code never breaks mid-word. */
.flp-skin .flp-tip-body.is-wide{width:332px}
.flp-skin .flp-tip-body code{display:inline-block;margin:2px 0 4px;white-space:nowrap;font-size:12px;color:var(--flp-fg)}
/* Dashboard plan pulse */
.flp-skin .flp-pulse-actions{display:flex;flex-wrap:wrap;align-items:center;gap:8px}
.flp-skin .flp-pulse-actions>.btn{margin-left:auto}
.flp-skin .flp-read.flp-pulse-read{margin-top:16px;padding-top:14px;border-top:1px dashed rgba(255,255,255,.08)}
.flp-skin .flp-read.flp-pulse-read p{font-size:13px}
.flp-skin .flp-read .flp-pulse-partial{margin-top:8px;font-size:12px;color:var(--flp-mut)}
.flp-skin .flp-pulse-empty{display:flex;flex-wrap:wrap;align-items:center;gap:8px 16px}
.flp-skin .flp-pulse-empty>.flp-label{flex:0 0 100%}
.flp-skin .flp-pulse-empty>p{margin:0;color:var(--flp-mut);font-size:13px}
.flp-skin .flp-pulse-empty>p strong{color:var(--flp-fg)}
.flp-skin .flp-pulse-empty>.flp-note{flex:1 0 100%;margin:0}
.flp-skin .flp-pulse-empty>.btn{margin-left:auto}
.flp-skin .flp-pulse-empty.is-unavailable{border-color:rgba(251,191,36,.3)}
.flp-skin .flp-pulse-empty>.flp-pulse-caveat{flex:1 0 100%;font-size:12px;color:var(--flp-dim)}
/* Hypothesis cards ("what to check next"): words for engine enums, one wide card when only one hypothesis exists. */
.flp-skin .performance-hypotheses-grid.is-single{grid-template-columns:minmax(0,1fr)}
.flp-skin .performance-hypothesis.flp-card h4{margin:10px 0 0;font:620 14px/1.4 var(--flp-font)}
.flp-skin .performance-hypothesis .flp-kpi-sub{margin-top:8px}
.flp-skin .performance-hypothesis-metrics{grid-template-columns:repeat(3,minmax(0,1fr))}
.flp-skin .performance-hypothesis-metrics strong{overflow-wrap:normal;white-space:nowrap}
.flp-skin .performance-hypothesis-metrics span{margin-top:4px;line-height:1.35}
.flp-skin :is(.performance-hypothesis-track,.experiment-evidence-form)>.flp-chip{grid-column:1/-1;justify-self:start;align-self:start}
@container flp (min-width:761px){
.flp-skin .performance-hypothesis.is-wide{display:grid;grid-template-columns:minmax(0,1.05fr) minmax(0,1fr);column-gap:0;align-items:stretch}
.flp-skin .performance-hypothesis.is-wide>.performance-hypothesis-main{padding-right:26px}
.flp-skin .performance-hypothesis.is-wide>.performance-hypothesis-side{padding-left:26px;border-left:1px dashed rgba(255,255,255,.08)}
.flp-skin .performance-hypothesis.is-wide>.performance-hypothesis-side>:first-child{margin-top:0;padding-top:0;border-top:0}
}
.flp-skin .performance-diagnosis-reasons .flp-chip{max-width:100%;padding:2px 10px;white-space:normal;line-height:1.45}
.flp-skin .flp-chip{max-width:100%}
/* Campaign handoff readiness codes shown as "Stage · reason" chips (raw code in title). */
.flp-skin .campaign-handoff-issue-list{display:flex;flex-wrap:wrap;gap:6px;margin-top:8px}
.flp-skin .campaign-handoff-issue{display:inline-flex;flex-wrap:wrap;gap:0 5px;padding:2px 10px;border:1px solid rgba(251,113,133,.3);border-radius:99px;background:rgba(251,113,133,.08);color:var(--flp-mut);font-size:12px;line-height:1.5}
.flp-skin .campaign-handoff-issue b{color:var(--flp-fg);font-weight:600}
.flp-skin :is(.campaign-handoff-issues.warning,.campaign-handoff-preview) .campaign-handoff-issue{border-color:rgba(251,191,36,.3);background:rgba(251,191,36,.07)}
/* Plan builder form (details.flp-builder.flp-card): glass inputs, grouped fieldsets, scenario rows, preview without a second neon ring. */
.flp-skin .flp-builder>summary{display:flex;flex-wrap:wrap;align-items:center;gap:4px 12px;list-style:none;font:620 13px/1.4 var(--flp-font);color:var(--flp-fg)}
.flp-skin .flp-builder>summary::-webkit-details-marker{display:none}
.flp-skin .flp-builder>summary>.flp-label{flex:0 0 100%}
.flp-skin .flp-builder>summary>strong{font-size:15px;font-weight:650;letter-spacing:-.01em}
.flp-skin .flp-builder>summary>small{font-size:12px;color:var(--flp-dim)}
.flp-skin .flp-builder>summary::after{content:'';flex:none;width:8px;height:8px;margin:0 4px 3px auto;border-right:1.5px solid var(--flp-mut);border-bottom:1.5px solid var(--flp-mut);transform:rotate(45deg)}
.flp-skin .flp-builder[open]>summary::after{margin-bottom:-3px;transform:rotate(-135deg)}
.flp-skin .flp-builder[open]>summary{margin-bottom:6px}
.flp-skin .flp-builder-body>*+*{margin-top:12px}
.flp-skin .flp-builder-body>.flp-seg{margin-top:4px}
.flp-skin .flp-builder-body>p{margin-bottom:0}
.flp-skin .flp-builder fieldset.flp-builder-group{margin:16px 0 0;padding:14px 16px 16px}
.flp-skin .flp-builder legend{padding:0 6px;font:620 12px/1.3 var(--flp-font);letter-spacing:.02em;color:var(--flp-fg)}
.flp-skin .flp-builder-group>.flp-grid{gap:12px 14px}
.flp-skin .flp-builder-group>.flp-note{margin-top:10px}
.flp-skin .flp-field{display:flex;flex-direction:column;gap:5px;min-width:0;margin:0;font-weight:400;color:var(--flp-mut)}
.flp-skin .flp-field>span{font:520 12px/1.35 var(--flp-font);color:var(--flp-mut)}
.flp-skin .flp-field :is(input,select){width:100%;min-width:0;min-height:36px;color-scheme:dark}
.flp-skin .flp-field input[type=date]{font-variant-numeric:tabular-nums}
.flp-skin .flp-field input[type=date]::-webkit-calendar-picker-indicator{opacity:.75;cursor:pointer}
.flp-skin .flp-field input[type=date]:is(:hover,:focus-visible)::-webkit-calendar-picker-indicator{opacity:1}
.flp-skin .flp-field-hint{font-size:12px;font-weight:400;line-height:1.4;color:var(--flp-dim)}
.flp-skin .flp-field-error{font-size:12px;line-height:1.4;color:var(--flp-red)}
.flp-skin .flp-field.is-invalid :is(input,select),.flp-skin .flp-field :is(input,select)[aria-invalid="true"]{border-color:rgba(251,113,133,.65);box-shadow:0 0 0 3px rgba(251,113,133,.12)}
.flp-skin .flp-builder-step{margin-top:14px;padding-top:12px;border-top:1px dashed rgba(255,255,255,.08)}
.flp-skin .flp-builder-campaigns{display:grid;grid-template-columns:repeat(auto-fill,minmax(min(100%,280px),1fr));gap:8px;margin:0 0 12px;max-height:320px;overflow:auto;overscroll-behavior:contain}
.flp-skin .flp-builder-campaign{display:flex;align-items:flex-start;gap:9px;min-width:0;margin:0;padding:9px 10px;border:1px solid var(--flp-well-bd);border-radius:10px;cursor:pointer}
.flp-skin .flp-builder-campaign input{margin-top:3px;flex:none}
.flp-skin .flp-builder-campaign span{display:grid;gap:2px;min-width:0}
.flp-skin .flp-builder-campaign b{font:600 12.5px/1.35 var(--flp-font);color:var(--flp-fg);overflow-wrap:anywhere}
.flp-skin .flp-builder-campaign small{font-size:12px;color:var(--flp-dim);overflow-wrap:anywhere}
.flp-skin .flp-builder-campaign:has(input:checked){border-color:var(--flp-ac)}
.flp-skin .flp-builder-campaign:has(input:focus-visible){outline:2px solid var(--flp-ac);outline-offset:2px}
.flp-skin .flp-builder-step-head{display:flex;flex-wrap:wrap;align-items:baseline;gap:4px 10px;margin-bottom:10px}
.flp-skin .flp-builder-step-head strong{font:620 12.5px/1.35 var(--flp-font);color:var(--flp-fg)}
.flp-skin .flp-builder-step-head small{font-size:12px;color:var(--flp-dim)}
.flp-skin .flp-builder-scenario{margin:0 0 12px;padding:12px 14px 14px;border:1px solid var(--flp-well-bd);border-left:2px solid var(--mark,var(--flp-bd2));border-radius:12px;background:rgba(0,0,0,.2)}
.flp-skin .flp-builder-scenario>.flp-grid+.flp-grid{margin-top:12px}
.flp-skin .flp-builder-scenario-head{display:flex;align-items:center;gap:8px;margin-bottom:10px}
.flp-skin .flp-builder-scenario-head strong{font:620 12.5px/1.35 var(--flp-font);color:var(--flp-fg)}
.flp-skin .flp-builder-scenario-head .btn{margin-left:auto;min-height:28px;padding:4px 10px}
.flp-skin .flp-builder-actions{display:flex;flex-wrap:wrap;align-items:center;gap:8px;margin-top:18px}
.flp-skin .flp-builder .btn:disabled{opacity:.45;cursor:not-allowed;box-shadow:none}
.flp-skin .flp-builder[aria-busy="true"]{cursor:progress}
.flp-skin .flp-builder[aria-busy="true"]>.flp-builder-body{opacity:.7}
.flp-skin .flp-builder-errors{padding:12px 14px;border:1px solid rgba(251,113,133,.35);border-radius:12px;background:rgba(251,113,133,.07);font-size:12.5px;color:var(--flp-fg)}
.flp-skin .flp-builder-errors ul{margin:6px 0 0;padding-left:18px;color:var(--flp-mut)}
.flp-skin .flp-builder-errors li+li{margin-top:3px}
.flp-skin .flp-builder-error-link{appearance:none;vertical-align:top;padding:0;border:0;background:none;color:#fda4b4;font:inherit;text-align:left;text-decoration:underline;text-underline-offset:2px;cursor:pointer}
.flp-skin .flp-builder-notice,.flp-skin .flp-builder-version,.flp-skin .flp-builder-readonly{padding:10px 13px;border-radius:12px;font-size:12.5px;line-height:1.5}
.flp-skin .flp-builder-notice{border:1px solid rgba(52,211,153,.32);background:rgba(52,211,153,.08);color:#a7f3d0}
.flp-skin .flp-builder-version{border:1px solid rgba(110,168,255,.3);background:rgba(110,168,255,.07);color:#c7dbff}
.flp-skin .flp-builder-readonly{border:1px solid rgba(251,191,36,.28);background:rgba(251,191,36,.06);color:#f7d690}
.flp-skin .flp-builder-archive{display:flex;flex-wrap:wrap;align-items:center;gap:10px 14px;margin-top:18px;padding:12px 14px;border:1px dashed rgba(251,113,133,.3);border-radius:12px}
.flp-skin .flp-builder-confirm{margin:0;font-weight:400;display:flex;align-items:flex-start;gap:9px;flex:1 1 320px;min-width:0;font-size:12.5px;line-height:1.5;color:var(--flp-mut)}
.flp-skin .flp-builder-confirm input{margin-top:3px;flex:none}
.flp-skin .flp-builder-preview{margin-top:20px;padding-top:18px;border-top:1px solid var(--flp-bd)}
.flp-skin .flp-builder-preview>*+*{margin-top:12px}
.flp-skin .flp-builder-stale{color:var(--flp-amb)}
.flp-skin .flp-builder .flp-card{background:rgba(255,255,255,.03);box-shadow:none;-webkit-backdrop-filter:none;backdrop-filter:none}
.flp-skin .flp-builder-preview .flp-kpi{padding:13px 14px;border:1px solid var(--flp-well-bd);border-radius:14px;background:var(--flp-well)}
.flp-skin .flp-builder-preview .flp-kpi-value{font-size:21px}
.flp-skin .flp-builder-preview .flp-g3{grid-template-columns:repeat(auto-fit,minmax(min(240px,100%),1fr))}
.flp-skin .flp-builder-preview .flp-card h4 .flp-dot{margin-right:2px}
/* Direct view hides explanation only (never numbers, evidence-boundary labels or mandatory caveats). */
/* Plan Builder messages carry form state (stale preview, reverse-sizing reason, business choice), so the builder is excluded. */
.flp-skin.flp-direct .flp-det:not([data-flp-builder] *),.flp-skin.flp-direct .flp-note:not([data-flp-builder] *),.flp-skin.flp-direct .flp-tip-wrap:not([data-flp-builder] *){display:none!important}
.flp-skin.flp-direct .flp-g2:has(>.flp-det),.flp-skin.flp-direct .flp-g23:has(>.flp-det),.flp-skin.flp-direct .flp-g32:has(>.flp-det){grid-template-columns:minmax(0,1fr)}

/* ================= Responsive: component layout follows the content width (container "flp"), FLP breakpoints 1020/640 ================= */
@container flp (max-width:1100px){
.flp-skin .spark-grid{grid-template-columns:repeat(3,minmax(0,1fr))}
.flp-skin .journey-branches{grid-template-columns:minmax(0,1fr)}
.flp-skin .performance-forecast-grid{grid-template-columns:repeat(3,minmax(0,1fr))}
}
@container flp (max-width:980px){
.flp-skin .flp-g5,.flp-skin .flp-g4,.flp-skin .flp-g3{grid-template-columns:repeat(2,minmax(0,1fr))}
.flp-skin :is(.flp-g5,.flp-g3)>:last-child:nth-child(odd){grid-column:1/-1}
.flp-skin .flp-g23,.flp-skin .flp-g32{grid-template-columns:minmax(0,1fr)}
.flp-skin .money-metric-grid,.flp-skin .visual-intelligence-dashboard .money-metric-grid{grid-template-columns:repeat(2,minmax(0,1fr))}
.flp-skin .performance-split{grid-template-columns:minmax(0,1fr)}
.flp-skin .performance-forecast-grid{grid-template-columns:repeat(2,minmax(0,1fr))}
}
@container flp (max-width:760px){
.flp-skin .spark-grid{grid-template-columns:repeat(2,minmax(0,1fr))}
.flp-skin .spark-grid>:last-child:nth-child(odd){grid-column:1/-1}
.flp-skin .performance-lens-head{grid-template-columns:minmax(0,1fr)}
.flp-skin .lens-primary{text-align:left}
}
@container flp (max-width:600px){
.flp-skin .journey-node i{display:none}
.flp-skin .journey-track{display:grid;grid-auto-flow:row;grid-template-columns:repeat(2,minmax(0,1fr));gap:8px}
.flp-skin .journey-track>.journey-arrow{display:none}
/* no orphan half-row: an odd last tile in a two-column mobile grid takes the full row */
.flp-skin .journey-track>.journey-node:last-child:nth-child(4n+1){grid-column:1/-1}
.flp-skin .ga4-event-grid,.flp-skin .submitted-journey-grid{grid-template-columns:repeat(2,minmax(0,1fr))}
.flp-skin :is(.ga4-event-grid,.submitted-journey-grid)>:last-child:nth-child(odd){grid-column:1/-1}
.flp-skin .flp-g2,.flp-skin .flp-g3,.flp-skin .flp-g4,.flp-skin .flp-g5{grid-template-columns:minmax(0,1fr)}
.flp-skin .flp-bars{display:flex;flex-direction:column;align-items:stretch;gap:11px}
.flp-skin .flp-bar-row{grid-column:auto;grid-template-columns:minmax(0,1fr) auto;grid-template-areas:"l v" "t t";gap:6px 12px}
.flp-skin .flp-step{padding:8px 14px}
.flp-skin .flp-source-label{margin-left:0;text-align:left;flex-basis:100%}
.flp-skin .flp-spacer{display:none}
.flp-skin .flp-card .flp-g4,.flp-skin .flp-card .flp-g5{grid-template-columns:repeat(2,minmax(0,1fr))}
.flp-skin .flp-shead-note{margin-left:0;text-align:left;flex-basis:100%}
.flp-skin .flp-cal{position:static}
.flp-skin .flp-cal-pop{top:auto;left:12px;right:auto;margin-top:6px}
.flp-skin .flp-kpi-value{font-size:24px}
.flp-skin .money-metric>strong,.flp-skin .money-metric .finance-amount{font-size:19px}
.flp-skin .performance-forecast-grid{grid-template-columns:minmax(0,1fr)}
.flp-skin .rhythm-controls{grid-template-columns:repeat(2,minmax(0,1fr))}
.flp-skin .lens-primary strong{font-size:30px}
.flp-skin .lens-chart text{font-size:24px}
}
@container flp (max-width:760px){
/* Narrow funnels map widths into 45-100% instead of clamping every step to one 250px minimum, so the shape (and the M3 morph) survive. */
.flp-skin .flp-step{min-width:0;width:calc(45% + var(--w,100%) * .55)}
}
@container flp (max-width:600px){
/* Sales path: a 2x2 grid of steps (arrows hidden) instead of a clipped sideways scroller; an odd last step takes the full row. */
.flp-skin .sales-path-steps{display:grid;grid-template-columns:repeat(2,minmax(0,1fr));overflow:visible}
.flp-skin .sales-path-steps>span{display:none}
.flp-skin .sales-path-steps>:is(div,button){min-width:0}
.flp-skin .sales-path-steps>:is(div,button):last-child:nth-child(4n+1){grid-column:1/-1}
.flp-skin .flp-card :is(.flp-g4,.flp-g5)>:last-child:nth-child(odd){grid-column:1/-1}
/* FLP tables wrap inside their card on phones (every column stays in view) instead of hiding Observed/Status behind a sideways scroll. */
.flp-skin .flp-table{white-space:normal}
.flp-skin .flp-table :is(td,th){padding:8px 6px}
.flp-skin .flp-table td small{overflow-wrap:anywhere}
.flp-skin .flp-table .flp-chip{white-space:normal}
@container flp (max-width:600px){.flp-skin .flp-table .flp-chip{border-radius:10px}}
/* numbers, money and dates never split across lines ("USD" / "19,000", "2026-" / "09-10"); headers and text columns take the wrapping */
.flp-skin .flp-table td.n,.flp-skin .flp-table td.is-date,.flp-skin .flp-table .flp-num{white-space:nowrap}
.flp-skin .flp-table td.n.is-words{white-space:normal}
.flp-skin .flp-costline{padding:12px 14px}
.flp-skin .flp-costline>.flp-chip{margin:0 0 4px}
.flp-skin .flp-costline-item{flex:1 0 100%;white-space:normal}
.flp-skin .flp-costline-item+.flp-costline-item::before{content:none}
.flp-skin .flp-kv-row>span{max-width:55%}
}
@container flp (max-width:420px){
.flp-skin .money-metric-grid,.flp-skin .visual-intelligence-dashboard .money-metric-grid{grid-template-columns:minmax(0,1fr)}
.flp-skin .journey-node strong,.flp-skin .performance-journey.compact .journey-node strong{font-size:21px}
/* narrowest phones: tighter cell gutters so whole money values ("USD 19,000") and scenario headers fit without a sideways scroll */
.flp-skin .flp-table :is(td,th){padding:8px 4px}
}
@media(max-width:760px){
.flp-skin .performance-journey:where(:not(.flp-section)),.flp-skin .ga4-event-journey:where(:not(.flp-section)),.flp-skin .submitted-journey:where(:not(.flp-section)),.flp-skin .performance-trends:where(:not(.flp-section)),.flp-skin .money-dashboard:where(:not(.flp-section)),.flp-skin .sales-path-dashboard:where(:not(.flp-section)),.flp-skin .eod-sales-dashboard:where(:not(.flp-section)),.flp-skin .performance-recent:where(:not(.flp-section)),.flp-skin .performance-compare-bar:where(:not(.flp-section)),.flp-skin .website-journey-bridge:where(:not(.flp-section)),.flp-skin .journey-change-signals:where(:not(.flp-section)),.flp-skin .offer-journey:where(:not(.flp-section)),.flp-skin .performance-rhythm:where(:not(.flp-section)),.flp-skin .performance-lens:where(:not(.flp-section)),.flp-skin .segment-journey:where(:not(.flp-section)),.flp-skin .performance-channel-section:where(:not(.flp-section)),.flp-skin .campaign-delivery:where(:not(.flp-section)),.flp-skin .ad-group-delivery:where(:not(.flp-section)),.flp-skin .ad-delivery:where(:not(.flp-section)),.flp-skin .placement-delivery:where(:not(.flp-section)),.flp-skin .performance-split:where(:not(.flp-section)),.flp-skin .performance-definitions:where(:not(.flp-section)),.flp-skin .performance-forecast:where(:not(.flp-section)),.flp-skin .performance-diagnosis:where(:not(.flp-section)),.flp-skin .performance-experiments:where(:not(.flp-section)),.flp-skin .performance-campaign-handoffs:where(:not(.flp-section)),.flp-skin .flp-card{padding:16px}
.flp-skin :is(.performance-journey-head,.performance-section-head,.money-dashboard-head,.panel-head)>small{max-width:none;text-align:left}
.flp-skin .rhythm-grid text,.flp-skin .rhythm-axis-note{font-size:14px}
:is(main.visual-main,main.performance-main) .performance-welcome{padding:20px}
}
@media(min-width:901px){.flp-skin .flp-commandbar{position:sticky;top:calc(var(--flp-topbar-h) + 10px)}}
@media print{main.visual-main::before,main.performance-main::before{display:none}main.visual-main,main.performance-main{background:none}}

/* ================= Motion (FLP-faithful M1-M3 + APX additions M5-M7, M9-M11). Only when the viewer has no reduced-motion preference. ================= */
@keyframes flp-neon{to{--flp-ang:360deg}}
@keyframes flp-morph{from{width:var(--w-from)}to{width:var(--w)}}
@keyframes flp-morph-sm{from{width:calc(45% + var(--w-from) * .55)}to{width:calc(45% + var(--w) * .55)}}
@keyframes flp-reveal{from{opacity:0;transform:translateY(8px)}to{opacity:1;transform:none}}
@keyframes flp-grow{from{transform:scaleX(0)}}
@keyframes flp-draw{from{clip-path:inset(-8px 100% -8px -8px)}to{clip-path:inset(-8px -8px -8px -8px)}}
@keyframes flp-fade{from{opacity:0}}
@keyframes flp-tab-in{from{opacity:0;transform:translateY(6px)}to{opacity:1;transform:none}}
@keyframes flp-pop{from{transform:translate(-50%,-50%) scale(0)}}
@media (prefers-reduced-motion:no-preference){
/* M1 (FLP) neon ring, on cards only: FLP cards (not the Plan Builder form) and the compact restyled Dashboard cards. Large evidence
   sections and tables get the static border hover below instead. The ring stays attached and paused, running only on a fine-pointer
   hover or keyboard focus (:focus-visible), so a mouse click or a tap never latches it; leaving fades opacity without an angle snap.
   Known limit (kept on purpose): every click re-renders #app via innerHTML, which recreates the card, so a click inside a hovered card
   restarts its ring at 0deg. */
.flp-skin :is(.flp-card:not(.flp-builder),.performance-journey.compact,.performance-trends,.money-dashboard,.sales-path-dashboard,.performance-compare-bar):where(:not(.flp-section))::after{content:'';position:absolute;inset:-1px;z-index:1;border-radius:inherit;padding:1.5px;background:conic-gradient(from var(--flp-ang),transparent 0%,transparent 55%,rgba(110,168,255,.85) 70%,rgba(167,139,250,.95) 78%,rgba(255,122,79,.85) 86%,transparent 98%);-webkit-mask:linear-gradient(#000 0 0) content-box,linear-gradient(#000 0 0);-webkit-mask-composite:xor;mask-composite:exclude;opacity:0;pointer-events:none;transition:opacity .25s ease;animation:flp-neon 7s linear 3;animation-play-state:paused}
@media (hover:hover) and (pointer:fine){.flp-skin :is(.flp-card:not(.flp-builder),.performance-journey.compact,.performance-trends,.money-dashboard,.sales-path-dashboard,.performance-compare-bar):where(:not(.flp-section)):hover::after{opacity:1;animation-play-state:running}}
.flp-skin :is(.flp-card:not(.flp-builder),.performance-journey.compact,.performance-trends,.money-dashboard,.sales-path-dashboard,.performance-compare-bar):where(:not(.flp-section)):has(:focus-visible)::after{opacity:1;animation-play-state:running}
.flp-skin .performance-journey:not(.compact):where(:not(.flp-section)):is(:hover,:has(:focus-visible)),.flp-skin .ga4-event-journey:where(:not(.flp-section)):is(:hover,:has(:focus-visible)),.flp-skin .submitted-journey:where(:not(.flp-section)):is(:hover,:has(:focus-visible)),.flp-skin .eod-sales-dashboard:where(:not(.flp-section)):is(:hover,:has(:focus-visible)),.flp-skin .performance-recent:where(:not(.flp-section)):is(:hover,:has(:focus-visible)),.flp-skin .website-journey-bridge:where(:not(.flp-section)):is(:hover,:has(:focus-visible)),.flp-skin .journey-change-signals:where(:not(.flp-section)):is(:hover,:has(:focus-visible)),.flp-skin .offer-journey:where(:not(.flp-section)):is(:hover,:has(:focus-visible)),.flp-skin .performance-rhythm:where(:not(.flp-section)):is(:hover,:has(:focus-visible)),.flp-skin .performance-lens:where(:not(.flp-section)):is(:hover,:has(:focus-visible)),.flp-skin .segment-journey:where(:not(.flp-section)):is(:hover,:has(:focus-visible)),.flp-skin .performance-channel-section:where(:not(.flp-section)):is(:hover,:has(:focus-visible)),.flp-skin .campaign-delivery:where(:not(.flp-section)):is(:hover,:has(:focus-visible)),.flp-skin .ad-group-delivery:where(:not(.flp-section)):is(:hover,:has(:focus-visible)),.flp-skin .ad-delivery:where(:not(.flp-section)):is(:hover,:has(:focus-visible)),.flp-skin .placement-delivery:where(:not(.flp-section)):is(:hover,:has(:focus-visible)),.flp-skin .performance-split:where(:not(.flp-section)):is(:hover,:has(:focus-visible)),.flp-skin .performance-definitions:where(:not(.flp-section)):is(:hover,:has(:focus-visible)),.flp-skin .performance-forecast:where(:not(.flp-section)):is(:hover,:has(:focus-visible)),.flp-skin .performance-diagnosis:where(:not(.flp-section)):is(:hover,:has(:focus-visible)),.flp-skin .performance-experiments:where(:not(.flp-section)):is(:hover,:has(:focus-visible)),.flp-skin .performance-campaign-handoffs:where(:not(.flp-section)):is(:hover,:has(:focus-visible)){border-color:var(--flp-bd2)}
/* no double rings: a ringed card nested inside another ringed card stays quiet */
.flp-skin :is(.flp-card,.performance-diagnosis,.performance-experiments,.performance-campaign-handoffs,.performance-forecast):where(:not(.flp-section)) .flp-card::after{content:none}
/* M2 (FLP) tooltip reveal: fade + 5px rise */
.flp-skin .flp-tip-body{transition:opacity .15s ease,transform .15s ease,visibility .15s ease}
/* A closing tooltip fades for .15s: its card keeps the raised z-index for exactly that long (discrete, delayed), so the fading body never
   paints under the sticky command bar; opening raises it at once. */
.flp-skin .flp-card{transition:z-index 0s linear .15s;transition-behavior:allow-discrete}
.flp-skin .flp-card:has(.flp-tip-wrap:hover,.flp-tip:focus-visible){transition-delay:0s}
/* M3 (FLP) step-funnel width morph, one render after a scenario change (narrow containers morph the mapped widths) */
.flp-skin .flp-step.flp-morph{animation:flp-morph .3s ease both}
@container flp (max-width:760px){.flp-skin .flp-step.flp-morph{animation-name:flp-morph-sm}}
/* M5 (APX motion) entrance reveal, first render of a data object only (.flp-enter), 45ms stagger via --i. Entrance animations fill
   backwards only: once finished they leave no transform (and so no stacking context) behind, which keeps tooltips above the sticky bar. */
.flp-enter .flp-reveal{animation:flp-reveal .42s cubic-bezier(.2,.7,.2,1) backwards;animation-delay:min(calc(var(--i,0) * 45ms),540ms)}
/* M6 (APX motion) meter / bar growth to the width already in the markup */
.flp-enter :is(.flp-meter>i,.flp-bar-track>i){transform-origin:left center;animation:flp-grow .7s cubic-bezier(.2,.7,.2,1) backwards;animation-delay:calc(min(calc(var(--i,0) * 45ms),540ms) + 140ms)}
/* M7 (APX motion) chart draw: a left-to-right clip wipe, applied only while it runs (fill backwards, no static rule), so the finished
   line is always whole. A pathLength dash is not used: with non-scaling strokes Chromium measures dashes in screen space and a scaled
   SVG would keep only part of the line. The area fades in after the line starts. */
.flp-enter .flp-chart-line:not(.is-partial){animation:flp-draw .9s ease backwards;animation-delay:calc(min(calc(var(--i,0) * 45ms),540ms) + 120ms)}
.flp-enter .flp-chart-area{animation:flp-fade .6s ease backwards;animation-delay:calc(min(calc(var(--i,0) * 45ms),540ms) + 320ms)}
.flp-enter :is(.flp-chart-required,.flp-chart-pace,.flp-chart-plan,.flp-chart-goal,.flp-chart-dot,.flp-chart-line.is-partial){animation:flp-fade .5s ease backwards;animation-delay:calc(min(calc(var(--i,0) * 45ms),540ms) + 500ms)}
/* M7 (APX motion) explore lens: one-shot section fade + clip-wipe line draw, only with .flp-lens-enter */
.flp-skin .performance-lens.flp-lens-enter{animation:flp-tab-in .24s ease backwards}
.flp-skin .performance-lens.flp-lens-enter .lens-line.current{animation:flp-draw .55s ease backwards}
.flp-skin .performance-lens.flp-lens-enter .lens-area{animation:flp-fade .5s ease both;animation-delay:.2s}
/* M9 (APX motion) tab enter */
.flp-skin .flp-tabpanel.flp-tab-enter{animation:flp-tab-in .24s ease backwards}
/* M10 hover lift timing harmonised to .18s */
.flp-skin :is(.journey-node,.lens-breakdown-row.clickable,.rhythm-chip,.offer-open,.segment-stage,.segment-open,.campaign-open,.sales-path-steps>button,.money-metric.dashboard-drill,.btn,.flp-seg-opt,.flp-cal-day,.flp-cal-toggle,.flp-tip){transition:background-color .18s ease,border-color .18s ease,color .18s ease,box-shadow .18s ease,transform .18s ease}
.flp-skin .lens-breakdown-row.clickable:hover{transform:translateX(2px)}
/* M11 (APX motion) slow pulse on the partial-today dot and the live chip */
.flp-skin :is(.flp-chart-dot.is-partial,.flp-live-dot),.flp-skin .flp-chip.is-live::before{animation:pulse 2s ease-in-out infinite alternate}
/* ...but inside a first render the partial dot stays at scale 0 until it pops in with the other dots (never alone in an empty chart). The
   entrance animates transform, not opacity: two stacked opacity animations would push the idle pulse onto the main thread. The pulse
   itself runs undelayed on the shared document-timeline phase (performance-ui.js), so it is already in step when the dot appears and
   a later re-render continues it without a jump. */
.flp-enter .flp-chart-dot.is-partial{animation:flp-pop .5s ease backwards,pulse 2s ease-in-out infinite alternate;animation-delay:calc(min(calc(var(--i,0) * 45ms),540ms) + 500ms),0s}
}
@media (prefers-reduced-motion:reduce){
.flp-skin *,.flp-skin *::before,.flp-skin *::after{animation:none!important;transition:none!important}
.flp-skin .journey-node:hover,.flp-skin .lens-breakdown-row.clickable:hover{transform:none}
.flp-skin .flp-card:where(:not(.flp-section)):hover,.flp-skin .performance-journey:where(:not(.flp-section)):hover,.flp-skin .ga4-event-journey:where(:not(.flp-section)):hover,.flp-skin .submitted-journey:where(:not(.flp-section)):hover,.flp-skin .performance-trends:where(:not(.flp-section)):hover,.flp-skin .money-dashboard:where(:not(.flp-section)):hover,.flp-skin .sales-path-dashboard:where(:not(.flp-section)):hover,.flp-skin .eod-sales-dashboard:where(:not(.flp-section)):hover,.flp-skin .performance-recent:where(:not(.flp-section)):hover,.flp-skin .performance-compare-bar:where(:not(.flp-section)):hover,.flp-skin .website-journey-bridge:where(:not(.flp-section)):hover,.flp-skin .journey-change-signals:where(:not(.flp-section)):hover,.flp-skin .offer-journey:where(:not(.flp-section)):hover,.flp-skin .performance-rhythm:where(:not(.flp-section)):hover,.flp-skin .performance-lens:where(:not(.flp-section)):hover,.flp-skin .segment-journey:where(:not(.flp-section)):hover,.flp-skin .performance-channel-section:where(:not(.flp-section)):hover,.flp-skin .campaign-delivery:where(:not(.flp-section)):hover,.flp-skin .ad-group-delivery:where(:not(.flp-section)):hover,.flp-skin .ad-delivery:where(:not(.flp-section)):hover,.flp-skin .placement-delivery:where(:not(.flp-section)):hover,.flp-skin .performance-split:where(:not(.flp-section)):hover,.flp-skin .performance-definitions:where(:not(.flp-section)):hover,.flp-skin .performance-forecast:where(:not(.flp-section)):hover,.flp-skin .performance-diagnosis:where(:not(.flp-section)):hover,.flp-skin .performance-experiments:where(:not(.flp-section)):hover,.flp-skin .performance-campaign-handoffs:where(:not(.flp-section)):hover{border-color:var(--flp-bd2)}
}
/* Evergreen / High-ticket agency benchmark signals (EVERGREEN-HIGH-TICKET.md). Colour follows the chip state and always sits beside its text label. */
.flp-skin .flp-signals{display:grid;gap:10px}
.flp-skin .flp-signal{display:grid;gap:6px;padding:10px 12px;border:1px solid var(--flp-well-bd);border-radius:12px;background:var(--flp-well);min-width:0}
.flp-skin .flp-signal-head{display:flex;align-items:center;justify-content:space-between;gap:8px;flex-wrap:wrap}
.flp-skin .flp-signal-label{color:var(--flp-fg);font:620 12.5px/1.35 var(--flp-font)}
.flp-skin .flp-signal-value{display:flex;align-items:baseline;gap:6px 10px;flex-wrap:wrap;min-width:0}
.flp-skin .flp-signal-value b{font:700 18px/1.2 var(--flp-font);font-variant-numeric:tabular-nums;color:var(--flp-fg)}
.flp-skin .flp-signal-value small{color:var(--flp-mut);font-size:11.5px;line-height:1.4;overflow-wrap:anywhere}
.flp-skin .flp-signal .flp-note{margin:0}
/* Plan-tab benchmark list: two columns once the full-width card has room; the Live tab keeps one column inside its narrower card. */
.flp-skin [data-flp-plan-signals] .flp-signals{grid-template-columns:repeat(auto-fill,minmax(min(100%,360px),1fr));align-items:start}
.flp-skin .flp-card .flp-kv+h4{margin-top:18px}
.flp-skin .flp-costview{display:grid;gap:8px;align-content:start;min-width:0}
.flp-skin .flp-live-meta{display:grid;gap:18px;min-width:0;padding:22px;border:1px solid var(--flp-bd2);border-radius:var(--flp-radius);background:var(--flp-glass)}
.flp-skin .flp-live-meta>.flp-shead{margin-bottom:0}
.flp-skin .flp-live-meta-toolbar{display:flex;align-items:center;justify-content:space-between;flex-wrap:wrap;gap:12px;min-width:0}
.flp-skin .flp-live-meta-toolbar .flp-caveat{margin:0;overflow-wrap:anywhere}
.flp-skin .flp-live-meta-toolbar .btn{min-height:44px;white-space:normal}
.flp-skin .flp-live-stage{display:grid;align-content:start;gap:10px;padding:16px;min-width:0}
.flp-skin .flp-live-stage h4{margin:0;font-size:12px;color:var(--flp-mut)}
.flp-skin .flp-live-stage>b{font-size:24px;line-height:1.2;overflow-wrap:anywhere}
.flp-skin .flp-live-stage .flp-kpi-sub{margin:0}
.flp-skin .flp-live-meta-details{min-width:0;border-top:1px solid var(--flp-bd);padding-top:14px}
.flp-skin .flp-live-meta-details>summary{min-height:44px;display:flex;align-items:center;gap:8px;cursor:pointer;color:var(--flp-mut);font-weight:600}
.flp-skin .flp-live-meta-details>summary::before{content:'›';font-size:20px;line-height:1}
.flp-skin .flp-live-meta-details[open]>summary::before{transform:rotate(90deg)}
.flp-skin .flp-live-meta-details .flp-table{min-width:930px}
.flp-skin .flp-live-meta-details .flp-table th>small{display:block;white-space:normal;color:var(--flp-mut);font-weight:400}
@container flp (max-width:600px){.flp-skin .flp-live-meta{padding:16px}.flp-skin .flp-live-meta-toolbar>.btn{width:100%}}
.flp-skin .flp-costview h4{margin:0}
.flp-skin .flp-costview-value{display:flex;align-items:center;gap:8px 10px;flex-wrap:wrap}
.flp-skin .flp-costview-value b{font:700 22px/1.15 var(--flp-font);font-variant-numeric:tabular-nums;color:var(--flp-fg);overflow-wrap:anywhere}
@container flp (max-width:600px){.flp-skin .flp-signal-value b{font-size:16px}.flp-skin .flp-costview-value b{font-size:19px}}
/* Selected programs retain the original Dashboard/Performance chart language. */
.flp-skin.program-performance .program-trends .spark-grid{grid-template-columns:repeat(3,minmax(0,1fr))}
.flp-skin.program-performance .rhythm-chip.metric-purchases{color:var(--flp-ac)}
.flp-skin.program-performance .rhythm-line.metric-purchases{stroke:var(--flp-ac);stroke-dasharray:none}
.flp-skin.program-performance .rhythm-marker.metric-purchases{fill:var(--flp-ac)}
.flp-skin.program-performance .rhythm-chip.metric-source_customers{color:var(--flp-vio)}
.flp-skin.program-performance .rhythm-line.metric-source_customers{stroke:var(--flp-vio);stroke-dasharray:none}
.flp-skin.program-performance .rhythm-marker.metric-source_customers{fill:var(--flp-vio)}
.flp-skin.program-performance .rhythm-chip.metric-billing_customers{color:var(--flp-grn)}
.flp-skin.program-performance .rhythm-line.metric-billing_customers{stroke:var(--flp-grn);stroke-dasharray:8 4}
.flp-skin.program-performance .rhythm-marker.metric-billing_customers{fill:var(--flp-grn)}
.flp-skin.program-performance .program-shared-evidence .performance-section-head{margin-bottom:0}
.flp-skin [data-program-finance-trend]{margin:0;padding:20px 22px;border-radius:var(--flp-radius);background:var(--flp-glass);border-color:var(--flp-bd);box-shadow:var(--flp-shadow)}
.flp-skin [data-program-finance-trend] .panel-body{padding:0}
@media(max-width:760px){.flp-skin [data-program-finance-trend]{padding:16px}}
@media(max-width:760px){.flp-skin.program-performance .program-trends .spark-grid{grid-template-columns:repeat(2,minmax(0,1fr))}}
@media(max-width:430px){.flp-skin.program-performance .program-trends .spark-grid{grid-template-columns:1fr}.flp-skin.program-performance .program-trends .spark-grid>:last-child{grid-column:auto}}
/* Observed program activity is independent of the frozen Plan/Live yardstick.
   Source lanes retain their own units: card colour identifies a stage, not a
   conversion, outcome verdict or shared denominator. */
.flp-skin.program-performance .observed-program-journey .observed-journey-lane{padding-block:18px;min-width:0}
.flp-skin.program-performance .observed-program-journey .observed-journey-lane+.observed-journey-lane{border-top:1px solid var(--flp-bd)}
.flp-skin.program-performance .observed-program-journey .lane-title{display:flex;align-items:baseline;justify-content:space-between;gap:8px 20px;margin-bottom:14px}
.flp-skin.program-performance .observed-program-journey .lane-title h3{margin:0;color:var(--flp-fg);font:650 16px/1.35 var(--flp-font);letter-spacing:-.015em}
.flp-skin.program-performance .observed-program-journey .lane-title small{max-width:520px;color:var(--flp-mut);font-size:12px;line-height:1.5}
.flp-skin.program-performance .observed-program-journey .observed-journey-track{display:grid;grid-auto-flow:row;grid-template-columns:repeat(auto-fit,minmax(min(100%,170px),1fr));gap:12px;padding:0}
.flp-skin.program-performance .observed-program-journey .observed-stage{position:relative;min-height:174px;justify-content:flex-start;overflow-wrap:anywhere;--journey-stage-tone:var(--flp-blu)}
.flp-skin.program-performance .observed-program-journey .observed-stage--applications,.flp-skin.program-performance .observed-program-journey .observed-stage--checkout_starts{--journey-stage-tone:var(--flp-vio)}
.flp-skin.program-performance .observed-program-journey .observed-stage--closed,.flp-skin.program-performance .observed-program-journey .observed-stage--purchases{--journey-stage-tone:var(--flp-ac)}
.flp-skin.program-performance .observed-program-journey .observed-stage::before{content:'';position:absolute;top:20px;left:0;bottom:20px;width:3px;border-radius:0 3px 3px 0;background:var(--journey-stage-tone);opacity:.85}
.flp-skin.program-performance .observed-program-journey .observed-stage .observed-stage-unit{color:var(--flp-mut);font-size:12px}
.flp-skin.program-performance .observed-program-journey .observed-stage .observed-stage-source{margin-top:12px;color:var(--flp-mut);line-height:1.5}
.flp-skin.program-performance .observed-program-journey .observed-stage .observed-stage-status{margin-top:auto;padding-top:12px;font-size:11px;font-weight:600;letter-spacing:.02em;color:var(--flp-mut)}
.flp-skin.program-performance .observed-program-journey .observed-stage[data-journey-state=partial] .observed-stage-status{color:var(--flp-amb)}
.flp-skin.program-performance .observed-program-journey .observed-stage.is-unavailable strong{font-size:22px;color:var(--flp-mut);letter-spacing:-.02em}
.flp-skin.program-performance .observed-program-journey .observed-stage.is-unavailable::before{background:var(--flp-dim)}
.flp-skin.program-performance .observed-program-journey .observed-stage-populations{display:grid;gap:12px;margin:16px 0 12px;width:100%;min-width:0}
.flp-skin.program-performance .observed-program-journey .observed-stage-populations>span{display:grid;grid-template-columns:auto minmax(0,1fr);align-items:baseline;gap:12px;min-width:0}
.flp-skin.program-performance .observed-program-journey .observed-stage-populations b{font-size:28px;line-height:1.15;font-weight:750;letter-spacing:-.03em;color:var(--flp-fg);font-variant-numeric:tabular-nums}
.flp-skin.program-performance .observed-program-journey .observed-stage-populations small{font-size:12px;line-height:1.5;text-align:left;overflow-wrap:anywhere}
.flp-skin.program-performance .observed-program-spend{padding-block:18px;border-top:1px solid var(--flp-bd);min-width:0}
.flp-skin.program-performance .observed-program-spend .performance-spend-strip{margin:0;grid-template-columns:repeat(auto-fit,minmax(min(100%,230px),1fr))}
.flp-skin.program-performance .observed-program-spend .performance-spend-strip strong{overflow-wrap:anywhere;line-height:1.2}
.flp-skin.program-performance .observed-journey-evidence{margin-top:12px;border:1px solid var(--flp-bd);border-radius:14px;padding:0 18px;color:var(--flp-mut)}
.flp-skin.program-performance .observed-journey-evidence>summary{display:list-item;cursor:pointer;min-height:48px;padding-block:14px;color:var(--flp-fg);font-size:13px;font-weight:600;line-height:1.5;overflow-wrap:anywhere}
.flp-skin.program-performance .observed-journey-evidence>summary>span{display:inline-block;margin-left:10px;color:var(--flp-mut);font-size:12px;font-weight:400}
.flp-skin.program-performance .observed-journey-evidence>p{font-size:12px;line-height:1.65;margin:2px 0 18px;max-width:920px}
.flp-skin.program-performance .observed-evidence-grid{display:grid;grid-template-columns:repeat(2,minmax(0,1fr));gap:14px;padding-bottom:18px}
.flp-skin.program-performance .observed-evidence-stage{min-width:0;padding:16px;border:1px solid var(--flp-bd);border-radius:12px;background:var(--flp-well);overflow-wrap:anywhere}
.flp-skin.program-performance .observed-evidence-stage>div{display:grid;gap:4px}
.flp-skin.program-performance .observed-evidence-stage strong{color:var(--flp-fg);font-size:13px;font-weight:650}
.flp-skin.program-performance .observed-evidence-stage span,.flp-skin.program-performance .observed-evidence-stage p,.flp-skin.program-performance .observed-evidence-stage li{font-size:12px;line-height:1.6;color:var(--flp-mut)}
.flp-skin.program-performance .observed-evidence-stage p{margin:9px 0 0}
.flp-skin.program-performance .observed-evidence-stage ul{margin:9px 0 0;padding-left:18px}
.flp-skin.program-performance .observed-evidence-stage .observed-source-page{display:block;font-size:12px;line-height:1.6;overflow-wrap:anywhere}
.flp-skin.program-performance .observed-program-trends .journey-spark svg path{stroke:var(--flp-ac)}
.flp-skin.program-performance .observed-program-trends .journey-spark svg circle{fill:var(--flp-ac);stroke:none}
.flp-skin.program-performance .program-source-disclosure,.flp-skin.program-performance .program-metric-disclosure{min-width:0;margin-top:18px;border:1px solid var(--flp-bd);border-radius:14px;padding:0 18px;color:var(--flp-mut)}
.flp-skin.program-performance .program-source-disclosure>summary,.flp-skin.program-performance .program-metric-disclosure>summary{cursor:pointer;min-height:48px;padding-block:14px;color:var(--flp-fg);font-size:14px;font-weight:600;line-height:1.5;overflow-wrap:anywhere}
.flp-skin.program-performance .program-source-disclosure>summary>span,.flp-skin.program-performance .program-metric-disclosure>summary>span{display:block;font-size:12px;font-weight:400;color:var(--flp-mut)}
.flp-skin.program-performance .program-source-disclosure[open]{padding-bottom:18px}
.flp-skin.program-performance .program-source-disclosure .spark-grid{margin-top:8px}
.flp-skin.program-performance .program-metric-disclosure{grid-column:1/-1;margin-top:0}
.flp-skin.program-performance .observed-lane-definition{min-width:0;margin-bottom:16px;font-size:12px;line-height:1.6;overflow-wrap:anywhere}
.flp-skin.program-performance .observed-lane-definition>summary{cursor:pointer;padding-block:10px;min-height:44px;color:var(--flp-mut)}
.flp-skin.program-performance .observed-lane-definition>p{max-width:90ch;margin:8px 0}
.flp-skin.program-performance [data-program-finance-summary] .money-metric-grid:has([data-program-won-summary]){grid-template-columns:repeat(auto-fit,minmax(min(100%,220px),1fr))}
@media(max-width:600px){.flp-skin.program-performance .program-source-disclosure,.flp-skin.program-performance .program-metric-disclosure{padding-inline:14px}}
.flp-skin.program-performance .rhythm-chip[class*=metric-journey_]{color:var(--flp-blu)}
.flp-skin.program-performance .rhythm-line[class*=metric-journey_]{stroke:var(--flp-blu);stroke-dasharray:none}
.flp-skin.program-performance .rhythm-marker[class*=metric-journey_]{fill:var(--flp-blu)}
.flp-skin.program-performance .rhythm-chip.metric-journey_applications,.flp-skin.program-performance .rhythm-chip.metric-journey_checkout_starts{color:var(--flp-vio)}
.flp-skin.program-performance .rhythm-line.metric-journey_applications,.flp-skin.program-performance .rhythm-line.metric-journey_checkout_starts{stroke:var(--flp-vio);stroke-dasharray:7 3}
.flp-skin.program-performance .rhythm-marker.metric-journey_applications,.flp-skin.program-performance .rhythm-marker.metric-journey_checkout_starts{fill:var(--flp-vio)}
.flp-skin.program-performance .rhythm-chip.metric-journey_closed,.flp-skin.program-performance .rhythm-chip.metric-journey_purchases{color:var(--flp-ac)}
.flp-skin.program-performance .rhythm-line.metric-journey_closed,.flp-skin.program-performance .rhythm-line.metric-journey_purchases{stroke:var(--flp-ac);stroke-dasharray:3 3}
.flp-skin.program-performance .rhythm-marker.metric-journey_closed,.flp-skin.program-performance .rhythm-marker.metric-journey_purchases{fill:var(--flp-ac)}
@media(max-width:1100px){.flp-skin.program-performance .observed-program-journey .observed-journey-track{grid-template-columns:repeat(2,minmax(0,1fr))}}
@media(max-width:720px){
.flp-skin.program-performance .observed-program-journey .lane-title{display:grid;gap:5px}
.flp-skin.program-performance .observed-program-journey .observed-journey-track{grid-template-columns:repeat(2,minmax(0,1fr));gap:10px}
.flp-skin.program-performance .observed-program-journey .observed-stage{min-height:168px;padding:18px 14px}
.flp-skin.program-performance .observed-program-journey .observed-stage.is-unavailable strong{font-size:18px}
.flp-skin.program-performance .observed-journey-evidence{padding-inline:14px}
.flp-skin.program-performance .observed-journey-evidence>summary>span{display:block;margin-left:0;margin-top:4px}
.flp-skin.program-performance .observed-evidence-grid{grid-template-columns:minmax(0,1fr)}
}
@media(max-width:360px){.flp-skin.program-performance .observed-program-journey .observed-journey-track{grid-template-columns:minmax(0,1fr)}}
/* Exact source choices share the owner dialog language, outside chart cards. */
[data-program-journey-options] .program-source-choices{border-top:1px solid var(--border);padding-block:8px;min-width:0}
[data-program-journey-options] .program-source-choices>summary{min-height:44px;padding-block:12px;font-weight:650;line-height:1.5;cursor:pointer;overflow-wrap:anywhere}
[data-program-journey-options] .program-journey-source{padding:14px 0;border-top:1px solid var(--border);min-width:0}
[data-program-journey-options] .program-source-option{display:flex;align-items:flex-start;gap:12px;margin:0;min-height:44px;overflow-wrap:anywhere}
[data-program-journey-options] .program-source-option>span{flex:1;min-width:0;line-height:1.55}
[data-program-journey-options] .program-source-role{display:grid;gap:6px;max-width:380px;margin:12px 0 0 32px;font-size:12px;color:var(--muted)}
[data-program-journey-options] .program-source-role select{width:100%;min-height:44px}
@media(max-width:430px){[data-program-journey-options] .program-source-role{margin-left:0;max-width:none}}
