/* ============================================================
   C3DP — Partner Hub styles (P1, spec F4)
   Brand system per admin.css — #2487ce blue, sharp corners,
   uppercase micro-labels — with the Partner Hub accent #fd784f
   (the one agreed brand-colour deviation, spec §11; applies here only).
   New file, loaded only by partner views via $headExtra.
   ============================================================ */

:root {
  --ph-accent: #fd784f;        /* stockist accent (spec §11) */
  --ph-teal: #009688;          /* affiliate accent (Paul, 2026-08-19) */
  --ph-teal-hover: #00877a;
  --ph-accent-hover: #f0663c;
  --ph-blue: #2487ce;
  --ph-border: #e2e8f0;
  --ph-muted: #64748b;
  --ph-dark: #1e293b;
}

/* ── Partner Hub programme accents ─────────────────────────────
   No lime inside the Partner Hub (spec §11): stockist-side primary
   actions are #fd784f, affiliate-side #009688. Storefront scope
   classes are set on each page's <main>/<form>; admin partner views
   load this sheet via $adminHeadExtra and use the adm-btn variants. */

.partner-scope-stockist .btn--primary,
.phub-card--stockist .btn--primary { background: var(--ph-accent); color: #fff; }
.partner-scope-stockist .btn--primary:hover,
.phub-card--stockist .btn--primary:hover { background: var(--ph-accent-hover); color: #fff; }

.partner-scope-affiliate .btn--primary,
.phub-card--alt .btn--primary { background: var(--ph-teal); color: #fff; }
.partner-scope-affiliate .btn--primary:hover,
.phub-card--alt .btn--primary:hover { background: var(--ph-teal-hover); color: #fff; }

/* Collapsible admin cards (rev2 — Business/Application fold away) */
.ph-collapse > summary { list-style: none; cursor: pointer; padding: 14px 20px; display: flex; justify-content: space-between; align-items: center; gap: 10px; }
.ph-collapse > summary::-webkit-details-marker { display: none; }
.ph-collapse > summary .ph-collapse__title { font-size: 11px; font-weight: 800; letter-spacing: .12em; text-transform: uppercase; color: var(--ph-dark); }
.ph-collapse > summary .ph-collapse__hint { font-size: 11px; color: var(--ph-muted); margin-left: auto; }
.ph-collapse > summary::after { content: '▸'; font-size: 12px; color: var(--ph-muted); }
.ph-collapse[open] > summary::after { content: '▾'; }
.ph-collapse[open] > summary { border-bottom: 1.5px solid var(--ph-border); }

.adm-btn--phs { background: var(--ph-accent); color: #fff; }
.adm-btn--phs:hover { background: var(--ph-accent-hover); color: #fff; text-decoration: none; }
.adm-btn--pha { background: var(--ph-teal); color: #fff; }
.adm-btn--pha:hover { background: var(--ph-teal-hover); color: #fff; text-decoration: none; }

/* ── Shared page bits ─────────────────────────────────────── */

/* rev2 (Paul, 2026-08-19): main.css has NO generic .container rule —
   every page scopes its own (.faq-page .container etc.). The partner
   pages used a bare .container and rendered full-bleed with no side
   padding. Scope the container here, matching the house pattern. */
.partner-pitch .container,
.partner-apply .container,
.ptrade .container { max-width: 1280px; margin: 0 auto; padding: 0 48px 48px; }
.partner-pitch .container--narrow,
.partner-apply .container--narrow,
.ptrade .container--narrow { max-width: 860px; }
@media (max-width: 768px) {
  .partner-pitch .container,
  .partner-apply .container,
  .ptrade .container { padding: 0 24px 40px; }
}

.container--narrow { max-width: 860px; margin: 0 auto; }

.partner-pitch, .partner-apply { padding: 32px 0 64px; }
.partner-pitch__body { max-width: 720px; }
.partner-pitch__body p { margin: 0 0 14px; line-height: 1.7; }
.partner-pitch__cta { margin-top: 28px; }

.acct-header__sub { color: var(--ph-muted); font-size: 14px; margin-top: 6px; }

/* ── Notices ──────────────────────────────────────────────── */

.partner-notice { border: 1.5px solid var(--ph-border); border-left: 4px solid var(--ph-blue); background: #fff; padding: 16px 18px; margin: 0 0 20px; }
.partner-notice p { margin: 6px 0 0; line-height: 1.6; }
.partner-notice .btn { margin-top: 12px; margin-right: 8px; }
.partner-notice--success { border-left-color: #16a34a; }
.partner-notice--warn    { border-left-color: #d97706; background: #fffbeb; }
.partner-notice--error   { border-left-color: #dc2626; background: #fef2f2; }
.partner-notice--info    { border-left-color: var(--ph-blue); }

/* ── Application form ─────────────────────────────────────── */

.partner-form { max-width: 760px; }
.partner-form__grid { display: grid; grid-template-columns: 1fr 1fr; gap: 0 20px; }
.partner-form__group { margin-bottom: 16px; }
.partner-form__label { display: block; font-size: 11px; font-weight: 700; letter-spacing: .08em; text-transform: uppercase; color: var(--ph-dark); margin-bottom: 6px; }
.partner-form__input { width: 100%; border: 1.5px solid var(--ph-border); padding: 10px 12px; font: inherit; font-size: 14px; background: #fff; border-radius: 0; }
.partner-form__input:focus { outline: none; border-color: var(--ph-blue); }
.partner-form__hint { display: block; font-size: 12px; color: var(--ph-muted); margin-top: 4px; }
.partner-form__check label { display: flex; gap: 10px; align-items: flex-start; font-size: 14px; line-height: 1.5; cursor: pointer; }
.partner-form__check input { margin-top: 3px; }
.partner-form__radios { display: flex; gap: 18px; align-items: center; flex-wrap: wrap; }
.partner-form__radios .partner-form__label { margin: 0; flex-basis: 100%; }
.partner-form__radios label { font-size: 14px; display: inline-flex; gap: 6px; align-items: center; cursor: pointer; }
.partner-form__actions { margin-top: 24px; }

.partner-social-row { display: grid; grid-template-columns: 1fr 1fr 100px; gap: 8px; margin-bottom: 8px; }

/* Honeypot — moved off-canvas, never display:none (some bots skip those) */
.partner-hp { position: absolute; left: -9999px; top: -9999px; height: 1px; width: 1px; overflow: hidden; }

.partner-terms { border: 1.5px solid var(--ph-border); background: #f8fafc; }
.partner-terms summary { padding: 12px 14px; font-size: 12px; font-weight: 700; letter-spacing: .06em; text-transform: uppercase; cursor: pointer; }
.partner-terms__body { padding: 4px 16px 16px; max-height: 320px; overflow-y: auto; font-size: 13px; line-height: 1.7; }

/* ── Hub landing cards ────────────────────────────────────── */

.phub-grid { display: grid; grid-template-columns: 1fr 1fr; gap: 20px; }

.phub-card { border: 1.5px solid var(--ph-border); border-top: 3px solid var(--ph-accent); background: #fff; display: flex; flex-direction: column; }
.phub-card--alt { border-top-color: var(--ph-teal); }
.phub-card--muted { background: #f8fafc; }
.phub-card__body { padding: 20px 22px; flex: 1; }
.phub-card__eyebrow { font-size: 10px; font-weight: 800; letter-spacing: .18em; text-transform: uppercase; color: var(--ph-muted); margin-bottom: 8px; }
.phub-card__title { font-size: 19px; font-weight: 800; color: var(--ph-dark); margin-bottom: 8px; }
.phub-card__desc { font-size: 14px; line-height: 1.6; color: #475569; margin: 0 0 12px; }
.phub-card__list { margin: 0; padding-left: 18px; font-size: 13px; line-height: 1.9; color: #475569; }
.phub-card__foot { border-top: 1.5px solid var(--ph-border); padding: 14px 22px; display: flex; align-items: center; justify-content: space-between; gap: 12px; flex-wrap: wrap; }
.phub-card__hint { font-size: 11px; color: var(--ph-muted); text-decoration: none; }

.phub-badge { display: inline-block; font-size: 10px; font-weight: 800; letter-spacing: .1em; text-transform: uppercase; padding: 4px 10px; }
.phub-badge--amber { background: #fef3c7; color: #92400e; }
.phub-badge--green { background: #dcfce7; color: #166534; }
.phub-badge--grey  { background: #e2e8f0; color: #475569; }
.phub-badge--red   { background: #fee2e2; color: #991b1b; }

/* ── Trade storefront (P2, mockup screen 3) ─────────────────── */

.ptrade { padding: 28px 0 64px; }
.ptrade__head { display: flex; align-items: flex-start; justify-content: space-between; gap: 16px; flex-wrap: wrap; margin-bottom: 20px; }
.ptrade__title { font-size: 24px; font-weight: 900; color: var(--ph-dark); margin: 0; }
.ptrade__sub { font-size: 12px; color: var(--ph-muted); margin-top: 4px; }
.ptrade__actions { display: flex; gap: 10px; align-items: center; flex-wrap: wrap; }

.ptrade-stats { display: grid; grid-template-columns: repeat(auto-fit, minmax(170px, 1fr)); gap: 14px; margin-bottom: 24px; }
.ptrade-stat { border: 1.5px solid var(--ph-border); border-top: 3px solid var(--ph-border); background: #fff; padding: 14px 16px; }
.ptrade-stat--accent { border-top-color: var(--ph-accent); }
.ptrade-stat--blue { border-top-color: var(--ph-blue); }
.ptrade-stat__label { font-size: 10px; font-weight: 800; letter-spacing: .14em; text-transform: uppercase; color: var(--ph-muted); }
.ptrade-stat__value { font-size: 20px; font-weight: 900; color: var(--ph-dark); margin-top: 4px; }
.ptrade-stat__sub { font-size: 11px; color: var(--ph-muted); margin-top: 2px; }

.ptrade-grid { display: grid; grid-template-columns: repeat(auto-fill, minmax(220px, 1fr)); gap: 16px; }
.ptrade-item { border: 1.5px solid var(--ph-border); background: #fff; display: flex; flex-direction: column; }
.ptrade-item__img { aspect-ratio: 4 / 3; background: #f1f5f9; display: flex; align-items: center; justify-content: center; overflow: hidden; }
.ptrade-item__img img { width: 100%; height: 100%; object-fit: cover; }
.ptrade-item__body { padding: 14px 16px; display: flex; flex-direction: column; gap: 6px; flex: 1; }
.ptrade-item__name { font-size: 14px; font-weight: 800; color: var(--ph-dark); }
.ptrade-item__meta { font-size: 11px; color: var(--ph-muted); }
.ptrade-item__price { display: flex; align-items: baseline; gap: 8px; }
.ptrade-item__trade { font-size: 18px; font-weight: 900; color: var(--ph-dark); }
.ptrade-item__rrp { font-size: 12px; color: var(--ph-muted); text-decoration: line-through; }
.ptrade-item__save { font-size: 10px; font-weight: 800; letter-spacing: .08em; text-transform: uppercase; color: var(--ph-accent); }
.ptrade-item__note { font-size: 10px; color: var(--ph-muted); }
.ptrade-qty { display: flex; gap: 8px; margin-top: auto; padding-top: 8px; }
.ptrade-qty input { width: 72px; border: 1.5px solid var(--ph-border); padding: 8px 10px; font: inherit; font-size: 13px; border-radius: 0; }
.ptrade-qty .btn { flex: 1; padding: 9px 12px; }

.ptrade-table { width: 100%; border-collapse: collapse; font-size: 13px; background: #fff; }
.ptrade-table th { text-align: left; font-size: 10px; font-weight: 800; letter-spacing: .1em; text-transform: uppercase; color: var(--ph-muted); padding: 10px 12px; border-bottom: 1.5px solid var(--ph-border); }
.ptrade-table td { padding: 12px; border-bottom: 1px solid #f1f5f9; vertical-align: top; }
.ptrade-table .num { text-align: right; }
.ptrade-card { border: 1.5px solid var(--ph-border); background: #fff; margin-bottom: 20px; }
.ptrade-card__header { padding: 12px 16px; border-bottom: 1.5px solid var(--ph-border); display: flex; justify-content: space-between; align-items: center; gap: 10px; }
.ptrade-card__title { font-size: 11px; font-weight: 800; letter-spacing: .12em; text-transform: uppercase; color: var(--ph-dark); }
.ptrade-card__hint { font-size: 11px; color: var(--ph-muted); }
.ptrade-card__body { padding: 16px; }

.ptrade-steps { display: flex; gap: 8px; flex-wrap: wrap; margin-bottom: 20px; }
.ptrade-step { font-size: 11px; font-weight: 700; letter-spacing: .06em; text-transform: uppercase; color: var(--ph-muted); border: 1.5px solid var(--ph-border); padding: 7px 12px; background: #fff; }
.ptrade-step.is-done { border-color: var(--ph-accent); color: var(--ph-accent); }
.ptrade-step.is-current { background: var(--ph-accent); border-color: var(--ph-accent); color: #fff; }

.ptrade-totals { list-style: none; margin: 0; padding: 0; font-size: 13px; }
.ptrade-totals li { display: flex; justify-content: space-between; padding: 7px 0; border-bottom: 1px solid #f1f5f9; }
.ptrade-totals li.is-total { border-bottom: none; font-size: 15px; font-weight: 900; color: var(--ph-dark); padding-top: 10px; }
.ptrade-totals .lbl { color: var(--ph-muted); }

.ptrade-2col { display: grid; grid-template-columns: 1fr 340px; gap: 20px; align-items: start; }

.ptrade-radio { display: flex; gap: 10px; align-items: flex-start; border: 1.5px solid var(--ph-border); padding: 12px 14px; margin-bottom: 8px; cursor: pointer; background: #fff; }
.ptrade-radio input { margin-top: 3px; }
.ptrade-radio__label { font-size: 13px; font-weight: 700; color: var(--ph-dark); }
.ptrade-radio__sub { font-size: 11px; color: var(--ph-muted); }
.ptrade-radio__price { margin-left: auto; font-size: 13px; font-weight: 800; white-space: nowrap; }

@media (max-width: 900px) {
  .ptrade-2col { grid-template-columns: 1fr; }
}

@media (max-width: 768px) {
  .phub-grid, .partner-form__grid { grid-template-columns: 1fr; }
  .partner-social-row { grid-template-columns: 1fr; }
}

/* ── P2.5 (mig 080): configured trade cards, split rows, modal, pay page ── */
.ptrade-grid { grid-template-columns: repeat(auto-fill, minmax(320px, 1fr)); gap: 20px; } /* bigger cards (Paul OK'd) */
.ptrade-item__img { aspect-ratio: 16 / 9; }
.ptrade-opt { display: flex; flex-direction: column; gap: 4px; margin-top: 6px; }
.ptrade-opt label { font-size: 10px; font-weight: 800; letter-spacing: .1em; text-transform: uppercase; color: var(--ph-muted); }
.ptrade-opt select { border: 1.5px solid var(--ph-border); padding: 8px 10px; font: inherit; font-size: 13px; border-radius: 0; background: #fff; width: 100%; }

/* ── P2.6 (mig 081): colour swatches on trade cards (mirrors retail) ── */
.ptrade-colours__name { font-weight: 700; text-transform: none; letter-spacing: 0; color: #0f172a; }
.ptrade-colours__row { display: flex; flex-wrap: wrap; gap: 7px; padding: 2px 0; }
.ptrade-swatch { width: 24px; height: 24px; border-radius: 50%; border: 2px solid #e2e8f0; padding: 0; cursor: pointer; box-shadow: inset 0 0 0 1px rgba(0,0,0,.06); }
.ptrade-swatch.is-active { border-color: #0f172a; box-shadow: 0 0 0 2px #fff, 0 0 0 3.5px #0f172a; }
.ptrade-swatch:focus-visible { outline: 2px solid var(--ph-accent, #fd784f); outline-offset: 2px; }
/* colour dot on basket / review lines */
.ptrade-colour-dot { display: inline-block; width: 11px; height: 11px; border-radius: 50%; border: 1px solid #cbd5e1; vertical-align: -1px; margin-right: 3px; }

/* ── P3 (mig 082): order history document links ── */
.ptrade-doc-link { font-size: 12px; font-weight: 700; color: #2487ce; text-decoration: none; white-space: nowrap; }
.ptrade-doc-link:hover { text-decoration: underline; }

.ptrade-split { border: 1.5px solid var(--ph-border); margin-top: 8px; }
.ptrade-split__row { display: flex; align-items: center; gap: 10px; padding: 9px 12px; border-bottom: 1px solid #f1f5f9; }
.ptrade-split__row:last-child { border-bottom: none; }
.ptrade-split__name { font-size: 13px; font-weight: 700; color: var(--ph-dark); flex: 1; }
.ptrade-split__unit { font-size: 12px; color: var(--ph-muted); white-space: nowrap; }
.ptrade-split__row input { width: 64px; border: 1.5px solid var(--ph-border); padding: 7px 8px; font: inherit; font-size: 13px; border-radius: 0; }
.ptrade-split__foot { display: flex; justify-content: space-between; align-items: center; padding: 9px 12px; background: #f8fafc; font-size: 12px; font-weight: 800; color: var(--ph-dark); }
.ptrade-item__details { align-self: flex-start; font-size: 11px; font-weight: 700; letter-spacing: .06em; text-transform: uppercase; color: var(--ph-blue, #2487ce); background: none; border: none; padding: 0; cursor: pointer; text-decoration: underline; }
dialog.ptrade-modal { border: 1.5px solid var(--ph-border); padding: 0; max-width: 640px; width: calc(100% - 40px); }
dialog.ptrade-modal::backdrop { background: rgba(15, 23, 42, .55); }
.ptrade-modal__head { display: flex; justify-content: space-between; align-items: center; gap: 12px; padding: 14px 18px; border-bottom: 1.5px solid var(--ph-border); }
.ptrade-modal__title { font-size: 15px; font-weight: 900; color: var(--ph-dark); }
.ptrade-modal__body { padding: 18px; font-size: 13px; line-height: 1.65; color: #333; max-height: 60vh; overflow: auto; }
.ptrade-modal__body img { max-width: 100%; height: auto; }
.ptrade-modal__close { background: none; border: 1.5px solid var(--ph-border); padding: 6px 12px; font-size: 11px; font-weight: 800; letter-spacing: .08em; text-transform: uppercase; cursor: pointer; }
.ptrade-line-x { background: none; border: 1.5px solid var(--ph-border); color: var(--ph-muted); width: 28px; height: 28px; line-height: 1; font-size: 14px; font-weight: 800; cursor: pointer; }
.ptrade-line-x:hover { border-color: #dc2626; color: #dc2626; }
.ptrade-config { font-size: 11px; color: var(--ph-muted); display: block; margin-top: 2px; }
.ptrade-subline td { border-bottom: none; padding-top: 2px; padding-bottom: 2px; font-size: 12px; color: var(--ph-muted); }
.ptrade-pay-badge { display: inline-block; font-size: 10px; font-weight: 800; letter-spacing: .1em; text-transform: uppercase; padding: 4px 10px; }
.ptrade-pay-badge--paid { background: #dcfce7; color: #166534; }
.ptrade-pay-badge--due { background: #fef9c3; color: #854d0e; }
.ptrade-bank { border: 1.5px solid var(--ph-border); background: #f8fafc; padding: 14px 16px; font-size: 13px; }
.ptrade-bank dt { font-size: 10px; font-weight: 800; letter-spacing: .12em; text-transform: uppercase; color: var(--ph-muted); margin-top: 8px; }
.ptrade-bank dd { margin: 2px 0 0; font-weight: 700; color: var(--ph-dark); }

/* ── Public landing (/partners, guest view — 2026-08-31) ──────
   The main-menu front door. Reuses the .phub-grid/.phub-card
   system above: two programme cards SIDE BY SIDE on desktop
   (cards stack only under the existing 768px breakpoint), plus
   one login/register strip. Container scoped per the house
   pattern (main.css has no generic .container rule). */
.phub-public .container { max-width: 1280px; margin: 0 auto; padding: 32px 48px 64px; }
.phub-login-note { margin-top: 20px; border: 1.5px solid var(--ph-border); background: #fff; padding: 14px 22px; display: flex; align-items: center; gap: 14px; flex-wrap: wrap; font-size: 13px; color: #475569; }
.phub-login-note span { flex: 1 1 320px; }
.phub-login-note .btn { padding: 8px 16px; }
.phub-login-note__login { background: var(--ph-blue); color: #fff; }
.phub-login-note__login:hover { background: #1d78bd; color: #fff; }
@media (max-width: 768px) {
  .phub-public .container { padding: 20px 20px 48px; }
}

/* ── P5 (2026-09-03): affiliate hub sections + side menu ─────
   Same pattern as the customer account (.acct-wrap / .acct-sidebar)
   but inside the affiliate scope: teal accent, sharp corners,
   uppercase micro-labels. Single column + horizontal menu strip
   under 900px. */
.paff-wrap { display: grid; grid-template-columns: 220px minmax(0, 1fr); gap: 28px; align-items: start; }
.paff-nav { background: #fff; border: 1.5px solid var(--ph-border); position: sticky; top: 80px; }
.paff-nav__list { display: flex; flex-direction: column; padding: 6px 0; }
.paff-nav__link { font-size: 12px; font-weight: 700; letter-spacing: .05em; text-transform: uppercase; color: #475569; text-decoration: none; padding: 11px 18px; display: flex; align-items: center; gap: 10px; border-left: 3px solid transparent; transition: background .12s, color .12s; }
.paff-nav__link svg { width: 15px; height: 15px; flex-shrink: 0; opacity: .55; }
.paff-nav__link:hover { background: #f8fafc; color: var(--ph-dark); text-decoration: none; }
.paff-nav__link.is-active { background: #e6f4f2; color: var(--ph-teal); border-left-color: var(--ph-teal); }
.paff-nav__link.is-active svg { opacity: 1; }
.paff-main { min-width: 0; }
.paff-intro { font-size: 13px; color: #475569; margin: 0 0 16px; line-height: 1.6; }
.paff-foot { margin-top: 20px; }
.paff-stat-link { text-decoration: none; display: block; }
.paff-stat-link:hover { border-color: var(--ph-teal); text-decoration: none; }
.paff-scroll { overflow-x: auto; }
.paff-orders td { font-size: 12.5px; }
.paff-pager { display: flex; align-items: center; justify-content: center; gap: 14px; padding: 14px 16px; border-top: 1.5px solid var(--ph-border); }
.paff-pager .btn { padding: 7px 14px; font-size: 12px; }
.paff-linkrow { display: flex; gap: 12px; align-items: flex-start; }
.paff-thumb { width: 44px; height: 44px; background: #f1f5f9; flex-shrink: 0; overflow: hidden; }
.paff-thumb img { width: 100%; height: 100%; object-fit: cover; display: block; }
.paff-copy-mini { background: none; border: 1.5px solid var(--ph-border); font: inherit; font-size: 10px; font-weight: 800; letter-spacing: .08em; text-transform: uppercase; padding: 2px 8px; margin-left: 6px; cursor: pointer; color: var(--ph-dark); }
.paff-bars { display: flex; align-items: flex-end; gap: 4px; height: 120px; overflow-x: auto; padding-bottom: 4px; }
.paff-bar { flex: 1 0 22px; display: flex; flex-direction: column; align-items: center; justify-content: flex-end; height: 100%; min-width: 22px; }
.paff-bar__fill { width: 100%; background: var(--ph-teal); min-height: 3px; }
.paff-bar__n { font-size: 10px; font-weight: 800; color: var(--ph-dark); margin-top: 3px; }
.paff-bar__d { font-size: 9px; color: var(--ph-muted); white-space: nowrap; }
.paff-cards { display: grid; grid-template-columns: repeat(auto-fill, minmax(240px, 1fr)); gap: 16px; }
.paff-card { border: 1.5px solid var(--ph-border); background: #fff; display: flex; flex-direction: column; }
.paff-card__img { display: block; aspect-ratio: 1 / 1; background: #f1f5f9; overflow: hidden; }
.paff-card__img img { width: 100%; height: 100%; object-fit: cover; display: block; }
.paff-card__body { padding: 14px 16px; display: flex; flex-direction: column; gap: 6px; flex: 1; }
.paff-card__name { font-size: 14px; font-weight: 800; color: var(--ph-dark); line-height: 1.35; }
.paff-card__price { font-size: 15px; color: var(--ph-dark); }
.paff-card__desc { font-size: 12px; color: #475569; line-height: 1.5; margin: 0; }
.paff-card__link { font-size: 11px; color: var(--ph-muted); word-break: break-all; margin-top: auto; }
.paff-card__actions { display: flex; gap: 6px; flex-wrap: wrap; padding-top: 6px; }
.paff-card__actions .btn { padding: 7px 12px; font-size: 12px; }
.paff-search { display: flex; gap: 6px; align-items: center; }
.paff-search input { border: 1.5px solid var(--ph-border); padding: 7px 10px; font: inherit; font-size: 13px; border-radius: 0; min-width: 200px; }
.paff-search .btn { padding: 7px 12px; font-size: 12px; }
.paff-inline-form { display: grid; grid-template-columns: repeat(auto-fit, minmax(160px, 1fr)); gap: 10px; align-items: end; }
.paff-inline-form .btn { width: 100%; }
.paff-input { width: 100%; border: 1.5px solid var(--ph-border); padding: 8px 10px; font: inherit; font-size: 13px; border-radius: 0; background: #fff; }
.paff-label { display: block; font-size: 10px; font-weight: 800; letter-spacing: .1em; text-transform: uppercase; color: var(--ph-muted); margin-bottom: 4px; }
.paff-check { display: flex; align-items: center; gap: 8px; font-size: 13px; padding: 9px 0; }
.paff-grid3 { display: grid; grid-template-columns: repeat(auto-fit, minmax(180px, 1fr)); gap: 12px; margin-bottom: 12px; }
.paff-2col { display: grid; grid-template-columns: 1fr 1fr; gap: 20px; align-items: start; }
.paff-dl { margin: 0; font-size: 13px; }
.paff-dl dt { font-size: 10px; font-weight: 800; letter-spacing: .12em; text-transform: uppercase; color: var(--ph-muted); margin-top: 8px; }
.paff-dl dd { margin: 2px 0 0; font-weight: 700; color: var(--ph-dark); }
.paff-dl dt:first-child { margin-top: 0; }
@media (max-width: 900px) {
  .paff-wrap { grid-template-columns: 1fr; gap: 16px; }
  .paff-nav { position: static; }
  .paff-nav__list { flex-direction: row; overflow-x: auto; padding: 0; }
  .paff-nav__link { border-left: none; border-bottom: 3px solid transparent; white-space: nowrap; padding: 10px 14px; }
  .paff-nav__link.is-active { border-bottom-color: var(--ph-teal); }
  .paff-2col { grid-template-columns: 1fr; }
}

/* ── Hub landing cards — icon header, feature ticks, coming-soon
   (2026-09-13, Paul: pre-launch tiles must sell, not sit grey).
   Disabled programme = pre-launch: the same pitch copy + a solid
   accent "Coming soon" badge + the normal Apply CTA (applications
   are open before the hub launches). No new colours — stockist
   #fd784f / affiliate #009688 / brand blue, sharp corners. ─────── */

.phub-card__head { display: flex; align-items: center; gap: 12px; margin-bottom: 12px; }
.phub-card__icon { flex: 0 0 auto; width: 44px; height: 44px; display: inline-flex; align-items: center; justify-content: center; color: var(--ph-accent); background: rgba(253, 120, 79, .12); }
.phub-card__icon svg { width: 24px; height: 24px; }
.phub-card--alt .phub-card__icon { color: var(--ph-teal); background: rgba(0, 150, 136, .12); }
.phub-card__head .phub-card__eyebrow { margin: 0; }
.phub-card__head-text { display: flex; flex-direction: column; gap: 4px; flex: 1 1 auto; }

/* Feature list: brand tick in the programme accent instead of bullets */
.phub-card__list { list-style: none; padding-left: 0; }
.phub-card__list li { position: relative; padding-left: 22px; }
.phub-card__list li::before { content: ''; position: absolute; left: 0; top: 9px; width: 12px; height: 7px; border-left: 2px solid var(--ph-accent); border-bottom: 2px solid var(--ph-accent); transform: rotate(-45deg); }
.phub-card--alt .phub-card__list li::before { border-color: var(--ph-teal); }

/* Coming-soon badge: solid accent, white text — reads as a launch flag, not a disabled state */
.phub-badge--soon { background: var(--ph-accent); color: #fff; }
.phub-card--alt .phub-badge--soon { background: var(--ph-teal); }

/* Pre-launch note under the bullets (partner_soon_desc) */
.phub-card__note { margin: 14px 0 0; padding: 10px 12px; font-size: 12px; line-height: 1.55; color: var(--ph-dark); background: rgba(253, 120, 79, .08); border-left: 3px solid var(--ph-accent); }
.phub-card--alt .phub-card__note { background: rgba(0, 150, 136, .08); border-left-color: var(--ph-teal); }

/* Pre-launch card keeps the white ground (the muted grey ground was the "dull" part) */
.phub-card--soon { background: #fff; }

/* ── Stockist hub shell (P6, 2026-09-14) — the affiliate .paff-* shell
   re-skinned with the stockist accent. One active-state rule + the few
   pieces the new sections need. No new colours. ─────────────────── */
.partner-scope-stockist .paff-nav__link.is-active { background: #fff1ec; color: var(--ph-accent); border-left-color: var(--ph-accent); }
.partner-scope-stockist .paff-stat-link:hover { border-color: var(--ph-accent); }
.partner-scope-stockist .paff-bar__fill { background: var(--ph-accent); }
.pstk-badge-count { display: inline-block; min-width: 18px; padding: 1px 6px; font-size: 10px; font-weight: 800; text-align: center; background: var(--ph-accent); color: #fff; margin-left: auto; }
.pstk-track { font-family: ui-monospace, Menlo, Consolas, monospace; font-size: 12px; }
.pstk-btn-sm { padding: 7px 12px; font-size: 11px; }
.pstk-quick { display: flex; gap: 8px; flex-wrap: wrap; }
.pstk-quick .btn { padding: 9px 14px; font-size: 12px; }
.pstk-addr-grid { margin-bottom: 20px; }
.pstk-addr { border: 1.5px solid var(--ph-border); background: #fff; padding: 14px 16px; font-size: 13px; line-height: 1.55; display: flex; flex-direction: column; gap: 8px; }
.pstk-addr--default { border-color: var(--ph-accent); }
.pstk-addr__label { font-size: 10px; font-weight: 800; letter-spacing: .12em; text-transform: uppercase; color: var(--ph-muted); display: flex; justify-content: space-between; align-items: center; gap: 8px; }
.pstk-addr__actions { display: flex; gap: 6px; flex-wrap: wrap; margin-top: auto; padding-top: 6px; }
.pstk-addr__actions .btn { padding: 7px 12px; font-size: 11px; }
.pstk-addr__actions form { margin: 0; }
.pstk-form { display: grid; grid-template-columns: 1fr 1fr; gap: 12px; }
.pstk-form .full { grid-column: 1 / -1; }
.pstk-form .btn { justify-self: start; }
.pstk-note { font-size: 12px; color: var(--ph-muted); margin: 8px 0 0; line-height: 1.55; }
.pstk-period { display: flex; gap: 8px; align-items: center; flex-wrap: wrap; margin: 0; }
.pstk-period select { border: 1.5px solid var(--ph-border); padding: 7px 10px; font: inherit; font-size: 13px; border-radius: 0; background: #fff; }
.pstk-tfoot-label { font-size: 10px; font-weight: 800; letter-spacing: .1em; text-transform: uppercase; color: var(--ph-muted); }
.ptrade-table tfoot td { border-top: 1.5px solid var(--ph-border); border-bottom: none; }
@media (max-width: 860px) {
  .partner-scope-stockist .paff-nav__link.is-active { border-bottom-color: var(--ph-accent); }
  .pstk-form { grid-template-columns: 1fr; }
  /* Shell fix (both hubs): a grid item's min-width defaults to auto, so the
     horizontal nav row (overflow-x:auto) was stretching the single column to
     its scroll width (~1100px) and the whole page scrolled sideways on phones. */
  .paff-wrap > .paff-nav, .paff-wrap > .paff-main { min-width: 0; }
}
