/* london-market.css
 *
 * Product-demo chrome, extracted from content on 2026-09-01. This styles a
 * PICTURE OF THE PRODUCT, not the website. Nothing in here may reference a
 * website token, and nothing in here belongs in style.css.
 *
 * Was inline in: page 877 (/product/london-market-insurance-software/), all
 * three of its style blocks. Three demos share this one stylesheet, resolved
 * by the enqueue dropping trailing slug segments (london-market-binder ->
 * london-market).
 *
 * THIS PAGE HAD A REPUTATION IT DID NOT DESERVE. It was carried as the
 * riskiest of the six on the strength of an old finding that its JavaScript
 * composes class names at runtime, which had sunk a "32% dead CSS" claim. That
 * was a DEAD-code question, not a containment one, and the two are different:
 * a rule matching nothing is simply left alone here. Measured, the page is the
 * same shape as every other product page. Three demos, three prefixes, and the
 * rest is the page's own section chrome.
 *
 * The third demo, london-market-binder (.gl-), left the hero for the audience
 * composite and was dropped with its script (Ed, 14 October 2026, §426).
 *
 * .gb- and .gp- are demo-exclusive families: every measured rule
 * using them is demo and none is website. .gn- is NOT, because .gn-lm-s2-* and
 * .gn-lm-s3-* are the page's own sections, and those 35 rules stayed, along
 * with the two ".gn-lm-sN *" resets that match 324 and 210 elements with a
 * quarter of them outside the demos.
 */

.gb-outer { --gb-accent: #00B2B1; --gb-cta: #E10054; --gb-cta-hover: #F1B53D; --gb-ink: #2F3351; --gb-pale-steel: #9FB6D4; --gb-primary: #004EAA; --gb-purple: #B24EBE; --gb-steel: #547EC1; --gb-white: #FFFFFF; }
.gb-wrap { width: 680px; height: 680px; position: absolute; top: 0; left: 0; font-family: 'Source Sans Pro', sans-serif; transform-origin: top left; transform: scale(0.01); overflow: hidden; }
.gb-wrap * { box-sizing: border-box; margin: 0; padding: 0; }
.gb-bg { position: absolute; top: 50%; left: 50%; transform: translate(-50%,-50%); width: 100%; height: 100%; object-fit: contain; z-index: 0; pointer-events: none; opacity: 0.9; }
.gb-stage { position: relative; width: 100%; height: 100%; z-index: 1; opacity: 0; transition: opacity 0.8s ease; }
.gb-stage.gb-vis { opacity: 1; }
.gb-cd { position: absolute; background: var(--gb-white); border-radius: 14px; box-shadow: 0 4px 20px rgba(0,0,0,0.08); overflow: hidden; }
@keyframes gbFI { from { opacity: 0; transform: scale(0.96); } to { opacity: 1; transform: scale(1); } }
@keyframes gbSU { from { opacity: 0; transform: translateY(20px); } to { opacity: 1; transform: translateY(0); } }
@keyframes gbSR { from { opacity: 0; transform: translateX(30px); } to { opacity: 1; transform: translateX(0); } }
@keyframes gbRowIn { from { opacity: 0; transform: translateY(-8px); max-height: 0; } to { opacity: 1; transform: translateY(0); max-height: 48px; } }
@keyframes gbHighlight { 0% { background: rgba(0,178,177,0.2); } 100% { background: transparent; } }
@keyframes gbPulseTeal { 0%,100% { box-shadow: 0 0 0 0 rgba(0,178,177,0.5); } 50% { box-shadow: 0 0 0 6px rgba(0,178,177,0); } }
@keyframes gbSpark { 0%,100% { opacity: 0.3; } 50% { opacity: 1; } }
.gb-src { top: 50px; left: 28px; width: 272px; z-index: 2; animation: gbFI 0.5s ease forwards; }
.gb-hdr { background: var(--gb-ink); padding: 9px 13px; display: flex; justify-content: space-between; align-items: center; }
.gb-hdr-t { color: var(--gb-white); font-weight: 700; font-size: 11px; letter-spacing: 0.4px; }
.gb-hdr-live { display: inline-flex; align-items: center; gap: 5px; font-size: 9px; font-weight: 700; color: var(--gb-accent); text-transform: uppercase; letter-spacing: 0.05em; }
.gb-hdr-live::before { content: ''; width: 6px; height: 6px; border-radius: 50%; background: var(--gb-accent); animation: gbSpark 1.4s ease infinite; }
.gb-shdr { background: var(--gb-steel); padding: 6px 13px; color: rgba(255,255,255,0.92); font-size: 10px; font-weight: 600; display: flex; justify-content: space-between; align-items: center; }
.gb-shdr-c { font-size: 10px; color: rgba(255,255,255,0.85); font-weight: 700; }
.gb-sb { padding: 10px 12px 12px; }
.gb-counter { display: flex; justify-content: space-between; align-items: flex-end; padding-bottom: 10px; border-bottom: 1px solid #f1f5f9; margin-bottom: 10px; }
.gb-counter-lbl { font-size: 8px; color: var(--gb-pale-steel); font-weight: 700; text-transform: uppercase; letter-spacing: 0.04em; }
.gb-counter-val { font-size: 22px; font-weight: 900; color: var(--gb-accent); line-height: 1; font-variant-numeric: tabular-nums; }
.gb-counter-sub { font-size: 9px; color: var(--gb-pale-steel); font-weight: 600; }
.gb-feed-lbl { font-size: 8px; font-weight: 700; color: var(--gb-pale-steel); text-transform: uppercase; letter-spacing: 0.04em; margin-bottom: 6px; }
.gb-feed { max-height: 220px; overflow: hidden; }
.gb-feed-row { display: grid; grid-template-columns: 44px 1fr 36px; gap: 7px; padding: 5px 0; border-bottom: 1px solid #f8fafc; align-items: center; overflow: hidden; }
.gb-feed-row.gb-new { animation: gbRowIn 0.4s ease forwards, gbHighlight 1.2s ease forwards; border-radius: 4px; }
.gb-feed-time { font-size: 9px; color: var(--gb-pale-steel); font-weight: 600; font-variant-numeric: tabular-nums; }
.gb-feed-ref { font-size: 9px; font-weight: 700; color: var(--gb-ink); line-height: 1.2; }
.gb-feed-ref-sub { font-size: 8px; color: var(--gb-pale-steel); font-weight: 500; margin-top: 1px; }
.gb-feed-type { font-size: 7px; font-weight: 800; text-align: center; padding: 2px 4px; border-radius: 3px; text-transform: uppercase; letter-spacing: 0.03em; }
.gb-type-nb { background: rgba(0,178,177,0.12); color: var(--gb-accent); }
.gb-type-mta { background: rgba(0,78,170,0.12); color: var(--gb-primary); }
.gb-type-clm { background: rgba(225,0,84,0.12); color: var(--gb-cta); }
.gb-type-ren { background: rgba(178,78,190,0.12); color: var(--gb-purple); }
.gb-pipe { top: 150px; left: 170px; width: 390px; z-index: 4; box-shadow: 0 14px 42px rgba(0,0,0,0.14); animation: gbSR 0.5s ease forwards; }
.gb-pipe-hdr { background: var(--gb-ink); padding: 10px 14px; display: flex; justify-content: space-between; align-items: center; }
.gb-pipe-hdr-t { color: var(--gb-white); font-weight: 700; font-size: 12px; display: flex; align-items: center; gap: 7px; }
.gb-pipe-hdr-t svg { width: 13px; height: 13px; }
.gb-pipe-hdr-r { color: rgba(255,255,255,0.75); font-size: 9px; font-weight: 600; display: flex; align-items: center; gap: 4px; }
.gb-pipe-hdr-r::before { content: ''; width: 6px; height: 6px; border-radius: 50%; background: var(--gb-accent); animation: gbSpark 1.4s ease infinite; }
.gb-metrics { display: flex; background: #fafbfc; border-bottom: 1px solid #e2e8f0; }
.gb-metric { flex: 1; padding: 10px 12px; border-right: 1px solid #e2e8f0; }
.gb-metric:last-child { border-right: none; }
.gb-metric-lbl { font-size: 7px; font-weight: 800; color: var(--gb-pale-steel); text-transform: uppercase; letter-spacing: 0.05em; margin-bottom: 3px; }
.gb-metric-val { font-size: 18px; font-weight: 900; color: var(--gb-ink); line-height: 1; font-variant-numeric: tabular-nums; }
.gb-metric-sub { font-size: 8px; color: var(--gb-accent); font-weight: 700; margin-top: 2px; }
.gb-pipe-body { padding: 10px 12px 12px; }
.gb-stage-lbl { font-size: 8px; font-weight: 800; color: var(--gb-primary); text-transform: uppercase; letter-spacing: 0.05em; margin-bottom: 6px; display: flex; align-items: center; gap: 5px; }
.gb-stream { max-height: 280px; overflow: hidden; position: relative; }
.gb-stream-row { background: #f8fafc; border-radius: 8px; padding: 8px 10px; margin-bottom: 6px; display: grid; grid-template-columns: 1fr auto; gap: 6px; align-items: center; overflow: hidden; }
.gb-stream-row.gb-new { animation: gbRowIn 0.4s ease forwards; }
.gb-stream-row.gb-active { background: rgba(0,178,177,0.06); }
.gb-sr-top { display: flex; align-items: center; gap: 6px; margin-bottom: 3px; }
.gb-sr-acord { font-size: 7px; font-weight: 900; padding: 2px 6px; border-radius: 3px; background: var(--gb-primary); color: var(--gb-white); letter-spacing: 0.03em; }
.gb-sr-acord.gb-ebot { background: var(--gb-primary); }
.gb-sr-acord.gb-usm { background: var(--gb-purple); }
.gb-sr-acord.gb-slip { background: var(--gb-accent); }
.gb-sr-acord.gb-clm { background: var(--gb-cta); }
.gb-sr-ref { font-size: 9px; font-weight: 700; color: var(--gb-ink); }
.gb-sr-flow { display: flex; align-items: center; gap: 5px; font-size: 8px; color: var(--gb-pale-steel); font-weight: 600; }
.gb-sr-flow strong { color: var(--gb-ink); font-weight: 700; }
.gb-sr-flow-arrow { color: var(--gb-accent); }
.gb-sr-status { display: inline-flex; align-items: center; gap: 4px; font-size: 8px; font-weight: 800; text-transform: uppercase; letter-spacing: 0.04em; padding: 3px 7px; border-radius: 4px; }
.gb-st-proc { background: rgba(241,181,61,0.15); color: #D99A2E; }
.gb-st-proc::before { content: ''; width: 5px; height: 5px; border-radius: 50%; background: var(--gb-cta-hover); animation: gbSpark 0.8s ease infinite; }
.gb-st-sent { background: rgba(0,178,177,0.15); color: var(--gb-accent); }
.gb-st-sent::before { content: '\2713'; font-size: 8px; }
.gb-cap { bottom: 32px; right: 28px; width: 280px; z-index: 6; box-shadow: 0 12px 38px rgba(0,0,0,0.14); animation: gbSU 0.5s ease forwards; }
.gb-cap-hdr { background: var(--gb-primary); padding: 10px 13px; display: flex; justify-content: space-between; align-items: center; }
.gb-cap-hdr-t { color: var(--gb-white); font-weight: 700; font-size: 11px; }
.gb-cap-hdr-r { color: rgba(255,255,255,0.8); font-size: 9px; font-weight: 700; }
.gb-cap-body { padding: 8px 12px 10px; }
.gb-mkt { display: grid; grid-template-columns: 22px 1fr auto; gap: 8px; align-items: center; padding: 7px 4px; border-bottom: 1px solid #f1f5f9; }
.gb-mkt:last-child { border-bottom: none; }
.gb-mkt-dot { width: 8px; height: 8px; border-radius: 50%; background: var(--gb-accent); margin: 0 7px; position: relative; }
.gb-mkt-dot.gb-live { animation: gbPulseTeal 1.8s ease infinite; }
.gb-mkt-name { font-size: 10px; font-weight: 700; color: var(--gb-ink); line-height: 1.2; }
.gb-mkt-sync { font-size: 8px; color: var(--gb-accent); font-weight: 700; margin-top: 1px; }
.gb-mkt-sync.gb-updating { color: var(--gb-cta-hover); }
.gb-mkt-prem { font-size: 11px; font-weight: 900; color: var(--gb-ink); font-variant-numeric: tabular-nums; text-align: right; }
.gb-mkt-prem-sub { font-size: 7px; color: var(--gb-pale-steel); font-weight: 700; text-transform: uppercase; letter-spacing: 0.03em; text-align: right; margin-top: 1px; }
.gb-toast { position: absolute; top: 50%; left: 50%; transform: translate(-50%,-50%); color: var(--gb-white); padding: 12px 22px; border-radius: 12px; font-weight: 700; font-size: 12px; align-items: center; gap: 9px; z-index: 35; max-width: 560px; white-space: nowrap; display: none; }
.gb-toast.gb-sh { display: flex; animation: gbFI 0.35s ease forwards; }
.gb-toast.gb-t-teal { background: var(--gb-accent); box-shadow: 0 6px 24px rgba(0,178,177,0.35); }
.gb-toast.gb-t-dark { background: var(--gb-ink); box-shadow: 0 6px 24px rgba(47,51,81,0.35); }

.gp-outer { --gp-accent: #00B2B1; --gp-cta: #E10054; --gp-cta-hover: #F1B53D; --gp-ink: #2F3351; --gp-pale-steel: #9FB6D4; --gp-primary: #004EAA; --gp-purple: #B24EBE; --gp-steel: #547EC1; --gp-white: #FFFFFF; }
.gp-wrap { width: 680px; height: 680px; position: relative; font-family: 'Source Sans Pro', sans-serif; transform-origin: top left; overflow: hidden; }
.gp-wrap * { box-sizing: border-box; margin: 0; padding: 0; }
.gp-bg { position: absolute; top: 50%; left: 50%; transform: translate(-50%,-50%); width: 100%; height: 100%; object-fit: contain; z-index: 0; pointer-events: none; opacity: 0.9; }
.gp-stage { position: relative; width: 100%; height: 100%; z-index: 1; opacity: 0; transition: opacity 0.8s ease; }
.gp-stage.gp-vis { opacity: 1; }
.gp-cur.gp-show { opacity: 1; }
.gp-rip { position: absolute; top: -6px; left: -6px; width: 32px; height: 32px; border-radius: 50%; border: 2px solid var(--gp-purple); animation: gpRip 0.4s ease-out forwards; pointer-events: none; }
@keyframes gpRip { 0% { transform: scale(0.5); opacity: 1; } 100% { transform: scale(2.2); opacity: 0; } }
@keyframes gpFI { from { opacity: 0; transform: scale(0.96); } to { opacity: 1; transform: scale(1); } }
@keyframes gpSR { from { opacity: 0; transform: translateX(30px); } to { opacity: 1; transform: translateX(0); } }
@keyframes gpTI { from { transform: translate(-50%,-50%) translateY(10px); opacity: 0; } to { transform: translate(-50%,-50%) translateY(0); opacity: 1; } }
@keyframes gpBlockIn { from { opacity: 0; transform: translateY(-8px) scale(0.95); } to { opacity: 1; transform: translateY(0) scale(1); } }
@keyframes gpPulse { 0%,100% { box-shadow: 0 0 0 0 rgba(178,78,190,0.35); } 50% { box-shadow: 0 0 0 7px rgba(178,78,190,0); } }
@keyframes gpDocIn { from { opacity: 0; transform: translateY(30px) scale(0.9); } to { opacity: 1; transform: translateY(0) scale(1); } }
.gp-shelf.gp-sh { display: block; animation: gpFI 0.5s ease forwards; }
.gp-shelf-hdr { background: var(--gp-ink); padding: 9px 13px; display: flex; justify-content: space-between; align-items: center; }
.gp-shelf-hdr span { color: var(--gp-white); font-weight: 700; font-size: 11px; letter-spacing: 0.4px; }
.gp-shelf-shdr { background: var(--gp-purple); padding: 5px 13px; color: rgba(255,255,255,0.92); font-size: 9px; font-weight: 700; text-transform: uppercase; letter-spacing: 0.04em; }
.gp-shelf-body { padding: 10px 11px; }
.gp-shelf-item { display: flex; align-items: center; gap: 9px; padding: 8px 10px; border: 1.5px dashed #e2e8f0; border-radius: 8px; margin-bottom: 7px; cursor: grab; transition: all 0.3s ease; font-size: 11px; font-weight: 600; color: var(--gp-ink); }
.gp-shelf-item:last-child { margin-bottom: 0; }
.gp-shelf-item:hover { border-color: var(--gp-purple); background: rgba(178,78,190,0.04); }
.gp-shelf-item.gp-used { opacity: 0.35; border-style: solid; border-color: #e2e8f0; cursor: default; }
.gp-shelf-item.gp-dragging { border-color: var(--gp-purple); background: rgba(178,78,190,0.08); transform: scale(0.97); }
.gp-shelf-dot { width: 8px; height: 8px; border-radius: 50%; flex-shrink: 0; }
.gp-dot-blue { background: var(--gp-primary); }
.gp-dot-purple { background: var(--gp-purple); }
.gp-dot-red { background: var(--gp-cta); }
.gp-dot-teal { background: var(--gp-accent); }
.gp-dot-yellow { background: var(--gp-cta-hover); }
.gp-shelf-grip { color: #d1d5db; font-size: 10px; margin-left: auto; letter-spacing: -1px; }
.gp-canvas.gp-sh { display: block; animation: gpSR 0.5s ease forwards; }
.gp-canvas-hdr { background: var(--gp-ink); padding: 10px 14px; display: flex; justify-content: space-between; align-items: center; }
.gp-canvas-hdr-t { color: var(--gp-white); font-weight: 700; font-size: 12px; }
.gp-canvas-badge { padding: 3px 10px; border-radius: 5px; font-size: 9px; font-weight: 700; letter-spacing: 0.3px; text-transform: uppercase; transition: all 0.4s ease; }
.gp-bg-draft { background: var(--gp-cta-hover); color: var(--gp-ink); }
.gp-bg-live { background: var(--gp-accent); color: var(--gp-white); animation: gpPulse 1.8s ease infinite; }
.gp-canvas-shdr { background: var(--gp-steel); padding: 6px 14px; color: rgba(255,255,255,0.92); font-size: 10px; font-weight: 600; display: flex; justify-content: space-between; }
.gp-canvas-body { padding: 12px 14px; min-height: 280px; }
.gp-canvas-label { font-size: 8px; font-weight: 700; color: var(--gp-purple); text-transform: uppercase; letter-spacing: 0.04em; margin-bottom: 8px; }
.gp-canvas-empty { border: 2px dashed #e2e8f0; border-radius: 10px; padding: 28px 16px; text-align: center; color: #c0c8d8; font-size: 11px; font-weight: 600; margin-bottom: 12px; }
.gp-canvas-empty svg { display: block; margin: 0 auto 6px; color: #d1d5db; }
.gp-block { display: flex; align-items: center; gap: 8px; padding: 9px 12px; background: #f8fafc; border: 1px solid #e2e8f0; border-radius: 8px; font-size: 11px; font-weight: 600; color: var(--gp-ink); animation: gpBlockIn 0.35s ease forwards; }
.gp-block::before { content: ''; width: 8px; height: 8px; border-radius: 50%; flex-shrink: 0; background: var(--gp-b, var(--gp-primary)); }
.gp-block.gp-b-purple { --gp-b: var(--gp-purple); }
.gp-block.gp-b-red { --gp-b: var(--gp-cta); }
.gp-block.gp-b-teal { --gp-b: var(--gp-accent); }
.gp-block-check { width: 14px; height: 14px; border-radius: 50%; display: flex; align-items: center; justify-content: center; margin-left: auto; flex-shrink: 0; }
.gp-block-check.gp-done { background: var(--gp-accent); color: var(--gp-white); }
.gp-block-check.gp-done::after { content: '✓'; font-size: 8px; font-weight: 900; }
.gp-config.gp-sh { display: block; animation: gpFI 0.3s ease forwards; }
.gp-config-title { font-size: 8px; font-weight: 700; color: var(--gp-primary); text-transform: uppercase; letter-spacing: 0.04em; margin-bottom: 8px; margin-top: 6px; }
.gp-config-grid { display: grid; grid-template-columns: 1fr 1fr; gap: 8px; margin-bottom: 10px; }
.gp-config-field label { font-size: 8px; font-weight: 700; color: var(--gp-pale-steel); text-transform: uppercase; letter-spacing: 0.03em; display: block; margin-bottom: 3px; }
.gp-config-field .gp-fbox { border: 1px solid #e2e8f0; border-radius: 6px; padding: 5px 8px; font-size: 11px; color: var(--gp-ink); font-weight: 600; }
.gp-fbox.gp-empty { color: #c0c8d8; font-weight: 400; }
.gp-pub-wrap.gp-sh { display: block; animation: gpFI 0.3s ease forwards; }
.gp-pub-btn { display: inline-flex; align-items: center; gap: 6px; padding: 8px 18px; border-radius: 8px; border: none; background: var(--gp-purple); color: var(--gp-white); font-family: inherit; font-size: 11px; font-weight: 700; cursor: pointer; transition: all 0.15s ease; }
.gp-pub-btn.gp-pr { transform: scale(0.95); }
.gp-live.gp-sh { display: block; animation: gpDocIn 0.5s cubic-bezier(0.34,1.56,0.64,1) forwards; }
.gp-live-hdr { background: var(--gp-purple); padding: 11px 13px; display: flex; justify-content: space-between; align-items: center; }
.gp-live-logo { color: var(--gp-white); font-weight: 900; font-size: 12px; letter-spacing: 0.5px; }
.gp-live-ref { color: rgba(255,255,255,0.72); font-size: 8px; font-weight: 600; }
.gp-live-body { padding: 12px 13px; }
.gp-live-title { font-size: 14px; font-weight: 900; color: var(--gp-ink); margin-bottom: 8px; }
.gp-live-d { font-size: 9px; color: var(--gp-pale-steel); margin-bottom: 2px; line-height: 1.5; }
.gp-live-d strong { color: var(--gp-ink); }
.gp-live-covers { margin-top: 8px; padding: 7px 9px; background: #f8fafc; border-radius: 6px; font-size: 8px; color: var(--gp-ink); line-height: 1.6; }
.gp-live-covers strong { color: var(--gp-purple); font-weight: 700; }
.gp-live-ft { padding: 7px 13px; border-top: 1px solid #f1f5f9; display: flex; justify-content: space-between; font-size: 8px; color: var(--gp-pale-steel); }
.gp-toast.gp-sh { display: flex; animation: gpTI 0.35s ease forwards; }

/* Was inline in page 877 (london-market-insurance-software) until 4 September 2026; moved by the
   audit's CSS pass so git, review and the theme comparison can see it. Demo-only rules by css-scope measurement. */
.gb-outer { width: 100%; max-width: 100%; position: relative; overflow: hidden; aspect-ratio: 1; }
.gp-outer { width: 100%; position: relative; overflow: hidden; }
.gp-cur { position: absolute; z-index: 9999; opacity: 0; pointer-events: none; filter: drop-shadow(1px 2px 3px rgba(0,0,0,0.25)); transition: left 0.6s cubic-bezier(0.4,0,0.2,1), top 0.6s cubic-bezier(0.4,0,0.2,1), opacity 0.3s ease; }
.gp-cd { position: absolute; background: var(--gp-white); border-radius: 14px; box-shadow: 0 4px 20px rgba(0,0,0,0.08); overflow: hidden; }
.gp-shelf { top: 40px; left: 25px; width: 240px; z-index: 2; display: none; }
.gp-canvas { top: 80px; left: 175px; width: 420px; z-index: 4; box-shadow: 0 12px 40px rgba(0,0,0,0.14); display: none; }
.gp-blocks { display: flex; flex-direction: column; gap: 6px; margin-bottom: 14px; min-height: 24px; }
.gp-config { display: none; }
.gp-pub-wrap { display: none; margin-top: 8px; }
.gp-live { position: absolute; bottom: 25px; right: 25px; width: 260px; background: var(--gp-white); border-radius: 12px; box-shadow: 0 14px 40px rgba(0,0,0,0.16); overflow: hidden; z-index: 6; display: none; }
.gp-toast { position: absolute; top: 50%; left: 50%; transform: translate(-50%,-50%); background: var(--gp-purple); color: var(--gp-white); padding: 12px 26px; border-radius: 12px; font-weight: 700; font-size: 12px; box-shadow: 0 6px 24px rgba(178,78,190,0.35); display: flex; align-items: center; gap: 9px; z-index: 35; white-space: nowrap; display: none; }

/* §413: each card's header is rounded itself. */
.gb-cd > :first-child { border-radius: 14px 14px 0 0; }
