/* ═══════════════════════════════════════════════════════════════════════════
   partner-signup-v5: travel-agent.html + affiliate.html ("La Villa", Oct 2026)
   ─────────────────────────────────────────────────────────────────────────
   The two public partner signup pages redrawn as siblings of the V5
   accommodation page: cinematic hero under the fixed header, the two doors
   riding the hero's bottom edge, the shared sticky sub-nav, the ink "at a
   glance" band, parchment + toile bands, and the registration form as a
   letter sheet with a postage stamp. Loaded by agent/travel-agent-v5 and
   affiliate/landing only, after ivs-auth-v5.css (which owns the form voice:
   .ivs-aff-field / -label / -ctl / -select / -check / -err / -actions).
   Buttons come from ivs-buttons.css, the sub-nav from ivs-subnav.css,
   tokens from ivs-tokens.css (fallbacks kept, rule-wajib gotcha-teknis.md).
   Root: <main class="ivs-aff ivs-ps">. Every rule is prefixed .ivs-ps-.
   ═══════════════════════════════════════════════════════════════════════════ */

/* ── Root resets (ivs-auth-v5 gives p a bottom margin; the page sets its own rhythm) ── */
.ivs-ps { line-height: 1.6; -webkit-font-smoothing: antialiased; }
.ivs-ps p,
.ivs-ps :where(h1, h2, h3, ul, ol, dl, dd, dt, figure, figcaption, blockquote, fieldset, legend) { margin: 0; }
.ivs-ps :where(ul, ol) { padding: 0; list-style: none; }
.ivs-ps :where(fieldset) { padding: 0; border: 0; min-width: 0; }
.ivs-ps :where(legend) { padding: 0; float: none; width: auto; }
.ivs-ps img { max-width: 100%; height: auto; display: block; }
.ivs-ps-wrap {
    width: min(1560px, calc(100% - 4rem));
    margin-inline: auto;
}
/* The sticky sub-nav sits inside the page root, whose `a:not(.ivs-btn) { color:
   inherit }` reset (ivs-auth-v5 on the signup pages, partner-with-us-v5 on the
   centre page) would paint the active tab and the olive CTA ink-on-dark. Same
   fix the accommodation page applies with `.ivs-dt .ivs-subnav-cta`. */
.ivs-ps .ivs-subnav .ivs-subnav-tab.is-active,
.ivs-ps .ivs-subnav .ivs-subnav-cta { color: #fff; }
@media (hover: hover) {
    .ivs-ps .ivs-subnav .ivs-subnav-tab:hover { color: var(--v5-ink, #201f1d); }
    .ivs-ps .ivs-subnav .ivs-subnav-tab.is-active:hover { color: #fff; }
}
.ivs-ps-sec {
    padding: clamp(3rem, 5.5vw, 5.6rem) 0;
    scroll-margin-top: var(--ivs-subnav-offset, 194px);
}
/* Full-bleed bands carry no padding of their own but still rest under the bar. */
.ivs-ps-sec-flush { scroll-margin-top: var(--ivs-subnav-offset, 194px); }

/* ── Shared voices ── */
/* Section voices = the accommodation page (collection-detail.css
   .ivs-dt-eyebrow / .ivs-dt-title / h3 / .ivs-dt-prose), measured 17 Oct 2026
   so the three partner pages read exactly like the villa page. */
.ivs-ps-eyebrow {
    margin: 0 0 .9rem;
    font-family: var(--v5-font-label, 'Inter', ui-sans-serif, system-ui, sans-serif);
    font-size: .68rem;
    font-weight: 600;
    line-height: 1.5rem;
    letter-spacing: .26em;
    text-transform: uppercase;
    color: var(--v5-olive-700, #4a5e2f);
}
.ivs-ps-eyebrow--onink { color: var(--v5-olive-300, #a9b58f); }
.ivs-ps-h2 {
    margin: 0;
    font-family: var(--v5-font-display, 'Playfair Display', Georgia, serif);
    font-weight: 500;
    font-size: clamp(1.85rem, 3vw, 2.7rem);
    line-height: 1.2;
    color: var(--v5-ink, #201f1d);
    text-wrap: balance;
}
.ivs-ps-h3 {
    font-family: var(--v5-font-display, 'Playfair Display', Georgia, serif);
    font-weight: 500;
    font-size: 1.35rem;
    line-height: 1.3;
    color: var(--v5-ink, #201f1d);
}
.ivs-ps-deck {
    font-family: var(--v5-font-body, 'Lora', Georgia, serif);
    font-size: 1rem;
    line-height: 1.8;
    color: var(--v5-stone, #5b574d);
    max-width: 58ch;
}
.ivs-ps .ivs-btn { line-height: 1.5rem; }
.ivs-ps-small {
    font-family: var(--v5-font-label, 'Inter', ui-sans-serif, system-ui, sans-serif);
    font-size: .78rem;
    line-height: 1.55;
    color: var(--v5-stone, #5b574d);
}
.ivs-ps-small a,
.ivs-ps-help a { color: var(--v5-olive-700, #4a5e2f); text-decoration: underline; text-underline-offset: 3px; }
/* Tertiary link: label text + arrow, slides 4px on hover (rule-wajib tombol.md). */
.ivs-ps-tert {
    display: inline-flex;
    align-items: center;
    gap: .5rem;
    font-family: var(--v5-font-label, 'Inter', ui-sans-serif, system-ui, sans-serif);
    font-size: .72rem;
    font-weight: 600;
    letter-spacing: .14em;
    text-transform: uppercase;
    color: var(--v5-stone, #5b574d);
    transition: color .3s ease;
}
.ivs-ps-tert::after { content: '\2192'; transition: transform .3s ease; }
.ivs-ps-tert:hover { color: var(--v5-olive-700, #4a5e2f); }
.ivs-ps-tert:hover::after { transform: translateX(4px); }
.ivs-ps-tert:focus-visible { outline: 2px solid var(--v5-olive-500, #6b8051); outline-offset: 3px; }
/* The icon partial draws on a 32px box; hosts set the size. */
.ivs-ps .ivs-padv-icon { display: block; width: 30px; height: 30px; flex: none; overflow: visible; }

/* ── Parchment + toile band (same recipe as the accommodation page) ── */
.ivs-ps-band {
    position: relative;
    overflow: hidden;
    overflow: clip;
    background: var(--v5-parchment, #f2efe8);
    border-top: 1px solid var(--v5-line, #e4e0d5);
    border-bottom: 1px solid var(--v5-line, #e4e0d5);
    box-shadow: inset 0 14px 26px -14px rgba(32, 31, 29, .22), inset 0 -14px 26px -14px rgba(32, 31, 29, .22);
}
.ivs-ps-band::after {
    content: "";
    position: absolute;
    inset: 0;
    background: url(/images/italy-tile.webp) repeat;
    background-size: 620px;
    opacity: .13;
    pointer-events: none;
    -webkit-mask-image: linear-gradient(to bottom, transparent, #000 18%, #000 82%, transparent);
    mask-image: linear-gradient(to bottom, transparent, #000 18%, #000 82%, transparent);
}
@media (max-width: 1024px) { .ivs-ps-band::after { background-size: 420px; } }
.ivs-ps-band > * { position: relative; z-index: 1; }

/* ── Ink band (at a glance, closing concierge band) ── */
.ivs-ps-ink {
    position: relative;
    overflow: hidden;
    background: var(--v5-ink, #201f1d);
    color: var(--v5-parchment, #f2efe8);
    border-top: 1px solid #14130f;
    border-bottom: 1px solid #14130f;
    box-shadow: inset 0 8px 16px -10px rgba(0, 0, 0, .5), inset 0 -8px 16px -10px rgba(0, 0, 0, .5);
}
.ivs-ps-ink::after {
    content: "";
    position: absolute;
    inset: 0;
    pointer-events: none;
    background: url('/images/italy.png') repeat;
    background-size: 620px;
    opacity: .05;
}
.ivs-ps-ink > * { position: relative; z-index: 1; }

/* ── Hero: the accommodation hero, text at the bottom-left, under the fixed header ── */
.ivs-ps-hero {
    position: relative;
    overflow: hidden;
    background: #14130f;
    margin-top: 0;
    /* Hero + the 3.5rem sub-nav fill the first screen; the fixed header
       overlaps the top and is not subtracted. */
    height: calc(100svh - 3.5rem);
    min-height: 520px;
    display: flex;
    align-items: flex-end;
    justify-content: flex-start;
    padding-top: calc(var(--ivs-header-h, 130px) + 20px);
}
/* Two classes on purpose: the `.ivs-ps img { height: auto }` reset above would
   otherwise outrank this and leave the photo short of the hero's bottom edge
   below ~1100px. */
.ivs-ps .ivs-ps-hero-media {
    position: absolute;
    inset: 0;
    width: 100%;
    height: 100%;
    object-fit: cover;
}
.ivs-ps-hero-scrim {
    position: absolute;
    inset: 0;
    background:
        /* Left wash so the amber eyebrow and the title read over a bright sea or sky. */
        linear-gradient(to right, rgba(0, 0, 0, .42), rgba(0, 0, 0, .18) 45%, transparent 70%),
        radial-gradient(ellipse 85% 70% at 15% 100%, rgba(0, 0, 0, .5), transparent 68%),
        linear-gradient(to bottom, rgba(0, 0, 0, .25) 0%, rgba(0, 0, 0, .1) 50%, rgba(0, 0, 0, .8) 100%);
}
/* travel-agent.html hero (Vieste, 26 Oct 2026): the lit town sits right behind the
   eyebrow and title, so this page's left wash is deeper than the shared one. */
.ivs-ps-hero--deep-wash .ivs-ps-hero-scrim {
    background:
        linear-gradient(to right, rgba(0, 0, 0, .62), rgba(0, 0, 0, .36) 45%, transparent 75%),
        radial-gradient(ellipse 85% 70% at 15% 100%, rgba(0, 0, 0, .5), transparent 68%),
        linear-gradient(to bottom, rgba(0, 0, 0, .25) 0%, rgba(0, 0, 0, .1) 50%, rgba(0, 0, 0, .8) 100%);
}
.ivs-ps-hero-text {
    position: relative;
    z-index: 2;
    color: #fff;
    padding-top: 3rem;
    /* Room for the doors sheet that rides up over the bottom edge. */
    padding-bottom: clamp(7rem, 12vw, 9.5rem);
    min-width: 0;
}
/* Hero identity voice = the accommodation hero (collection-detail.css
   .ivs-dt-heroid-eyebrow / -rule / .ivs-dt-name / -heroid-facts): amber
   eyebrow with the gold 2px rule (amber is legal on a dark ground), the
   tour-scale title at weight 400, label-voice facts at .92 white. */
.ivs-ps-hero-text .ivs-ps-eyebrow {
    display: flex;
    align-items: center;
    gap: .75rem;
    margin: 0 0 1.4rem;
    font-size: .74rem;
    letter-spacing: .24em;
    color: var(--v5-amber, #fcb913);
    text-shadow: 0 1px 8px rgba(0, 0, 0, .7);
}
.ivs-ps-hero-text .ivs-ps-eyebrow::before { content: ''; display: inline-block; width: 2.25rem; height: 2px; background: var(--v5-gold, #b9995b); }
.ivs-ps-h1 {
    margin: 0;
    max-width: 24ch;
    font-family: var(--v5-font-display, 'Playfair Display', Georgia, serif);
    font-weight: 400;
    /* Tracks the tour hero's title scale: 1.9rem on phones up to 3rem @1366+. */
    font-size: clamp(1.9rem, 1.05rem + 2.35vw, 3rem);
    line-height: 1.12;
    letter-spacing: -.025em;
    color: #fff;
    text-wrap: balance;
    text-shadow: 0 1px 3px rgba(0, 0, 0, .5), 0 4px 20px rgba(0, 0, 0, .55);
}
.ivs-ps-hero-text .ivs-ps-deck {
    margin-top: 1rem;
    max-width: 56ch;
    font-size: 1rem;
    line-height: 1.8;
    color: rgba(255, 255, 255, .92);
    text-shadow: 0 1px 8px rgba(0, 0, 0, .6);
}
.ivs-ps-cred {
    display: flex;
    flex-wrap: wrap;
    gap: .35rem 1rem;
    margin-top: 1.1rem;
    font-family: var(--v5-font-label, 'Inter', ui-sans-serif, system-ui, sans-serif);
    font-size: .68rem;
    font-weight: 600;
    letter-spacing: .14em;
    text-transform: uppercase;
    color: rgba(255, 255, 255, .92);
}
.ivs-ps-cred li::before {
    content: '';
    display: inline-block;
    width: 5px;
    height: 5px;
    margin-right: .55rem;
    vertical-align: middle;
    background: var(--v5-gold, #b9995b);
}

/* ── The doors: an ivory sheet riding the hero's bottom edge ── */
.ivs-ps-doors {
    position: relative;
    z-index: 3;
    margin-top: clamp(-6.5rem, -8vw, -5.5rem);
    /* Room under the sheet so it floats with its full shadow instead of fusing
       with the sub-nav below it (bos, option A, 27 Oct 2026). */
    margin-bottom: 2.5rem;
}
/* Hairline on top of the sub-nav while it sits in the page, so it reads as its own
   bar. An inset shadow, not a border: no 1px jump when it sticks, and once stuck
   the component's own shadow takes over unchanged. Partner pages only. */
.ivs-ps .ivs-subnav:not(.is-stuck) { box-shadow: inset 0 1px 0 var(--v5-line, #e4e0d5); }
.ivs-ps-sheet {
    display: grid;
    grid-template-columns: 1fr 1fr;
    background: var(--v5-ivory, #faf9f6);
    border-top: 3px solid var(--v5-olive-700, #4a5e2f);
    box-shadow: 0 24px 60px -24px rgba(32, 31, 29, .45);
}
.ivs-ps-door {
    display: grid;
    grid-template-columns: 44px 1fr;
    gap: 1.1rem;
    align-items: start;
    min-width: 0;
    padding: clamp(1.4rem, 2.6vw, 2.3rem) clamp(1.3rem, 3vw, 2.8rem);
}
.ivs-ps-door + .ivs-ps-door { border-left: 1px solid var(--v5-line, #e4e0d5); }
.ivs-ps-door-ico {
    display: grid;
    place-items: center;
    width: 44px;
    height: 44px;
    padding: 10px;
    border-radius: 50%;
    background: var(--v5-olive-700, #4a5e2f);
    color: var(--v5-ivory, #faf9f6);
}
.ivs-ps-door--new .ivs-ps-door-ico { background: var(--v5-olive-900, #33421f); }
.ivs-ps-door-ico .ivs-padv-icon { width: 24px; height: 24px; }
.ivs-ps-door-body { min-width: 0; }
.ivs-ps-door-kick {
    font-family: var(--v5-font-label, 'Inter', ui-sans-serif, system-ui, sans-serif);
    font-size: .66rem;
    font-weight: 600;
    letter-spacing: .24em;
    text-transform: uppercase;
    color: var(--v5-olive-700, #4a5e2f);
}
.ivs-ps-door .ivs-ps-h3 { margin-top: .3rem; font-size: 1.45rem; }
.ivs-ps-door-copy { margin-top: .45rem; max-width: 40ch; font-size: .95rem; line-height: 1.6; color: var(--v5-stone, #5b574d); }
.ivs-ps-door-act {
    display: flex;
    flex-wrap: wrap;
    align-items: center;
    gap: .6rem 1.2rem;
    margin-top: 1rem;
}

/* ── At a glance (the accommodation page's ink band, verbatim rhythm) ── */
.ivs-ps-glance {
    padding: clamp(2rem, 3.4vw, 2.8rem) 0 clamp(2.1rem, 3.6vw, 3rem);
    text-align: center;
}
.ivs-ps-glance-eyebrow {
    margin-bottom: 1.1rem;
    font-family: var(--v5-font-label, 'Inter', sans-serif);
    font-size: .68rem;
    font-weight: 600;
    letter-spacing: .26em;
    text-transform: uppercase;
    color: var(--v5-olive-300, #a9b58f);
}
.ivs-ps-glance .ivs-padv-icon {
    flex: none;
    width: 20px;
    height: 20px;
    color: var(--v5-gold, #b9995b);
}
.ivs-ps-glance-counts {
    display: flex;
    flex-wrap: wrap;
    justify-content: center;
    row-gap: .8rem;
}
.ivs-ps-glance-counts li {
    display: inline-flex;
    align-items: center;
    gap: .7rem;
    padding: 0 1.7rem;
    font-family: var(--v5-font-label, 'Inter', sans-serif);
    font-size: .76rem;
    font-weight: 600;
    line-height: 1.4;
    letter-spacing: .18em;
    text-transform: uppercase;
    color: var(--v5-ivory, #faf9f6);
}
.ivs-ps-glance-counts li + li { border-left: 1px solid rgba(242, 239, 232, .22); }
.ivs-ps-glance-hl {
    display: flex;
    flex-wrap: wrap;
    justify-content: center;
    gap: .9rem 2.6rem;
    max-width: 62rem;
    margin: 1.4rem auto 0;
    padding-top: 1.3rem;
    border-top: 1px solid rgba(242, 239, 232, .12);
}
.ivs-ps-glance-hl li {
    display: inline-flex;
    align-items: center;
    gap: .65rem;
    font-family: var(--v5-font-body, 'Lora', Georgia, serif);
    font-size: 1.02rem;
    font-style: italic;
    line-height: 1.4;
    color: rgba(242, 239, 232, .9);
    text-align: left;
}
@media (max-width: 767px) {
    .ivs-ps-glance-counts,
    .ivs-ps-glance-hl {
        display: inline-flex;
        flex-direction: column;
        align-items: flex-start;
        gap: .75rem;
    }
    .ivs-ps-glance-counts li { padding: 0; font-size: .72rem; letter-spacing: .14em; }
    .ivs-ps-glance-counts li + li { border-left: 0; }
    .ivs-ps-glance-hl {
        display: flex;
        width: fit-content;
        max-width: 100%;
        margin-top: 1.2rem;
        padding-top: 1.1rem;
    }
    .ivs-ps-glance-hl li { font-size: .95rem; }
}

/* ── Why: pull quote left (sticky), ledger right ── */
.ivs-ps-why {
    display: grid;
    grid-template-columns: minmax(0, 5fr) minmax(0, 7fr);
    gap: clamp(2rem, 5vw, 5rem);
    align-items: start;
}
.ivs-ps-why > * { min-width: 0; }
.ivs-ps-why-lead { position: sticky; top: calc(var(--ivs-subnav-offset, 194px) + .5rem); }
/* Pull quote = .ivs-dt-quote: same scale, gold opening and closing marks. */
.ivs-ps-pull {
    margin-top: 1.6rem;
    max-width: 34ch;
    font-family: var(--v5-font-display, 'Playfair Display', Georgia, serif);
    font-style: italic;
    font-weight: 500;
    font-size: clamp(1.3rem, 2.2vw, 1.9rem);
    line-height: 1.4;
    color: var(--v5-ink, #201f1d);
}
.ivs-ps-pull::before { content: "\201C"; color: var(--v5-gold, #b9995b); }
.ivs-ps-pull::after { content: "\201D"; color: var(--v5-gold, #b9995b); }
.ivs-ps-pull-by {
    margin-top: 1.1rem;
    font-family: var(--v5-font-label, 'Inter', ui-sans-serif, system-ui, sans-serif);
    font-size: .7rem;
    letter-spacing: .18em;
    text-transform: uppercase;
    color: var(--v5-mist, #8b877c);
}
.ivs-ps-ledger { border-top: 1px solid var(--v5-line, #e4e0d5); }
.ivs-ps-ledger-row {
    display: grid;
    grid-template-columns: 30px 1fr;
    gap: 1.2rem;
    align-items: start;
    padding: 1.35rem 0;
    border-bottom: 1px solid var(--v5-line, #e4e0d5);
}
.ivs-ps-ledger-row > * { min-width: 0; }
.ivs-ps-ledger-row .ivs-padv-icon { margin-top: .15rem; color: var(--v5-olive-700, #4a5e2f); }
.ivs-ps-ledger-row p { margin-top: .35rem; max-width: 62ch; font-size: 1rem; line-height: 1.8; color: var(--v5-stone, #5b574d); }

/* ── Editorial photo band (Drivers in Italy), full-bleed two columns ── */
.ivs-ps-edit {
    display: grid;
    grid-template-columns: minmax(0, 6fr) minmax(0, 6fr);
}
.ivs-ps-edit > * { min-width: 0; }
.ivs-ps-edit-ph { position: relative; min-height: 420px; }
.ivs-ps-edit-ph img {
    position: absolute;
    inset: 0;
    width: 100%;
    height: 100%;
    object-fit: cover;
}
.ivs-ps-edit-tx {
    display: flex;
    flex-direction: column;
    justify-content: center;
    align-items: flex-start;
    padding: clamp(2.4rem, 5vw, 5rem) clamp(1.4rem, 4.5vw, 4.5rem);
}
.ivs-ps-edit-tx p:not(.ivs-ps-eyebrow) { margin-top: 1rem; max-width: 56ch; line-height: 1.8; color: var(--v5-stone, #5b574d); }
.ivs-ps-edit-tx .ivs-ps-tert { margin-top: 1.5rem; }
/* Drivers band (27 Oct 2026): the text link and the Drivers in Italy button on one row. */
.ivs-ps-edit-act {
    display: flex;
    flex-wrap: wrap;
    align-items: center;
    gap: 1rem 1.8rem;
    margin-top: 1.5rem;
}
.ivs-ps-edit-act .ivs-ps-tert { margin-top: 0; }
/* Gold ribbon hanging from the photo's top edge, swallowtail cut. */
.ivs-ps-ribbon {
    position: absolute;
    top: 0;
    right: clamp(1.2rem, 4vw, 3rem);
    z-index: 3;
    width: 92px;
    padding: 1.4rem .4rem 1.9rem;
    text-align: center;
    color: var(--v5-ink, #201f1d);
    background: linear-gradient(180deg, #d4b878, var(--v5-gold, #b9995b) 55%, #a8884b);
    clip-path: polygon(0 0, 100% 0, 100% 100%, 50% 84%, 0 100%);
    font-family: var(--v5-font-label, 'Inter', ui-sans-serif, system-ui, sans-serif);
    font-size: .58rem;
    font-weight: 600;
    /* .12em (was .16em): Spanish "EXPERIENCIA" fills the 92px ribbon. */
    letter-spacing: .12em;
    line-height: 1.35;
    text-transform: uppercase;
    filter: drop-shadow(0 8px 10px rgba(0, 0, 0, .35));
    pointer-events: none;
}
.ivs-ps-ribbon b {
    display: block;
    margin-bottom: .3rem;
    font-family: var(--v5-font-display, 'Playfair Display', Georgia, serif);
    font-weight: 600;
    font-size: 1.9rem;
    line-height: 1;
    letter-spacing: 0;
}
.ivs-ps-ribbon::after {
    content: '';
    position: absolute;
    inset: 7px 7px 13px;
    border: 1px solid rgba(32, 31, 29, .35);
    clip-path: polygon(0 0, 100% 0, 100% 100%, 50% 86%, 0 100%);
}

/* ── Register / Apply: what happens next (sticky) + the letter sheet ── */
.ivs-ps-reg {
    display: grid;
    grid-template-columns: minmax(0, 4fr) minmax(0, 8fr);
    gap: clamp(2rem, 4vw, 4rem);
    align-items: start;
}
.ivs-ps-reg > * { min-width: 0; }
.ivs-ps-side { position: sticky; top: calc(var(--ivs-subnav-offset, 194px) + .5rem); }
.ivs-ps-steps {
    position: relative;
    margin-top: 1.6rem;
    padding-left: 2.3rem;
}
.ivs-ps-steps::before {
    content: '';
    position: absolute;
    left: 13px;
    top: 8px;
    bottom: 8px;
    width: 1px;
    background: var(--v5-olive-300, #a9b58f);
}
.ivs-ps-steps li { position: relative; padding-bottom: 1.4rem; }
.ivs-ps-steps li:last-child { padding-bottom: 0; }
.ivs-ps-steps i {
    position: absolute;
    left: -2.3rem;
    top: 0;
    display: grid;
    place-items: center;
    width: 27px;
    height: 27px;
    border-radius: 50%;
    border: 1px solid var(--v5-olive-500, #6b8051);
    background: var(--v5-ivory, #faf9f6);
    color: var(--v5-olive-700, #4a5e2f);
    font: 600 .66rem var(--v5-font-label, 'Inter', ui-sans-serif, system-ui, sans-serif);
    font-style: normal;
}
.ivs-ps-steps .ivs-ps-h3 { font-size: 1.05rem; }
.ivs-ps-steps p { margin-top: .25rem; font-size: 1rem; line-height: 1.8; color: var(--v5-stone, #5b574d); }
.ivs-ps-next-body { margin-top: 1.4rem; font-size: 1rem; line-height: 1.8; color: var(--v5-stone, #5b574d); }
.ivs-ps-help {
    margin-top: 1.6rem;
    padding-top: 1.2rem;
    border-top: 1px solid var(--v5-line, #e4e0d5);
}
.ivs-ps-help p + p { margin-top: .5rem; }
/* The legacy global p colour (#333) must not win over the small voice. */
.ivs-ps-help p { color: inherit; }
.ivs-ps-form-sheet {
    position: relative;
    padding: clamp(1.4rem, 3vw, 2.8rem);
    background: var(--v5-ivory, #faf9f6);
    border: 1px solid var(--v5-line, #e4e0d5);
    box-shadow: 0 24px 60px -30px rgba(32, 31, 29, .4);
}
.ivs-ps-stamp {
    position: absolute;
    top: -18px;
    right: 34px;
    width: 86px;
    height: 106px;
    padding: 5px;
    background: #fff;
    box-shadow: 0 10px 20px -12px rgba(0, 0, 0, .5);
    transform: rotate(3deg);
    pointer-events: none;
}
.ivs-ps-stamp::before {
    content: '';
    position: absolute;
    inset: -4px;
    z-index: -1;
    background: radial-gradient(circle, transparent 60%, #fff 62%) 0 0 / 9px 9px;
}
.ivs-ps-stamp img { width: 100%; height: 100%; object-fit: cover; }
.ivs-ps-form-sheet .ivs-ps-h2 { font-size: 1.7rem; max-width: calc(100% - 110px); }
.ivs-ps-form-intro { margin-top: .55rem; max-width: 58ch; font-size: .95rem; line-height: 1.65; color: var(--v5-stone, #5b574d); }
.ivs-ps-form-sheet form { margin-top: 1.5rem; }
.ivs-ps-form-sheet .ivs-aff-grid2 { gap: 0 1.4rem; }
.ivs-ps-radios { display: flex; flex-wrap: wrap; gap: .6rem 1.6rem; }
.ivs-ps-radios .ivs-aff-check { align-items: center; }
.ivs-ps-radios .ivs-aff-check input { margin-top: 0; }
.ivs-ps-fieldset .ivs-aff-label { margin-bottom: .55rem; }
.ivs-ps-req { color: var(--v5-olive-700, #4a5e2f); font-weight: 600; }
.ivs-ps-approval {
    margin-top: 1.2rem;
    padding: .9rem 1rem;
    border-left: 3px solid var(--v5-olive-500, #6b8051);
    background: var(--v5-parchment, #f2efe8);
    font-family: var(--v5-font-label, 'Inter', ui-sans-serif, system-ui, sans-serif);
    font-size: .78rem;
    line-height: 1.55;
    color: var(--v5-stone, #5b574d);
}
.ivs-ps-form-sheet .ivs-aff-actions { margin-top: 1.3rem; gap: .8rem 1.4rem; }
.ivs-ps-applied { padding: .4rem 0; }
.ivs-ps-applied p { margin-top: .8rem; color: var(--v5-stone, #5b574d); line-height: 1.7; }
.ivs-ps-applied a { display: inline-block; margin-top: 1rem; }

/* ── Story band (agent testimonial + postcard) ── */
/* Bos 26 Oct 2026: smaller quote that runs wider, so the text block ends up
   about as tall as the postcard beside it instead of a long narrow column. */
.ivs-ps-story {
    display: grid;
    grid-template-columns: minmax(0, 7fr) minmax(0, 5fr);
    gap: clamp(2rem, 4vw, 3.5rem);
    align-items: center;
}
.ivs-ps-story > * { min-width: 0; }
.ivs-ps-story blockquote {
    margin-top: 1.2rem;
    max-width: 68ch;
    font-family: var(--v5-font-display, 'Playfair Display', Georgia, serif);
    font-style: italic;
    font-weight: 500;
    font-size: clamp(1.1rem, 1.45vw, 1.3rem);
    line-height: 1.55;
    color: var(--v5-ink, #201f1d);
}
.ivs-ps-story blockquote::before { content: "\201C"; color: var(--v5-gold, #b9995b); }
.ivs-ps-story blockquote::after { content: "\201D"; color: var(--v5-gold, #b9995b); }
/* Two classes: a paragraph reset outranked the plain .ivs-ps-story-by margin and glued the name to the quote. */
.ivs-ps-story .ivs-ps-story-by {
    margin-top: 1.25rem;
    font-family: var(--v5-font-label, 'Inter', ui-sans-serif, system-ui, sans-serif);
    font-size: .72rem;
    letter-spacing: .16em;
    text-transform: uppercase;
    color: var(--v5-olive-700, #4a5e2f);
}
.ivs-ps-story-by small {
    display: block;
    margin-top: .25rem;
    font-size: .74rem;
    letter-spacing: .1em;
    text-transform: none;
    color: var(--v5-mist, #8b877c);
}
.ivs-ps-postcard {
    max-width: 440px;
    /* Centred in its column (was pushed right), so it sits closer to the quote on wide screens. */
    margin-inline: auto;
    padding: 8px 8px 34px;
    background: #fff;
    box-shadow: 0 18px 40px -22px rgba(32, 31, 29, .5);
    transform: rotate(-2deg);
}
.ivs-ps-postcard img { width: 100%; aspect-ratio: 4 / 3; object-fit: cover; }
.ivs-ps-postcard figcaption {
    margin-top: .6rem;
    font-family: var(--v5-font-display, 'Playfair Display', Georgia, serif);
    font-style: italic;
    font-size: .92rem;
    text-align: center;
    color: var(--v5-stone, #5b574d);
}

/* ── Closing concierge band ── */
.ivs-ps-close {
    display: grid;
    grid-template-columns: minmax(0, 6fr) minmax(0, 6fr);
    gap: 2rem 4rem;
    align-items: center;
}
.ivs-ps-close > * { min-width: 0; }
/* A page that closes with its own partner band skips the footer's traveller card
   ("Plan a Better Trip to Italy"): same numbers twice, and the wrong audience
   (bos, 27 Oct 2026). Same move as newsletter-v5.css; the footer links, the
   Constant Contact form and #goto-topJS stay. */
body:has(.ivs-ps-close) #footer .fv5-card { display: none; }
.ivs-ps-close .ivs-ps-h2 { color: var(--v5-ivory, #faf9f6); }
.ivs-ps-close-copy { margin-top: .8rem; max-width: 50ch; color: rgba(242, 239, 232, .8); }
.ivs-ps-lines { border-top: 1px solid rgba(242, 239, 232, .18); }
.ivs-ps-lines li {
    display: grid;
    grid-template-columns: 1fr auto;
    gap: 1rem;
    align-items: center;
    padding: .95rem 0;
    border-bottom: 1px solid rgba(242, 239, 232, .18);
}
.ivs-ps-lines li > * { min-width: 0; }
.ivs-ps-line-k {
    font-family: var(--v5-font-label, 'Inter', ui-sans-serif, system-ui, sans-serif);
    font-size: .62rem;
    letter-spacing: .22em;
    text-transform: uppercase;
    color: var(--v5-olive-300, #a9b58f);
}
.ivs-ps-line-v {
    margin-top: .15rem;
    font-family: var(--v5-font-label, 'Inter', ui-sans-serif, system-ui, sans-serif);
    font-weight: 600;
    font-size: 1rem;
    letter-spacing: .08em;
    color: var(--v5-ivory, #faf9f6);
    overflow-wrap: anywhere;
}
.ivs-ps-line-v a { color: inherit; }
/* Amber only here, on ink, for the email line (the mockup's one accent). */
.ivs-ps-line-v--amber { color: var(--v5-amber, #fcb913); }
.ivs-ps-ink .ivs-btn--ghost { padding: .7rem 1.2rem; }

/* ── The Passage (affiliate how-it-works): a journey line, alternating postcards ── */
.ivs-ps-passage { position: relative; margin-top: 2.4rem; }
.ivs-ps-passage::before {
    content: '';
    position: absolute;
    left: 50%;
    top: 0;
    bottom: 0;
    width: 1px;
    background: var(--v5-olive-300, #a9b58f);
}
.ivs-ps-stop {
    display: grid;
    grid-template-columns: 1fr 60px 1fr;
    align-items: center;
    padding: 1.2rem 0;
}
.ivs-ps-stop > * { min-width: 0; }
.ivs-ps-stop-n {
    position: relative;
    z-index: 1;
    display: grid;
    place-items: center;
    width: 34px;
    height: 34px;
    margin: 0 auto;
    border-radius: 50%;
    border: 1px solid var(--v5-olive-500, #6b8051);
    background: var(--v5-ivory, #faf9f6);
    color: var(--v5-olive-700, #4a5e2f);
    font: 600 .7rem var(--v5-font-label, 'Inter', ui-sans-serif, system-ui, sans-serif);
}
.ivs-ps-stop-card { max-width: 420px; }
.ivs-ps-stop-card p { margin-top: .4rem; font-size: .95rem; line-height: 1.7; color: var(--v5-stone, #5b574d); }
.ivs-ps-stop:nth-child(odd) .ivs-ps-stop-card { justify-self: end; text-align: right; margin-right: 1.5rem; }
.ivs-ps-stop:nth-child(even) .ivs-ps-stop-card { grid-column: 3; justify-self: start; margin-left: 1.5rem; }
.ivs-ps-stop:nth-child(even) .ivs-ps-stop-n { grid-column: 2; grid-row: 1; }
.ivs-ps-stop:nth-child(even) .ivs-ps-stop-pc { grid-column: 1; grid-row: 1; justify-self: end; margin-right: 1.5rem; }
.ivs-ps-stop:nth-child(odd) .ivs-ps-stop-pc { grid-column: 3; justify-self: start; margin-left: 1.5rem; }
.ivs-ps-stop-pc {
    width: min(300px, 100%);
    padding: 6px;
    background: #fff;
    box-shadow: 0 14px 30px -18px rgba(32, 31, 29, .5);
    transform: rotate(-1.5deg);
}
.ivs-ps-stop:nth-child(even) .ivs-ps-stop-pc { transform: rotate(1.5deg); }
.ivs-ps-stop-pc img { width: 100%; aspect-ratio: 4 / 3; object-fit: cover; }
@media (max-width: 800px) {
    .ivs-ps-passage::before { left: 17px; }
    .ivs-ps-stop { grid-template-columns: 34px 1fr; gap: 1rem; }
    .ivs-ps-stop .ivs-ps-stop-n { grid-column: 1; grid-row: 1; margin: 0; }
    .ivs-ps-stop .ivs-ps-stop-card,
    .ivs-ps-stop:nth-child(odd) .ivs-ps-stop-card,
    .ivs-ps-stop:nth-child(even) .ivs-ps-stop-card { grid-column: 2; grid-row: 1; justify-self: start; text-align: left; margin: 0; }
    .ivs-ps-stop .ivs-ps-stop-pc,
    .ivs-ps-stop:nth-child(odd) .ivs-ps-stop-pc,
    .ivs-ps-stop:nth-child(even) .ivs-ps-stop-pc { grid-column: 2; grid-row: 2; justify-self: start; margin: .8rem 0 0; transform: none; }
}

/* ── Who it's for: heading + ledger of three ── */
.ivs-ps-who {
    display: grid;
    grid-template-columns: minmax(0, 5fr) minmax(0, 7fr);
    gap: clamp(2rem, 5vw, 5rem);
    align-items: center;
}
.ivs-ps-who > * { min-width: 0; }
.ivs-ps-who .ivs-ps-ledger-row { align-items: center; }
.ivs-ps-who .ivs-ps-ledger-row .ivs-padv-icon { margin-top: 0; }
.ivs-ps-who .ivs-ps-ledger-row .ivs-ps-h3 { font-size: 1.15rem; }

/* ── Tablet and below: every grid stacks ── */
@media (max-width: 900px) {
    .ivs-ps-sheet { grid-template-columns: 1fr; }
    .ivs-ps-door + .ivs-ps-door { border-left: 0; border-top: 1px solid var(--v5-line, #e4e0d5); }
    .ivs-ps-door { grid-template-columns: 1fr; }
    .ivs-ps-door-ico { display: none; }
    .ivs-ps-doors { margin-top: -3.5rem; }
    .ivs-ps-hero-text { padding-bottom: 5.5rem; }
    .ivs-ps-why,
    .ivs-ps-reg,
    .ivs-ps-story,
    .ivs-ps-close,
    .ivs-ps-who { grid-template-columns: 1fr; }
    .ivs-ps-why-lead,
    .ivs-ps-side { position: static; }
    .ivs-ps-edit { grid-template-columns: 1fr; }
    .ivs-ps-edit-ph { min-height: 0; aspect-ratio: 3 / 2; }
    .ivs-ps-postcard { margin: 0 auto; }
}
/* ── Phones ── */
@media (max-width: 767px) {
    .ivs-ps-wrap { width: calc(100% - 2rem); }
    /* Shorter hero so the doors sheet is reachable on the first screen. */
    .ivs-ps-hero { height: auto; min-height: 72svh; }
    .ivs-ps-doors { margin-bottom: 1.75rem; }
}
@media (max-width: 600px) {
    .ivs-ps-stamp { right: 16px; width: 66px; height: 82px; }
    .ivs-ps-form-sheet .ivs-ps-h2 { max-width: calc(100% - 80px); }
}
@media (prefers-reduced-motion: reduce) {
    .ivs-ps-tert,
    .ivs-ps-tert::after { transition: none; }
}
