/* ===== fonts.css ===== */
/* Self-hosted Geist / Geist Mono (latin subset — covers the Latin/
   numeral technical labels; Greek copy already falls back to the system
   UI stack below, exactly as it did under the Google Fonts version, so
   this changes nothing visually). Self-hosting removes the external
   request to fonts.googleapis.com, which otherwise sends every visitor's
   IP to Google on every page load with no consent prompt. */
@font-face{
  font-family:"Geist";
  src:url("../fonts/geist-sans-400.woff2") format("woff2");
  font-weight:400; font-style:normal; font-display:swap;
}
@font-face{
  font-family:"Geist";
  src:url("../fonts/geist-sans-500.woff2") format("woff2");
  font-weight:500; font-style:normal; font-display:swap;
}
@font-face{
  font-family:"Geist";
  src:url("../fonts/geist-sans-600.woff2") format("woff2");
  font-weight:600; font-style:normal; font-display:swap;
}
@font-face{
  font-family:"Geist";
  src:url("../fonts/geist-sans-700.woff2") format("woff2");
  font-weight:700; font-style:normal; font-display:swap;
}
@font-face{
  font-family:"Geist Mono";
  src:url("../fonts/geist-mono-400.woff2") format("woff2");
  font-weight:400; font-style:normal; font-display:swap;
}
@font-face{
  font-family:"Geist Mono";
  src:url("../fonts/geist-mono-500.woff2") format("woff2");
  font-weight:500; font-style:normal; font-display:swap;
}
@font-face{
  font-family:"Geist Mono";
  src:url("../fonts/geist-mono-600.woff2") format("woff2");
  font-weight:600; font-style:normal; font-display:swap;
}
@font-face{
  font-family:"Geist Mono";
  src:url("../fonts/geist-mono-700.woff2") format("woff2");
  font-weight:700; font-style:normal; font-display:swap;
}


/* ===== tokens.css ===== */
/* =======================================================================
   PREMIUM TECHNOLOGIES — DESIGN TOKENS
   Shared across every section. One source of truth for color, type and
   radius — sections reference these variables, they never redeclare
   their own copies. Loaded first (see functions.php enqueue order).
   ======================================================================= */

:root{
  /* type — Geist pairs a quiet, high-precision grotesk with a matching
     mono for numerals and labels; both fall back cleanly to system
     stacks if the webfont hasn't loaded yet. */
  --pt-font-sans: "Geist", -apple-system, BlinkMacSystemFont, "Segoe UI", Roboto, "Helvetica Neue", Arial, sans-serif;
  --pt-font-mono: "Geist Mono", ui-monospace, SFMono-Regular, "Roboto Mono", Menlo, Consolas, "Liberation Mono", monospace;

  /* shape */
  --pt-radius: 10px;

  /* dark surface (hero, capabilities, expertise, cta) */
  --pt-dark-bg:     #0C0D0B;
  --pt-dark-ink:    #F3F4F0;
  --pt-dark-muted:  #9A9F95;
  --pt-dark-line:   rgba(243,244,240,0.12);
  --pt-dark-line-2: rgba(243,244,240,0.22);

  /* light surface (proof, metrics, b2b) */
  --pt-light-bg:    #F4F4F1;
  --pt-light-ink:   #14160F;
  --pt-light-muted: #63665C;
  --pt-light-line:  rgba(20,22,15,0.14);

  /* footer — deliberately darker than the other dark sections */
  --pt-footer-bg:    #080907;
  --pt-footer-muted: #82877B;
  --pt-footer-line:  rgba(243,244,240,0.10);

  /* the single status/engineering accent — one hue, two contrast-tuned
     values so it stays legible on both surfaces */
  --pt-green:         #34C97A; /* on dark surfaces */
  --pt-green-on-light:#1E8C56; /* on light surfaces */
}

/* base reset — intentionally minimal; each component still scopes its
   own selectors under its own class, this only removes user-agent noise */
*, *::before, *::after{ box-sizing:border-box; }
html{ scroll-behavior:smooth; }
body{ margin:0; background:var(--pt-dark-bg); }
img{ max-width:100%; display:block; }
/* one-page anchors: keep section headings clear of the sticky nav bar */
main > section{ scroll-margin-top:88px; }
@media (prefers-reduced-motion: reduce){
  html{ scroll-behavior:auto; }
}

/* Brand mark — a small viewfinder/scan bracket, reused in the nav,
   hero and footer as the one recurring "signature" device instead of a
   heavier logo treatment. Inherits color from its context. */
.pt-mark{ display:block; flex:none; color:currentColor; }


/* ===== reveal.css — scroll-triggered entrance ==========================
   Progressive enhancement: an element is fully visible by default. Only
   once main.js confirms IntersectionObserver + no reduced-motion does it
   add "js-reveal" to <html>, which is what actually hides [data-reveal]
   ahead of its entrance. No JS, JS failure, or reduced-motion preference
   all fall back to "just show the content" — never a hidden section. */
html.js-reveal [data-reveal]{
  opacity:0;
  transform:translateY(26px);
  transition:opacity .8s cubic-bezier(.16,.8,.24,1), transform .8s cubic-bezier(.16,.8,.24,1);
  transition-delay:var(--pt-reveal-delay, 0ms);
}
html.js-reveal [data-reveal].is-revealed{
  opacity:1;
  transform:translateY(0);
}
@media (prefers-reduced-motion: reduce){
  html.js-reveal [data-reveal]{ opacity:1; transform:none; transition:none; }
}


/* ===== nav.css ===== */
.pt-nav-bar{
      --pt-nav-bg:var(--pt-dark-bg);
      --pt-nav-ink:var(--pt-dark-ink);
      --pt-nav-muted:var(--pt-dark-muted);
      --pt-nav-line:var(--pt-dark-line);
      --pt-nav-green:var(--pt-green);
      --pt-nav-font-sans:var(--pt-font-sans);
      --pt-nav-font-mono:var(--pt-font-mono);
      box-sizing:border-box;
      position:sticky;
      top:0;
      z-index:200;
      background:var(--pt-nav-bg);
      border-bottom:1px solid var(--pt-nav-line);
      font-family:var(--pt-nav-font-sans);
    }
    .pt-nav-bar *,
    .pt-nav-bar *::before,
    .pt-nav-bar *::after{ box-sizing:border-box; }
    .pt-nav-bar ul{ margin:0; padding:0; list-style:none; }
    .pt-nav-bar a{ text-decoration:none; color:inherit; }

    .pt-nav-inner{
      max-width:1280px;
      margin:0 auto;
      padding:0 24px;
      height:72px;
      display:flex;
      align-items:center;
      justify-content:space-between;
      gap:24px;
    }

    .pt-nav-logo{
      display:flex;
      align-items:center;
      gap:10px;
      font-weight:600;
      font-size:16px;
      letter-spacing:.005em;
      color:var(--pt-nav-ink);
      white-space:nowrap;
    }
    .pt-nav-logo img{ height:34px; width:auto; display:block; }
    .pt-nav-logo .pt-mark{ color:var(--pt-nav-green); }
    .pt-nav-logo span{
      font-family:var(--pt-nav-font-mono);
      font-weight:500;
      font-size:11px;
      letter-spacing:.08em;
      color:var(--pt-nav-muted);
      text-transform:uppercase;
    }

    .pt-nav-toggle{
      display:none;
      width:40px;
      height:40px;
      align-items:center;
      justify-content:center;
      background:transparent;
      border:1px solid var(--pt-nav-line);
      border-radius:8px;
      cursor:pointer;
      flex-shrink:0;
    }
    .pt-nav-toggle span,
    .pt-nav-toggle span::before,
    .pt-nav-toggle span::after{
      content:"";
      display:block;
      width:16px;
      height:1.5px;
      background:var(--pt-nav-ink);
      position:relative;
      transition:transform .2s ease, opacity .2s ease;
    }
    .pt-nav-toggle span::before{ position:absolute; top:-5px; }
    .pt-nav-toggle span::after{ position:absolute; top:5px; }
    .pt-nav-bar[data-pt-open="true"] .pt-nav-toggle span{ background:transparent; }
    .pt-nav-bar[data-pt-open="true"] .pt-nav-toggle span::before{ top:0; transform:rotate(45deg); }
    .pt-nav-bar[data-pt-open="true"] .pt-nav-toggle span::after{ top:0; transform:rotate(-45deg); }

    .pt-nav-menu{
      display:flex;
      align-items:center;
      gap:32px;
    }

    .pt-nav-links{
      display:flex;
      align-items:center;
      gap:28px;
    }
    .pt-nav-links > li > a{
      font-size:13.5px;
      color:var(--pt-nav-ink);
      padding:8px 0;
      position:relative;
    }
    .pt-nav-links > li > a::after{
      content:"";
      position:absolute;
      left:0; right:0; bottom:2px;
      height:1px;
      background:var(--pt-nav-green);
      transform:scaleX(0);
      transform-origin:left;
      transition:transform .2s ease;
    }
    .pt-nav-links > li > a:hover::after,
    .pt-nav-links > li > a:focus-visible::after{ transform:scaleX(1); }
    .pt-nav-links > li > a:focus-visible{ outline:1px solid var(--pt-nav-green); outline-offset:4px; border-radius:2px; }

    .pt-nav-has-sub{ position:relative; }
    .pt-nav-sub{
      position:absolute;
      top:calc(100% + 14px);
      left:-16px;
      min-width:230px;
      background:#111310;
      border:1px solid var(--pt-nav-line);
      border-radius:10px;
      padding:8px;
      opacity:0;
      visibility:hidden;
      transform:translateY(4px);
      transition:opacity .16s ease, transform .16s ease, visibility .16s;
    }
    .pt-nav-has-sub:hover .pt-nav-sub,
    .pt-nav-has-sub:focus-within .pt-nav-sub,
    .pt-nav-has-sub[data-pt-sub-open="true"] .pt-nav-sub{
      opacity:1; visibility:visible; transform:translateY(0);
    }
    .pt-nav-sub li + li{ border-top:1px solid var(--pt-nav-line); }
    .pt-nav-sub a{
      display:flex;
      align-items:baseline;
      gap:10px;
      font-size:13px;
      color:var(--pt-nav-muted);
      padding:10px 10px;
      border-radius:6px;
    }
    .pt-nav-sub a b{
      font-family:var(--pt-nav-font-mono);
      font-weight:500;
      font-size:10.5px;
      color:var(--pt-nav-green);
    }
    .pt-nav-sub a:hover,
    .pt-nav-sub a:focus-visible{ color:var(--pt-nav-ink); background:rgba(243,244,240,0.05); }

    .pt-nav-cta{
      font-size:13px;
      font-weight:600;
      color:var(--pt-nav-bg);
      background:var(--pt-nav-ink);
      padding:10px 18px;
      border-radius:999px;
      white-space:nowrap;
      transition:background .15s ease;
    }
    .pt-nav-cta:hover,
    .pt-nav-cta:focus-visible{ background:var(--pt-nav-green); }
    .pt-nav-cta:focus-visible{ outline:2px solid var(--pt-nav-green); outline-offset:3px; }

    @media (max-width:900px){
      .pt-nav-toggle{ display:flex; }
      .pt-nav-menu{
        position:fixed;
        top:72px;
        left:0; right:0;
        bottom:0;
        flex-direction:column;
        align-items:stretch;
        gap:0;
        background:var(--pt-nav-bg);
        padding:8px 24px 32px;
        overflow-y:auto;
        transform:translateY(-8px);
        opacity:0;
        visibility:hidden;
        transition:opacity .18s ease, transform .18s ease, visibility .18s;
      }
      .pt-nav-bar[data-pt-open="true"] .pt-nav-menu{
        opacity:1; visibility:visible; transform:translateY(0);
      }
      .pt-nav-links{ flex-direction:column; align-items:stretch; gap:0; }
      .pt-nav-links > li{ border-top:1px solid var(--pt-nav-line); }
      .pt-nav-links > li > a{ display:block; padding:16px 2px; font-size:15px; }
      .pt-nav-sub{
        position:static;
        opacity:1; visibility:visible; transform:none;
        display:none;
        border:none;
        background:transparent;
        padding:0 0 8px 12px;
      }
      .pt-nav-has-sub[data-pt-sub-open="true"] .pt-nav-sub{ display:block; }
      .pt-nav-cta{ margin-top:16px; text-align:center; }
    }

    @media (prefers-reduced-motion:reduce){
      .pt-nav-bar *{ transition:none !important; }
    }


/* ===== hero.css ===== */
.pt-hero-section{
      /* REPLACE IMAGE HERE — swap this file, nothing else needs editing */
      --pt-hero-img: url("../images/hero-macro.svg");

      --pt-hero-bg:var(--pt-dark-bg);
      --pt-hero-ink:var(--pt-dark-ink);
      --pt-hero-muted:var(--pt-dark-muted);
      --pt-hero-line:var(--pt-dark-line);
      --pt-hero-green:var(--pt-green);
      --pt-hero-font-sans:var(--pt-font-sans);
      --pt-hero-font-mono:var(--pt-font-mono);

      box-sizing:border-box;
      position:relative;
      background:var(--pt-hero-bg);
      color:var(--pt-hero-ink);
      font-family:var(--pt-hero-font-sans);
      overflow:hidden;
    }
    .pt-hero-section *,
    .pt-hero-section *::before,
    .pt-hero-section *::after{ box-sizing:border-box; }
    .pt-hero-section p{ margin:0; }
    .pt-hero-section a{ text-decoration:none; }

    .pt-hero-inner{
      position:relative;
      max-width:1280px;
      margin:0 auto;
      padding:84px 24px 0;
      min-height:92vh;
      display:flex;
      flex-direction:column;
      justify-content:flex-end;
      padding-bottom:0;
    }

    /* full-bleed macro photography behind the whole viewport — the
       headline sits on top of it, not beside it. A layered scrim keeps
       the type legible without hiding the image: darkest at the very
       bottom (behind text + index strip), lighter toward the top-right
       so the photograph itself still reads as the opening image. */
    .pt-hero-media{
      position:absolute;
      inset:0;
      background-image:
        var(--pt-hero-img),
        linear-gradient(200deg,#1b1d17 0%,var(--pt-dark-bg) 70%);
      background-size:cover, auto;
      background-position:center, center;
      background-repeat:no-repeat, no-repeat;
    }
    /* signal-network canvas: painted after the media background and
       before the ::after scrim below, so it sits between the two —
       visible, but still dimmed toward the bottom for text legibility. */
    .pt-hero-network{
      position:absolute;
      inset:0;
      width:100%;
      height:100%;
      display:block;
    }
    .pt-hero-media::after{
      content:"";
      position:absolute;
      inset:0;
      background:
        linear-gradient(0deg, rgba(6,7,5,0.94) 0%, rgba(6,7,5,0.62) 32%, rgba(6,7,5,0.22) 58%, rgba(6,7,5,0.08) 78%),
        linear-gradient(100deg, rgba(6,7,5,0.55) 0%, rgba(6,7,5,0.05) 46%);
    }

    /* small editorial caption chip, top-right — a photo credit-style
       annotation, not a business claim: it names what the image shows. */
    .pt-hero-caption{
      position:absolute;
      top:24px;
      right:24px;
      z-index:2;
      display:flex;
      align-items:center;
      gap:10px;
      padding:9px 14px;
      border:1px solid var(--pt-hero-line);
      border-radius:999px;
      background:rgba(12,13,11,0.42);
      backdrop-filter:blur(6px);
      font-family:var(--pt-hero-font-mono);
      font-size:10.5px;
      letter-spacing:.1em;
      text-transform:uppercase;
      color:var(--pt-hero-muted);
    }
    .pt-hero-caption .pt-mark{ color:var(--pt-hero-green); }

    /* live status pill, stacked under the caption chip — reads the
       visitor's clock against the real business hours from Contact and
       says plainly whether the lab is open right now. Reveals with a
       short clip-path wipe ~1.8s after load. */
    .pt-hero-status{
      position:absolute;
      top:70px;
      right:24px;
      z-index:2;
    }
    .pt-hero-status__pill{
      display:flex;
      align-items:center;
      gap:9px;
      padding:9px 14px;
      border:1px solid var(--pt-hero-line);
      border-radius:999px;
      background:rgba(12,13,11,0.42);
      backdrop-filter:blur(6px);
      font-family:var(--pt-hero-font-mono);
      font-size:10.5px;
      letter-spacing:.1em;
      text-transform:uppercase;
      color:var(--pt-hero-muted);
      transform-origin:top right;
      animation:pt-badge-in 1.3s 1.8s cubic-bezier(.23,1,.32,1) both;
    }
    @media (prefers-reduced-motion: reduce){
      .pt-hero-status__pill{ animation:pt-badge-in-fade .2s ease-out both; }
    }
    @keyframes pt-badge-in{
      0%{ opacity:0; transform:scale(.88); clip-path:inset(0 calc(100% - 22px) 0 0 round 999px); }
      30%{ opacity:1; transform:scale(1); clip-path:inset(0 calc(100% - 22px) 0 0 round 999px); }
      100%{ opacity:1; transform:scale(1); clip-path:inset(0 0 0 0 round 999px); }
    }
    @keyframes pt-badge-in-fade{ from{ opacity:0; } to{ opacity:1; } }
    .pt-hero-status__dot{
      position:relative;
      width:7px; height:7px;
      border-radius:50%;
      background:var(--pt-hero-green);
      flex:none;
    }
    .pt-hero-status__ring{
      position:absolute; inset:-5px;
      border-radius:50%;
      border:1px solid var(--pt-hero-green);
      animation:pt-pulse-ring 2.4s ease-out infinite;
    }
    @keyframes pt-pulse-ring{
      0%{ transform:scale(.55); opacity:.6; }
      100%{ transform:scale(1.7); opacity:0; }
    }
    .pt-hero-status--closed .pt-hero-status__dot{ background:var(--pt-hero-muted); }
    .pt-hero-status--closed .pt-hero-status__ring{ display:none; }
    @media (prefers-reduced-motion: reduce){
      .pt-hero-status__ring{ animation:none; opacity:0; }
    }

    .pt-hero-eyebrow{
      position:relative;
      z-index:2;
      display:inline-flex;
      align-items:center;
      gap:9px;
      font-family:var(--pt-hero-font-mono);
      font-size:11.5px;
      font-weight:500;
      letter-spacing:.14em;
      text-transform:uppercase;
      color:var(--pt-hero-muted);
    }
    .pt-hero-eyebrow__dot{
      width:6px; height:6px;
      border-radius:50%;
      background:var(--pt-hero-green);
      box-shadow:0 0 0 3px rgba(52,201,122,0.16);
      flex-shrink:0;
    }

    .pt-hero-title{
      position:relative;
      z-index:2;
      margin:24px 0 0;
      max-width:760px;
      font-family:var(--pt-hero-font-sans);
      font-size:clamp(32px, 5.2vw, 60px);
      line-height:1.14;
      font-weight:600;
      letter-spacing:-0.008em;
      text-wrap:balance;
    }

    .pt-hero-sub{
      position:relative;
      z-index:2;
      margin-top:20px;
      max-width:480px;
      font-family:var(--pt-hero-font-sans);
      font-size:16.5px;
      line-height:1.7;
      font-weight:400;
      color:var(--pt-hero-muted);
    }

    .pt-hero-actions{
      position:relative;
      z-index:2;
      margin-top:34px;
      margin-bottom:64px;
      display:flex;
      align-items:center;
      gap:22px;
    }
    .pt-hero-cta{
      display:inline-flex;
      align-items:center;
      gap:10px;
      font-family:var(--pt-hero-font-sans);
      font-size:14px;
      font-weight:600;
      color:var(--pt-hero-bg);
      background:var(--pt-hero-ink);
      padding:14px 22px;
      border-radius:999px;
      transition:background .15s ease, transform .15s ease;
    }
    .pt-hero-cta:hover{ background:var(--pt-hero-green); }
    .pt-hero-cta:focus-visible{ outline:2px solid var(--pt-hero-green); outline-offset:3px; }
    .pt-hero-cta__arrow{ transition:transform .15s ease; }
    .pt-hero-cta:hover .pt-hero-cta__arrow{ transform:translateX(3px); }

    .pt-hero-cta--ghost{
      font-size:13.5px;
      color:var(--pt-hero-muted);
      border-bottom:1px solid var(--pt-hero-line);
      padding-bottom:2px;
      transition:color .15s ease, border-color .15s ease;
    }
    .pt-hero-cta--ghost:hover,
    .pt-hero-cta--ghost:focus-visible{ color:var(--pt-hero-ink); border-color:var(--pt-hero-ink); }

    /* bottom technical index strip */
    .pt-hero-index{
      position:relative;
      z-index:2;
      margin-top:56px;
      border-top:1px solid var(--pt-hero-line);
      display:grid;
      grid-template-columns:repeat(4, 1fr);
    }
    .pt-hero-index a{
      display:flex;
      align-items:baseline;
      gap:10px;
      padding:18px 16px 18px 0;
      color:var(--pt-hero-muted);
      border-right:1px solid var(--pt-hero-line);
      font-size:12.5px;
      transition:color .15s ease;
    }
    .pt-hero-index a:last-child{ border-right:none; padding-right:0; }
    .pt-hero-index a:hover,
    .pt-hero-index a:focus-visible{ color:var(--pt-hero-ink); }
    .pt-hero-index a b{
      font-family:var(--pt-hero-font-mono);
      font-weight:500;
      color:var(--pt-hero-green);
      font-size:11px;
    }

    @media (max-width:900px){
      .pt-hero-inner{ padding:76px 20px 0; min-height:100vh; }
      .pt-hero-media::after{
        background:
          linear-gradient(0deg, rgba(6,7,5,0.95) 0%, rgba(6,7,5,0.72) 45%, rgba(6,7,5,0.4) 100%);
      }
      .pt-hero-caption{ display:none; }
      .pt-hero-status{ display:none; }
      .pt-hero-title{ font-size:clamp(28px, 8vw, 40px); line-height:1.16; }
      .pt-hero-actions{ flex-direction:column; align-items:flex-start; gap:16px; margin-top:28px; margin-bottom:48px; }
      .pt-hero-index{ grid-template-columns:1fr 1fr; margin-top:36px; }
      .pt-hero-index a{ border-bottom:1px solid var(--pt-hero-line); }
    }

    @media (prefers-reduced-motion:reduce){
      .pt-hero-section *{ transition:none !important; }
    }


/* ===== authorized.css ===== */
.pt-auth-section{
      --pt-auth-bg:var(--pt-light-bg);
      --pt-auth-ink:var(--pt-light-ink);
      --pt-auth-muted:var(--pt-light-muted);
      --pt-auth-line:var(--pt-light-line);
      --pt-auth-green:var(--pt-green-on-light);
      --pt-auth-font-sans:var(--pt-font-sans);
      --pt-auth-font-mono:var(--pt-font-mono);

      box-sizing:border-box;
      background:var(--pt-auth-bg);
      color:var(--pt-auth-ink);
      font-family:var(--pt-auth-font-sans);
      padding-block:clamp(56px,7vw,88px);
    }
    .pt-auth-section *,
    .pt-auth-section *::before,
    .pt-auth-section *::after{ box-sizing:border-box; }
    .pt-auth-section p{ margin:0; }

    .pt-auth-inner{
      max-width:1200px;
      margin:0 auto;
      padding-inline:clamp(20px,4vw,48px);
    }

    .pt-auth-head{
      display:flex;
      align-items:baseline;
      justify-content:space-between;
      gap:20px;
      flex-wrap:wrap;
      padding-bottom:clamp(28px,3.4vw,40px);
      border-bottom:1px solid var(--pt-auth-line);
    }
    .pt-auth-eyebrow{
      display:inline-flex; align-items:center; gap:8px;
      font-family:var(--pt-auth-font-mono);
      font-size:11.5px;
      letter-spacing:.14em;
      text-transform:uppercase;
      color:var(--pt-auth-muted);
    }
    .pt-auth-eyebrow__dot{
      width:6px; height:6px; border-radius:50%;
      background:var(--pt-auth-green);
      flex:none;
    }
    .pt-auth-statement{
      margin-top:14px;
      font-family:var(--pt-auth-font-sans);
      max-width:34ch;
      font-size:clamp(19px,2vw,24px);
      line-height:1.4;
      font-weight:500;
      letter-spacing:-.004em;
    }
    .pt-auth-note{
      max-width:30ch;
      font-size:13px;
      line-height:1.6;
      color:var(--pt-auth-muted);
    }

    .pt-auth-grid{
      margin-top:clamp(28px,3.4vw,40px);
      display:grid;
      grid-template-columns:repeat(3, 1fr);
      gap:1px;
      background:var(--pt-auth-line);
      border:1px solid var(--pt-auth-line);
      border-radius:var(--pt-radius);
      overflow:hidden;
    }
    .pt-auth-card{
      background:var(--pt-auth-bg);
      padding:clamp(26px,3vw,36px) clamp(22px,2.6vw,30px);
      display:flex;
      flex-direction:column;
      gap:16px;
      min-height:190px;
    }
    .pt-auth-card__logo{
      height:30px;
      display:flex;
      align-items:center;
    }
    .pt-auth-card__logo img{ height:100%; width:auto; max-width:140px; object-fit:contain; }
    .pt-auth-card__scope{
      margin-top:auto;
      font-size:13px;
      line-height:1.6;
      color:var(--pt-auth-muted);
    }
    .pt-auth-card__scope b{ color:var(--pt-auth-ink); font-weight:600; }

    @media (max-width:820px){
      .pt-auth-grid{ grid-template-columns:1fr; }
    }
    @media (prefers-reduced-motion:reduce){
      .pt-auth-section *{ transition:none !important; }
    }


/* ===== proof.css ===== */
.pt-proof-section{
      --pt-proof-bg:var(--pt-light-bg);
      --pt-proof-ink:var(--pt-light-ink);
      --pt-proof-muted:var(--pt-light-muted);
      --pt-proof-line:var(--pt-light-line);
      --pt-proof-green:var(--pt-green-on-light);
      --pt-proof-font-sans:var(--pt-font-sans);
      --pt-proof-font-mono:var(--pt-font-mono);

      box-sizing:border-box;
      background:var(--pt-proof-bg);
      color:var(--pt-proof-ink);
      font-family:var(--pt-proof-font-sans);
      overflow:hidden;
    }
    .pt-proof-section *,
    .pt-proof-section *::before,
    .pt-proof-section *::after{ box-sizing:border-box; }
    .pt-proof-section p{ margin:0; }

    .pt-proof-inner{
      max-width:1200px;
      margin:0 auto;
      padding:clamp(40px,6vw,72px) clamp(20px,4vw,48px);
      display:grid;
      grid-template-columns:auto 1fr;
      align-items:center;
      gap:clamp(24px,4vw,56px);
      border-top:1px solid var(--pt-proof-line);
      border-bottom:1px solid var(--pt-proof-line);
    }

    .pt-proof-figure{
      display:flex;
      align-items:baseline;
      gap:10px;
      flex-shrink:0;
    }
    .pt-proof-figure__num{
      font-family:var(--pt-proof-font-mono);
      font-weight:700;
      font-size:clamp(56px,8vw,104px);
      line-height:1;
      letter-spacing:-.02em;
    }
    .pt-proof-figure__unit{
      font-family:var(--pt-proof-font-mono);
      font-size:13px;
      letter-spacing:.08em;
      text-transform:uppercase;
      color:var(--pt-proof-green);
      white-space:nowrap;
    }

    .pt-proof-copy{ max-width:44ch; }
    .pt-proof-eyebrow{
      font-family:var(--pt-proof-font-mono);
      font-size:11px;
      letter-spacing:.14em;
      text-transform:uppercase;
      color:var(--pt-proof-muted);
    }
    .pt-proof-statement{
      margin-top:10px;
      font-family:var(--pt-proof-font-sans);
      font-size:clamp(18px,2.2vw,24px);
      line-height:1.42;
      font-weight:600;
      letter-spacing:-.005em;
      text-wrap:balance;
    }

    @media (max-width:700px){
      .pt-proof-inner{ grid-template-columns:1fr; gap:20px; }
      .pt-proof-figure{ gap:8px; }
    }


/* ===== capabilities.css ===== */
/* -----------------------------------------------------------------
       REPLACE IMAGES HERE — four URLs, nothing else needs editing.
       If a URL is left blank/broken, the panel still renders correctly
       (dark gradient + hairline texture fallback, see below).
       ----------------------------------------------------------------- */
    .pt-cap-section{
      /* REPLACE: swap these four for real Premium Technologies photography — filenames may stay the same */
      --pt-cap-img-bga:      url("../images/bga-flagship.svg");
      --pt-cap-img-laptop:   url("../images/laptop-thumb.svg");
      --pt-cap-img-desktop:  url("../images/desktop-thumb.svg");
      --pt-cap-img-monitor:  url("../images/monitor-thumb.svg");
      --pt-cap-img-data:     url("../images/data-thumb.svg");
    }

    /* ---------- scoped reset (kept inside .pt-cap-section only) ---------- */
    .pt-cap-section,
    .pt-cap-section *,
    .pt-cap-section *::before,
    .pt-cap-section *::after{ box-sizing:border-box; }
    .pt-cap-section h2,
    .pt-cap-section h3,
    .pt-cap-section p,
    .pt-cap-section ol{ margin:0; padding:0; }
    .pt-cap-section ol{ list-style:none; }
    .pt-cap-section a{ text-decoration:none; color:inherit; }
    .pt-cap-section img{ max-width:100%; display:block; }

    /* ---------- design tokens (self-contained, not theme-dependent) ---------- */
    .pt-cap-section{
      --pt-cap-bg:      var(--pt-dark-bg);
      --pt-cap-ink:     var(--pt-dark-ink);
      --pt-cap-muted:   var(--pt-dark-muted);
      --pt-cap-line:    var(--pt-dark-line);
      --pt-cap-line-2:  var(--pt-dark-line-2);
      --pt-cap-green:   var(--pt-green);
      --pt-cap-radius:  var(--pt-radius);
      --pt-cap-sans: var(--pt-font-sans);
      --pt-cap-mono: var(--pt-font-mono);

      background:var(--pt-cap-bg);
      color:var(--pt-cap-ink);
      font-family:var(--pt-cap-sans);
      line-height:1.5;
      padding-block:clamp(56px,8vw,108px);
      overflow:hidden; /* contains the full-bleed breakout below */
    }

    .pt-cap-inner{
      max-width:1200px;
      margin-inline:auto;
      padding-inline:clamp(20px,4vw,48px);
    }

    /* ---------- header ---------- */
    .pt-cap-eyebrow{
      display:inline-flex; align-items:center; gap:9px;
      font-family:var(--pt-cap-mono); font-size:11.5px; letter-spacing:.12em;
      text-transform:uppercase; color:var(--pt-cap-muted); font-weight:500;
    }
    .pt-cap-eyebrow__dot{
      width:6px; height:6px; border-radius:50%; background:var(--pt-cap-green); flex:none;
    }
    .pt-cap-title{
      margin-top:20px;
      font-family:var(--pt-cap-sans);
      font-weight:600;
      font-size:clamp(28px,4.3vw,50px);
      line-height:1.22;
      letter-spacing:-.006em;
      max-width:15ch;
    }
    .pt-cap-sub{
      margin-top:18px;
      font-family:var(--pt-cap-sans);
      color:var(--pt-cap-muted);
      font-size:clamp(14.5px,1.4vw,16.5px);
      max-width:46ch;
      line-height:1.6;
    }

    .pt-cap-rule{
      margin-top:clamp(32px,4vw,52px);
      display:flex; align-items:center; gap:16px;
    }
    .pt-cap-rule__line{ flex:1; height:1px; background:var(--pt-cap-line); }
    .pt-cap-rule__meta{
      flex:none;
      font-family:var(--pt-cap-mono); font-size:10.5px; letter-spacing:.1em;
      color:var(--pt-cap-muted); text-transform:uppercase; white-space:nowrap;
    }

    /* ---------- equal-weight row list: all five services at the same level ---------- */
    .pt-cap-rows{
      margin-top:clamp(28px,3.5vw,40px);
      display:flex;
      flex-direction:column;
    }
    .pt-cap-row{
      display:flex;
      align-items:center;
      gap:clamp(22px,3vw,40px);
      padding-block:clamp(26px,3.4vw,40px);
      border-top:1px solid var(--pt-cap-line);
    }
    .pt-cap-rows .pt-cap-row:first-child{ border-top:none; }
    .pt-cap-row__num{
      flex:none;
      font-family:var(--pt-cap-mono); font-weight:700;
      font-size:clamp(26px,2.8vw,38px);
      color:var(--pt-cap-muted);
      transition:color .3s ease;
      width:2.2ch;
    }
    .pt-cap-row:hover .pt-cap-row__num,
    .pt-cap-row:focus-within .pt-cap-row__num{ color:var(--pt-cap-green); }
    .pt-cap-row__media{
      flex:none;
      width:clamp(84px,9vw,132px);
      height:clamp(84px,9vw,132px);
      border-radius:var(--pt-cap-radius);
      background-position:center, center, center;
      background-size:cover, auto, auto;
      background-repeat:no-repeat, repeat, no-repeat;
      filter:grayscale(.55) brightness(.92);
      transition:filter .35s ease;
      border:1px solid var(--pt-cap-line-2);
    }
    .pt-cap-row:hover .pt-cap-row__media,
    .pt-cap-row:focus-within .pt-cap-row__media{ filter:grayscale(.1) brightness(1); }
    .pt-cap-row--laptop .pt-cap-row__media{
      background-image:var(--pt-cap-img-laptop),
        repeating-linear-gradient(135deg, rgba(255,255,255,.07) 0 1px, transparent 1px 9px),
        linear-gradient(155deg,#242721,#15170F);
    }
    .pt-cap-row--desktop .pt-cap-row__media{
      background-image:var(--pt-cap-img-desktop),
        repeating-linear-gradient(135deg, rgba(255,255,255,.07) 0 1px, transparent 1px 9px),
        linear-gradient(155deg,#242721,#15170F);
    }
    .pt-cap-row--bga .pt-cap-row__media{
      background-image:var(--pt-cap-img-bga),
        repeating-linear-gradient(135deg, rgba(255,255,255,.07) 0 1px, transparent 1px 9px),
        linear-gradient(155deg,#242721,#15170F);
    }
    .pt-cap-row--monitor .pt-cap-row__media{
      background-image:var(--pt-cap-img-monitor),
        repeating-linear-gradient(135deg, rgba(255,255,255,.07) 0 1px, transparent 1px 9px),
        linear-gradient(155deg,#242721,#15170F);
    }
    .pt-cap-row--data .pt-cap-row__media{
      background-image:var(--pt-cap-img-data),
        repeating-linear-gradient(135deg, rgba(255,255,255,.07) 0 1px, transparent 1px 9px),
        linear-gradient(155deg,#242721,#15170F);
    }
    .pt-cap-row__body{ flex:1; min-width:0; }
    .pt-cap-row__title{
      font-family:var(--pt-cap-sans); font-weight:700;
      font-size:clamp(18px,1.9vw,23px);
    }
    .pt-cap-row__desc{
      margin-top:8px;
      font-family:var(--pt-cap-sans);
      color:var(--pt-cap-muted);
      font-size:clamp(13.5px,1.25vw,15px);
      line-height:1.6;
      max-width:56ch;
    }
    .pt-cap-row__tags{
      margin-top:12px;
      display:flex; align-items:center; flex-wrap:wrap; gap:6px 0;
      font-family:var(--pt-cap-mono); font-size:10.5px; letter-spacing:.08em;
      text-transform:uppercase; color:var(--pt-cap-muted);
    }
    .pt-cap-row__dot{
      width:5px; height:5px; border-radius:50%; background:var(--pt-cap-green);
      flex:none; margin-right:9px;
    }
    .pt-cap-row__sep{ color:var(--pt-cap-line-2); margin-inline:8px; }

    /* ---------- mobile ---------- */
    @media (max-width:640px){
      .pt-cap-row{ align-items:flex-start; gap:16px; }
      .pt-cap-row__num{ font-size:20px; width:1.6ch; }
      .pt-cap-row__media{ width:64px; height:64px; }
      .pt-cap-row__tags{ font-size:10px; }
    }


/* ===== metrics.css ===== */
.pt-metrics-section{
      --pt-metrics-bg:var(--pt-light-bg);
      --pt-metrics-ink:var(--pt-light-ink);
      --pt-metrics-muted:var(--pt-light-muted);
      --pt-metrics-line:var(--pt-light-line);
      --pt-metrics-green:var(--pt-green-on-light);
      --pt-metrics-font-sans:var(--pt-font-sans);
      --pt-metrics-font-mono:var(--pt-font-mono);

      box-sizing:border-box;
      background:var(--pt-metrics-bg);
      color:var(--pt-metrics-ink);
      font-family:var(--pt-metrics-font-sans);
      padding-block:clamp(64px,9vw,120px);
      overflow:hidden;
    }
    .pt-metrics-section *,
    .pt-metrics-section *::before,
    .pt-metrics-section *::after{ box-sizing:border-box; }
    .pt-metrics-section p{ margin:0; }

    .pt-metrics-inner{
      max-width:1200px;
      margin:0 auto;
      padding-inline:clamp(20px,4vw,48px);
    }

    .pt-metrics-eyebrow{
      font-family:var(--pt-metrics-font-mono);
      font-size:11.5px;
      letter-spacing:.14em;
      text-transform:uppercase;
      color:var(--pt-metrics-muted);
    }

    .pt-metrics-statement{
      margin-top:24px;
      max-width:980px;
      font-family:var(--pt-metrics-font-sans);
      font-size:clamp(23px,3.4vw,40px);
      line-height:1.46;
      font-weight:500;
      letter-spacing:-.004em;
      text-wrap:balance;
      font-variant-numeric:tabular-nums;
    }
    .pt-metrics-num{
      font-family:var(--pt-metrics-font-mono);
      font-weight:700;
      color:var(--pt-metrics-green);
      letter-spacing:-.01em;
    }

    .pt-metrics-strip{
      margin-top:clamp(44px,6vw,72px);
      display:grid;
      grid-template-columns:repeat(4, 1fr);
      border-top:1px solid var(--pt-metrics-line);
    }
    .pt-metrics-item{
      padding:clamp(20px,2.6vw,28px) clamp(16px,2vw,24px) 4px 0;
      border-right:1px solid var(--pt-metrics-line);
    }
    .pt-metrics-item:last-child{ border-right:none; padding-right:0; }
    .pt-metrics-item__figure{
      display:block;
      font-family:var(--pt-metrics-font-mono);
      font-weight:700;
      font-size:clamp(26px,2.8vw,34px);
      letter-spacing:-.01em;
    }
    .pt-metrics-item__label{
      display:block;
      margin-top:8px;
      font-size:13px;
      color:var(--pt-metrics-muted);
      line-height:1.5;
    }

    @media (max-width:820px){
      .pt-metrics-strip{ grid-template-columns:1fr 1fr; }
      .pt-metrics-item{ border-right:1px solid var(--pt-metrics-line); border-bottom:1px solid var(--pt-metrics-line); }
      .pt-metrics-item:nth-child(2n){ border-right:none; }
      .pt-metrics-item:nth-last-child(-n+2){ border-bottom:none; }
    }
    @media (max-width:480px){
      .pt-metrics-strip{ grid-template-columns:1fr; }
      .pt-metrics-item{ border-right:none; }
    }


/* ===== expertise.css ===== */
.pt-expertise-section{
      /* REPLACE IMAGES HERE — three URLs */
      /* REPLACE: swap these three for real Premium Technologies photography — filenames may stay the same */
      --pt-expertise-img-1: url("../images/eng-inspection.svg");
      --pt-expertise-img-2: url("../images/eng-workbench.svg");
      --pt-expertise-img-3: url("../images/eng-diagnostic.svg");

      --pt-expertise-bg:var(--pt-dark-bg);
      --pt-expertise-ink:var(--pt-dark-ink);
      --pt-expertise-muted:var(--pt-dark-muted);
      --pt-expertise-line:var(--pt-dark-line);
      --pt-expertise-green:var(--pt-green);
      --pt-expertise-radius:var(--pt-radius);
      --pt-expertise-font-sans:var(--pt-font-sans);
      --pt-expertise-font-mono:var(--pt-font-mono);

      box-sizing:border-box;
      background:var(--pt-expertise-bg);
      color:var(--pt-expertise-ink);
      font-family:var(--pt-expertise-font-sans);
      padding-block:clamp(64px,9vw,120px);
      overflow:hidden;
    }
    .pt-expertise-section *,
    .pt-expertise-section *::before,
    .pt-expertise-section *::after{ box-sizing:border-box; }
    .pt-expertise-section p{ margin:0; }

    .pt-expertise-inner{
      max-width:1200px;
      margin:0 auto;
      padding-inline:clamp(20px,4vw,48px);
      display:grid;
      grid-template-columns:0.85fr 1fr;
      gap:clamp(32px,5vw,64px);
      align-items:start;
    }

    .pt-expertise-col-text{ position:sticky; top:96px; }
    .pt-expertise-eyebrow{
      font-family:var(--pt-expertise-font-mono);
      font-size:11.5px;
      letter-spacing:.14em;
      text-transform:uppercase;
      color:var(--pt-expertise-muted);
    }
    .pt-expertise-title{
      margin-top:20px;
      font-family:var(--pt-expertise-font-sans);
      font-size:clamp(25px,3.2vw,36px);
      line-height:1.32;
      font-weight:600;
      letter-spacing:-.004em;
      text-wrap:balance;
      max-width:15ch;
    }
    .pt-expertise-copy{
      margin-top:18px;
      font-family:var(--pt-expertise-font-sans);
      color:var(--pt-expertise-muted);
      font-size:15px;
      line-height:1.7;
      max-width:44ch;
    }
    .pt-expertise-copy + .pt-expertise-copy{ margin-top:14px; }

    .pt-expertise-tags{
      margin-top:28px;
      display:flex; flex-wrap:wrap; gap:8px;
    }
    .pt-expertise-tag{
      font-family:var(--pt-expertise-font-mono);
      font-size:10.5px;
      letter-spacing:.06em;
      text-transform:uppercase;
      color:var(--pt-expertise-ink);
      border:1px solid var(--pt-expertise-line);
      border-radius:999px;
      padding:7px 12px;
    }

    /* image grid: one tall + two stacked, asymmetric */
    .pt-expertise-media{
      display:grid;
      grid-template-columns:1.2fr 1fr;
      grid-template-rows:auto auto;
      gap:clamp(12px,1.6vw,18px);
    }
    .pt-expertise-media__tall{
      grid-row:1 / span 2;
      aspect-ratio:3/4;
    }
    .pt-expertise-figure{
      position:relative;
      border-radius:var(--pt-expertise-radius);
      overflow:hidden;
      border:1px solid var(--pt-expertise-line);
      background-repeat:no-repeat, repeat, no-repeat;
      background-position:center, center, center;
      background-size:cover, auto, auto;
      aspect-ratio:4/3;
    }
    .pt-expertise-figure--1{
      background-image:var(--pt-expertise-img-1),
        repeating-linear-gradient(135deg, rgba(255,255,255,.06) 0 1px, transparent 1px 12px),
        linear-gradient(160deg,#1B1D18,var(--pt-dark-bg) 75%);
    }
    .pt-expertise-figure--2{
      background-image:var(--pt-expertise-img-2),
        repeating-linear-gradient(135deg, rgba(255,255,255,.06) 0 1px, transparent 1px 12px),
        linear-gradient(160deg,#1B1D18,var(--pt-dark-bg) 75%);
    }
    .pt-expertise-figure--3{
      background-image:var(--pt-expertise-img-3),
        repeating-linear-gradient(135deg, rgba(255,255,255,.06) 0 1px, transparent 1px 12px),
        linear-gradient(160deg,#1B1D18,var(--pt-dark-bg) 75%);
    }

    @media (max-width:900px){
      .pt-expertise-inner{ grid-template-columns:1fr; }
      .pt-expertise-col-text{ position:static; }
      .pt-expertise-media{ margin-top:8px; grid-template-columns:1fr 1fr; }
    }
    @media (max-width:520px){
      .pt-expertise-media{ grid-template-columns:1fr; grid-template-rows:none; }
      .pt-expertise-media__tall{ grid-row:auto; aspect-ratio:4/3; }
    }


/* ===== diagnostics.css =====
   Real photography (not a generated placeholder like the sections
   above). The photo is a mockup UI — never framed as a screenshot of
   an actual proprietary tool; the caption chip says so plainly, and the
   copy makes only the claim the lab can stand behind: that a real
   check happens before any repair is proposed. */
.pt-diag-section{
      --pt-diag-bg:var(--pt-dark-bg);
      --pt-diag-ink:var(--pt-dark-ink);
      --pt-diag-muted:var(--pt-dark-muted);
      --pt-diag-line:var(--pt-dark-line);
      --pt-diag-green:var(--pt-green);
      --pt-diag-radius:var(--pt-radius);
      --pt-diag-font-sans:var(--pt-font-sans);
      --pt-diag-font-mono:var(--pt-font-mono);

      box-sizing:border-box;
      background:var(--pt-diag-bg);
      color:var(--pt-diag-ink);
      font-family:var(--pt-diag-font-sans);
      padding-block:clamp(64px,9vw,120px);
      border-top:1px solid var(--pt-diag-line);
      overflow:hidden;
    }
    .pt-diag-section *,
    .pt-diag-section *::before,
    .pt-diag-section *::after{ box-sizing:border-box; }
    .pt-diag-section p{ margin:0; }
    .pt-diag-section ul{ margin:0; padding:0; list-style:none; }

    .pt-diag-inner{
      max-width:1200px;
      margin:0 auto;
      padding-inline:clamp(20px,4vw,48px);
      display:grid;
      grid-template-columns:1fr 1fr;
      gap:clamp(36px,5.5vw,72px);
      align-items:center;
    }

    .pt-diag-media{ position:relative; }
    .pt-diag-media__img{
      width:100%;
      height:auto;
      aspect-ratio:1/1;
      object-fit:cover;
      border-radius:calc(var(--pt-diag-radius) + 6px);
      border:1px solid var(--pt-diag-line);
    }
    .pt-diag-media__tag{
      position:absolute;
      left:16px;
      bottom:16px;
      display:inline-flex;
      align-items:center;
      gap:8px;
      padding:9px 14px;
      border:1px solid var(--pt-diag-line);
      border-radius:999px;
      background:rgba(12,13,11,0.55);
      backdrop-filter:blur(6px);
      font-family:var(--pt-diag-font-mono);
      font-size:10.5px;
      letter-spacing:.08em;
      text-transform:uppercase;
      color:var(--pt-diag-muted);
      max-width:calc(100% - 32px);
    }
    .pt-diag-media__tag-dot{
      width:6px; height:6px; border-radius:50%;
      background:var(--pt-diag-green);
      flex:none;
    }

    .pt-diag-eyebrow{
      display:inline-flex; align-items:center; gap:9px;
      font-family:var(--pt-diag-font-mono);
      font-size:11.5px;
      letter-spacing:.14em;
      text-transform:uppercase;
      color:var(--pt-diag-muted);
    }
    .pt-diag-eyebrow__dot{
      width:6px; height:6px; border-radius:50%;
      background:var(--pt-diag-green);
      flex:none;
    }
    .pt-diag-title{
      margin-top:20px;
      font-family:var(--pt-diag-font-sans);
      font-size:clamp(25px,3.2vw,36px);
      line-height:1.32;
      font-weight:600;
      letter-spacing:-.004em;
      text-wrap:balance;
      max-width:16ch;
    }
    .pt-diag-copy-text{
      margin-top:18px;
      font-family:var(--pt-diag-font-sans);
      color:var(--pt-diag-muted);
      font-size:15px;
      line-height:1.7;
      max-width:48ch;
    }

    .pt-diag-checklist{
      margin-top:28px;
      display:grid;
      grid-template-columns:1fr 1fr;
      gap:12px 20px;
    }
    .pt-diag-checklist li{
      display:flex;
      align-items:center;
      gap:10px;
      font-size:13.5px;
      color:var(--pt-diag-ink);
    }
    .pt-diag-checklist__icon{
      display:inline-flex;
      align-items:center;
      justify-content:center;
      flex:none;
      width:20px; height:20px;
      border-radius:50%;
      background:rgba(52,201,122,0.14);
      color:var(--pt-diag-green);
      font-size:11px;
      line-height:1;
    }

    @media (max-width:900px){
      .pt-diag-inner{ grid-template-columns:1fr; }
      .pt-diag-media{ max-width:480px; }
    }
    @media (max-width:520px){
      .pt-diag-checklist{ grid-template-columns:1fr; }
    }
    @media (prefers-reduced-motion:reduce){
      .pt-diag-section *{ transition:none !important; }
    }


/* ===== b2b.css ===== */
.pt-b2b-section{
      --pt-b2b-bg:var(--pt-light-bg);
      --pt-b2b-ink:var(--pt-light-ink);
      --pt-b2b-muted:var(--pt-light-muted);
      --pt-b2b-line:var(--pt-light-line);
      --pt-b2b-green:var(--pt-green-on-light);
      --pt-b2b-font-sans:var(--pt-font-sans);
      --pt-b2b-font-mono:var(--pt-font-mono);

      box-sizing:border-box;
      position:relative;
      background:var(--pt-b2b-bg);
      color:var(--pt-b2b-ink);
      font-family:var(--pt-b2b-font-sans);
      padding-block:clamp(72px,10vw,132px);
      overflow:hidden;
    }
    .pt-b2b-section *,
    .pt-b2b-section *::before,
    .pt-b2b-section *::after{ box-sizing:border-box; }
    .pt-b2b-section p{ margin:0; }
    .pt-b2b-section a{ text-decoration:none; }

    /* abstract decorative dot-grid — not a map, no geographic claims */
    .pt-b2b-grid-bg{
      position:absolute;
      inset:0;
      background-image:radial-gradient(var(--pt-b2b-line) 1px, transparent 1px);
      background-size:28px 28px;
      -webkit-mask-image:radial-gradient(ellipse 60% 60% at 80% 30%, #000 0%, transparent 72%);
      mask-image:radial-gradient(ellipse 60% 60% at 80% 30%, #000 0%, transparent 72%);
      pointer-events:none;
    }

    .pt-b2b-inner{
      position:relative;
      max-width:1200px;
      margin:0 auto;
      padding-inline:clamp(20px,4vw,48px);
      display:grid;
      grid-template-columns:1fr auto;
      align-items:end;
      gap:clamp(28px,4vw,48px);
    }

    .pt-b2b-eyebrow{
      font-family:var(--pt-b2b-font-mono);
      font-size:11.5px;
      letter-spacing:.14em;
      text-transform:uppercase;
      color:var(--pt-b2b-muted);
    }
    .pt-b2b-statement{
      margin-top:22px;
      font-family:var(--pt-b2b-font-sans);
      max-width:20ch;
      font-size:clamp(27px,4.1vw,48px);
      line-height:1.24;
      font-weight:600;
      letter-spacing:-.006em;
      text-wrap:balance;
    }
    .pt-b2b-copy{
      margin-top:18px;
      font-family:var(--pt-b2b-font-sans);
      max-width:46ch;
      color:var(--pt-b2b-muted);
      font-size:15px;
      line-height:1.65;
    }
    .pt-b2b-points{
      margin-top:22px;
      list-style:none;
      padding:0;
      max-width:46ch;
      display:flex;
      flex-direction:column;
      gap:12px;
    }
    .pt-b2b-points li{
      padding-left:20px;
      position:relative;
      font-size:14px;
      line-height:1.55;
      color:var(--pt-b2b-ink);
    }
    .pt-b2b-points li::before{
      content:"";
      position:absolute;
      left:0; top:8px;
      width:8px; height:1px;
      background:var(--pt-b2b-green);
    }
    .pt-b2b-cta{
      margin-top:26px;
      display:inline-flex;
      align-items:center;
      gap:9px;
      font-size:13.5px;
      font-weight:600;
      color:var(--pt-b2b-ink);
      border-bottom:1px solid var(--pt-b2b-ink);
      padding-bottom:3px;
    }
    .pt-b2b-cta__arrow{ transition:transform .15s ease; }
    .pt-b2b-cta:hover .pt-b2b-cta__arrow{ transform:translateX(3px); }
    .pt-b2b-cta:focus-visible{ outline:2px solid var(--pt-b2b-green); outline-offset:4px; border-radius:2px; }

    .pt-b2b-figure{
      text-align:right;
      flex-shrink:0;
      font-family:var(--pt-b2b-font-sans);
      margin:0;
    }
    .pt-b2b-figure__num{
      display:block;
      font-family:var(--pt-b2b-font-mono);
      font-weight:700;
      font-size:clamp(64px,9vw,128px);
      line-height:1;
      letter-spacing:-.02em;
      color:var(--pt-b2b-green);
      font-variant-numeric:tabular-nums;
    }
    .pt-b2b-figure__label{
      display:block;
      margin-top:8px;
      font-size:13px;
      color:var(--pt-b2b-muted);
    }

    @media (max-width:820px){
      .pt-b2b-inner{ grid-template-columns:1fr; align-items:start; }
      .pt-b2b-figure{ text-align:left; margin-top:8px; }
    }
    @media (prefers-reduced-motion:reduce){
      .pt-b2b-section *{ transition:none !important; }
    }


/* ===== cta.css ===== */
.pt-cta-section{
      --pt-cta-bg:var(--pt-dark-bg);
      --pt-cta-ink:var(--pt-dark-ink);
      --pt-cta-muted:var(--pt-dark-muted);
      --pt-cta-line:var(--pt-dark-line);
      --pt-cta-green:var(--pt-green);
      --pt-cta-font-sans:var(--pt-font-sans);
      --pt-cta-font-mono:var(--pt-font-mono);

      box-sizing:border-box;
      position:relative;
      background:var(--pt-cta-bg);
      color:var(--pt-cta-ink);
      font-family:var(--pt-cta-font-sans);
      padding-block:clamp(80px,11vw,148px);
      overflow:hidden;
    }
    .pt-cta-section *,
    .pt-cta-section *::before,
    .pt-cta-section *::after{ box-sizing:border-box; }
    .pt-cta-section p{ margin:0; }
    .pt-cta-section a{ text-decoration:none; }

    .pt-cta-inner{
      max-width:1200px;
      margin:0 auto;
      padding-inline:clamp(20px,4vw,48px);
      text-align:center;
    }

    .pt-cta-eyebrow{
      display:inline-flex; align-items:center; gap:8px;
      font-family:var(--pt-cta-font-mono);
      font-size:11.5px;
      letter-spacing:.14em;
      text-transform:uppercase;
      color:var(--pt-cta-muted);
    }
    .pt-cta-eyebrow__dot{
      width:6px; height:6px; border-radius:50%;
      background:var(--pt-cta-green);
      flex:none;
    }

    .pt-cta-title{
      margin:26px auto 0;
      font-family:var(--pt-cta-font-sans);
      max-width:16ch;
      font-size:clamp(30px,5.2vw,58px);
      line-height:1.2;
      font-weight:600;
      letter-spacing:-.006em;
      text-wrap:balance;
    }

    .pt-cta-actions{
      margin-top:36px;
      display:inline-flex;
      align-items:center;
      gap:26px;
      flex-wrap:wrap;
      justify-content:center;
    }
    .pt-cta-button{
      display:inline-flex;
      align-items:center;
      gap:10px;
      font-size:14.5px;
      font-weight:600;
      color:var(--pt-cta-bg);
      background:var(--pt-cta-ink);
      padding:16px 26px;
      border-radius:999px;
      transition:background .15s ease;
    }
    .pt-cta-button:hover{ background:var(--pt-cta-green); }
    .pt-cta-button:focus-visible{ outline:2px solid var(--pt-cta-green); outline-offset:3px; }
    .pt-cta-button__arrow{ transition:transform .15s ease; }
    .pt-cta-button:hover .pt-cta-button__arrow{ transform:translateX(3px); }

    .pt-cta-ghost{
      font-size:13.5px;
      color:var(--pt-cta-muted);
      border-bottom:1px solid var(--pt-cta-line);
      padding-bottom:2px;
      transition:color .15s ease, border-color .15s ease;
    }
    .pt-cta-ghost:hover,
    .pt-cta-ghost:focus-visible{ color:var(--pt-cta-ink); border-color:var(--pt-cta-ink); }

    @media (prefers-reduced-motion:reduce){
      .pt-cta-section *{ transition:none !important; }
    }
    /* used when the cta block sits inside .pt-contact-section, followed by the info/form panel */
    .pt-cta-section--tight{ padding-bottom:clamp(40px,5vw,56px); }


/* ===== contact.css ===== */
.pt-contact-section{
      --pt-contact-bg:var(--pt-dark-bg);
      --pt-contact-ink:var(--pt-dark-ink);
      --pt-contact-muted:var(--pt-dark-muted);
      --pt-contact-line:var(--pt-dark-line);
      --pt-contact-green:var(--pt-green);
      --pt-contact-font-sans:var(--pt-font-sans);
      --pt-contact-font-mono:var(--pt-font-mono);

      box-sizing:border-box;
      background:var(--pt-contact-bg);
      color:var(--pt-contact-ink);
      font-family:var(--pt-contact-font-sans);
      padding-bottom:clamp(64px,8vw,100px);
    }
    .pt-contact-section *,
    .pt-contact-section *::before,
    .pt-contact-section *::after{ box-sizing:border-box; }
    .pt-contact-section p{ margin:0; }
    .pt-contact-section a{ text-decoration:none; }

    .pt-contact-panel{
      max-width:1200px;
      margin:0 auto;
      padding-inline:clamp(20px,4vw,48px);
      display:grid;
      grid-template-columns:0.85fr 1.15fr;
      gap:clamp(32px,5vw,64px);
      padding-top:clamp(40px,5vw,56px);
      border-top:1px solid var(--pt-contact-line);
    }

    .pt-contact-info__eyebrow{
      font-family:var(--pt-contact-font-mono);
      font-size:11px;
      letter-spacing:.14em;
      text-transform:uppercase;
      color:var(--pt-contact-muted);
    }
    .pt-contact-info__list{
      margin-top:20px;
      display:flex;
      flex-direction:column;
      gap:20px;
    }
    .pt-contact-info__item{
      display:flex;
      flex-direction:column;
      gap:4px;
      padding-top:16px;
      border-top:1px solid var(--pt-contact-line);
    }
    .pt-contact-info__list > .pt-contact-info__item:first-child{ border-top:none; padding-top:0; }
    .pt-contact-info__label{
      font-family:var(--pt-contact-font-mono);
      font-size:10.5px;
      letter-spacing:.1em;
      text-transform:uppercase;
      color:var(--pt-contact-muted);
    }
    .pt-contact-info__value{
      font-size:15px;
      line-height:1.55;
      color:var(--pt-contact-ink);
    }
    .pt-contact-info__value a{ color:inherit; border-bottom:1px solid var(--pt-contact-line); transition:border-color .15s ease, color .15s ease; }
    .pt-contact-info__value a:hover,
    .pt-contact-info__value a:focus-visible{ color:var(--pt-contact-green); border-color:var(--pt-contact-green); }

    .pt-contact-form{
      display:flex;
      flex-direction:column;
      gap:16px;
    }
    .pt-contact-form__row{
      display:grid;
      grid-template-columns:1fr 1fr;
      gap:16px;
    }
    .pt-contact-field{
      display:flex;
      flex-direction:column;
      gap:8px;
    }
    .pt-contact-field label{
      font-family:var(--pt-contact-font-mono);
      font-size:10.5px;
      letter-spacing:.1em;
      text-transform:uppercase;
      color:var(--pt-contact-muted);
    }
    .pt-contact-field input:not([type="checkbox"]),
    .pt-contact-field textarea{
      font-family:var(--pt-contact-font-sans);
      font-size:14.5px;
      color:var(--pt-contact-ink);
      background:rgba(243,244,240,0.03);
      border:1px solid var(--pt-contact-line);
      border-radius:8px;
      padding:13px 14px;
      resize:vertical;
      transition:border-color .15s ease, background .15s ease;
    }
    .pt-contact-field input::placeholder,
    .pt-contact-field textarea::placeholder{ color:var(--pt-contact-muted); opacity:.8; }
    .pt-contact-field input:not([type="checkbox"]):focus-visible,
    .pt-contact-field textarea:focus-visible{
      outline:none;
      border-color:var(--pt-contact-green);
      background:rgba(243,244,240,0.05);
    }
    .pt-contact-field--consent{ margin-top:2px; }
    .pt-contact-consent{
      display:flex;
      align-items:flex-start;
      gap:10px;
      cursor:pointer;
    }
    .pt-contact-consent input[type="checkbox"]{
      flex:none;
      width:16px;
      height:16px;
      margin-top:2px;
      accent-color:var(--pt-contact-green);
      cursor:pointer;
    }
    .pt-contact-consent span{
      font-size:12.5px;
      line-height:1.55;
      color:var(--pt-contact-muted);
    }
    .pt-contact-submit{
      margin-top:6px;
      align-self:flex-start;
      display:inline-flex;
      align-items:center;
      gap:10px;
      font-family:var(--pt-contact-font-sans);
      font-size:14.5px;
      font-weight:600;
      color:var(--pt-contact-bg);
      background:var(--pt-contact-ink);
      padding:15px 26px;
      border-radius:999px;
      border:none;
      cursor:pointer;
      transition:background .15s ease;
    }
    .pt-contact-submit:hover{ background:var(--pt-contact-green); }
    .pt-contact-submit:focus-visible{ outline:2px solid var(--pt-contact-green); outline-offset:3px; }
    .pt-contact-form__note{
      font-size:12px;
      line-height:1.6;
      color:var(--pt-contact-muted);
    }
    .pt-contact-form__status{
      font-size:12.5px;
      color:var(--pt-contact-green);
      min-height:1em;
    }

    @media (max-width:820px){
      .pt-contact-panel{ grid-template-columns:1fr; }
      .pt-contact-form__row{ grid-template-columns:1fr; }
    }
    @media (prefers-reduced-motion:reduce){
      .pt-contact-section *{ transition:none !important; }
    }


/* ===== footer.css ===== */
.pt-footer-section{
      --pt-footer-ink:var(--pt-dark-ink);
      --pt-footer-green:var(--pt-green);
      --pt-footer-font-sans:var(--pt-font-sans);
      --pt-footer-font-mono:var(--pt-font-mono);

      box-sizing:border-box;
      position:relative;
      background:var(--pt-footer-bg);
      color:var(--pt-footer-ink);
      font-family:var(--pt-footer-font-sans);
      padding-top:clamp(56px,7vw,88px);
      overflow:hidden;
    }
    .pt-footer-section *,
    .pt-footer-section *::before,
    .pt-footer-section *::after{ box-sizing:border-box; }
    .pt-footer-section p,
    .pt-footer-section ul{ margin:0; padding:0; }
    .pt-footer-section ul{ list-style:none; }
    .pt-footer-section a{ text-decoration:none; color:inherit; }
    .pt-footer-section h2,
    .pt-footer-section h3{ margin:0; }

    .pt-footer-inner{
      max-width:1200px;
      margin:0 auto;
      padding-inline:clamp(20px,4vw,48px);
    }

    .pt-footer-top{
      display:grid;
      grid-template-columns:1.4fr 1fr 1fr 1fr;
      gap:clamp(28px,4vw,40px);
      padding-bottom:clamp(40px,5vw,64px);
      border-bottom:1px solid var(--pt-footer-line);
    }

    .pt-footer-brand h2{
      display:flex;
      align-items:center;
      gap:9px;
      font-family:var(--pt-footer-font-sans);
      font-size:17px;
      font-weight:600;
      letter-spacing:.002em;
      color:var(--pt-footer-ink);
    }
    .pt-footer-brand h2 .pt-mark{ color:var(--pt-footer-green); }
    .pt-footer-brand h2 img{ height:26px; width:auto; display:block; }
    .pt-footer-tagline{
      margin-top:14px;
      font-family:var(--pt-footer-font-sans);
      max-width:30ch;
      color:var(--pt-footer-muted);
      font-size:13.5px;
      line-height:1.6;
    }

    .pt-footer-col h3{
      font-family:var(--pt-footer-font-mono);
      font-size:10.5px;
      letter-spacing:.1em;
      text-transform:uppercase;
      color:var(--pt-footer-muted);
    }
    .pt-footer-col ul{ margin-top:16px; display:flex; flex-direction:column; gap:11px; }
    .pt-footer-col a{
      font-family:var(--pt-footer-font-sans);
      font-size:13.5px;
      color:var(--pt-footer-ink);
      transition:color .15s ease;
    }
    .pt-footer-col a:hover,
    .pt-footer-col a:focus-visible{ color:var(--pt-footer-green); }

    /* clearly-marked placeholder — not real business data */
    .pt-footer-placeholder{
      display:inline-flex;
      align-items:center;
      gap:8px;
      font-size:12.5px;
      color:var(--pt-footer-muted);
      border:1px dashed var(--pt-footer-line);
      border-radius:8px;
      padding:10px 12px;
      line-height:1.5;
    }
    .pt-footer-placeholder__dot{
      width:5px; height:5px; border-radius:50%;
      background:var(--pt-footer-muted);
      flex:none;
    }

    .pt-footer-bottom{
      display:flex;
      align-items:center;
      justify-content:space-between;
      flex-wrap:wrap;
      gap:12px;
      padding-block:22px;
      font-size:12px;
      color:var(--pt-footer-muted);
    }
    .pt-footer-bottom p{ font-family:var(--pt-footer-font-sans); margin:0; }

    @media (max-width:900px){
      .pt-footer-top{ grid-template-columns:1fr 1fr; }
    }
    @media (max-width:560px){
      .pt-footer-top{ grid-template-columns:1fr; }
    }
