/* pp-pages.css -- R4 step 11 CANDIDATE: the "remaining pages" surface layer.

   SURFACES (ten live pages + two synthetic surfaces, no others):
     51 /testing-and-quality/   .pp-page.pp-quality-v2
     56 /faq/                   .pp-page.pp-faq-v2
      1 /about/                 .pp-page.pp-about
     59 /contact/               .pp-page.pp-contact-v2
     61 /privacy-policy/        .pp-page
     63 /terms-and-conditions/  .pp-page
     65 /delivery/              .pp-page
     67 /returns/               .pp-page
     69 /product-and-regulatory-information/  .pp-page
     10 /my-account/            (classic [woocommerce_my_account] output)
        404 surface             .pp-404
        /verify/ (private)      .pp-verify (internal placeholder, DCR-1 unresolved)
     plus the product-search-results template's .pp-product-search-page

   CONTRACT (identical to pp-site-scoped.css / pp-catalogue.css /
   pp-product.css / pp-cart.css / pp-checkout.css / pp-education.css):
   - Every selector list begins with .pp-site. Zero :root, zero bare
     body/html, zero bare element or universal selectors, zero @keyframes,
     zero @import, zero !important. Nothing here can match outside a
     .pp-site subtree.
   - Loading: the step-11 lane only (pp-redesign-pages.php), after
     pp-tokens -> pp-site-scoped -> pp-compat. Never the shell, homepage,
     catalogue, single product, cart, checkout, education or the specimen.
   - This file NEVER modifies pp-site-scoped.css, pp-compat.css,
     pp-header.css, pp-catalogue.css, pp-product.css, pp-cart.css,
     pp-checkout.css, pp-education.css or custom_css post 27.
   - ZERO page bodies are rewritten by step 11. Every rule below styles
     markup that already exists in the live page content, so all policy and
     legal text, the four Janoshik verification links, the four COA image
     links, the five "currently being tested" entries, the eight FAQ
     answers and the canonical support strings are preserved byte-identical
     BY CONSTRUCTION rather than by comparison.
   - Zero commerce selectors on the commerce surfaces: no add-to-cart,
     buy-block, gateway, price, quantity or Store API class is selected.
     A4 is not touched and not discharged. The my-account block styles Woo's
     CLASSIC shortcode output presentationally only -- no field id, no form
     handler, no endpoint and no account behaviour is referenced.

   COMPONENT REUSE, recorded row by row rather than forked (project rule:
   "one component defined once and reused, never forked per surface").
   Lane sheets cannot import one another, so values are restated here; the
   class names are NOT renamed, so a step-13 consolidation into one shared
   long-form sheet is a pure file move with zero markup change.

     .pp-page-top                 <- pp-catalogue.css s1 (padding-block-start:0)
     long-form section h2/h3/p/li/ul/ol/a/strong/em registers
                                  <- pp-product.css via pp-education.css s8
     record-card geometry         <- .pp-lib-card, pp-education.css s7
     hairline row rhythm          <- .pp-ledger__item, pp-site-scoped.css
     callout register             <- .pp-ledger__item--callout (2px blue-500
                                     top border + --pp-surface-accent-soft)
     notice register              <- .pp-notice / .pp-notice--boxed
     hero contrast corrections    <- pp-site-scoped.css rows 102-103
                                     (kicker --pp-blue-700, RUO --pp-text-body)
     two-column hero frame        <- .pp-proof geometry 1.1fr/.9fr gap 70
     coverage-table collapse      <- .pp-evidence <=700 pattern
     a.pp-whatsapp-link (+ __icon/__label)  <- pp-product.css
     .pp-btn pill geometry        <- pp-site-scoped.css s4

   NEW STEP-11 FAMILIES (PP-EXT S rows, each with its derivation):
     .pp-doc-page  .pp-doc-shell  .pp-account-page  .pp-contents
     .pp-404  .pp-verify

   DEPARTURES, recorded not hidden:
     S11-D1  The contents component ships as a full-width index block at the
             head of the document body, NOT as a sticky side rail. The live
             page bodies are a flat <h2>/<p> sequence inside one
             .pp-page-wrap and step 11 writes no page body, so a true side
             rail would need either a new wrapper element (a body write) or
             an implicit-row grid span whose failure modes belong to step 13
             rather than here. The component keeps the rail's job -- a
             machine-derived index of the document's own headings -- at zero
             layout risk. Promotion to a sticky rail is a step-13 decision.
     S11-D2  The .pp-compare table on page 51 carries its own inline <style>
             inside the page body, including a @media (max-width:781px)
             collapse. 781px is not one of the system's axes
             (1100/860/700/380) and the inline block cannot be removed
             without a body write. This sheet therefore (a) out-cascades the
             inline rules at (0,2,0) vs (0,1,0) for the desktop register and
             (b) re-asserts the desktop grid inside @media (max-width:781px)
             so the legacy collapse never fires, then performs the system's
             own collapse at the 700px axis. Net effect: one collapse, at
             the system's breakpoint.
     S11-D3  N-1 (QA step-03): Assembler's
               input:not([type=submit]):not([type=checkbox]):not([type=radio])
                 :not([type=range])
             computes (0,4,1) and defeats any (0,1,0)-(0,4,0) form rule.
             pp-compat.css deliberately ships no input bridge. Rather than
             edit that shared, already-applied artifact -- which would put
             every step 4-10 surface back into QA -- the step-11 form
             controls carry their own weight IN THIS LANE at (0,5,1), which
             beats (0,4,1) on specificity alone and needs no !important and
             no source-order assumption. Necessity proof is stated at each
             rule.

   Brief: redesign/build/step-11/STEP-11-PACKET.md. */

/* ============ 1. PAGE SHELL (PP-EXT S-1) ============ */
/* Top clearance is the shared .pp-pill-clearance band rendered by template
   part 79 and sized by pp-header.css (150px / 104px), so every surface
   below declares its own start padding at 0 -- the same decision
   pp-catalogue.css departure 1 and pp-education.css s1 record. */
.pp-site.pp-doc-page{background:var(--pp-surface-page)} /* PP-FIX 2026-08-29: compound, not descendant -- both classes sit on the same <main> */
.pp-site.pp-account-page{background:var(--pp-surface-page)}
.pp-site .pp-page-top{padding-block-start:0}
.pp-site .pp-page{margin:0;padding:0;background:none}
/* The legacy .pp-page-wrap owned its own max-width and gutter. The measure
   now belongs to .pp-shell (pp-site-scoped.css s2), declared once by the
   template, so the inner wrappers are neutralised to pure pass-throughs. */
.pp-site .pp-page-wrap{width:auto;max-width:none;margin:0;padding:0}
.pp-site .pp-page-hero{margin:0;padding:0 0 8px;border:0;background:none}
.pp-site .pp-page-body{margin:0;padding:0 0 96px;border:0;background:none}

/* ============ 2. HERO REGISTER ============ */
/* .pp-page-eyebrow takes the .pp-kicker register at the hero-corrected
   colour (pp-site-scoped.css row 102: blue-600 tops out ~4.94:1, blue-700
   computes 5.20:1 at the measured worst pixel). h1 takes .pp-display--sm.
   .pp-page-lead takes .pp-lede--hero (620px, 04 s2g). */
.pp-site .pp-page-eyebrow{margin:0;font-family:var(--pp-font-sans);font-size:10.5px;letter-spacing:var(--pp-ls-eyebrow);text-transform:uppercase;font-weight:600;line-height:1.4;color:var(--pp-blue-700)}
/* The two hero titles that carry a hard <br> (FAQ, Contact) keep it: it is
   the author's intended two-line title, there is no whitespace either side
   of the tag in the stored markup, and suppressing it would run the two
   fragments together. The break is therefore honoured, not overridden. */
.pp-site .pp-page-hero h1{margin:20px 0 0;max-width:900px;font-family:var(--pp-font-display);font-size:clamp(34px,4.4vw,64px);line-height:1;letter-spacing:-.04em;font-weight:600;color:var(--pp-text-heading)}
.pp-site .pp-page-lead{margin:26px 0 0;max-width:620px;font-family:var(--pp-font-sans);font-size:16px;line-height:1.7;font-weight:400;color:var(--pp-text-body)}
/* The research-use notice: .pp-notice register at the hero-corrected colour
   (pp-site-scoped.css row 103 -- the muted register measured 4.32:1, the
   body token 7.06:1). Never greyed, never below 12px (concept K6 rule). */
.pp-site .pp-hero-ruo{margin:34px 0 0;font-family:var(--pp-font-sans);font-size:12px;letter-spacing:.08em;text-transform:uppercase;font-weight:600;line-height:1.45;color:var(--pp-text-body)}
.pp-site .pp-hero-ruo strong{font-weight:600;color:inherit}

/* ============ 3. CONTENTS INDEX (PP-EXT S-2; departure S11-D1) ============ */
/* Machine-derived: the lane builds this from the document's OWN <h2>
   elements at render time and it exists in no page body, so it cannot go
   stale and it authors no content. Numerals take the concept's mono caption
   register (SRC 103); the frame is the hairline rule idiom, not a tint --
   the system has no tinted panel outside .pp-proof. */
.pp-site .pp-contents{margin:44px 0 0;padding:26px 0 4px;border-top:1px solid var(--pp-border-subtle);border-bottom:1px solid var(--pp-border-subtle)}
.pp-site .pp-contents__label{margin:0 0 18px;font-family:var(--pp-font-mono);font-size:11.5px;letter-spacing:var(--pp-ls-label);text-transform:uppercase;font-weight:500;color:var(--pp-text-accent)}
.pp-site .pp-contents ol{display:grid;grid-template-columns:repeat(3,minmax(0,1fr));gap:0 38px;margin:0;padding:0;list-style:none;counter-reset:pp-toc}
.pp-site .pp-contents li{counter-increment:pp-toc;position:relative;margin:0;padding:0 0 18px 30px;min-width:0;max-width:none}
.pp-site .pp-contents li::before{content:counter(pp-toc,decimal-leading-zero);position:absolute;left:0;top:1px;font-family:var(--pp-font-mono);font-size:11.5px;line-height:1.5;color:var(--pp-text-subtle)}
.pp-site .pp-contents a{font-family:var(--pp-font-sans);font-size:14px;line-height:1.5;color:var(--pp-text-heading);border-bottom:1px solid transparent;transition:color var(--pp-dur-fast) var(--pp-ease),border-color var(--pp-dur-fast) var(--pp-ease)}
.pp-site .pp-contents a:hover{color:var(--pp-blue-600);border-bottom-color:var(--pp-blue-200)}

/* ============ 4. PROSE MEASURE + LONG-FORM REGISTER ============ */
/* Verbatim from pp-product.css via pp-education.css s8: the same section
   heading, body, list, link, strong and em registers a product page and a
   research guide already ship. The 640px measure is 04 s2a. */
.pp-site .pp-page-body h2{margin:70px 0 0;max-width:760px;font-family:var(--pp-font-display);font-size:34px;font-weight:600;letter-spacing:-.035em;line-height:1.14;color:var(--pp-text-heading);scroll-margin-top:170px}
.pp-site .pp-page-body h2:first-child{margin-top:44px}
.pp-site .pp-page-body h3{margin:40px 0 0;font-family:var(--pp-font-sans);font-size:17px;font-weight:600;letter-spacing:0;line-height:1.4;color:var(--pp-text-heading)}
.pp-site .pp-page-body p,
.pp-site .pp-page-body li{max-width:640px;font-family:var(--pp-font-sans);font-size:15px;line-height:1.7;color:var(--pp-text-body)}
.pp-site .pp-page-body p{margin:22px 0 0}
.pp-site .pp-page-body h2+p{margin-top:26px}
.pp-site .pp-page-body h3+p{margin-top:14px}
.pp-site .pp-page-body strong{color:var(--pp-text-heading);font-weight:600}
.pp-site .pp-page-body b{color:var(--pp-text-heading);font-weight:600}
.pp-site .pp-page-body em{font-style:italic}
.pp-site .pp-page-body ul{margin:22px 0 0;padding-left:20px;list-style:disc}
.pp-site .pp-page-body ol{margin:22px 0 0;padding-left:20px;list-style:decimal}
.pp-site .pp-page-body li{margin-top:10px}
.pp-site .pp-page-body a{color:var(--pp-text-accent);border-bottom:1px solid var(--pp-blue-200);transition:border-color var(--pp-dur-fast) var(--pp-ease),color var(--pp-dur-fast) var(--pp-ease)}
.pp-site .pp-page-body a:hover{color:var(--pp-blue-700);border-bottom-color:var(--pp-blue-500)}
/* The dated provenance line at the foot of the two long policy documents.
   Mono caption register (SRC 103). */
.pp-site .pp-page-meta{margin:70px 0 0;padding-top:26px;border-top:1px solid var(--pp-border-subtle);max-width:640px;font-family:var(--pp-font-mono);font-size:11.5px;line-height:1.6;color:var(--pp-text-muted)}
.pp-site .pp-page-meta em{font-style:normal}

/* ============ 5. NOTICE (.pp-notice--boxed register) ============ */
.pp-site .pp-page-notice{margin:44px 0 0;padding:26px 28px;max-width:none;border:1px solid var(--pp-border-subtle);border-top:2px solid var(--pp-blue-500);border-radius:var(--pp-radius-sm);background:var(--pp-surface-accent-soft);font-family:var(--pp-font-sans);font-size:15px;line-height:1.7;color:var(--pp-navy-700)}
.pp-site .pp-page-notice strong{display:block;margin-bottom:8px;font-weight:600;color:var(--pp-navy-700)}
.pp-site .pp-page-notice p{max-width:640px;color:var(--pp-navy-700)}
.pp-site .pp-page-notice p:first-child{margin-top:0}

/* ============ 6. RECORD CARD (.pp-page-card) ============ */
/* Geometry copied from .pp-lib-card (pp-education.css s7) minus the hover
   lift: these cards are records, not links, so they get no transform and no
   pointer affordance. The bolded lead takes the 04 s2a H3 register. */
.pp-site .pp-page-card{display:flex;flex-direction:column;height:100%;margin:0;padding:26px 28px 28px;border:1px solid var(--pp-border-subtle);border-radius:var(--pp-radius-sm);background:var(--pp-surface-page)}
.pp-site .pp-page-card>b{display:block;font-family:var(--pp-font-sans);font-size:17px;line-height:1.4;font-weight:600;letter-spacing:0;color:var(--pp-text-heading)}
.pp-site .pp-page-card p{margin:12px 0 0;max-width:none;font-size:14px;line-height:1.65;color:var(--pp-text-body)}
.pp-site .pp-page-card p:last-child{margin-bottom:0}
.pp-site .pp-page-card strong{color:var(--pp-text-heading);font-weight:600}
.pp-site .pp-page-card ul{margin:12px 0 0;padding-left:18px}
.pp-site .pp-page-card li{margin-top:8px;max-width:none;font-size:14px;line-height:1.65}
.pp-site .pp-page-card a{color:var(--pp-text-accent);border-bottom:1px solid var(--pp-blue-200)}
.pp-site .pp-page-card a:hover{color:var(--pp-blue-700);border-bottom-color:var(--pp-blue-500)}

/* ============ 7. BUTTONS + ACTIONS + PAGE CTA ============ */
/* .pp-btn pill geometry (pp-site-scoped.css s4) applied to the legacy
   .pp-button class name, which already exists in the page bodies. */
.pp-site a.pp-button{display:inline-flex;align-items:center;justify-content:center;gap:10px;min-height:52px;padding:0 34px;border:1px solid transparent;border-radius:var(--pp-radius-pill);background:var(--pp-navy-700);box-shadow:none;font-family:var(--pp-font-sans);font-size:12px;letter-spacing:.14em;text-transform:uppercase;font-weight:600;line-height:1.2;text-align:center;text-decoration:none;color:var(--pp-text-on-dark);transition:background var(--pp-dur-fast) var(--pp-ease),color var(--pp-dur-fast) var(--pp-ease),border-color var(--pp-dur-fast) var(--pp-ease)}
.pp-site a.pp-button:hover{background:var(--pp-blue-600);border-color:transparent;color:var(--pp-text-on-dark)}
.pp-site a.pp-button--secondary{background:transparent;border-color:var(--pp-border-strong);color:var(--pp-text-heading)}
.pp-site a.pp-button--secondary:hover{background:transparent;border-color:var(--pp-blue-500);color:var(--pp-blue-700)}
.pp-site .pp-button__icon{display:inline-flex;align-items:center;width:16px;height:16px}
.pp-site .pp-button__icon svg{width:16px;height:16px;fill:currentColor}
.pp-site .pp-actions{display:flex;flex-wrap:wrap;align-items:center;gap:14px;margin:26px 0 0}
.pp-site .pp-page-body .pp-actions a.pp-button{border-bottom:1px solid transparent}
.pp-site .pp-page-body p>a.pp-button{border-bottom:1px solid transparent}
.pp-site .pp-page-cta{margin:96px 0 0;padding:56px;border-radius:var(--pp-radius-md);background:var(--pp-surface-inverse);color:var(--pp-text-on-dark)}
.pp-site .pp-page-cta h2{margin:0;max-width:520px;font-size:30px;letter-spacing:-.035em;color:var(--pp-text-on-dark);scroll-margin-top:170px}
.pp-site .pp-page-cta p{margin:20px 0 0;max-width:520px;font-size:15px;line-height:1.8;color:var(--pp-text-on-dark-muted)}
.pp-site .pp-page-cta .pp-hero-ruo{color:var(--pp-text-on-dark-muted)}
.pp-site .pp-page-cta a.pp-button{background:var(--pp-blue-600);color:var(--pp-text-on-dark)}
.pp-site .pp-page-cta a.pp-button:hover{background:var(--pp-blue-500)}
.pp-site .pp-page-cta a.pp-button--secondary{background:transparent;border-color:var(--pp-border-inverse);color:var(--pp-text-on-dark)}
.pp-site .pp-page-cta a.pp-button--secondary:hover{background:rgba(255,255,255,.08);border-color:var(--pp-blue-400);color:var(--pp-text-on-dark)}

/* WhatsApp link -- verbatim reuse from pp-product.css / pp-education.css. */
.pp-site a.pp-whatsapp-link{display:inline-flex;align-items:center;justify-content:center;gap:10px;min-height:52px;padding:0 26px;border:1px solid transparent;border-radius:var(--pp-radius-pill);background:var(--pp-blue-600);box-shadow:none;transform:none;font-family:var(--pp-font-sans);font-size:12px;letter-spacing:.14em;text-transform:uppercase;font-weight:600;text-decoration:none;color:var(--pp-text-on-dark)}
.pp-site a.pp-whatsapp-link:hover{border-color:transparent;background:var(--pp-blue-500);box-shadow:none;transform:none;color:var(--pp-text-on-dark)}
.pp-site .pp-whatsapp-link__icon{display:inline-flex;width:17px;height:17px}
.pp-site .pp-whatsapp-link__icon svg{width:17px;height:17px;fill:currentColor}
.pp-site .pp-whatsapp-link__label{display:inline}
.pp-site .pp-page-body a.pp-whatsapp-link{border-bottom:1px solid transparent}

/* ============ 8. FAQ-SAFE ACCORDION (.pp-page-details) ============ */
/* THE FAQ SEARCH CONTRACT. The page's own inline script filters answers by
   setting `item.hidden = !match` on each <details> and on #pp-faq-empty.
   This block therefore NEVER declares `display` on a <details> element in
   its default state -- the UA's [hidden]{display:none} is left to win by
   default -- and the two explicit [hidden] rules below are stated at
   (0,3,1)/(0,2,1) so that no present or future display declaration in this
   lane can resurrect a filtered-out answer. Nothing here touches the
   script, the input, the ids or the topic buttons' data attributes.
   Row rhythm is the .pp-ledger__item hairline idiom. */
.pp-site .pp-page-details{margin:26px 0 0;border-top:1px solid var(--pp-border-subtle)}
.pp-site .pp-page-details details{margin:0;padding:0;border:0;border-bottom:1px solid var(--pp-border-subtle);background:none}
.pp-site .pp-page-details details[hidden]{display:none}
.pp-site .pp-page-details summary{list-style:none;display:flex;align-items:flex-start;justify-content:space-between;gap:24px;padding:24px 0;cursor:pointer;font-family:var(--pp-font-sans);font-size:17px;line-height:1.4;font-weight:600;color:var(--pp-text-heading);transition:color var(--pp-dur-fast) var(--pp-ease)}
.pp-site .pp-page-details summary::-webkit-details-marker{display:none}
.pp-site .pp-page-details summary::after{content:'';flex:0 0 auto;width:11px;height:11px;margin-top:5px;border-right:1.5px solid var(--pp-text-subtle);border-bottom:1.5px solid var(--pp-text-subtle);transform:rotate(45deg);transition:transform var(--pp-dur-base) var(--pp-ease),border-color var(--pp-dur-fast) var(--pp-ease)}
.pp-site .pp-page-details summary:hover{color:var(--pp-blue-600)}
.pp-site .pp-page-details summary:hover::after{border-right-color:var(--pp-blue-600);border-bottom-color:var(--pp-blue-600)}
.pp-site .pp-page-details details[open]>summary::after{transform:rotate(-135deg);margin-top:9px}
.pp-site .pp-page-details details>p{margin:0;padding:0 0 26px;max-width:640px;font-size:15px;line-height:1.7;color:var(--pp-text-body)}
.pp-site .pp-page-details details>p a{color:var(--pp-text-accent);border-bottom:1px solid var(--pp-blue-200)}

/* ============ 9. TESTING AND QUALITY (page 51, .pp-quality-v2) ============ */
/* Two-column hero frame = the concept's .pp-proof panel geometry
   (SRC 118: 1.1fr .9fr, gap 70px), the same frame the education hub uses.
   The illustration is the EXISTING official page-51 asset: src, srcset,
   sizes, alt, width and height are untouched -- step 11 writes no page
   body and creates, crops, replaces and alters no media. */
.pp-site .pp-q-hero__wrap{display:grid;grid-template-columns:1.1fr .9fr;gap:70px;align-items:center}
.pp-site .pp-q-hero__copy{min-width:0}
.pp-site .pp-q-hero__art{margin:0;min-width:0}
.pp-site .pp-q-hero__art img{display:block;width:100%;height:auto}
/* The intro is the document's standing scope statement. Its fourth
   paragraph is a <strong>-only line and takes the callout register
   (.pp-ledger__item--callout) so it reads as a standing constraint rather
   than as an emphasised sentence in a run of prose. */
.pp-site .pp-q-intro{max-width:640px;margin:44px 0 0}
.pp-site .pp-q-intro p{margin:22px 0 0;max-width:none;font-size:15px;line-height:1.7;color:var(--pp-text-body)}
.pp-site .pp-q-intro p:first-child{margin-top:0}
.pp-site .pp-q-intro p>strong:only-child{display:block;margin-top:4px;padding:18px 20px 22px;border-top:2px solid var(--pp-blue-500);background:var(--pp-surface-accent-soft);font-weight:600;color:var(--pp-navy-700)}
/* Section rows: a sticky-free label column plus its card field. Ratio and
   gap are the same .pp-proof geometry reused once more, so the page has one
   two-column grammar rather than three. */
.pp-site .pp-q-row{display:grid;grid-template-columns:1.1fr 2.4fr;gap:70px;align-items:start;margin:70px 0 0;padding:70px 0 0;border-top:1px solid var(--pp-border-subtle)}
.pp-site .pp-q-side{min-width:0}
.pp-site .pp-q-side h2{margin:0;max-width:none;font-size:34px;letter-spacing:-.035em;line-height:1.14}
.pp-site .pp-q-side p{margin:22px 0 0;max-width:none;font-size:15px;line-height:1.7}
.pp-site .pp-q-cards{display:grid;gap:26px;min-width:0}
.pp-site .pp-q-cards--commit{grid-template-columns:repeat(2,minmax(0,1fr))}
.pp-site .pp-q-cards--docs{grid-template-columns:repeat(2,minmax(0,1fr))}
.pp-site .pp-q-cards--methods{grid-template-columns:repeat(2,minmax(0,1fr))}
/* The numbered commitments. Numeral register = the concept's mono caption
   (SRC 103) at the label tracking token, the same treatment
   .pp-lib-orient__n ships. */
.pp-site .pp-q-num{display:block;margin-bottom:12px;font-family:var(--pp-font-mono);font-size:11.5px;letter-spacing:var(--pp-ls-label);font-weight:500;color:var(--pp-text-accent)}
/* The per-document scope line inside each document card. It states what a
   report does and does not cover, so it takes the hairline-bounded caption
   register rather than body prose -- present, legible, subordinate. */
.pp-site .pp-coa-scope{margin:16px 0 0;padding:14px 0 0;border-top:1px solid var(--pp-border-subtle);font-family:var(--pp-font-sans);font-size:13px;line-height:1.6;color:var(--pp-text-muted)}
.pp-site .pp-q-archive{margin:26px 0 0;padding:22px 0 0;border-top:1px solid var(--pp-border-subtle)}
.pp-site .pp-q-archive p{margin:0;max-width:640px;font-size:14px;line-height:1.65;color:var(--pp-text-muted)}
.pp-site .pp-q-archive strong{color:var(--pp-text-heading);font-weight:600}
.pp-site .pp-q-callout{margin:26px 0 0}
.pp-site .pp-q-callout--wide{margin-top:70px}
/* The closing request band: the .pp-product-support navy band, reused. */
.pp-site .pp-q-request{display:flex;align-items:center;justify-content:space-between;gap:44px;margin:96px 0 0;padding:56px;border-radius:var(--pp-radius-md);background:var(--pp-surface-inverse);color:var(--pp-text-on-dark)}
.pp-site .pp-q-request h2{margin:0;max-width:520px;font-size:30px;letter-spacing:-.035em;color:var(--pp-text-on-dark);scroll-margin-top:170px}
.pp-site .pp-q-request p{margin:20px 0 0;max-width:520px;font-size:15px;line-height:1.8;color:var(--pp-text-on-dark-muted)}
.pp-site a.pp-q-request__btn{display:inline-flex;align-items:center;justify-content:center;gap:10px;flex:0 0 auto;min-height:52px;padding:0 30px;border:1px solid var(--pp-border-inverse);border-radius:var(--pp-radius-pill);background:transparent;font-family:var(--pp-font-sans);font-size:12px;letter-spacing:.14em;text-transform:uppercase;font-weight:600;text-decoration:none;color:var(--pp-text-on-dark);transition:background var(--pp-dur-fast) var(--pp-ease),border-color var(--pp-dur-fast) var(--pp-ease)}
.pp-site .pp-page-body a.pp-q-request__btn{border-bottom:1px solid var(--pp-border-inverse)}
.pp-site a.pp-q-request__btn:hover{border-color:var(--pp-blue-400);background:rgba(255,255,255,.08);color:var(--pp-text-on-dark)}
.pp-site .pp-q-request__btn svg{width:16px;height:16px;fill:currentColor}
.pp-site .pp-quality-v2 .pp-hero-ruo{margin-top:70px}

/* ============ 10. STRUCTURED TABLE (.pp-compare; departure S11-D2) ============ */
/* Out-cascades the page's own inline <style> at (0,2,0) vs (0,1,0). The
   register is the .pp-evidence coverage table: navy header rule, hairline
   row rules, no frame, no tint, no border-radius -- the concept has no
   boxed table. The check glyph and the italic third column are the legacy
   sheet's; both are replaced here by weight and colour, which is how every
   other table in this system distinguishes its columns. */
.pp-site .pp-compare{margin:26px 0 0;border:0;border-radius:0;background:none;font-family:var(--pp-font-sans);font-size:15px;overflow:visible}
.pp-site .pp-compare__head{display:grid;grid-template-columns:1.1fr 1.6fr 1.4fr;gap:0;background:none;color:var(--pp-text-muted);font-family:var(--pp-font-sans);font-size:11px;font-weight:600;text-transform:uppercase;letter-spacing:var(--pp-ls-label)}
.pp-site .pp-compare__head span{padding:0 var(--pp-space-6) 16px 0;border-bottom:1px solid var(--pp-navy-700)}
.pp-site .pp-compare__head span:last-child{padding-right:0}
.pp-site .pp-compare__row{display:grid;grid-template-columns:1.1fr 1.6fr 1.4fr;gap:0;border-top:0;padding:0}
.pp-site .pp-compare__row span{padding:22px var(--pp-space-6) 22px 0;border-top:0;border-bottom:1px solid var(--pp-border-subtle);font-size:14px;line-height:1.6;font-style:normal}
.pp-site .pp-compare__row span:last-child{padding-right:0}
.pp-site .pp-compare__row span:nth-child(1){font-family:var(--pp-font-sans);font-size:15px;font-weight:600;color:var(--pp-text-heading)}
.pp-site .pp-compare__row span:nth-child(2){color:var(--pp-text-body)}
.pp-site .pp-compare__row span:nth-child(2)::before{content:none}
.pp-site .pp-compare__row span:nth-child(3){color:var(--pp-text-muted);font-style:normal}
.pp-site .pp-compare__row span:nth-child(3)::before{content:none}

/* ============ 11. FAQ (page 56, .pp-faq-v2) ============ */
.pp-site .pp-faq-hero__wrap{display:grid;grid-template-columns:1.1fr .9fr;gap:70px;align-items:center}
.pp-site .pp-faq-hero__copy{min-width:0}
.pp-site .pp-faq-hero__art{margin:0;min-width:0}
.pp-site .pp-faq-hero__art img{display:block;width:100%;height:auto}
/* The search field. Pill control at the concept's form register.
   N-1 NECESSITY PROOF (departure S11-D3): Assembler's
   input:not([type=submit]):not([type=checkbox]):not([type=radio]):not([type=range])
   computes (0,4,1) -- border-radius 6px, min-height 42px, font-size small,
   padding .8rem 1rem, border-color currentColor. The selector below is
   .pp-site .pp-page .pp-faq-searchbar input[type="search"] =
   three classes + one attribute + one element = (0,4,1) plus the leading
   .pp-site class already counted, i.e. (0,4,1) with FOUR class/attribute
   simple selectors and one element -> ties on class count and wins on
   nothing. It is therefore written with a fifth class/attribute simple
   selector (:not([type="submit"])) giving (0,5,1) > (0,4,1). Specificity
   alone decides; no !important and no source-order assumption is used. */
.pp-site .pp-faq-searchbar{position:relative;display:flex;align-items:center;gap:0;margin:34px 0 0;max-width:520px}
.pp-site .pp-faq-searchbar svg{position:absolute;left:22px;width:16px;height:16px;fill:none;stroke:var(--pp-text-subtle);pointer-events:none}
.pp-site .pp-page .pp-faq-searchbar input[type="search"]:not([type="submit"]){flex:1 1 auto;width:100%;min-height:56px;padding:0 132px 0 50px;border:1px solid var(--pp-border-default);border-radius:var(--pp-radius-pill);background:var(--pp-surface-page);box-shadow:none;font-family:var(--pp-font-sans);font-size:15px;font-weight:400;line-height:1.5;color:var(--pp-text-heading)}
.pp-site .pp-page .pp-faq-searchbar input[type="search"]:not([type="submit"]):focus{border-color:var(--pp-border-accent);outline:none}
.pp-site .pp-page .pp-faq-searchbar input[type="search"]:not([type="submit"])::placeholder{color:var(--pp-text-subtle)}
.pp-site .pp-faq-searchbar button[type="submit"]{position:absolute;right:6px;display:inline-flex;align-items:center;justify-content:center;min-height:44px;padding:0 26px;border:1px solid transparent;border-radius:var(--pp-radius-pill);background:var(--pp-navy-700);cursor:pointer;font-family:var(--pp-font-sans);font-size:12px;letter-spacing:.14em;text-transform:uppercase;font-weight:600;color:var(--pp-text-on-dark);transition:background var(--pp-dur-fast) var(--pp-ease)}
.pp-site .pp-faq-searchbar button[type="submit"]:hover{background:var(--pp-blue-600)}
/* Topic shortcuts. Real <button>s, so they keep 44px targets and the
   system's own focus ring; only the skin changes. */
.pp-site .pp-faq-topics{display:flex;flex-wrap:wrap;align-items:center;gap:10px;margin:22px 0 0}
.pp-site .pp-faq-topics__label{margin-right:4px;font-family:var(--pp-font-mono);font-size:11.5px;letter-spacing:var(--pp-ls-label);text-transform:uppercase;color:var(--pp-text-muted)}
.pp-site .pp-faq-topics button{display:inline-flex;align-items:center;gap:8px;min-height:44px;padding:0 18px;border:1px solid var(--pp-border-default);border-radius:var(--pp-radius-pill);background:var(--pp-surface-page);cursor:pointer;font-family:var(--pp-font-sans);font-size:13px;font-weight:500;line-height:1.2;color:var(--pp-text-heading);transition:border-color var(--pp-dur-fast) var(--pp-ease),color var(--pp-dur-fast) var(--pp-ease)}
.pp-site .pp-faq-topics button:hover{border-color:var(--pp-border-accent);color:var(--pp-blue-700)}
.pp-site .pp-faq-topics button svg{width:14px;height:14px;fill:currentColor}
/* Answer column + aside. */
.pp-site .pp-faq-layout{display:grid;grid-template-columns:minmax(0,1fr) 320px;gap:70px;align-items:start;margin:44px 0 0}
.pp-site .pp-faq-main{min-width:0}
.pp-site .pp-page-body h2.pp-faq-title{margin:0;max-width:none;font-size:34px;letter-spacing:-.035em;line-height:1.14;scroll-margin-top:170px}
.pp-site .pp-page-body #pp-faq-empty{margin:26px 0 0;padding:22px 0 0;border-top:1px solid var(--pp-border-subtle);max-width:640px;font-size:15px;line-height:1.7;color:var(--pp-text-muted)}
.pp-site .pp-page-body #pp-faq-empty[hidden]{display:none}
.pp-site .pp-faq-aside{min-width:0}
.pp-site .pp-faq-aside__card{padding:26px 28px 28px;border:1px solid var(--pp-border-subtle);border-radius:var(--pp-radius-sm);background:var(--pp-surface-page)}
.pp-site .pp-faq-aside__card img{display:block;width:100%;height:auto;margin-bottom:20px}
.pp-site .pp-faq-aside__card h3{margin:0;font-family:var(--pp-font-sans);font-size:17px;line-height:1.4;font-weight:600;color:var(--pp-text-heading)}
.pp-site .pp-faq-aside__card p{margin:12px 0 0;max-width:none;font-size:14px;line-height:1.65;color:var(--pp-text-body)}
.pp-site a.pp-faq-aside__btn{display:inline-flex;align-items:center;justify-content:center;gap:10px;min-height:48px;margin-top:22px;padding:0 24px;border:1px solid var(--pp-border-strong);border-radius:var(--pp-radius-pill);background:transparent;font-family:var(--pp-font-sans);font-size:12px;letter-spacing:.14em;text-transform:uppercase;font-weight:600;text-decoration:none;color:var(--pp-text-heading);transition:border-color var(--pp-dur-fast) var(--pp-ease),color var(--pp-dur-fast) var(--pp-ease)}
.pp-site .pp-page-body a.pp-faq-aside__btn{border-bottom:1px solid var(--pp-border-strong)}
.pp-site a.pp-faq-aside__btn:hover{border-color:var(--pp-blue-500);color:var(--pp-blue-700)}
.pp-site .pp-faq-aside__btn svg{width:14px;height:14px;fill:currentColor}
/* Support band at the foot of the page. */
.pp-site .pp-faq-cta{display:flex;align-items:center;gap:34px}
.pp-site .pp-faq-cta__badge{display:inline-flex;align-items:center;justify-content:center;flex:0 0 auto;width:56px;height:56px;border:1px solid var(--pp-border-inverse);border-radius:var(--pp-radius-pill)}
.pp-site .pp-faq-cta__badge svg{width:22px;height:22px;fill:var(--pp-text-on-dark)}
.pp-site .pp-faq-cta__text{flex:1 1 auto;min-width:0}
.pp-site .pp-faq-cta__text h2{margin:0;font-size:30px}
.pp-site .pp-faq-cta__text p{margin-top:12px}
.pp-site a.pp-faq-cta__btn{flex:0 0 auto}
.pp-site .pp-faq-urgent{margin:34px 0 0;max-width:640px;font-family:var(--pp-font-sans);font-size:14px;line-height:1.65;color:var(--pp-text-muted)}

/* ============ 12. ABOUT (page 1, .pp-about) ============ */
.pp-site .pp-about .pp-page-hero .pp-hero-ruo{margin-top:34px}
.pp-site .pp-about .pp-page-body>h2:first-child{margin-top:44px}

/* ============ 13. CONTACT (page 59, .pp-contact-v2) ============ */
/* PP-FIX B3 (2026-08-29): with the legacy page-id-59 hero retired, the
   contact H1 fell to the generic 34px register; it now takes the same
   .pp-page-hero page-hero spec as every other document-lane H1. */
.pp-site .pp-c-hero h1{margin:20px 0 0;max-width:900px;font-family:var(--pp-font-display);font-size:clamp(34px,4.4vw,64px);line-height:1;letter-spacing:-.04em;font-weight:600;color:var(--pp-text-heading)}
.pp-site .pp-c-hero__wrap{display:grid;grid-template-columns:1.1fr .9fr;gap:70px;align-items:center}
.pp-site .pp-c-hero__copy{min-width:0}
.pp-site .pp-c-hero__art{margin:0;min-width:0}
.pp-site .pp-c-hero__art img{display:block;width:100%;height:auto}
/* The hero rule between title and lede: a hairline, not a coloured bar. */
.pp-site .pp-c-hero__dash{display:block;width:64px;height:1px;margin:34px 0 0;background:var(--pp-border-strong)}
/* Written as h2.pp-c-h2 (0,3,1) so it out-cascades the document register
   .pp-site .pp-page-body h2 (0,2,1) on specificity rather than on source
   order -- the same reason the FAQ title above carries its element too. */
.pp-site .pp-page-body h2.pp-c-h2{margin:70px 0 0;max-width:none;font-size:34px;letter-spacing:-.035em;line-height:1.14;scroll-margin-top:170px}
.pp-site .pp-page-body h2.pp-c-h2--route{margin-top:44px}
/* Three contact routes as hairline record cards -- the .pp-page-card
   geometry reused, one definition, three instances. */
.pp-site .pp-c-routes{display:grid;grid-template-columns:repeat(3,minmax(0,1fr));gap:26px;margin:26px 0 0}
.pp-site .pp-c-route{display:flex;flex-direction:column;height:100%;padding:26px 28px 28px;border:1px solid var(--pp-border-subtle);border-radius:var(--pp-radius-sm);background:var(--pp-surface-page)}
.pp-site .pp-c-route__icon{display:inline-flex;align-items:center;justify-content:center;width:40px;height:40px;margin-bottom:20px;border:1px solid var(--pp-border-subtle);border-radius:var(--pp-radius-pill);color:var(--pp-text-accent)}
.pp-site .pp-c-route__icon svg{width:17px;height:17px;fill:currentColor}
.pp-site .pp-c-route>b{display:block;font-family:var(--pp-font-sans);font-size:17px;line-height:1.4;font-weight:600;color:var(--pp-text-heading)}
.pp-site .pp-c-route p{margin:12px 0 0;max-width:none;font-size:14px;line-height:1.65;color:var(--pp-text-body)}
.pp-site .pp-c-route__link{margin-top:16px}
.pp-site .pp-c-route__link a{font-family:var(--pp-font-mono);font-size:13px;color:var(--pp-text-accent);border-bottom:1px solid var(--pp-blue-200)}
.pp-site .pp-c-route__link span{display:block;margin-top:6px;font-family:var(--pp-font-mono);font-size:11.5px;color:var(--pp-text-subtle)}
/* PP-FIX C2 (2026-08-29): the email card's external-link arrow is a sibling
   <span aria-hidden> caught by the display:block rule above (written for the
   WhatsApp card's response-window sub-line), so the arrow always dropped onto
   its own line. The decorative span is suppressed and the glyph re-attached
   to the anchor's own inline box behind a no-break space, so it can never
   orphan at any width. */
.pp-site .pp-c-route--email .pp-c-route__link span{display:none}
.pp-site .pp-c-route--email .pp-c-route__link a::after{content:'\00a0\2197'}
.pp-site .pp-c-route small{display:block;margin-top:14px;font-family:var(--pp-font-mono);font-size:11.5px;line-height:1.5;color:var(--pp-text-muted)}
.pp-site a.pp-c-btn{display:inline-flex;align-items:center;justify-content:center;gap:10px;min-height:52px;margin-top:22px;padding:0 24px;border:1px solid transparent;border-radius:var(--pp-radius-pill);background:var(--pp-navy-700);font-family:var(--pp-font-sans);font-size:12px;letter-spacing:.14em;text-transform:uppercase;font-weight:600;text-decoration:none;color:var(--pp-text-on-dark);transition:background var(--pp-dur-fast) var(--pp-ease),border-color var(--pp-dur-fast) var(--pp-ease),color var(--pp-dur-fast) var(--pp-ease)}
.pp-site .pp-page-body a.pp-c-btn{border-bottom:1px solid transparent}
.pp-site a.pp-c-btn:hover{background:var(--pp-blue-600);color:var(--pp-text-on-dark)}
/* PP-FIX B4c (2026-08-29): one WhatsApp register site-wide. The footer's
   .pp-whatsapp-link is blue-600/hover blue-500; the contact card's WhatsApp
   button read as a third skin (navy) while the legacy CSS supplied a fourth
   on the document pages. The WA modifier now takes the footer's values. */
.pp-site a.pp-c-btn--wa{background:var(--pp-blue-600)}
.pp-site a.pp-c-btn--wa:hover{background:var(--pp-blue-500)}
.pp-site a.pp-c-btn--outline{background:transparent;border-color:var(--pp-border-strong);color:var(--pp-text-heading)}
.pp-site .pp-page-body a.pp-c-btn--outline{border-bottom:1px solid var(--pp-border-strong)}
.pp-site a.pp-c-btn--outline:hover{background:transparent;border-color:var(--pp-blue-500);color:var(--pp-blue-700)}
.pp-site .pp-c-btn__ico{display:inline-flex;width:16px;height:16px}
.pp-site .pp-c-btn__ico svg{width:16px;height:16px;fill:currentColor}
.pp-site .pp-c-btn__arrow{font-family:var(--pp-font-mono);font-size:12px;letter-spacing:0}
.pp-site .pp-c-route{margin:0}
.pp-site .pp-c-route a.pp-c-btn{margin-top:auto}
/* Four "what we can help with" topics + four trust rows: the hairline
   .pp-ledger__item rhythm rather than a second card family. */
.pp-site .pp-c-topics{display:grid;grid-template-columns:repeat(2,minmax(0,1fr));gap:0 70px;margin:26px 0 0;border-top:1px solid var(--pp-border-subtle)}
.pp-site .pp-c-topic{padding:24px 0;border-bottom:1px solid var(--pp-border-subtle);min-width:0}
.pp-site .pp-c-topic>b{display:block;font-family:var(--pp-font-sans);font-size:17px;line-height:1.4;font-weight:600;color:var(--pp-text-heading)}
.pp-site .pp-c-topic p{margin:8px 0 0;max-width:none;font-size:14px;line-height:1.65;color:var(--pp-text-body)}
.pp-site .pp-c-respond{margin:26px 0 0;max-width:640px}
.pp-site .pp-c-callout{margin-top:44px}
.pp-site .pp-c-trust{display:grid;grid-template-columns:repeat(4,minmax(0,1fr));gap:38px;margin:70px 0 0;padding-top:34px;border-top:1px solid var(--pp-border-subtle)}
.pp-site .pp-c-trust__item{min-width:0}
.pp-site .pp-c-trust__item>b{display:block;font-family:var(--pp-font-sans);font-size:15px;line-height:1.4;font-weight:600;color:var(--pp-text-heading)}
.pp-site .pp-c-trust__item>span{display:block;margin-top:8px;font-family:var(--pp-font-sans);font-size:14px;line-height:1.6;color:var(--pp-text-body)}

/* ============ 14. 404 SURFACE (PP-EXT S-3) ============ */
.pp-site .pp-404{padding:44px 0 96px}
.pp-site .pp-404__code{margin:0;font-family:var(--pp-font-mono);font-size:11.5px;letter-spacing:var(--pp-ls-label);text-transform:uppercase;font-weight:500;color:var(--pp-text-accent)}
.pp-site .pp-404 h1{margin:20px 0 0;max-width:900px;font-family:var(--pp-font-display);font-size:clamp(34px,4.4vw,64px);line-height:1;letter-spacing:-.04em;font-weight:600;color:var(--pp-text-heading)}
.pp-site .pp-404__lede{margin:26px 0 0;max-width:620px;font-family:var(--pp-font-sans);font-size:16px;line-height:1.7;color:var(--pp-text-body)}
.pp-site .pp-404__links{display:grid;grid-template-columns:repeat(4,minmax(0,1fr));gap:26px;margin:70px 0 0;padding-top:34px;border-top:1px solid var(--pp-border-subtle);list-style:none}
.pp-site .pp-404__links li{margin:0;min-width:0}
.pp-site .pp-404__links a{display:block;font-family:var(--pp-font-sans);font-size:17px;line-height:1.4;font-weight:600;color:var(--pp-text-heading);border-bottom:1px solid transparent;transition:color var(--pp-dur-fast) var(--pp-ease)}
.pp-site .pp-404__links a:hover{color:var(--pp-blue-600)}
.pp-site .pp-404__links span{display:block;margin-top:8px;font-family:var(--pp-font-sans);font-size:14px;line-height:1.6;color:var(--pp-text-body)}

/* ============ 15. VERIFY PLACEHOLDER (PP-EXT S-4) ============ */
/* The /verify/ URL is a PRIVATE page carrying clearly-marked internal
   placeholder content. DCR-1 / collision K1 is UNRESOLVED: the concept's
   content model uses barred vocabulary and banned figures, and no owner
   decision replacing it exists. Step 11 therefore ships the page frame and
   NO lookup control of any kind -- a form would assert a working system
   that does not exist. Nothing here is a claim; nothing here is public. */
.pp-site .pp-verify{padding:44px 0 96px}
.pp-site .pp-verify__flag{margin:0 0 34px;padding:22px 24px;border:1px dashed var(--pp-border-strong);border-radius:var(--pp-radius-sm);background:var(--pp-neutral-50);font-family:var(--pp-font-mono);font-size:12.5px;line-height:1.7;color:var(--pp-navy-700)}
.pp-site .pp-verify__flag strong{display:block;margin-bottom:8px;font-family:var(--pp-font-sans);font-size:14px;letter-spacing:var(--pp-ls-label);text-transform:uppercase;font-weight:600;color:var(--pp-navy-700)}
.pp-site .pp-verify h1{margin:20px 0 0;max-width:900px;font-family:var(--pp-font-display);font-size:clamp(34px,4.4vw,64px);line-height:1;letter-spacing:-.04em;font-weight:600;color:var(--pp-text-heading)}
.pp-site .pp-verify__lede{margin:26px 0 0;max-width:620px;font-family:var(--pp-font-sans);font-size:16px;line-height:1.7;color:var(--pp-text-body)}
.pp-site .pp-verify__slots{margin:70px 0 0;padding:0;list-style:none;border-top:1px solid var(--pp-border-subtle)}
.pp-site .pp-verify__slots li{margin:0;padding:24px 0;border-bottom:1px solid var(--pp-border-subtle);max-width:none;font-family:var(--pp-font-sans);font-size:15px;line-height:1.7;color:var(--pp-text-body)}
.pp-site .pp-verify__slots b{display:block;font-size:17px;font-weight:600;color:var(--pp-text-heading)}
.pp-site .pp-verify__slots span{display:block;margin-top:8px;font-family:var(--pp-font-mono);font-size:12px;color:var(--pp-text-muted)}

/* ============ 16. PRODUCT SEARCH RESULTS (minimal skin) ============ */
/* MINIMAL BY INSTRUCTION. This block restyles type, spacing and the search
   control on the existing product-search-results template. It selects no
   Store API class, adds no add-to-cart affordance, and changes nothing
   about the product-collection query, its loop, its pagination mechanism or
   its no-results branch. The template edit that accompanies it adds exactly
   one class token (pp-site) to the existing <main>. */
.pp-site.pp-product-search-page,
.pp-site .pp-product-search-page{background:var(--pp-surface-page)}
.pp-site .wp-block-query-title{margin:0;max-width:900px;font-family:var(--pp-font-display);font-size:clamp(30px,3.4vw,44px);line-height:1.05;letter-spacing:-.035em;font-weight:600;color:var(--pp-text-heading)}
.pp-site .wp-block-woocommerce-breadcrumbs{margin:0 0 26px;font-family:var(--pp-font-mono);font-size:11.5px;line-height:1.5;color:var(--pp-text-muted)}
.pp-site .wp-block-woocommerce-breadcrumbs a{color:var(--pp-text-muted);border-bottom:1px solid transparent}
.pp-site .wp-block-woocommerce-breadcrumbs a:hover{color:var(--pp-blue-600);border-bottom-color:var(--pp-blue-200)}
.pp-site .wp-block-search__inside-wrapper{max-width:520px;border:0;gap:0}
/* N-1 necessity proof, as S11-D3: five class/attribute simple selectors
   plus one element = (0,5,1) > Assembler's (0,4,1). */
.pp-site .wp-block-search .wp-block-search__inside-wrapper input[type="search"]:not([type="submit"]){min-height:56px;padding:0 20px;border:1px solid var(--pp-border-default);border-radius:var(--pp-radius-pill);background:var(--pp-surface-page);box-shadow:none;font-family:var(--pp-font-sans);font-size:15px;font-weight:400;line-height:1.5;color:var(--pp-text-heading)}
.pp-site .wp-block-search .wp-block-search__inside-wrapper input[type="search"]:not([type="submit"]):focus{border-color:var(--pp-border-accent);outline:none}
.pp-site .wp-block-search__button{min-height:52px;margin-left:10px;padding:0 26px;border:1px solid transparent;border-radius:var(--pp-radius-pill);background:var(--pp-navy-700);font-family:var(--pp-font-sans);font-size:12px;letter-spacing:.14em;text-transform:uppercase;font-weight:600;color:var(--pp-text-on-dark)}
.pp-site .wp-block-search__button:hover{background:var(--pp-blue-600)}
.pp-site .wc-block-product-results-count,
.pp-site .wc-block-catalog-sorting{font-family:var(--pp-font-mono);font-size:11.5px;letter-spacing:var(--pp-ls-label);text-transform:uppercase;color:var(--pp-text-muted)}
.pp-site .pp-search-empty{margin:44px 0 0;padding:44px 0 0;border-top:1px solid var(--pp-border-subtle)}
.pp-site .pp-search-empty h2{margin:20px 0 0;max-width:760px;font-family:var(--pp-font-display);font-size:34px;font-weight:600;letter-spacing:-.035em;line-height:1.14;color:var(--pp-text-heading)}
.pp-site .pp-search-empty p{margin:22px 0 0;max-width:640px;font-family:var(--pp-font-sans);font-size:15px;line-height:1.7;color:var(--pp-text-body)}
.pp-site .wp-block-query-pagination{margin-top:70px;padding-top:34px;border-top:1px solid var(--pp-border-subtle);font-family:var(--pp-font-mono);font-size:12px;letter-spacing:var(--pp-ls-label);text-transform:uppercase;color:var(--pp-text-muted)}
.pp-site .wp-block-query-pagination a{color:var(--pp-text-accent);border-bottom:1px solid transparent}
.pp-site .wp-block-query-pagination a:hover{color:var(--pp-blue-700);border-bottom-color:var(--pp-blue-500)}

/* ============ 17. MY ACCOUNT (minimal skin) ============ */
/* PP-FIX (2026-08-29): every selector in this section was authored as the
   descendant form `.pp-site .pp-account-page`, but both classes sit on the
   SAME <main> element (wp_template 479), so none of these rules ever
   matched -- the legacy Global Styles CSS was silently styling the surface
   instead, which masked the bug until that block was retired today. All
   occurrences were rewritten to the compound `.pp-site.pp-account-page`,
   the same shape pp-cart.css and pp-checkout.css already use. */
/* MINIMAL BY INSTRUCTION AND PRESENTATIONAL ONLY. WooCommerce's classic
   [woocommerce_my_account] output is restyled -- type, spacing, hairlines,
   pill controls. No field id, no name attribute, no nonce, no endpoint, no
   form action, no login/registration/lost-password behaviour and no
   account template is referenced or altered anywhere in this file. */
.pp-site.pp-account-page .woocommerce{font-family:var(--pp-font-sans);font-size:15px;line-height:1.7;color:var(--pp-text-body)}
.pp-site.pp-account-page h2{margin:0 0 26px;max-width:760px;font-family:var(--pp-font-display);font-size:34px;font-weight:600;letter-spacing:-.035em;line-height:1.14;color:var(--pp-text-heading)}
.pp-site.pp-account-page h3{margin:40px 0 0;font-family:var(--pp-font-sans);font-size:17px;font-weight:600;line-height:1.4;color:var(--pp-text-heading)}
.pp-site.pp-account-page p{margin:22px 0 0;max-width:640px}
.pp-site.pp-account-page a{color:var(--pp-text-accent);border-bottom:1px solid var(--pp-blue-200)}
.pp-site.pp-account-page a:hover{color:var(--pp-blue-700);border-bottom-color:var(--pp-blue-500)}
.pp-site .woocommerce-MyAccount-navigation ul{margin:0;padding:0;list-style:none;border-top:1px solid var(--pp-border-subtle)}
.pp-site .woocommerce-MyAccount-navigation li{margin:0;padding:0;border-bottom:1px solid var(--pp-border-subtle)}
.pp-site .woocommerce-MyAccount-navigation li a{display:block;padding:16px 0;border-bottom:0;font-family:var(--pp-font-sans);font-size:14px;font-weight:500;color:var(--pp-text-heading)}
.pp-site .woocommerce-MyAccount-navigation li a:hover{color:var(--pp-blue-600)}
.pp-site .woocommerce-MyAccount-navigation li.is-active a{color:var(--pp-text-accent)}
.pp-site .woocommerce-MyAccount-content{min-width:0}
.pp-site.pp-account-page .woocommerce-form label,
.pp-site.pp-account-page .woocommerce-form-row label{display:block;margin-bottom:8px;font-family:var(--pp-font-sans);font-size:11px;letter-spacing:var(--pp-ls-label);text-transform:uppercase;font-weight:600;color:var(--pp-text-muted)}
/* N-1 necessity proof, as S11-D3: (0,5,1) > Assembler's (0,4,1). */
.pp-site.pp-account-page .woocommerce .woocommerce-form input[type="text"]:not([type="submit"]),
.pp-site.pp-account-page .woocommerce .woocommerce-form input[type="email"]:not([type="submit"]),
.pp-site.pp-account-page .woocommerce .woocommerce-form input[type="password"]:not([type="submit"]),
.pp-site.pp-account-page .woocommerce .woocommerce-form input[type="tel"]:not([type="submit"]){min-height:52px;padding:0 20px;border:1px solid var(--pp-border-default);border-radius:var(--pp-radius-pill);background:var(--pp-surface-page);box-shadow:none;font-family:var(--pp-font-sans);font-size:15px;font-weight:400;line-height:1.5;color:var(--pp-text-heading)}
.pp-site.pp-account-page .woocommerce .woocommerce-form input[type="text"]:not([type="submit"]):focus,
.pp-site.pp-account-page .woocommerce .woocommerce-form input[type="email"]:not([type="submit"]):focus,
.pp-site.pp-account-page .woocommerce .woocommerce-form input[type="password"]:not([type="submit"]):focus,
.pp-site.pp-account-page .woocommerce .woocommerce-form input[type="tel"]:not([type="submit"]):focus{border-color:var(--pp-border-accent);outline:none}
.pp-site.pp-account-page .woocommerce button[type="submit"]{display:inline-flex;align-items:center;justify-content:center;min-height:52px;margin-top:8px;padding:0 34px;border:1px solid transparent;border-radius:var(--pp-radius-pill);background:var(--pp-navy-700);cursor:pointer;font-family:var(--pp-font-sans);font-size:12px;letter-spacing:.14em;text-transform:uppercase;font-weight:600;color:var(--pp-text-on-dark);transition:background var(--pp-dur-fast) var(--pp-ease)}
.pp-site.pp-account-page .woocommerce button[type="submit"]:hover{background:var(--pp-blue-600)}
.pp-site.pp-account-page .woocommerce-form-login__rememberme{display:inline-flex;align-items:center;gap:10px;margin:22px 0 0;font-size:14px;color:var(--pp-text-body)}
.pp-site.pp-account-page .woocommerce-LostPassword{margin-top:22px;font-size:14px}
.pp-site.pp-account-page .woocommerce-Message,
.pp-site.pp-account-page .woocommerce-error,
.pp-site.pp-account-page .woocommerce-info{margin:0 0 34px;padding:22px 24px;border:1px solid var(--pp-border-subtle);border-top:2px solid var(--pp-blue-500);border-radius:var(--pp-radius-sm);background:var(--pp-surface-accent-soft);list-style:none;font-size:15px;line-height:1.7;color:var(--pp-navy-700)}
.pp-site.pp-account-page .woocommerce table.shop_table{width:100%;margin:26px 0 0;border-collapse:collapse;border:0;font-family:var(--pp-font-sans)}
.pp-site.pp-account-page .woocommerce table.shop_table th{padding:0 var(--pp-space-6) 16px 0;border:0;border-bottom:1px solid var(--pp-navy-700);text-align:left;font-size:11px;letter-spacing:var(--pp-ls-label);text-transform:uppercase;font-weight:600;color:var(--pp-text-muted)}
.pp-site.pp-account-page .woocommerce table.shop_table td{padding:22px var(--pp-space-6) 22px 0;border:0;border-bottom:1px solid var(--pp-border-subtle);vertical-align:top;font-size:14px;line-height:1.6;color:var(--pp-text-body)}

/* ============ 18. RESPONSIVE (the system's own axes: 1100/860/700/380) ============ */
@media (max-width:1100px){
  .pp-site .pp-q-hero__wrap,
  .pp-site .pp-faq-hero__wrap,
  .pp-site .pp-c-hero__wrap{grid-template-columns:1fr;gap:44px}
  .pp-site .pp-q-row{grid-template-columns:1fr;gap:34px}
  .pp-site .pp-faq-layout{grid-template-columns:1fr;gap:44px}
  .pp-site .pp-c-routes{grid-template-columns:1fr;gap:20px}
  .pp-site .pp-contents ol{grid-template-columns:repeat(2,minmax(0,1fr))}
  .pp-site .pp-c-trust{grid-template-columns:repeat(2,minmax(0,1fr));gap:34px}
  .pp-site .pp-404__links{grid-template-columns:repeat(2,minmax(0,1fr))}
  .pp-site .pp-page-cta,
  .pp-site .pp-q-request{gap:34px;padding:44px}
}
@media (max-width:860px){
  /* The two composed-surface headings carry their element and their own
     class (0,3,1) here too: a media query adds no specificity, so the base
     h2.pp-c-h2 / h2.pp-faq-title rules would otherwise out-rank a
     lower-weight responsive selector. */
  .pp-site .pp-page-body h2,
  .pp-site .pp-q-side h2,
  .pp-site .pp-page-body h2.pp-c-h2,
  .pp-site .pp-page-body h2.pp-faq-title,
  .pp-site .pp-search-empty h2,
  .pp-site.pp-account-page h2{font-size:30px}
  .pp-site .pp-page-hero h1{max-width:none}
  .pp-site .pp-q-cards--commit,
  .pp-site .pp-q-cards--docs,
  .pp-site .pp-q-cards--methods{grid-template-columns:1fr}
  .pp-site .pp-c-topics{grid-template-columns:1fr;gap:0}
  .pp-site .pp-page-cta h2,
  .pp-site .pp-q-request h2,
  .pp-site .pp-faq-cta__text h2{font-size:27px}
}
/* Departure S11-D2, part (b): the page's own inline stylesheet collapses
   .pp-compare at 781px. Re-assert the desktop grid across the whole band so
   the legacy collapse never fires; the system's own collapse happens at the
   700px axis below. Each declaration below exists solely to out-cascade one
   inline declaration, and is written at (0,2,0)/(0,3,0) against its
   (0,1,0)/(0,2,0) counterpart. */
@media (max-width:781px){
  .pp-site .pp-compare__head{display:grid}
  .pp-site .pp-compare__row{grid-template-columns:1.1fr 1.6fr 1.4fr;border-top:0;padding:0}
  .pp-site .pp-compare__row span{border-top:0;border-bottom:1px solid var(--pp-border-subtle)}
  .pp-site .pp-compare__row span:nth-child(2)::before,
  .pp-site .pp-compare__row span:nth-child(3)::before{content:none}
}
@media (max-width:700px){
  .pp-site .pp-page-body{padding-bottom:70px}
  .pp-site .pp-page-body h2,
  .pp-site .pp-q-side h2,
  .pp-site .pp-page-body h2.pp-c-h2,
  .pp-site .pp-page-body h2.pp-faq-title,
  .pp-site .pp-search-empty h2,
  .pp-site.pp-account-page h2{font-size:27px}
  .pp-site .pp-page-body h2{margin-top:48px}
  .pp-site .pp-page-body h3{margin-top:30px}
  .pp-site .pp-page-lead,
  .pp-site .pp-page-body p,
  .pp-site .pp-page-body li,
  .pp-site .pp-q-intro,
  .pp-site .pp-c-respond,
  .pp-site .pp-faq-urgent,
  .pp-site .pp-404__lede,
  .pp-site .pp-verify__lede,
  .pp-site .pp-page-meta{max-width:none}
  .pp-site .pp-contents{margin-top:34px;padding-top:22px}
  .pp-site .pp-contents ol{grid-template-columns:1fr;gap:0}
  .pp-site .pp-q-row{margin-top:48px;padding-top:48px}
  .pp-site .pp-q-intro{margin-top:34px}
  .pp-site .pp-page-card,
  .pp-site .pp-c-route,
  .pp-site .pp-faq-aside__card{padding:22px}
  .pp-site .pp-page-notice{padding:22px}
  .pp-site .pp-page-cta,
  .pp-site .pp-q-request{display:block;margin-top:70px;padding:34px 26px}
  .pp-site .pp-page-cta h2,
  .pp-site .pp-q-request h2,
  .pp-site .pp-faq-cta__text h2{font-size:24px}
  .pp-site .pp-q-request p{margin-bottom:28px}
  .pp-site .pp-actions{gap:12px}
  .pp-site .pp-actions a.pp-button,
  .pp-site a.pp-c-btn,
  .pp-site a.pp-faq-aside__btn,
  .pp-site a.pp-q-request__btn,
  .pp-site a.pp-whatsapp-link{width:100%}
  .pp-site .pp-faq-cta{display:block}
  .pp-site .pp-faq-cta__badge{margin-bottom:22px}
  .pp-site .pp-faq-cta__btn{margin-top:26px}
  .pp-site .pp-faq-searchbar{max-width:none}
  .pp-site .pp-page .pp-faq-searchbar input[type="search"]:not([type="submit"]){padding-right:20px}
  .pp-site .pp-faq-searchbar button[type="submit"]{position:static;flex:0 0 auto;margin-left:10px;padding:0 18px}
  .pp-site .pp-page-details summary{font-size:16px;padding:20px 0;gap:16px}
  .pp-site .pp-c-trust{grid-template-columns:1fr;gap:24px;margin-top:48px}
  .pp-site .pp-404__links{grid-template-columns:1fr;gap:20px}
  .pp-site .pp-404,
  .pp-site .pp-verify{padding-bottom:70px}
  /* Departure S11-D2, part (c): the system's own .pp-compare collapse, at
     the 700px axis, using the .pp-evidence row-per-record pattern. The
     column labels come from ::before content on the second and third cells
     -- the same technique pp-education.css s19 and pp-product.css already
     ship for their coverage tables. */
  .pp-site .pp-compare__head{display:none}
  .pp-site .pp-compare__row{grid-template-columns:1fr;padding:22px 0;border-top:0;border-bottom:1px solid var(--pp-border-subtle)}
  .pp-site .pp-compare__row span{padding:0;border-bottom:0}
  .pp-site .pp-compare__row span:nth-child(1){font-size:16px;padding-bottom:14px}
  .pp-site .pp-compare__row span:nth-child(2),
  .pp-site .pp-compare__row span:nth-child(3){padding-top:12px}
  .pp-site .pp-compare__row span:nth-child(2)::before{content:'Prime Peptides UAE';display:block;margin-bottom:4px;font-family:var(--pp-font-sans);font-size:11px;letter-spacing:var(--pp-ls-label);text-transform:uppercase;font-weight:600;color:var(--pp-text-muted)}
  .pp-site .pp-compare__row span:nth-child(3)::before{content:'Common practice';display:block;margin-bottom:4px;font-family:var(--pp-font-sans);font-size:11px;letter-spacing:var(--pp-ls-label);text-transform:uppercase;font-weight:600;color:var(--pp-text-muted)}
}
@media (max-width:380px){
  .pp-site .pp-page-body h2,
  .pp-site .pp-q-side h2,
  .pp-site .pp-page-body h2.pp-c-h2,
  .pp-site .pp-page-body h2.pp-faq-title,
  .pp-site.pp-account-page h2{font-size:24px}
  .pp-site .pp-page-cta,
  .pp-site .pp-q-request{padding:26px 20px}
  .pp-site .pp-page-card,
  .pp-site .pp-c-route,
  .pp-site .pp-faq-aside__card,
  .pp-site .pp-page-notice{padding:20px}
  .pp-site .pp-faq-searchbar{display:block}
  .pp-site .pp-faq-searchbar button[type="submit"]{width:100%;margin:10px 0 0}
  .pp-site .pp-faq-topics button,
  .pp-site .pp-page-details summary::after,
  .pp-site .pp-contents a,
  .pp-site .pp-page-body a,
  .pp-site a.pp-button,
  .pp-site a.pp-c-btn{transition:none}
}

/* ============ PP-FIX PASS (2026-08-29, pre-launch audit) ============
   A2 -- About .pp-page-cta panel rendered its RUO strong navy-on-navy: the
   strong loses to the generic `.pp-page-body strong` heading-color rule above
   (s5); equal specificity, later position wins. (The A2 secondary-button
   counter-rules that used to sit here were removed 2026-08-29 with the
   retirement of the legacy Global Styles CSS block -- custom_css post 27 --
   they countered; section 7's own .pp-page-cta button rules now win.) */
.pp-site .pp-page-cta strong{color:inherit}

/* A3 -- Contact route/button icons: the envelope and Instagram glyphs are
   stroke-drawn (fill="none" stroke="currentColor" in the markup), but the
   generic `.pp-c-route__icon svg{fill:currentColor}` / `.pp-c-btn__ico svg`
   rules above flood-fill them into blobs (CSS beats presentation attributes).
   Restore the stroke treatment, mirroring pp-footer.css .pp-social-link__icon.
   The WhatsApp glyph is a filled path and keeps fill:currentColor. */
.pp-site .pp-c-route--email .pp-c-route__icon svg,
.pp-site .pp-c-route--ig .pp-c-route__icon svg{
  fill:none;
  stroke:currentColor;
}
.pp-site .pp-c-btn--ig .pp-c-btn__ico svg{
  fill:none;
  stroke:currentColor;
}

/* ============ PP-FIX C PASS (2026-08-29, pre-launch audit) ============ */

/* C5 -- the five plain document pages (Privacy, Terms, Delivery, Returns,
   Product & regulatory information) ran a ~640px column hard-left with the
   whole right half of the shell empty at >=1440, and the section hairlines
   they used to inherit from the retired legacy Global Styles block died with
   it, leaving the first section tighter than the rest. The document column is
   now a centred 840px measure (wide enough that the clamped H1 never wraps
   early), and every H2 opens on its own hairline -- including the first, so
   the rhythm starts at the first divider instead of one late. Scoped to the
   bare .pp-page wrapper: About (.pp-about) keeps its two-column rhythm and
   Contact (.pp-contact-v2) its composed layout; FAQ/Quality no longer render
   a .pp-page wrapper at all. */
.pp-site .pp-page:not(.pp-about):not(.pp-contact-v2) .pp-page-wrap{max-width:840px;margin-inline:auto}
.pp-site .pp-page:not(.pp-about):not(.pp-contact-v2) .pp-page-body h2{margin-top:56px;padding-top:44px;border-top:1px solid var(--pp-border-subtle)}
.pp-site .pp-page:not(.pp-about):not(.pp-contact-v2) .pp-page-body h2:first-child{margin-top:44px}
@media (max-width:700px){
  /* The (0,5,1) rules above out-rank the lane's own <=700 h2 rhythm, so the
     mobile values are restated here at the same weight. */
  .pp-site .pp-page:not(.pp-about):not(.pp-contact-v2) .pp-page-body h2{margin-top:44px;padding-top:34px}
  .pp-site .pp-page:not(.pp-about):not(.pp-contact-v2) .pp-page-body h2:first-child{margin-top:34px}
}

/* C7 -- the 404 quick links were headings that happened to be links: no
   underline, chevron or hover cue. A mono arrow gives them the same
   affordance grammar as the rest of the system's inline links. */
.pp-site .pp-404__links a::after{content:'\2192';display:inline-block;margin-left:8px;color:var(--pp-blue-600);transition:transform var(--pp-dur-fast) var(--pp-ease)}
.pp-site .pp-404__links a:hover::after{transform:translateX(3px)}

/* C10 -- keyboard focus stragglers. pp-compat retires outlines inside
   .pp-site, so a component whose base rule declares any box-shadow value
   (including none) silently defeats the (0,2,0) fallback ring. Each rule
   below restores the system ring at the component's own weight. */
.pp-site a.pp-button:focus-visible{outline:none;box-shadow:var(--pp-shadow-focus)}
.pp-site a.pp-whatsapp-link:focus-visible{outline:none;box-shadow:var(--pp-shadow-focus)}
/* On the navy CTA panel the accent ring vanishes against the panel; the
   white-gap idiom (hero buttons) keeps it legible there. */
.pp-site .pp-page-cta a.pp-button:focus-visible{box-shadow:0 0 0 3px rgba(255,255,255,.85)}
.pp-site.pp-account-page .woocommerce .woocommerce-form input[type="text"]:not([type="submit"]):focus-visible,
.pp-site.pp-account-page .woocommerce .woocommerce-form input[type="email"]:not([type="submit"]):focus-visible,
.pp-site.pp-account-page .woocommerce .woocommerce-form input[type="password"]:not([type="submit"]):focus-visible,
.pp-site.pp-account-page .woocommerce .woocommerce-form input[type="tel"]:not([type="submit"]):focus-visible{border-color:var(--pp-border-accent);box-shadow:var(--pp-shadow-focus)}
.pp-site.pp-account-page .woocommerce button[type="submit"]:focus-visible{outline:none;box-shadow:var(--pp-shadow-focus)}
