/* FiscalPulse v3 components (prompt §2, prototype v4 APPROVED). Markup: inc/components-v3.php.
   Every colour comes from agent A's tokens (fiscalpulse.css :root, docs/v3_build/A_DONE.md); the block below only aliases them. */

/* ---------------------------------------------------------------- tokens (v3) */
:root {
	--fp3-bg: var(--fp-base);
	--fp3-panel: var(--fp-surface);
	--fp3-card: var(--fp-card);
	--fp3-ink: var(--fp-ink);
	--fp3-ink-2: var(--fp-text);
	--fp3-ink-3: var(--fp-tertiary);
	--fp3-line: var(--fp-line);
	--fp3-line-2: var(--fp-line-strong);
	--fp3-soft: var(--fp-action-soft);
	--fp3-soft-h: var(--fp-action-soft-hover);
	--fp3-ink-h: var(--fp-action-hover);
	--fp3-accent: var(--fp-accent);
	--fp3-accent-text: var(--fp-accent-text);
	--fp3-bar: var(--fp-window-bar);
	--fp3-paper: var(--fp-paper);
	--fp3-dot: var(--fp-dark-text);
	--fp3-track: var(--fp-guilloche-light);
	--fp3-g-dark: var(--fp-guilloche-dark);
	--fp3-g-light: var(--fp-guilloche-light);
	--fp3-video-bg: var(--fp-ink);
	--fp3-white: var(--fp-on-action);
	--fp3-shade: rgba(28, 27, 24, .55);
	--fp3-shade-2: var(--fp-scrim);
	--fp3-shade-3: rgba(20, 19, 16, .35);
	--fp3-shade-0: rgba(20, 19, 16, 0);
	--fp3-hover: rgba(28, 27, 24, .07);
	--fp3-glass: var(--fp-glass);
	--fp3-w-75: rgba(255, 255, 255, .75);
	--fp3-w-82: rgba(255, 255, 255, .82);
	--fp3-w-18: rgba(255, 255, 255, .18);
	--fp3-sh-win: var(--fp-shadow-window);
	--fp3-sh-pop: var(--fp-shadow-popover);
	--fp3-sh-nv: 0 0 0 1px rgba(28, 27, 24, .10), 0 2px 6px rgba(28, 27, 24, .08);
	--fp3-f-head: var(--fp-font-head);
	--fp3-f-body: var(--fp-font);
	--fp3-wrap: var(--fp-wrap, 1160px);
	--fp3-gutter: 16px;
	--fp3-sec-y: 96px;
}
@media (min-width: 700px) { :root { --fp3-gutter: 28px; } }
@media (max-width: 900px) { :root { --fp3-sec-y: 64px; } }

/* page background on v3 pages (agent A sets the same on body once tokens v3 are live) */
body:has(.fp3-sec) { background: var(--fp3-bg); color: var(--fp3-ink); }

/* ---------------------------------------------------------------- base */
.fp3-sec { padding-block: var(--fp3-sec-y); font-family: var(--fp3-f-body); font-size: 16px; line-height: 1.55; color: var(--fp3-ink); background: transparent; }
.fp3-sec + .fp3-sec { padding-top: 24px; }
.fp3-wrap { box-sizing: border-box; max-width: calc(var(--fp3-wrap) + 2 * var(--fp3-gutter)); margin: 0 auto; padding-inline: var(--fp3-gutter); }
.fp3-sec *, .fp3-sec *::before, .fp3-sec *::after { box-sizing: border-box; }
.fp3-sec p { margin: 0; }
.fp3-sec a { color: inherit; }
.fp3-sec :is(h1, h2, h3), .fp3-h1, .fp3-h2, .fp3-h3 { font-family: var(--fp3-f-head); font-weight: 500; letter-spacing: -.022em; margin: 0; color: var(--fp3-ink); text-wrap: balance; }
.fp3-h1 { font-size: clamp(2rem, 1.2rem + 1.9vw, 2.8rem); line-height: 1.1; max-width: 22ch; }
.fp3-h2 { font-size: clamp(1.6rem, 1.2rem + 1.4vw, 2.3rem); line-height: 1.15; }
.fp3-h3 { font-size: 1.06rem; line-height: 1.3; letter-spacing: -.01em; }
.fp3-h3--l { font-size: clamp(1.2rem, 1rem + .6vw, 1.5rem); line-height: 1.2; letter-spacing: -.02em; }
.fp3-num, .fp3-sec .fp-num { font-variant-numeric: tabular-nums; font-feature-settings: "tnum" 1; }
.fp3-eyebrow { font-size: .78rem; letter-spacing: .06em; text-transform: uppercase; color: var(--fp3-ink-3); margin: 0 0 12px; }
.fp3-sub { font-size: 1.08rem; color: var(--fp3-ink-2); max-width: 54ch; }
.fp3-micro { font-size: .86rem; color: var(--fp3-ink-3); }
.fp3-note { font-size: .86rem; color: var(--fp3-ink-2); margin-top: 16px !important; }
.fp3-mt { margin-top: 36px !important; }
.fp3-caption { font-size: .82rem; color: var(--fp3-ink-3); margin-top: 12px !important; }
.fp3-sec :focus-visible { outline: 2px solid var(--fp3-ink); outline-offset: 3px; border-radius: 8px; }

/* two-tone statement: first part ink, the rest grey (tokens v3 rule) */
.fp3-two { font-family: var(--fp3-f-head); font-weight: 500; letter-spacing: -.02em; font-size: clamp(1.35rem, 1.1rem + .9vw, 1.85rem); line-height: 1.22; max-width: 40ch; }
.fp3-two__a, .fp3-two__b { display: inline; font: inherit; letter-spacing: inherit; margin: 0; color: var(--fp3-ink); }
.fp3-two__b { color: var(--fp3-ink-3); }
.fp3-two--tour { max-width: 30ch; }
.fp3-two--state { font-size: clamp(1.5rem, 1.1rem + 1.4vw, 2.2rem); max-width: none; }

/* buttons (agent A's .fp-btn tokens apply too; these are the v3 shapes) */
.fp3-ctas { display: flex; gap: 10px; flex-wrap: wrap; align-items: center; }
.fp3-btn, .fp-btn.fp3-btn { display: inline-flex; align-items: center; gap: 8px; font: 500 1rem/1 var(--fp3-f-body); padding: 15px 22px; min-height: 44px; border-radius: 999px; text-decoration: none; border: 0; cursor: pointer; transition: background .15s ease, box-shadow .15s ease; letter-spacing: 0; }
.fp-btn.fp3-btn--dark { background: var(--fp3-ink); color: var(--fp3-white); box-shadow: none; }
.fp-btn.fp3-btn--dark:hover { background: var(--fp3-ink-h); color: var(--fp3-white); }
.fp-btn.fp3-btn--soft { background: var(--fp3-soft); color: var(--fp3-ink); box-shadow: none; }
.fp-btn.fp3-btn--soft:hover { background: var(--fp3-soft-h); color: var(--fp3-ink); }
.fp-btn.fp3-btn--line { background: transparent; color: var(--fp3-ink); box-shadow: inset 0 0 0 1px var(--fp3-line-2); }
.fp3-link { color: var(--fp3-accent-text) !important; text-decoration: none; font-weight: 500; display: inline-flex; gap: 6px; align-items: center; }
.fp3-link:hover { text-decoration: underline; text-underline-offset: 3px; }

/* ---------------------------------------------------------------- windows and panels */
.fp3-win { background: var(--fp3-card); border-radius: 12px; box-shadow: var(--fp3-sh-win); overflow: hidden; position: relative; }
.fp3-bar { height: 34px; background: var(--fp3-bar); border-bottom: 1px solid var(--fp3-line); display: flex; align-items: center; padding: 0 12px; font-size: .76rem; color: var(--fp3-ink-2); position: relative; }
.fp3-dots { display: flex; gap: 7px; flex: none; }
.fp3-dots i { width: 11px; height: 11px; border-radius: 50%; background: var(--fp3-dot); box-shadow: inset 0 0 0 .5px rgba(0, 0, 0, .12); }
.fp3-bar__t { position: absolute; left: 76px; right: 76px; text-align: center; white-space: nowrap; overflow: hidden; text-overflow: ellipsis; pointer-events: none; }
.fp3-win__body { padding: 0; background: var(--fp3-paper); }
.fp3-win__body > * { margin: 0 !important; }
.fp3-win__body .fp-report-slice { box-shadow: none; border-radius: 0; }
.fp3-win__body img { display: block; width: 100%; height: auto; }
.fp3-panel { position: relative; border-radius: 4px; background-color: var(--fp3-g-dark); background-size: cover; background-position: center; background-repeat: no-repeat; min-width: 0; }
.fp3-panel--dark { background-image: var(--fp-guilloche-dark-img); }
.fp3-panel--light { background-color: var(--fp3-g-light); background-image: var(--fp-guilloche-light-img); }
.fp3-fac { position: absolute; right: 16px; bottom: 16px; font-size: .72rem; color: var(--fp3-white); background: var(--fp3-shade-2); -webkit-backdrop-filter: blur(6px); backdrop-filter: blur(6px); border-radius: 999px; padding: 4px 10px; z-index: 3; white-space: nowrap; }
.fp3-panel--light .fp3-fac { color: var(--fp3-ink-2); background: var(--fp3-glass); }
.fp3-crop { display: block; width: 100%; height: auto; }

/* ---------------------------------------------------------------- hero (split) */
.fp3-hero { padding-block: 64px 56px; }
.fp3-hero2 { display: grid; grid-template-columns: .9fr 1.1fr; gap: 56px; align-items: center; }
.fp3-hero2--single { grid-template-columns: 1fr; }
.fp3-hero2--single .fp3-hcopy { max-width: 780px; }
.fp3-hcopy { display: grid; gap: 24px; min-width: 0; }
.fp3-hcopy .fp-breadcrumb { margin: 0; }
.fp3-hstats { display: grid; grid-template-columns: repeat(3, minmax(0, 1fr)); border-top: 1px solid var(--fp3-line); margin-top: 8px; }
.fp3-hstats div { padding: 16px 0 0 16px; border-left: 1px solid var(--fp3-line); }
.fp3-hstats div:first-child { border-left: 0; padding-left: 0; }
.fp3-hstats b { display: block; font: 500 1.45rem/1.1 var(--fp3-f-head); letter-spacing: -.02em; }
.fp3-hstats span { color: var(--fp3-ink-2); font-size: .82rem; }
.fp3-hstage { padding: 40px 40px 60px 64px; }
.fp3-hstage--light { padding: 40px; }
.fp3-rwin { display: flex; flex-direction: column; height: 540px; }
.fp3-tabs { display: flex; gap: 2px; padding: 7px 8px; border-bottom: 1px solid var(--fp3-line); overflow-x: auto; scrollbar-width: none; background: var(--fp3-card); flex: none; }
.fp3-tabs::-webkit-scrollbar { display: none; }
.fp3-tabs button { all: unset; padding: 6px 11px; border-radius: 999px; font-size: .78rem; color: var(--fp3-ink-2); cursor: pointer; white-space: nowrap; }
.fp3-tabs button:hover { color: var(--fp3-ink); }
.fp3-tabs button[aria-selected="true"] { background: var(--fp3-hover); color: var(--fp3-ink); }
.fp3-tabs button:focus-visible { outline: 2px solid var(--fp3-ink); outline-offset: -2px; }
.fp3-rs { flex: 1; min-height: 0; overflow: auto; background: var(--fp3-paper); scrollbar-width: thin; }
.fp3-rs img { display: block; width: 100%; height: auto; }
.fp3-rfoot { border-top: 1px solid var(--fp3-line); padding: 8px 12px; font-size: .74rem; color: var(--fp3-ink-3); display: flex; justify-content: space-between; background: var(--fp3-card); flex: none; }
.fp3-toast { position: absolute; left: 20px; bottom: 36px; width: min(300px, 70%); background: var(--fp3-card); border-radius: 12px; box-shadow: var(--fp3-sh-pop); padding: 14px 16px; display: grid; gap: 6px; z-index: 2; }
.fp3-toast__f { display: flex; align-items: center; gap: 8px; font-size: .74rem; color: var(--fp3-ink-3); }
.fp3-toast__d { width: 7px; height: 7px; border-radius: 50%; background: var(--fp3-accent); }
.fp3-toast b { font-size: .9rem; font-weight: 600; line-height: 1.3; }
.fp3-toast__c { font-size: .76rem; color: var(--fp3-ink-2); }
.fp3-toast__a { display: flex; align-items: baseline; gap: 10px; border-top: 1px solid var(--fp3-line); padding-top: 8px; margin-top: 2px; }
.fp3-toast__a strong { font: 500 1.35rem/1 var(--fp3-f-head); letter-spacing: -.02em; white-space: nowrap; }
.fp3-toast__a span { font-size: .76rem; color: var(--fp3-ink-2); }
@media (max-width: 1000px) {
	.fp3-hero { padding-top: 36px; }
	.fp3-hero2 { grid-template-columns: 1fr; gap: 36px; }
	.fp3-hstage { padding: 44px 14px 120px; }
	.fp3-hstage--light { padding: 24px 14px; }
	.fp3-rwin { height: 460px; }
	.fp3-toast { left: 14px; bottom: 20px; }
	.fp3-hstage .fp3-fac { top: 12px; bottom: auto; right: 14px; }
	.fp3-bar__t { left: 64px; right: 12px; text-align: left; }
}

/* photo hero (persona, sector) */
.fp3-photo { position: relative; justify-self: end; width: min(100%, 520px); }
.fp3-photo picture, .fp3-photo__img { display: block; width: 100%; aspect-ratio: 4 / 5; object-fit: cover; border-radius: 4px; }
.fp3-photo__card { position: absolute; left: -48px; bottom: 32px; width: min(330px, 66%); background: var(--fp3-card); border-radius: 12px; box-shadow: var(--fp3-sh-pop); overflow: hidden; }
.fp3-photo__card .fp3-fac { position: static; display: block; color: var(--fp3-ink-3); background: none; padding: 8px 12px; border-top: 1px solid var(--fp3-line); border-radius: 0; font-size: .72rem; }
.fp3-photo--none { width: min(100%, 600px); }
.fp3-photo__paper { position: relative; background: var(--fp3-card); border-radius: 12px; box-shadow: var(--fp3-sh-win); overflow: hidden; }
.fp3-photo__paper .fp3-fac { position: static; display: block; color: var(--fp3-ink-3); background: none; padding: 10px 14px; border-top: 1px solid var(--fp3-line); border-radius: 0; }
.fp3-photo__paper > .fp-report-slice, .fp3-photo__card > .fp-report-slice { margin: 0; box-shadow: none; }
@media (max-width: 1000px) {
	.fp3-photo { justify-self: stretch; width: 100%; }
	.fp3-photo__card { left: 12px; bottom: 12px; width: min(300px, 78%); }
}

/* ---------------------------------------------------------------- feature rows (video, benefits) */
.fp3-feats { display: grid; gap: 24px; margin-top: 32px; }
.fp3-feat { display: grid; grid-template-columns: 1.25fr .75fr; background: var(--fp3-panel); border-radius: 4px; overflow: hidden; }
.fp3-feat--rev { grid-template-columns: .75fr 1.25fr; }
.fp3-feat--rev .fp3-feat__vis { order: 2; }
.fp3-feat__vis { padding: 56px 9%; min-height: 420px; display: flex; align-items: center; border-radius: 0; }
.fp3-feat__vis > .fp3-win { width: 100%; }
.fp3-feat__tx { padding: 48px 44px; display: flex; flex-direction: column; justify-content: center; gap: 20px; min-width: 0; }
.fp3-feat__tx .fp3-two { font-size: clamp(1.25rem, 1.05rem + .7vw, 1.6rem); }
.fp3-feats .fp3-win__body { max-height: 340px; overflow: auto; scrollbar-width: thin; }
.fp3-ben__lead { color: var(--fp3-ink-2); font-size: 1rem; }
.fp3-ben__more { color: var(--fp3-ink-2); font-size: .95rem; margin-top: 10px !important; }
.fp3-more summary { cursor: pointer; list-style: none; color: var(--fp3-accent-text); font-weight: 500; font-size: .92rem; margin-top: 10px; display: inline-flex; gap: 6px; align-items: center; min-height: 40px; }
.fp3-more summary::-webkit-details-marker { display: none; }
.fp3-more summary::after { content: "+"; font-weight: 400; color: var(--fp3-ink-3); transition: transform .2s ease; }
.fp3-more[open] summary::after { transform: rotate(45deg); }
.fp3-compact { list-style: none; padding: 0; margin: 40px 0 0; display: grid; grid-template-columns: repeat(2, minmax(0, 1fr)); column-gap: 48px; border-top: 1px solid var(--fp3-line); }
.fp3-compact li { padding: 20px 0; border-bottom: 1px solid var(--fp3-line); display: grid; gap: 6px; align-content: start; }
@media (max-width: 900px) {
	.fp3-feat, .fp3-feat--rev { grid-template-columns: 1fr; }
	.fp3-feat--rev .fp3-feat__vis { order: 0; }
	.fp3-feat__vis { padding: 28px 14px; min-height: 0; }
	.fp3-feat__tx { padding: 28px 22px 32px; }
	.fp3-compact { grid-template-columns: 1fr; }
}

/* ---------------------------------------------------------------- video window + designed thumbnail */
.fp3-player { position: relative; aspect-ratio: 16 / 9; background: var(--fp3-video-bg); overflow: hidden; }
.fp3-player iframe { position: absolute; inset: 0; width: 100%; height: 100%; border: 0; }
.fp3-player__btn { all: unset; position: absolute; inset: 0; display: block; cursor: pointer; color: var(--fp3-white); overflow: hidden; }
.fp3-player__btn:focus-visible { outline: 3px solid var(--fp3-white); outline-offset: -6px; border-radius: 6px; }
.fp3-player__ph { position: absolute; inset: 0 0 0 auto; width: 60%; background-size: cover; background-repeat: no-repeat; transition: transform .6s ease; -webkit-mask-image: linear-gradient(90deg, transparent 0, black 55%); mask-image: linear-gradient(90deg, transparent 0, black 55%); }
.fp3-player__btn:hover .fp3-player__ph { transform: scale(1.025); }
.fp3-player__btn::after { content: ""; position: absolute; inset: 0; background: linear-gradient(0deg, var(--fp3-shade-3), var(--fp3-shade-0) 35%); pointer-events: none; }
.fp3-player__tx { position: absolute; left: 6%; top: 0; bottom: 22%; width: 48%; display: flex; flex-direction: column; justify-content: center; gap: 12px; z-index: 1; }
.fp3-player__aud { font-size: clamp(.62rem, .5rem + .3vw, .78rem); letter-spacing: .06em; text-transform: uppercase; color: var(--fp3-w-75); }
.fp3-player__hook { font: 500 clamp(1.2rem, .6rem + 2vw, 2.5rem)/1.05 var(--fp3-f-head); letter-spacing: -.025em; }
.fp3-feat .fp3-player__hook { font-size: clamp(1.15rem, .5rem + 1.6vw, 2.1rem); }
.fp3-player__n { font-size: clamp(.72rem, .6rem + .35vw, .98rem); color: var(--fp3-w-82); }
.fp3-player__n b { font: 500 1.25em/1 var(--fp3-f-head); color: var(--fp3-white); margin-right: 6px; }
.fp3-player__pl { position: absolute; left: 6%; bottom: 9%; width: clamp(48px, 3vw + 34px, 72px); aspect-ratio: 1; border-radius: 50%; background: var(--fp3-shade); -webkit-backdrop-filter: blur(8px); backdrop-filter: blur(8px); display: grid; place-items: center; z-index: 1; box-shadow: 0 0 0 1px var(--fp3-w-18); transition: transform .2s ease; }
.fp3-player__btn:hover .fp3-player__pl { transform: scale(1.06); }
.fp3-player__pl::before { content: ""; margin-left: 8%; border-left: clamp(12px, .6vw + 9px, 18px) solid var(--fp3-white); border-top: clamp(7px, .4vw + 5px, 11px) solid transparent; border-bottom: clamp(7px, .4vw + 5px, 11px) solid transparent; }
.fp3-player__dur { position: absolute; right: 14px; bottom: 12px; font-size: .74rem; background: var(--fp3-shade); border-radius: 6px; padding: 3px 7px; z-index: 1; }
.fp3-chap { list-style: none; padding: 0; margin: 0; border-top: 1px solid var(--fp3-line); }
.fp3-chap__b { all: unset; box-sizing: border-box; display: grid; grid-template-columns: 52px 1fr; width: 100%; padding: 11px 0; min-height: 44px; border-bottom: 1px solid var(--fp3-line); font-size: .92rem; cursor: pointer; }
.fp3-chap__b:hover span, .fp3-chap__b[aria-current="true"] span { text-decoration: underline; text-underline-offset: 3px; }
.fp3-chap__b:focus-visible { outline: 2px solid var(--fp3-ink); outline-offset: 2px; }
.fp3-chap time { color: var(--fp3-ink-3); }
.fp3-video--bare .fp3-feat__vis { min-height: 0; padding: 40px 7%; }
@media (max-width: 700px) {
	.fp3-player__tx { width: 56%; gap: 6px; bottom: 26%; }
	.fp3-player__n { display: none; }
}

/* ---------------------------------------------------------------- "Cosa ti arriva ogni mese" */
.fp3-sec--tour { padding-top: 8px; }
.fp3-tour { display: grid; grid-template-columns: .85fr 1.15fr; gap: 48px; align-items: start; margin-top: 36px; }
.fp3-tour__list { list-style: none; margin: 0; padding: 0; border-top: 1px solid var(--fp3-line); min-width: 0; }
.fp3-tour__li { border-bottom: 1px solid var(--fp3-line); }
.fp3-tour__b { all: unset; box-sizing: border-box; display: grid; grid-template-columns: 36px 1fr; gap: 4px 8px; width: 100%; padding: 16px 4px; cursor: pointer; min-height: 44px; }
.fp3-tour__b:focus-visible { outline: 2px solid var(--fp3-ink); outline-offset: 2px; border-radius: 6px; }
.fp3-tour__no { font-size: .8rem; color: var(--fp3-ink-3); padding-top: 3px; }
.fp3-tour__tt { font: 500 1.08rem/1.3 var(--fp3-f-head); letter-spacing: -.01em; color: var(--fp3-ink-2); }
.fp3-tour__b:hover .fp3-tour__tt, .fp3-tour__li.is-on .fp3-tour__tt { color: var(--fp3-ink); }
.fp3-tour__li.is-on .fp3-tour__no { color: var(--fp3-accent-text); }
.fp3-tour__dd { display: grid; gap: 10px; padding: 0 4px 18px 48px; }
.fp3-tour__dd[hidden] { display: none; }
.fp3-tour__ds { color: var(--fp3-ink-2); font-size: .97rem; line-height: 1.55; }
.fp3-tour__dk { font-size: .86rem; color: var(--fp3-ink-2); }
.fp3-tour__dk b { font: 500 1.15rem/1 var(--fp3-f-head); color: var(--fp3-ink); margin-right: 4px; }
.fp3-tour__side { position: sticky; top: 88px; min-width: 0; }
.fp3-tv { padding: 40px 40px 72px; }
.fp3-vbox { position: relative; aspect-ratio: 4 / 3; background: var(--fp3-paper); }
.fp3-vbox__img, .fp3-vbox__v { position: absolute; inset: 0; display: block; width: 100%; height: 100%; object-fit: contain; background: var(--fp3-paper); }
.fp3-vbox__v[hidden] { display: none; }
.fp3-ctl { position: absolute; left: 40px; right: 40px; bottom: 22px; display: flex; align-items: center; gap: 12px; font-size: .8rem; color: var(--fp3-ink-2); }
.fp3-nv { all: unset; cursor: pointer; width: 40px; height: 40px; border-radius: 50%; display: grid; place-items: center; background: var(--fp3-card); box-shadow: var(--fp3-sh-nv); color: var(--fp3-ink); }
.fp3-nv:hover { box-shadow: 0 0 0 1px rgba(28, 27, 24, .25), 0 2px 6px rgba(28, 27, 24, .1); }
.fp3-nv:focus-visible { outline: 2px solid var(--fp3-ink); outline-offset: 2px; }
.fp3-prog { flex: 1; height: 2px; background: rgba(28, 27, 24, .12); border-radius: 2px; overflow: hidden; max-width: 220px; }
.fp3-prog i { display: block; height: 100%; width: 0; background: var(--fp3-ink); }
@media (max-width: 1000px) {
	.fp3-tour { grid-template-columns: 1fr; gap: 24px; }
	.fp3-tour__side { position: relative; top: 0; order: -1; }
	.fp3-tv { padding: 20px 14px 68px; }
	.fp3-ctl { left: 14px; right: 14px; }
}

/* ---------------------------------------------------------------- statement */
.fp3-state { display: grid; grid-template-columns: 1.2fr .8fr; gap: 56px; align-items: end; }
.fp3-state--single { grid-template-columns: 1fr; }
.fp3-state--single .fp3-two { max-width: 48ch; }
.fp3-state__facts { display: grid; border-top: 1px solid var(--fp3-line); }
.fp3-state__facts div { padding: 18px 0; border-bottom: 1px solid var(--fp3-line); display: flex; justify-content: space-between; gap: 16px; align-items: baseline; }
.fp3-state__facts b { font: 500 1.9rem/1 var(--fp3-f-head); letter-spacing: -.02em; white-space: nowrap; }
.fp3-state__facts span { color: var(--fp3-ink-2); font-size: .9rem; text-align: right; }
@media (max-width: 900px) { .fp3-state { grid-template-columns: 1fr; gap: 32px; } }

/* ---------------------------------------------------------------- personas */
.fp3-rows { border-top: 1px solid var(--fp3-line); margin-top: 36px; }
.fp3-row { display: grid; grid-template-columns: minmax(0, 1fr) minmax(0, 1.2fr) 24px; gap: 24px; padding: 18px 0; border-bottom: 1px solid var(--fp3-line); text-decoration: none; align-items: baseline; color: var(--fp3-ink); }
.fp3-row h3 { font-size: 1.08rem; }
.fp3-row__p { color: var(--fp3-ink-2); font-size: .95rem; }
.fp3-row i { font-style: normal; color: var(--fp3-ink-3); transition: transform .2s ease; }
a.fp3-row:hover i { transform: translateX(3px); color: var(--fp3-ink); }
.fp3-also { margin-top: 22px !important; color: var(--fp3-ink-2); font-size: .92rem; max-width: 80ch; }
.fp3-also a { color: var(--fp3-ink); text-decoration: underline; text-decoration-color: rgba(28, 27, 24, .25); text-underline-offset: 3px; }
@media (max-width: 700px) {
	.fp3-row { grid-template-columns: 1fr 20px; gap: 6px 16px; }
	.fp3-row__p { grid-column: 1 / 2; }
	.fp3-row i { grid-row: 1; grid-column: 2; }
}

/* ---------------------------------------------------------------- trust */
.fp3-trust { display: grid; grid-template-columns: 1fr 1fr; gap: 56px; align-items: center; }
.fp3-trust--single { grid-template-columns: 1fr; }
.fp3-pills { display: flex; gap: 8px; flex-wrap: wrap; margin-top: 20px; }
.fp3-pills span { font-size: .86rem; background: var(--fp3-soft); border-radius: 999px; padding: 6px 12px; }
.fp3-card { background: var(--fp3-card); border-radius: 12px; box-shadow: var(--fp3-sh-win); padding: 26px; }
.fp3-card__cap { font-size: .78rem; color: var(--fp3-ink-3); margin-bottom: 10px !important; }
.fp3-lr { display: grid; grid-template-columns: 130px 1fr auto; gap: 14px; align-items: center; padding: 14px 0; border-top: 1px solid var(--fp3-line); }
.fp3-card__cap + .fp3-lr { border-top: 0; }
.fp3-lr span { font-size: .82rem; color: var(--fp3-ink-2); }
.fp3-lr b { font: 500 1.25rem/1 var(--fp3-f-head); letter-spacing: -.01em; white-space: nowrap; }
.fp3-track { height: 6px; background: var(--fp3-track); border-radius: 9px; overflow: hidden; }
.fp3-track i { display: block; height: 100%; background: var(--fp3-ink); border-radius: 9px; }
.fp3-track--soft i { opacity: .45; }
.fp3-track--accent i { background: var(--fp3-accent); }
.fp3-mlinks { list-style: none; padding: 0; margin: 20px 0 0; columns: 2; column-gap: 32px; }
.fp3-mlinks a { display: block; padding: 10px 0; border-bottom: 1px solid var(--fp3-line); text-decoration: none; font-size: .93rem; break-inside: avoid; min-height: 44px; }
.fp3-mlinks a:hover { color: var(--fp3-ink-2); }
@media (max-width: 900px) { .fp3-trust { grid-template-columns: 1fr; gap: 32px; } .fp3-mlinks { columns: 1; } .fp3-lr { grid-template-columns: 96px 1fr auto; } }

/* ---------------------------------------------------------------- pricing */
.fp3-price { display: grid; grid-template-columns: 1fr 1fr; gap: 20px; margin-top: 36px; }
.fp3-price--single { grid-template-columns: minmax(0, 640px); }
.fp3-pc { background: var(--fp3-card); border-radius: 12px; box-shadow: var(--fp3-sh-win); padding: 32px; display: flex; flex-direction: column; gap: 18px; }
.fp3-pc__big { display: flex; align-items: baseline; gap: 10px; flex-wrap: wrap; }
.fp3-pc__big b { font: 500 3.6rem/1 var(--fp3-f-head); letter-spacing: -.04em; }
.fp3-pc__big span, .fp3-pc__rest { color: var(--fp3-ink-2); }
.fp3-inc { list-style: none; padding: 0; margin: 0; border-top: 1px solid var(--fp3-line); }
.fp3-inc li { padding: 10px 0; border-bottom: 1px solid var(--fp3-line); font-size: .95rem; display: flex; gap: 10px; }
.fp3-inc li::before { content: ""; flex: none; width: 6px; height: 6px; border-radius: 50%; background: var(--fp3-ink); margin-top: .6em; }
.fp3-steps { background: var(--fp3-panel); border-radius: 12px; padding: 32px; display: flex; flex-direction: column; gap: 16px; }
.fp3-steps ol { list-style: none; padding: 0; margin: 0; border-top: 1px solid var(--fp3-line); }
.fp3-steps li { display: grid; grid-template-columns: 90px 1fr; gap: 14px; padding: 14px 0; border-bottom: 1px solid var(--fp3-line); font-size: .95rem; }
.fp3-steps li b { font-weight: 500; }
.fp3-steps li span { color: var(--fp3-ink-2); }
.fp3-steps__note { color: var(--fp3-ink-2); font-size: .93rem; }
.fp3-steps__side { margin-top: auto !important; font-size: .9rem; color: var(--fp3-ink-2); }
.fp3-steps__side a:not(.fp3-link) { color: var(--fp3-ink); }
@media (max-width: 900px) { .fp3-price { grid-template-columns: 1fr; } .fp3-pc, .fp3-steps { padding: 24px; } .fp3-pc__big b { font-size: 3rem; } }

/* ---------------------------------------------------------------- FAQ */
.fp3-faq { border-top: 1px solid var(--fp3-line); margin-top: 28px; max-width: 860px; }
.fp3-faq__i { border-bottom: 1px solid var(--fp3-line); }
.fp3-faq__i summary { list-style: none; cursor: pointer; padding: 18px 40px 18px 0; position: relative; min-height: 44px; }
.fp3-faq__i summary::-webkit-details-marker { display: none; }
.fp3-faq__i summary::after { content: "+"; position: absolute; right: 4px; top: 14px; font: 400 1.4rem/1 var(--fp3-f-body); color: var(--fp3-ink-3); transition: transform .2s ease; }
.fp3-faq__i[open] summary::after { transform: rotate(45deg); }
.fp3-faq__i summary:focus-visible { outline: 2px solid var(--fp3-ink); outline-offset: 2px; }
.fp3-faq__q { font: 500 1rem/1.4 var(--fp3-f-body) !important; letter-spacing: 0 !important; }
.fp3-faq__a { padding: 0 0 20px; color: var(--fp3-ink-2); max-width: 68ch; }
.fp3-faq__a p { color: var(--fp3-ink-2); }

/* ---------------------------------------------------------------- final CTA */
.fp3-sec--final-cta { padding-bottom: 72px; }
.fp3-final { padding: 88px 7%; background-position: 85% 50%; }
.fp3-final__box { background: var(--fp3-glass); -webkit-backdrop-filter: blur(10px); backdrop-filter: blur(10px); border-radius: 12px; box-shadow: var(--fp3-sh-win); padding: 36px; max-width: 560px; display: grid; gap: 20px; }
@media (max-width: 700px) { .fp3-final { padding: 32px 14px; } .fp3-final__box { padding: 26px 22px; } }

/* ---------------------------------------------------------------- reduced motion */
@media (prefers-reduced-motion: reduce) {
	.fp3-sec *, .fp3-sec *::before, .fp3-sec *::after { transition: none !important; }
}

/* ---------------------------------------------------------------- header + footer (prototype v4) */
.fp-site-header .fp3-hdr-sample { margin-right: 4px; }
@media (max-width: 920px) { .fp-site-header .fp3-hdr-sample { display: none; } }
body .fp-site-footer { background: var(--fp3-bg); color: var(--fp3-ink-2); border-top: 1px solid var(--fp3-line); }
.fp-site-footer :is(a, p, li) { color: var(--fp3-ink-2); }
.fp-site-footer a:hover { color: var(--fp3-ink); }
.fp-site-footer .fp-rlabel { color: var(--fp3-ink); }
.fp-site-footer__bottom { border-top-color: var(--fp3-line); }

/* single header nav: desktop row, mobile panel opened by the burger (same markup) */
.fp3-burger { all: unset; cursor: pointer; display: inline-grid; place-items: center; width: 44px; height: 44px; border-radius: 8px; color: var(--fp3-ink); order: 3; }
.fp3-burger:focus-visible { outline: 2px solid var(--fp3-ink); outline-offset: 2px; }
.fp3-burger[aria-expanded="true"] { background: var(--fp3-panel); }
.fp3-nav__sample { display: none; }
@media (min-width: 901px) {
	.fp3-burger { display: none; }
}
@media (max-width: 900px) {
	.fp-site-header { position: relative; }
	.fp-site-header .fp3-nav { display: none; position: absolute; left: 0; right: 0; top: 100%; z-index: 60; background: var(--fp3-card); border-bottom: 1px solid var(--fp3-line); box-shadow: var(--fp3-sh-pop); max-height: calc(100vh - 72px); overflow: auto; padding: 8px var(--fp3-gutter) 16px; }
	.fp-site-header.is-menu-open .fp3-nav { display: block; }
	.fp3-nav > ul { display: block; }
	.fp3-nav > ul > li { border-bottom: 1px solid var(--fp3-line); }
	.fp3-nav > ul > li > a { display: flex; width: 100%; justify-content: space-between; min-height: 48px; }
	.fp3-nav__sample { display: list-item; }
	.fp3-nav .fp-sub__panel, .fp3-nav .fp-sub__panel--wide { position: static; display: none; opacity: 1; visibility: visible; transform: none; transition: none; box-shadow: none; border: 0; min-width: 0; width: auto; padding: 0 0 8px 8px; margin: 0; }
	.fp3-nav .fp-sub.is-open .fp-sub__panel { display: block; }
	.fp3-nav .fp-sub__groups { display: block; }
	.fp3-nav .fp-sub__list a { white-space: normal; padding: 0 8px; }
	.fp-site-header .fp3-nav ~ .fp-menu { display: none; }
}

/* fr/de header (agent M): the menu reaches every English page, so its labels are long. 901-1279 px: burger +
   drawer (same rules as <= 900 px); >= 1280 px: one row, labels never wrap. */
@media (min-width: 1280px) { .fp3-hdr--long .fp3-nav > ul > li > a, .fp3-hdr--long .fp-site-header__right .fp-btn { white-space: nowrap; } .fp3-hdr--long .fp3-nav > ul { gap: 20px; } .fp3-hdr--long .fp-site-header__inner { gap: 20px; } }
@media (min-width: 901px) and (max-width: 1279px) {
	.fp-site-header.fp3-hdr--long { position: relative; }
	.fp3-hdr--long .fp3-burger { display: inline-grid; }
	.fp-site-header.fp3-hdr--long .fp3-nav { display: none; position: absolute; left: 0; right: 0; top: 100%; z-index: 60; background: var(--fp3-card); border-bottom: 1px solid var(--fp3-line); box-shadow: var(--fp3-sh-pop); max-height: calc(100vh - 72px); overflow: auto; padding: 8px var(--fp3-gutter) 16px; }
	.fp-site-header.fp3-hdr--long.is-menu-open .fp3-nav { display: block; }
	.fp3-hdr--long .fp3-nav > ul { display: block; }
	.fp3-hdr--long .fp3-nav > ul > li { border-bottom: 1px solid var(--fp3-line); }
	.fp3-hdr--long .fp3-nav > ul > li > a { display: flex; width: 100%; justify-content: space-between; min-height: 48px; }
	.fp3-hdr--long .fp3-nav__sample { display: list-item; }
	.fp3-hdr--long .fp3-nav .fp-sub__panel, .fp3-hdr--long .fp3-nav .fp-sub__panel--wide { position: static; display: none; opacity: 1; visibility: visible; transform: none; transition: none; box-shadow: none; border: 0; min-width: 0; width: auto; padding: 0 0 8px 8px; margin: 0; }
	.fp3-hdr--long .fp3-nav .fp-sub.is-open .fp-sub__panel { display: block; }
	.fp3-hdr--long .fp3-nav .fp-sub__groups { display: grid; grid-template-columns: repeat(3, minmax(0, 1fr)); gap: 4px 16px; }
	.fp3-hdr--long .fp3-nav .fp-sub__list a { white-space: normal; padding: 0 8px; }
	.fp3-hdr--long .fp-site-header__right { margin-inline-start: auto; }
}

/* ---------------------------------------------------------------- generic / steps / numbers / bands */
.fp3-p { color: var(--fp3-ink-2); font-size: 1rem; line-height: 1.6; max-width: 68ch; }
.fp3-flow > * + * { margin-top: 14px !important; }
.fp3-flow { margin-top: 18px; }
.fp3-mt-s { margin-top: 18px !important; }
.fp3-measure { max-width: 860px; }
.fp3-split { display: grid; grid-template-columns: minmax(0, 1fr) minmax(0, 1.1fr); gap: 56px; align-items: center; }
.fp3-split__vis { display: grid; gap: 20px; min-width: 0; }
.fp3-vispanel { padding: 40px 7%; }
.fp3-vispanel .fp3-win__body { max-height: 420px; overflow: auto; scrollbar-width: thin; }
.fp3-feat__vis.fp3-vispanel { padding: 56px 9%; }
.fp3-points { list-style: none; padding: 0; margin: 20px 0 0; border-top: 1px solid var(--fp3-line); }
.fp3-points li { padding: 14px 0; border-bottom: 1px solid var(--fp3-line); display: grid; gap: 4px; }
.fp3-glossary { margin: 20px 0 0; border-top: 1px solid var(--fp3-line); }
.fp3-gl { display: grid; grid-template-columns: minmax(120px, .4fr) 1fr; gap: 16px; padding: 12px 0; border-bottom: 1px solid var(--fp3-line); }
.fp3-gl dt { font-weight: 500; }
.fp3-gl dd { margin: 0; }
.fp3-table table { width: 100%; border-collapse: collapse; font-size: .9rem; }
.fp3-table td { padding: 10px 0; border-bottom: 1px solid var(--fp3-line); }
.fp3-r { text-align: right; }
.fp3-side { background: var(--fp3-panel); }
.fp3-item__n { font: 400 .8rem/1 var(--fp3-f-body); color: var(--fp3-ink-3); margin-right: 10px; vertical-align: .2em; }
.fp3-sl { list-style: none; padding: 0; margin: 28px 0 0; border-top: 1px solid var(--fp3-line); }
.fp3-sl li { display: grid; grid-template-columns: 44px 1fr; gap: 8px; padding: 18px 0; border-bottom: 1px solid var(--fp3-line); }
.fp3-sl__n { font-size: .8rem; color: var(--fp3-ink-3); padding-top: 3px; }
.fp3-sl .fp3-p { margin-top: 6px; }
.fp3-facts { list-style: none; padding: 0; margin: 32px 0 0; display: grid; grid-template-columns: repeat(3, minmax(0, 1fr)); border-top: 1px solid var(--fp3-line); }
.fp3-facts li { padding: 22px 22px 22px 0; display: grid; gap: 10px; align-content: start; }
.fp3-facts li + li { border-left: 1px solid var(--fp3-line); padding-left: 22px; }
.fp3-bignum { font: 500 clamp(1.8rem, 1.3rem + 1.2vw, 2.4rem)/1.05 var(--fp3-f-head); letter-spacing: -.02em; }
.fp3-seen-cols { display: grid; grid-template-columns: 1fr 1fr; gap: 24px; margin-top: 24px; }
.fp3-seen { list-style: none; padding: 0; margin: 0; border-top: 1px solid var(--fp3-line); }
.fp3-seen li { padding: 10px 0 10px 22px; border-bottom: 1px solid var(--fp3-line); position: relative; font-size: .95rem; }
.fp3-seen--yes li::before { content: "+"; position: absolute; left: 2px; color: var(--fp3-accent-text); }
.fp3-seen--no li::before { content: "−"; position: absolute; left: 2px; color: var(--fp3-ink-3); }
.fp3-crop__label { font-size: .72rem; color: var(--fp3-ink-3); padding: 8px 12px; border-top: 1px solid var(--fp3-line); background: var(--fp3-card); margin: 0; }
.fp3-sec .fp-source { color: var(--fp3-ink-3); font-size: .8rem; margin-top: 10px; }
@media (max-width: 900px) {
	.fp3-split { grid-template-columns: 1fr; gap: 28px; }
	.fp3-vispanel, .fp3-feat__vis.fp3-vispanel { padding: 24px 14px; }
	.fp3-facts { grid-template-columns: 1fr; }
	.fp3-facts li + li { border-left: 0; padding-left: 0; border-top: 1px solid var(--fp3-line); }
	.fp3-seen-cols { grid-template-columns: 1fr; }
	.fp3-gl { grid-template-columns: 1fr; gap: 4px; }
}

/* footer columns (Paolo, 21 Oct): every column, "Lingua" included, on one row at desktop widths */
.fp-site-footer .fp-site-footer__cols { display: grid; grid-template-columns: repeat(2, minmax(0, 1fr)); gap: 28px 24px; }
@media (min-width: 640px) { .fp-site-footer .fp-site-footer__cols { grid-template-columns: repeat(3, minmax(0, 1fr)); } }
@media (min-width: 1000px) { .fp-site-footer .fp-site-footer__cols { grid-template-columns: none; grid-auto-flow: column; grid-auto-columns: minmax(0, 1fr); gap: 24px; } }
.fp-site-footer .fp-site-footer__cols a { line-height: 1.35; }

/* animation slots: the <video> stays out of the layout until it can play (no empty box under the poster) */
.fp-animation-slot__video[hidden] { display: none !important; }
.fp3-win__body .fp-animation-slot__video { border-radius: 0; aspect-ratio: 4 / 3; object-fit: contain; background: var(--fp3-paper); }

/* touch targets ≥ 40 px on phones (inline links keep their line height: padding only grows the hit box) */
@media (max-width: 1000px) {
	.fp3-tabs button { min-height: 40px; display: inline-flex; align-items: center; }
	.fp3-hcopy .fp-breadcrumb a { display: inline-flex; align-items: center; min-height: 40px; }
	.fp3-also a, .fp3-steps__side a, .fp3-sec .fp-inlink, .fp-sector-related .fp-inlink { padding-block: 12px; }
}

/* ---------------------------------------------------------------- agent R fixes (21 Oct, K/D audit) */
/* worked-example figures as text under the report visual (method pages) and the pricing "value" line */
.fp3-example { font-size: .86rem; line-height: 1.5; color: var(--fp3-ink-2); border-top: 1px solid var(--fp3-line); padding-top: 12px; margin-top: 4px !important; max-width: 68ch; }
.fp3-example__l { display: block; color: var(--fp3-ink-3); font-size: .78rem; margin-top: 4px; }
.fp3-flow .fp3-example { margin-top: 18px !important; }
/* final CTA "side" line (demo for banks / confidi) */
.fp3-final__side { font-size: .92rem; color: var(--fp3-ink-2); }
/* benefits with large rows between compact rows (copy order kept, e.g. partner pages) */
.fp3-inter > .fp3-feats:first-child { margin-top: 32px; }
.fp3-inter > .fp3-compact { margin-top: 24px; }
.fp3-inter > .fp3-feats + .fp3-feats { margin-top: 24px; }
/* timeline slice: the track is one solid hairline (the striped track read as a placeholder) */
.fp-timeline__track { background: linear-gradient(var(--fp-line), var(--fp-line)) center / 100% 1px no-repeat; }
/* header CTA on phones: long page-specific labels wrap inside the pill instead of pushing the page wider than
   the screen (EN investment funds / statutory auditors at 390 px; header markup is agent M's) */
@media (max-width: 600px) {
	.fp-site-header__right { min-width: 0; }
	.fp-site-header__right > .fp-btn--primary.fp-btn--small { white-space: normal; max-width: 52vw; text-align: center; line-height: 1.2; font-size: .76rem; padding: 6px 12px; min-height: 40px; border-radius: 20px; }
}
/* contrast (axe serious, D/K): small labels in the secondary ink (#6A6862, 5.3:1 on paper) instead of the tertiary
   (2.8:1); the "fac-simile" pill on a solid ink / card ground (no translucent scrim over the guilloche) */
.fp3-micro, .fp3-eyebrow, .fp3-toast__f, .fp3-crop__label, .fp3-caption, .fp3-tour__no, .fp3-chap time,
.fp3-sec .fp-source, .fp3-example__l, .fp3-card__cap, .fp3-sl__n, .fp3-item__n, .fp3-rfoot { color: var(--fp3-ink-2); }
.fp3-fac { background: var(--fp3-ink); color: var(--fp3-white); -webkit-backdrop-filter: none; backdrop-filter: none; }
.fp3-panel--light .fp3-fac, .fp3-photo__card .fp3-fac, .fp3-photo__paper .fp3-fac { background: var(--fp3-card); color: var(--fp3-ink-2); }
/* tap targets >= 40 px (D): burger keeps its 44 px box in the flex header; breadcrumb links get a 40 px wide hit box */
.fp3-burger { flex: none; min-width: 44px; }
.fp-breadcrumb a { display: inline-flex; align-items: center; min-height: 40px; min-width: 40px; }
.fp-site-footer__legal a { display: inline-flex; align-items: center; min-height: 44px; min-width: 44px; }
/* terms line under the signup CTAs (legal prompt §4) */
.fp3-terms { font-size: .82rem; color: var(--fp3-ink-2); margin-top: 10px !important; }
.fp3-terms a { color: var(--fp3-ink); text-decoration: underline; text-underline-offset: 3px; }
/* trust bars inside a window; activation steps numbered large (a real sequence, decisions §2.3 "numbered line") */
.fp3-card--in { box-shadow: none; border-radius: 0; padding: 18px 22px 22px; }
.fp3-card--in .fp3-lr:first-child { border-top: 0; }
.fp3-sl li { grid-template-columns: 64px 1fr; align-items: start; }
.fp3-sl__n { font: 500 2rem/1 var(--fp3-f-head); letter-spacing: -.02em; color: var(--fp3-ink); padding-top: 0; }
.fp3-bandbox { max-width: 760px; }
.fp3-bandbox .fp3-seen-cols { margin-top: 8px; }
/* two-tone statements: the grey half in the secondary ink (tertiary #9A978F is 2.8:1 on paper, axe serious) */
.fp3-two__b { color: var(--fp3-ink-2); }
/* media-chat image (e.g. IMG-API01) in a window: no inner scroll, full image */
.fp3-vispanel .fp3-win__body:has(.fp3-mimg) { max-height: none; overflow: visible; }
.fp3-mimg { display: block; width: 100%; height: auto; }
/* unsubscribe confirmation (status note, bottom of the screen) */
.fp3-notice { position: fixed; left: 50%; bottom: 24px; transform: translateX(-50%); z-index: 90; max-width: min(560px, calc(100vw - 32px)); background: var(--fp3-ink); color: var(--fp3-white); border-radius: 12px; box-shadow: var(--fp3-sh-pop); padding: 14px 18px; font-size: .92rem; line-height: 1.45; }
.fp3-form { margin-inline: auto; }
/* phones (D gate, DE pages at 320-390): long legal link labels wrap; the statement facts and the report tab strip
   never widen the page (the strip scrolls on its own) */
.fp-site-footer__legal { display: flex; flex-wrap: wrap; gap: 4px 16px; min-width: 0; }
.fp-site-footer__legal li { min-width: 0; }
.fp-site-footer__legal a { white-space: normal; min-width: 0; }
.fp3-state, .fp3-state > *, .fp3-rwin, .fp3-hstage { min-width: 0; }
.fp3-tabs { max-width: 100%; overflow-x: auto; }
@media (max-width: 480px) {
	.fp3-state__facts div { flex-wrap: wrap; }
	.fp3-state__facts b { font-size: 1.6rem; white-space: normal; }
	.fp3-state__facts span { text-align: left; }
}
/* photo hero (Paolo, 21 Oct): the 4:5 photo is CROPPED to the height of the text column (object-fit: cover), never
   shown at full height; text vertically centred; the report-crop card overlaps the photo's lower-left corner.
   Desktop: the row height comes from the text (photo box has no intrinsic height), clamped 420-560 px.
   <= 900 px: the photo is a 16:10 band above the text, the card overlaps its lower edge. */
.fp3-hero2--photo { align-items: stretch; grid-template-columns: minmax(0, 1.05fr) minmax(0, .95fr); }
.fp3-hero2--photo > .fp3-hcopy { align-self: center; }
.fp3-photo:not(.fp3-photo--none) { justify-self: stretch; width: 100%; height: 100%; min-height: 420px; max-height: 560px; align-self: center; }
.fp3-photo:not(.fp3-photo--none) > picture { position: absolute; inset: 0; width: 100%; height: 100%; aspect-ratio: auto; border-radius: 4px; overflow: hidden; }
.fp3-photo:not(.fp3-photo--none) .fp3-photo__img { width: 100%; height: 100%; aspect-ratio: auto; object-fit: cover; object-position: center; border-radius: 0; }
.fp3-photo:not(.fp3-photo--none) .fp3-photo__card { z-index: 2; left: -40px; bottom: 28px; width: clamp(300px, 48%, 360px); max-height: calc(100% - 56px); }
.fp3-photo__card .fp3-crop { max-height: 260px; object-fit: cover; object-position: top left; }
@media (max-width: 900px) {
	.fp3-hero2--photo { display: flex; flex-direction: column-reverse; gap: 28px; }
	.fp3-photo:not(.fp3-photo--none) { height: auto; min-height: 0; max-height: none; }
	.fp3-photo:not(.fp3-photo--none) > picture { position: relative; inset: auto; display: block; aspect-ratio: 16 / 10; }
	.fp3-photo:not(.fp3-photo--none) .fp3-photo__card { position: relative; left: auto; bottom: auto; margin: -56px 0 0 12px; width: min(300px, 78%); max-height: none; }
	.fp3-photo__card .fp3-crop { max-height: 200px; }
}
/* breadcrumb: links with a 40 px hit box and the current page sit on one baseline */
.fp-breadcrumb ol { display: flex; flex-wrap: wrap; align-items: center; }
.fp-breadcrumb li { display: inline-flex; align-items: center; min-height: 40px; }
/* photo hero, Paolo's reference = /en/for/credit-analysts/: landscape crop about as wide as the text column, at
   least 460 px tall, focal point slightly below centre; the report card large enough to read (~62% of the photo) */
.fp3-hero2--photo { grid-template-columns: minmax(0, 1fr) minmax(0, 1fr); }
.fp3-photo:not(.fp3-photo--none) { min-height: 460px; }
.fp3-photo:not(.fp3-photo--none) .fp3-photo__img { object-position: 50% 60%; }
.fp3-photo:not(.fp3-photo--none) .fp3-photo__card { width: clamp(320px, 62%, 420px); left: -48px; bottom: 24px; max-height: calc(100% - 48px); }
.fp3-photo__card .fp3-crop { max-height: 300px; }
@media (max-width: 900px) {
	.fp3-photo:not(.fp3-photo--none) { min-height: 0; }
	.fp3-photo:not(.fp3-photo--none) > picture { aspect-ratio: 4 / 3; }
	.fp3-photo:not(.fp3-photo--none) .fp3-photo__card { width: min(340px, 88%); margin: -64px 0 0 12px; left: auto; bottom: auto; }
	.fp3-photo__card .fp3-crop { max-height: 240px; }
}

/* ---------------------------------------------------------------- R: V's visual QA batch 1 */
/* B1 / M3: tall crop heroes (no photo yet, or text hero with a crop): the visual is capped at the text height and
   cropped from the top; the fallback crop sits centred against the text and fills its column */
.fp3-photo--none { align-self: center; justify-self: stretch; width: 100%; }
.fp3-photo--none .fp3-photo__paper .fp3-crop, .fp3-hstage--light .fp3-win__body .fp3-crop { max-height: 520px; object-fit: cover; object-position: top center; }
.fp3-hstage--light .fp3-win__body { max-height: 560px; overflow: hidden; }
.fp3-photo--none .fp3-photo__paper .fp3-crop { min-height: 300px; }
/* B2: phones read the text first (H1, lead, buttons), then the visual */
@media (max-width: 900px) {
	.fp3-hero2--photo { flex-direction: column; }
	.fp3-photo--none .fp3-photo__paper .fp3-crop, .fp3-hstage--light .fp3-win__body .fp3-crop { max-height: 360px; min-height: 0; }
	.fp3-hstage--light .fp3-win__body { max-height: 380px; }
}
/* M4: the report card on the photo is large enough to read (sector "Tre letture" strip is wide: ~80% of the photo) */
.fp3-photo:not(.fp3-photo--none) .fp3-photo__card { width: clamp(340px, 72%, 480px); }
.fp3-photo:not(.fp3-photo--none) .fp3-photo__card .fp3-crop { max-height: 320px; object-fit: contain; object-position: top left; }
@media (max-width: 900px) { .fp3-photo:not(.fp3-photo--none) .fp3-photo__card { width: 94%; } }
/* M1: header. Menu items never wrap; the long page CTA shows only >= 1280 px, the site's short CTA below */
.fp-site-header .fp3-nav > ul > li > a, .fp-site-header .fp-sub__toggle { white-space: nowrap; }
.fp-site-header .fp3-nav > ul > li { flex-shrink: 0; }
.fp3-cta-s { display: none; }
@media (max-width: 1279px) { .fp3-cta-l { display: none; } .fp3-cta-s { display: inline; } }
.fp-site-header__right > .fp-btn--primary.fp-btn--small { white-space: nowrap; }
/* M6: report tabs never cut a label: they wrap onto a second line inside the window on wide screens */
@media (min-width: 1001px) { .fp3-tabs { flex-wrap: wrap; overflow-x: visible; } }
/* M7: long H1s (> 75 characters) one step smaller */
.fp3-h1--long { font-size: clamp(1.75rem, 1.1rem + 1.5vw, 2.35rem); max-width: 26ch; }
/* M1 (fix): span rules of .fp-btn must not show both labels; nav labels never break */
.fp-site-header .fp-btn .fp3-cta-s { display: none !important; }
@media (max-width: 1279px) {
	.fp-site-header .fp-btn .fp3-cta-l { display: none !important; }
	.fp-site-header .fp-btn .fp3-cta-s { display: inline !important; }
}
.fp-site-header .fp-nav a, .fp-site-header .fp-nav button, .fp-site-header .fp-lang summary { white-space: nowrap; }
.fp-site-header .fp-nav > ul > li { flex-shrink: 0; }
/* M1 (fr/de long menus, one-row layout >= 1280 px): no overlap with the language switcher. The short CTA is used
   up to 1599 px and the sample pill (also in the menu) hides up to 1439 px */
@media (min-width: 1280px) and (max-width: 1599px) {
	.fp-site-header.fp3-hdr--long .fp-btn .fp3-cta-l { display: none !important; }
	.fp-site-header.fp3-hdr--long .fp-btn .fp3-cta-s { display: inline !important; }
}
@media (min-width: 1280px) and (max-width: 1439px) { .fp-site-header.fp3-hdr--long .fp3-hdr-sample { display: none; } }
.fp-site-header.fp3-hdr--long .fp-site-header__inner { gap: 16px; }
/* M1 (DE): the German menu does not fit one row below 1600 px: burger + drawer there (same rules as M's 901-1279) */
@media (min-width: 1280px) and (max-width: 1599px) {
	.fp-site-header.fp3-hdr--long { position: relative; }
	.fp3-hdr--long .fp3-burger { display: inline-grid; }
	.fp-site-header.fp3-hdr--long .fp3-nav { display: none; position: absolute; left: 0; right: 0; top: 100%; z-index: 60; background: var(--fp3-card); border-bottom: 1px solid var(--fp3-line); box-shadow: var(--fp3-sh-pop); max-height: calc(100vh - 72px); overflow: auto; padding: 8px var(--fp3-gutter) 16px; }
	.fp-site-header.fp3-hdr--long.is-menu-open .fp3-nav { display: block; }
	.fp3-hdr--long .fp3-nav > ul { display: block; }
	.fp3-hdr--long .fp3-nav > ul > li { border-bottom: 1px solid var(--fp3-line); }
	.fp3-hdr--long .fp3-nav > ul > li > a { display: flex; width: 100%; justify-content: space-between; min-height: 48px; }
	.fp3-hdr--long .fp3-nav__sample { display: list-item; }
	.fp3-hdr--long .fp3-nav .fp-sub__panel, .fp3-hdr--long .fp3-nav .fp-sub__panel--wide { position: static; display: none; opacity: 1; visibility: visible; transform: none; transition: none; box-shadow: none; border: 0; min-width: 0; width: auto; padding: 0 0 8px 8px; margin: 0; }
	.fp3-hdr--long .fp3-nav .fp-sub.is-open .fp-sub__panel { display: block; }
	.fp3-hdr--long .fp3-nav .fp-sub__groups { display: grid; grid-template-columns: repeat(3, minmax(0, 1fr)); gap: 4px 16px; }
	.fp3-hdr--long .fp-site-header__right { margin-inline-start: auto; }
	.fp-site-header.fp3-hdr--long .fp3-hdr-sample { display: inline-flex; }
}

/* V's QA M8: a band on the light paper panel (never two dark panels in a row) */
.fp3-panel--light.fp3-bandpanel .fp3-final__box { background: var(--fp3-card); }
/* V's QA M9: video without chapters = wide window, heading centred under it */
.fp3-video--wide { display: grid; gap: 28px; justify-items: center; }
.fp3-video--wide > .fp3-panel { width: 100%; max-width: 980px; padding: 48px 7%; border-radius: 4px; }
.fp3-video__cap { max-width: 760px; text-align: center; }
.fp3-video__cap .fp3-two { max-width: none; }
@media (max-width: 700px) { .fp3-video--wide > .fp3-panel { padding: 20px 12px; } }

/* V's QA M10: a window holding one or two value lines (quote slice, no picture) is as tall as its content */
.fp3-feat__vis:has(.fp-quote):not(:has(img, svg, video)) { min-height: 0; padding-block: 40px; }
.fp3-vispanel:has(.fp-quote):not(:has(img, svg, video)) { padding-block: 32px; }

/* cited report page as the fallback picture of a label-only slice: the page scrolls inside the window */
.fp3-pagefall { max-height: 360px; overflow: auto; scrollbar-width: thin; }
.fp3-pagefall img { display: block; width: 100%; height: auto; }
/* D 12:02: tap areas. Inline links in sentences get a 40 px hit box on phones; footer legal links >= 40 px wide */
@media (max-width: 1000px) {
	.fp3-sec .fp-inlink, .fp-sector-hero .fp-inlink, .fp3-micro a { display: inline-block; padding-block: 11px; margin-block: -11px; }
}
.fp-site-footer__legal a { min-width: 44px; justify-content: center; }

/* contact form in a window on the light panel */
.fp3-formpanel { padding: 48px 7%; display: grid; justify-items: center; }
.fp3-formpanel > .fp3-win { width: 100%; max-width: 720px; }
.fp3-formpanel .fp3-win__body { padding: 28px 32px 32px !important; background: var(--fp3-card); max-height: none; overflow: visible; }
.fp3-formpanel .fp3-win__body > * { margin: revert !important; }
@media (max-width: 700px) { .fp3-formpanel { padding: 20px 10px; } .fp3-formpanel .fp3-win__body { padding: 20px 16px 24px !important; } }

/* V round 3, M11: a report crop never loses its edges (contain, not cover); M1-390: CTA pill never touches the burger */
.fp3-photo--none .fp3-photo__paper .fp3-crop, .fp3-hstage--light .fp3-win__body .fp3-crop { object-fit: contain; object-position: top center; }
@media (max-width: 600px) {
	.fp-site-header .fp3-burger { margin-inline-start: 12px; }
	.fp-site-header__right > .fp-btn--primary.fp-btn--small { max-width: 44vw; overflow: hidden; text-overflow: ellipsis; white-space: nowrap; }
}
@media (max-width: 1279px) { .fp-site-header .fp3-hdr-sample { white-space: nowrap; } }
@media (max-width: 1100px) { .fp-site-header .fp3-hdr-sample { display: none; } }

/* V round 4 (M1 at 390): the header pill shows the short site CTA with its full padding; no clipping, no ellipsis */
@media (max-width: 600px) {
	.fp-site-header__right > .fp-btn--primary.fp-btn--small { max-width: none; overflow: visible; text-overflow: clip; white-space: nowrap; padding: 8px 14px; font-size: .8rem; line-height: 1.2; }
	.fp-site-header__right > .fp-btn--primary.fp-btn--small > span { display: inline; }
}
@media (max-width: 360px) { .fp-site-header__right > .fp-btn--primary.fp-btn--small { padding: 8px 10px; font-size: .74rem; } }
/* small phones: smaller logo and gaps so the short CTA pill and the burger never overlap */
@media (max-width: 440px) {
	.fp-site-header .fp-brand__logo { height: 22px; width: auto; }
	.fp-site-header .fp-site-header__inner { gap: 6px; }
	.fp-site-header .fp-lang summary, .fp-site-header .fp-lang--menu > summary { padding-inline: 2px; min-width: 36px; }
	.fp-site-header .fp3-burger { margin-inline-start: 6px; width: 40px; }
}
@media (max-width: 360px) {
	.fp-site-header .fp-brand__logo { height: 19px; }
	.fp-site-header__right > .fp-btn--primary.fp-btn--small { padding: 7px 9px; font-size: .72rem; }
}
/* <= 399 px the header holds logo, language and burger only (logo + language + pill + burger need ~370 px with
   gutters): the signup CTA is the first button of every hero, right under the header */
@media (max-width: 399px) { .fp-site-header__right > .fp-btn--primary.fp-btn--small { display: none; } }
/* V m5: the no-photo persona hero crop keeps its own aspect (no letterbox band under it) */
.fp3-photo--none .fp3-photo__paper .fp3-crop { min-height: 0 !important; height: auto; max-height: none; object-fit: contain; }
