/* ============================================================================
   TURKISH PARTNERS — visual system. Mobile-first. No libraries, no build step.
   Palette navy #1E1E32 · red #E52E51 · green #69E8A0 · ground #ECECEA
           line #D8D8D8 · soft line #E6E6E4 · muted #7A7A7A · white
   Type    Anton = var(--font-secondary) · Roboto = var(--font-primary)
   ========================================================================== */

/* --- 0. TOKENS ----------------------------------------------------------- */
/* --ec is read by every inherited .mil-ep-* component (trust icons, stat left
   border, eyebrow pill, step numeral). site.css defines it only on .mil-ep, so
   on these pages the declarations were invalid and fell back to navy. */
body.mil-pt{--ec:#E52E51}
.mil-pt-page{
  --pt-accent:#1E1E32;            /* the MANUFACTURER's colour; set inline */
  --pt-navy:#1E1E32;
  --pt-red:#E52E51;               /* rules, numerals, non-text fills */
  --pt-red-ink:#D82549;           /* fills that carry white text (AA) */
  --pt-green:#69E8A0;
  --pt-line:#D8D8D8;
  --pt-line-soft:#E6E6E4;
  --pt-mute:#7A7A7A;
  --pt-ink:#3A3A4A;
  --pt-ground:#ECECEA;
  --pt-r:18px;
  --pt-r-lg:24px;
  --pt-head:100px;                /* fixed site header, measured */
  --pt-dsp:var(--font-secondary),Impact,"Arial Narrow",sans-serif;
  --pt-txt:var(--font-primary),Arial,sans-serif;
  /* one ladder; every step 1.15x-1.45x, no 2.2x cliff */
  --pt-h1:clamp(38px,6.4vw,76px);
  --pt-h2:clamp(26px,3.2vw,40px);
  --pt-h3:clamp(20px,2.2vw,28px);
  --pt-name:clamp(30px,4.4vw,56px);
  --pt-fig:clamp(28px,3.6vw,48px);
  --pt-fig-txt:clamp(20px,2.1vw,26px);
  --pt-num:clamp(16px,1.5vw,22px);   /* < --pt-card at EVERY width; 19px tied at 375 */
  --pt-card:clamp(19px,1.9vw,24px);
  --pt-lead:clamp(17px,1.4vw,20px);
  --pt-body:clamp(16px,1.05vw,18px);
  /* spacing scale — one ratio family, all vw-fluid */
  --pt-sec-y:clamp(48px,7vw,96px);
  --pt-sec-y-lead:clamp(32px,4.2vw,56px);
  --pt-head-gap:clamp(24px,3.2vw,40px);
  --pt-gap:clamp(14px,2vw,22px);
  --pt-pad:clamp(22px,2.8vw,30px);
  --pt-pad-lg:clamp(26px,3.6vw,48px);
  --pt-overlap:clamp(26px,4vw,48px);
  /* Phone floors are lower than the desktop rhythm would suggest, and deliberately:
     100px of the mobile hero is already fixed-header clearance, so the eyebrow has
     plenty of air above it without the token adding more. 24/26 put the hero at
     549px at 375, over its 540 budget. Both are 33.28px at 1280 either way. */
  --pt-hero-top:clamp(20px,2.6vw,34px);
  --pt-hero-bot:clamp(20px,2.6vw,34px);
}
@media (min-width:992px){.mil-pt-page{--pt-head:120px}}
/* .mil-up is opacity:0 until GSAP fires; this section has little imagery to
   fall back on, so never let reduced motion leave the page blank. */
@media (prefers-reduced-motion:reduce){
  .mil-pt-page .mil-up{opacity:1;transform:none}
  .mil-pt-page *{transition:none!important;animation:none!important}
}

/* --- 1. DISPLAY PRIMITIVES ---------------------------------------------- */
.mil-pt-dsp{
  font-family:var(--pt-dsp);font-weight:400;text-transform:uppercase;
  line-height:1.02;letter-spacing:-.015em;margin:0;
  padding-bottom:.05em;                 /* room for Polish ogonki */
  overflow-wrap:break-word;
}
.mil-pt-eyebrow{
  display:inline-block;margin:0;
  font:600 12px/1 var(--pt-txt);letter-spacing:.14em;text-transform:uppercase;
  color:var(--pt-mute);
}
.mil-pt-eyebrow--hot{
  color:#fff;background:var(--pt-red-ink);padding:7px 13px;border-radius:6px;
}
.mil-pt-eyebrow--red{color:var(--pt-red)}
.mil-pt-deck{margin:0;font-size:var(--pt-lead);line-height:1.55;max-width:36ch}

/* Hairline grid. A 1px grid-gap over a tinted bed leaves a solid grey slab
   wherever the last row is short, so hairlines are drawn as box-shadows and the
   container's overflow:hidden eats the trailing edges. Empty tracks then show
   the container fill, which matches the cells. Works for 1, 2, 3 or 8 children
   with no per-count rules and no auto-fill dead tracks. */
.mil-pt-hgrid{
  display:grid;gap:0;background:#fff;
  border:1px solid var(--pt-line);border-radius:var(--pt-r-lg);overflow:hidden;
}
.mil-pt-hgrid>*{box-shadow:1px 0 0 0 var(--pt-line),0 1px 0 0 var(--pt-line)}
.mil-pt-hgrid--dark{background:var(--pt-navy);border-color:rgba(255,255,255,.18)}
.mil-pt-hgrid--dark>*{
  box-shadow:1px 0 0 0 rgba(255,255,255,.18),0 1px 0 0 rgba(255,255,255,.18);
}

/* --- 2. THE FIELD (brand surface) ---------------------------------------
   With a photograph it is that photograph under a scrim; with nothing but a
   logo it is manufactured from --pt-accent: a raking gradient, a fine machined
   hatch that fades across the diagonal, and an oversized Anton monogram
   bleeding off the corner. Zero bytes, never empty, re-skins per brand from one
   custom property. No color-mix(): an unsupported function invalidates the whole
   declaration and the field would render with no background at all. */
.mil-pt-field{
  position:relative;overflow:hidden;isolation:isolate;color:#fff;
  background:
    radial-gradient(120% 100% at 72% 0%,rgba(255,255,255,.30),rgba(255,255,255,0) 62%),
    linear-gradient(148deg,rgba(255,255,255,.16) 0%,rgba(255,255,255,0) 46%),
    linear-gradient(148deg,var(--pt-accent) 0%,#16162B 96%);
}
.mil-pt-field::before{                       /* machined hatch */
  content:"";position:absolute;inset:-25%;pointer-events:none;
  background:repeating-linear-gradient(48deg,
    rgba(255,255,255,.085) 0 2px,rgba(255,255,255,0) 2px 11px);
  -webkit-mask-image:linear-gradient(118deg,#000 4%,rgba(0,0,0,0) 70%);
          mask-image:linear-gradient(118deg,#000 4%,rgba(0,0,0,0) 70%);
}
.mil-pt-field::after{                        /* monogram from data-mono */
  content:attr(data-mono);position:absolute;right:-.07em;bottom:-.30em;
  font:400 var(--pt-mono,clamp(150px,26vw,340px))/.72 var(--pt-dsp);
  letter-spacing:-.05em;color:rgba(255,255,255,.10);
  pointer-events:none;user-select:none;
}
/* Photo mode: the template writes background-image inline (scrim + url), which
   replaces the gradient layers; these two rules retire the manufactured
   furniture so a real photograph is never overprinted. */
.mil-pt-field--photo{background-size:cover;background-position:center}
.mil-pt-field--photo::before{background:none}
.mil-pt-field--photo::after{content:none}

/* --- 3. THE PLATE (logo carrier) ----------------------------------------
   A logo never touches the field directly: a fixed 16:6 rectangle so a 4:1
   wordmark and a square mark read as the same physical object.
   MEASURED, and it decides the API: every opaque pixel of
   uploads/media/partner-mcs-grup-logo.png is #FFFFFF — a white knock-out on
   transparency. On a white plate it is invisible. So the fill comes from
   content, not a guess: partners.json carries logoInk "light" | "dark"
   (default "light" = white artwork = dark plate). */
.mil-pt-plate{
  position:relative;z-index:1;      /* above the field's pseudo-elements */
  display:flex;align-items:center;justify-content:center;
  width:min(84%,300px);aspect-ratio:16/6;padding:16px 20px;
  background:#151527;border-radius:14px;
  box-shadow:0 18px 44px rgba(10,10,25,.34),inset 0 0 0 1px rgba(255,255,255,.14);
}
.mil-pt-plate--dark{                 /* for a dark-ink or full-colour mark */
  background:#fff;
  box-shadow:0 18px 44px rgba(10,10,25,.26),inset 0 0 0 1px rgba(0,0,0,.06);
}
.mil-pt-plate img{max-width:100%;max-height:100%;object-fit:contain;display:block}
.mil-pt-plate span{                  /* no logo file at all */
  font:400 clamp(20px,3vw,30px)/1 var(--pt-dsp);color:#fff;
  text-align:center;letter-spacing:.02em;
}
.mil-pt-plate--dark span{color:var(--pt-navy)}
.mil-pt-plate--sm{width:min(74%,216px);padding:12px 16px;border-radius:12px}

/* --- 4. HERO -------------------------------------------------------------
   The clearance for the fixed site header lives HERE, not on .mil-pt-crumbs.
   pt_breadcrumbs_html() returns '' for a one-item trail, which is exactly the
   Polish hub, so the crumbs' 110px never applied and the H1 sat under the header
   (measured: header bottom 120px vs h1 top 70px at 1280; 100 vs 70 at 375). */
.mil-pt-hero{
  position:relative;overflow:hidden;isolation:isolate;color:#fff;
  padding:calc(var(--pt-head) + var(--pt-hero-top)) 0 var(--pt-hero-bot);
  background:
    radial-gradient(90% 120% at 6% 0%,rgba(255,255,255,.10),rgba(255,255,255,0) 60%),
    var(--pt-navy);
}
.mil-pt-hero::after{                 /* seals the band, two-colour */
  content:"";position:absolute;left:0;right:0;bottom:0;height:6px;z-index:3;
  background:linear-gradient(90deg,var(--pt-red) 0 68%,var(--pt-green) 68% 100%);
}
.mil-pt-hero .container{position:relative;z-index:2}
.mil-pt-hero-inner{max-width:660px}
.mil-pt-crumbs{padding:0 0 clamp(14px,2vw,18px);font-size:13px;color:rgba(255,255,255,.68)}
.mil-pt-crumbs ol{list-style:none;margin:0;padding:0;display:flex;flex-wrap:wrap;gap:6px}
.mil-pt-crumbs li+li::before{content:"/";margin-right:6px;color:rgba(255,255,255,.34)}
.mil-pt-crumbs a{color:rgba(255,255,255,.68);text-decoration:none}
.mil-pt-crumbs a:hover{color:#fff}
.mil-pt-hero h1{
  font-family:var(--pt-dsp);font-weight:400;text-transform:uppercase;
  font-size:var(--pt-h1);line-height:1.02;letter-spacing:-.015em;
  color:#fff;margin:clamp(12px,1.4vw,18px) 0 clamp(14px,1.5vw,19px);
  max-width:none;padding-bottom:.05em;overflow-wrap:break-word;text-wrap:balance;
}
/* The hero's rhythm was set against a two-line deck. The real Polish intro is 204
   characters, which at 52ch runs FOUR lines and pushed the hero to 624px at 1280 —
   over the 600px budget, and far enough down that the brand wall no longer reached
   the first screen (the whole point of the ledger overlap). 58ch takes it to three
   lines at a measure a lead paragraph can still carry, and the stack tightens to
   match. Measured after: hero 578, brand field top 894. */
.mil-pt-hero-sub{
  margin:0 0 clamp(20px,2.1vw,27px);max-width:58ch;
  font-size:var(--pt-lead);line-height:1.55;color:rgba(255,255,255,.86);
}
.mil-pt-hero .mil-ep-wa{color:#fff;border-color:rgba(255,255,255,.42)}
.mil-pt-hero .mil-pt-link{color:rgba(255,255,255,.82)}
/* The hub's accent wedge — the first non-text shape on the page. It renders at
   EVERY width: below 992 it becomes a full-bleed band behind the lower third of
   the hero, so the phone never gets a flat navy screen. */
.mil-pt-hero-field{
  position:absolute;z-index:1;left:0;right:0;bottom:0;height:38%;
  clip-path:polygon(0 26%,100% 0,100% 100%,0 100%);opacity:.9;
}
@media (min-width:992px){
  .mil-pt-hero-field{
    inset:0 0 0 auto;width:40%;height:auto;
    clip-path:polygon(17% 0,100% 0,100% 100%,0 100%);opacity:1;
  }
  .mil-pt-hero--art .mil-pt-hero-inner{max-width:700px}
}
/* Brand hero: the WHOLE hero is a field. An ink plate on flat navy has almost no
   edge, and the brand needs its colour before its name. */
.mil-pt-hero--brand{
  background:
    linear-gradient(100deg,rgba(16,16,34,.92) 0%,rgba(16,16,34,.64) 48%,rgba(16,16,34,.14) 82%),
    radial-gradient(120% 100% at 78% 0%,rgba(255,255,255,.26),rgba(255,255,255,0) 60%),
    linear-gradient(148deg,var(--pt-accent) 0%,#16162B 96%);
  --pt-mono:clamp(200px,30vw,440px);
}
.mil-pt-hero--brand::after{z-index:3}
/* .mil-pt-hero--brand's `background` shorthand resets background-size and -position,
   and it sits AFTER .mil-pt-field--photo in this file, so a hero photograph would fall
   back to `auto` and tile. Restate them where both classes are present. */
.mil-pt-hero--brand.mil-pt-field--photo{background-size:cover;background-position:center}
.mil-pt-hero-plate{margin:0 0 clamp(20px,2.6vw,26px);width:min(76%,268px)}

/* --- 5. KEY-FACTS LEDGER -------------------------------------------------
   Rides up over the hero so hero + facts read as one instrument panel. */
.mil-pt-facts-wrap{position:relative;z-index:4;margin-top:calc(-1 * var(--pt-overlap))}
.mil-pt-facts{
  grid-template-columns:repeat(2,minmax(0,1fr));
  box-shadow:0 24px 60px rgba(10,10,25,.16);
}
.mil-pt-facts>:last-child:nth-child(odd){grid-column:1/-1}
@media (min-width:700px){
  .mil-pt-facts{grid-template-columns:repeat(var(--pt-cols,3),minmax(0,1fr))}
  .mil-pt-facts>:last-child:nth-child(odd){grid-column:auto}
}
.mil-pt-fact{background:#fff;padding:clamp(18px,2.4vw,26px);min-width:0}
.mil-pt-fact b{
  display:block;font-family:var(--pt-dsp);font-weight:400;
  font-size:var(--pt-fig);line-height:1;letter-spacing:-.01em;
  color:var(--pt-navy);overflow-wrap:break-word;
}
/* A fact whose value is a word, not a numeral, still has to be big — but 48px
   breaks "Siemens" mid-word in a 4-up cell. */
.mil-pt-fact b.mil-pt-fig-txt{font-size:var(--pt-fig-txt);line-height:1.08}
.mil-pt-fact--hot b{color:var(--pt-red)}
.mil-pt-fact small{display:block;margin-top:9px;font-size:13px;line-height:1.42;color:var(--pt-mute)}

/* --- 6. TRUST STRIP ------------------------------------------------------ */
.mil-pt-page .mil-ep-trust{border-bottom:1px solid var(--pt-line-soft)}
/* This element is also a .container, and site.css's own `.mil-ep-trust-row{padding:20px
   0}` zeroes the gutter it should inherit — the strip runs to the viewport edge and the
   first icon's box sits 3px past it at 375. Set all four sides explicitly rather than
   another `padding:18px 0` shorthand, which would reintroduce exactly that. */
.mil-pt-page .mil-ep-trust-row{
  justify-content:flex-start;gap:14px 36px;
  padding:18px var(--bs-gutter-x,15px);
}
.mil-pt-page .mil-ep-trust-item{align-items:flex-start;font-size:13.5px;min-width:0;flex:0 1 auto}
.mil-pt-page .mil-ep-trust-item i{color:var(--pt-red);font-size:17px;flex:0 0 auto;margin-top:1px}
/* Green is spent twice on the hub: the hero seal and the availability promise. */
.mil-pt-page .mil-ep-trust-item:last-child i{color:#1B9E5F}

/* --- 7. SECTION FURNITURE ------------------------------------------------ */
.mil-pt-sec{padding:var(--pt-sec-y) 0}
.mil-pt-sec--white{background:#fff}
/* The brand wall must reach the first screen: it is the object the owner's IA
   fix says people click, so it gets a shorter run-up than any other section. */
.mil-pt-sec--lead{padding-top:var(--pt-sec-y-lead)}
.mil-pt-sec--lead .mil-pt-head{margin-bottom:clamp(18px,2.4vw,28px)}
.mil-pt-sec--navy{background:var(--pt-navy);color:#fff}
.mil-pt-head{display:grid;justify-items:start;gap:10px;margin:0 0 var(--pt-head-gap)}
.mil-pt-head h2{
  margin:0;font-family:var(--pt-dsp);font-weight:400;text-transform:uppercase;
  font-size:var(--pt-h2);line-height:1.02;letter-spacing:-.015em;
  color:var(--pt-navy);padding-bottom:.05em;overflow-wrap:break-word;
}
.mil-pt-sec--navy .mil-pt-head h2{color:#fff}
.mil-pt-head .mil-pt-eyebrow{color:var(--pt-red)}
.mil-pt-sec--navy .mil-pt-head .mil-pt-eyebrow{color:var(--pt-green)}
.mil-pt-head p.mil-pt-lede{margin:0;max-width:58ch;font-size:var(--pt-body);line-height:1.6;color:var(--pt-mute)}
.mil-pt-sec--navy .mil-pt-head p.mil-pt-lede{color:rgba(255,255,255,.72)}
/* A sub-head for blocks whose content is badges or short rows: a 40px head over
   14px content is what made those sections read as empty. */
.mil-pt-h3sec{
  margin:0 0 clamp(18px,2.4vw,24px);
  font-family:var(--pt-dsp);font-weight:400;text-transform:uppercase;
  font-size:var(--pt-h3);line-height:1.05;letter-spacing:-.01em;color:var(--pt-navy);
}
/* .mil-ep-lead is max-width:640px with margin:14px auto, so inside a full-width
   container it centres itself ~250px right of its own h2. */
.mil-pt-page .mil-ep-lead{margin-left:0;margin-right:0}
/* pt_section_head() still serves the FAQ and the pages outside this redesign, and it
   emits .mil-ep-h2 at clamp(28px,4vw,48px) — 48px beside the 40px of every rewritten
   head. One declaration puts the whole section on one ladder without touching a
   template that was meant to stay unchanged. */
.mil-pt-page .mil-ep-h2{font-size:var(--pt-h2)}
/* Same reason for the band it sits in: .mil-ep-sec is clamp(56px,8vw,110px) against
   the section's own clamp(48px,7vw,96px). */
.mil-pt-page .mil-pt-faq{padding:var(--pt-sec-y) 0}

/* --- 8. THE BRAND WALL --------------------------------------------------- */
.mil-pt-wall{grid-template-columns:repeat(auto-fit,minmax(min(100%,300px),1fr))}
.mil-pt-brand{
  position:relative;display:grid;gap:0;align-content:start;min-width:0;
  background:#fff;color:var(--pt-navy);text-decoration:none;
  transition:background .3s cubic-bezier(0,0,.3642,1);
}
.mil-pt-brand:hover,.mil-pt-brand:focus-within{background:#FAFAF9}
.mil-pt-brand-field{
  display:flex;align-items:center;justify-content:center;
  min-height:186px;padding:26px;--pt-mono:clamp(130px,32vw,230px);
}
.mil-pt-brand-badge{position:absolute;top:14px;left:14px;z-index:2;max-width:calc(100% - 28px)}
.mil-pt-brand-body{display:grid;gap:12px;align-content:start;min-width:0;padding:var(--pt-pad)}
.mil-pt-brand-name{font-size:var(--pt-card);color:var(--pt-navy)}
.mil-pt-brand-claim{margin:0;font-size:15px;line-height:1.55;color:var(--pt-mute)}
.mil-pt-go{
  display:inline-flex;align-items:center;gap:10px;
  font:600 13px/1 var(--pt-txt);letter-spacing:.09em;text-transform:uppercase;
  color:var(--pt-red);
}
.mil-pt-go::after{
  content:"";width:28px;height:2px;background:var(--pt-red);
  transition:width .3s cubic-bezier(0,0,.3642,1);
}
.mil-pt-brand:hover .mil-pt-go::after,
.mil-pt-brand:focus-within .mil-pt-go::after{width:54px}
/* Industry pills are always visible: "do they do foundries?" is the question the
   page exists to answer, so it never hides behind a hover a finger cannot make. */
.mil-pt-pills{display:flex;flex-wrap:wrap;gap:6px;margin:0;padding:0;list-style:none}
.mil-pt-pills li{
  display:inline-flex;align-items:center;gap:7px;
  padding:6px 11px;border-radius:999px;background:var(--pt-ground);
  font:500 12.5px/1.2 var(--pt-txt);color:var(--pt-navy);white-space:nowrap;
}
.mil-pt-pills li i{font-size:12px;color:var(--pt-accent)}
.mil-pt-pills li.mil-pt-more{background:transparent;border:1px dashed #C9C9C6;color:var(--pt-mute)}
/* Facts inside a featured brand plate */
.mil-pt-rows{display:grid;gap:0;margin:2px 0 0}
.mil-pt-rows>div{
  display:flex;justify-content:space-between;align-items:baseline;gap:16px;
  padding:10px 0;border-bottom:1px solid var(--pt-line-soft);font-size:14px;min-width:0;
}
.mil-pt-rows dt{margin:0;color:var(--pt-mute);flex:0 0 auto}
.mil-pt-rows dd{margin:0;text-align:right;font-weight:600;color:var(--pt-navy);min-width:0;overflow-wrap:break-word}

/* ONE BRAND — the launch state, designed as the intended state. The switch is
   :only-child, so the wall self-heals into a two-up the moment a second brand is
   published, with nothing to remember at content time. The feature body also
   works stacked, so the phone gets the big name too. */
.mil-pt-brand--feature .mil-pt-brand-name{font-size:var(--pt-name)}
.mil-pt-brand--feature .mil-pt-brand-claim{
  font-size:var(--pt-lead);line-height:1.5;color:var(--pt-ink);max-width:46ch;
}
.mil-pt-brand--feature .mil-pt-brand-field{min-height:230px;--pt-mono:clamp(180px,26vw,300px)}
.mil-pt-brand--feature .mil-pt-plate{width:min(86%,340px)}
@media (min-width:768px){
  .mil-pt-wall>.mil-pt-brand:only-child{
    grid-template-columns:minmax(0,1.02fr) minmax(0,1fr);align-items:stretch;
  }
  .mil-pt-wall>.mil-pt-brand:only-child .mil-pt-brand-field{height:100%;min-height:300px}
  .mil-pt-wall>.mil-pt-brand:only-child .mil-pt-brand-body{
    padding:clamp(28px,3.6vw,46px);align-content:center;gap:15px;
  }
}
/* Two brands read as a spread, three fill the row (auto-fit collapses the empty
   tracks). A fourth would sit alone in row two, so an orphan takes the row. */
@media (min-width:992px){
  .mil-pt-wall>.mil-pt-brand:last-child:nth-child(3n+1):not(:only-child){
    grid-column:1/-1;grid-template-columns:minmax(0,1.02fr) minmax(0,1fr);
  }
  .mil-pt-wall>.mil-pt-brand:last-child:nth-child(3n+1):not(:only-child) .mil-pt-brand-field{
    height:100%;min-height:230px;
  }
}
/* Three 300px plates in a 708px tablet row is too tight for a logo. */
@media (min-width:768px) and (max-width:991px){
  .mil-pt-wall{grid-template-columns:repeat(auto-fit,minmax(min(100%,330px),1fr))}
}
/* "Next entry" slot — what turns the only entry into the first entry. Rendered
   while fewer than three manufacturers are public. Deliberately an empty slot:
   dashed rule, no fill, no arrow. */
.mil-pt-slot{
  display:flex;flex-wrap:wrap;align-items:baseline;gap:8px 18px;
  margin-top:clamp(14px,2vw,20px);padding:20px clamp(18px,2.4vw,26px);
  border:1px dashed var(--pt-line);border-radius:var(--pt-r);
  font-size:15px;line-height:1.6;color:var(--pt-mute);
}
.mil-pt-slot::before{
  content:"";flex:0 0 auto;width:34px;height:34px;border-radius:8px;
  border:1px dashed var(--pt-line);
}
.mil-pt-slot p{margin:0;max-width:62ch;min-width:0}
.mil-pt-slot a{color:var(--pt-navy);text-decoration:none;border-bottom:1px solid var(--pt-red);padding-bottom:2px}

/* --- 9. THE INDEX (offers on the hub, solutions on the brand page) --------
   One component, two pages. The pillar is promoted out of the grid; the rest
   become an index. This kills the six-identical-cards problem measured on the
   live hub (18 of 30 text slots duplicated) without spending the brand field six
   times over — the field is a brand primitive, not a card texture. */
.mil-pt-feature{
  display:grid;gap:clamp(16px,2.4vw,32px);align-items:end;
  grid-template-columns:minmax(0,1fr);
  background:var(--pt-navy);color:#fff;border-radius:var(--pt-r-lg);
  padding:var(--pt-pad-lg);text-decoration:none;
  margin:0 0 clamp(22px,3vw,34px);position:relative;overflow:hidden;
  transition:transform .3s cubic-bezier(0,0,.3642,1);
}
.mil-pt-feature::before{
  content:"";position:absolute;left:0;top:0;bottom:0;width:5px;background:var(--pt-red);
}
.mil-pt-feature:hover{transform:translateY(-4px)}
@media (min-width:880px){
  .mil-pt-feature{grid-template-columns:minmax(0,1.3fr) minmax(0,1fr)}
}
.mil-pt-feature .mil-pt-eyebrow{color:var(--pt-green)}
.mil-pt-feature-t{
  margin:12px 0 0;font-family:var(--pt-dsp);font-weight:400;text-transform:uppercase;
  font-size:clamp(26px,3.4vw,44px);line-height:1.02;letter-spacing:-.015em;
  color:#fff;padding-bottom:.05em;overflow-wrap:break-word;
}
.mil-pt-feature p{margin:0;font-size:var(--pt-body);line-height:1.6;color:rgba(255,255,255,.76)}
.mil-pt-feature .mil-pt-go{color:#fff;margin-top:18px}
.mil-pt-feature .mil-pt-go::after{background:var(--pt-red);width:54px}
.mil-pt-feature:hover .mil-pt-go::after{width:86px}

.mil-pt-index{border-top:1px solid var(--pt-line);counter-reset:ptrow}
.mil-pt-row{
  position:relative;counter-increment:ptrow;display:grid;
  grid-template-columns:auto minmax(0,1fr);gap:4px 16px;align-items:start;
  padding:20px 48px 20px 0;border-bottom:1px solid var(--pt-line);
  color:var(--pt-navy);text-decoration:none;
  transition:background .28s cubic-bezier(0,0,.3642,1),padding-left .28s cubic-bezier(0,0,.3642,1);
}
.mil-pt-row:hover,.mil-pt-row:focus-visible{background:#fff;outline:none}
.mil-pt-row:focus-visible{box-shadow:inset 0 0 0 2px var(--pt-red)}
/* The numeral is a landmark, never the loudest thing in the row: it is a
   positional index and carries no information, so it stays smaller than the
   title and grey until the row is engaged. */
.mil-pt-row-n{
  grid-column:1;grid-row:1/span 3;align-self:start;
  font-family:var(--pt-dsp);font-weight:400;font-size:var(--pt-num);line-height:1.1;
  letter-spacing:-.02em;color:var(--pt-line);
  transition:color .28s cubic-bezier(0,0,.3642,1);
}
.mil-pt-row-n::before{content:counter(ptrow,decimal-leading-zero)}
.mil-pt-row:hover .mil-pt-row-n,.mil-pt-row:focus-visible .mil-pt-row-n{color:var(--pt-red)}
.mil-pt-row-k{
  grid-column:2;grid-row:1;display:block;margin:0 0 4px;
  font:600 11.5px/1 var(--pt-txt);letter-spacing:.14em;text-transform:uppercase;
  color:var(--pt-red);
}
.mil-pt-row-t{
  grid-column:2;grid-row:2;margin:0;
  font-family:var(--pt-dsp);font-weight:400;text-transform:uppercase;
  font-size:var(--pt-card);line-height:1.12;letter-spacing:-.01em;
  color:var(--pt-navy);padding-bottom:.04em;overflow-wrap:break-word;
}
.mil-pt-row-s{
  grid-column:2;grid-row:3;margin:6px 0 0;max-width:62ch;
  font-size:15px;line-height:1.55;color:var(--pt-mute);
}
.mil-pt-row-go{
  position:absolute;top:20px;right:0;width:38px;height:38px;display:grid;place-items:center;
  border:1px solid var(--pt-line);border-radius:50%;color:var(--pt-navy);font-size:13px;
  transition:background .28s,border-color .28s,color .28s,transform .28s;
}
.mil-pt-row:hover .mil-pt-row-go,.mil-pt-row:focus-visible .mil-pt-row-go{
  background:var(--pt-red);border-color:var(--pt-red);color:#fff;
}
@media (min-width:768px){
  .mil-pt-row{
    grid-template-columns:auto minmax(0,1fr);gap:4px 26px;
    padding:clamp(22px,2.6vw,30px) 76px clamp(22px,2.6vw,30px) 0;
  }
  .mil-pt-row:hover{padding-left:10px}
  .mil-pt-row-go{top:50%;right:12px;transform:translateY(-50%);width:48px;height:48px;font-size:15px}
  .mil-pt-row:hover .mil-pt-row-go,.mil-pt-row:focus-visible .mil-pt-row-go{
    transform:translateY(-50%) translateX(4px);
  }
}

/* --- 10. HOW IT WORKS ----------------------------------------------------
   The old .mil-pt-step background computed to rgb(236,236,234) — identical to
   the body — so the three cards had no edge at all, and their icons were 19px
   grey. A red Anton numeral does the work instead. */
.mil-pt-steps{
  display:grid;gap:var(--pt-gap);
  grid-template-columns:repeat(auto-fit,minmax(min(100%,250px),1fr));
}
.mil-pt-step{
  background:#fff;border:1px solid var(--pt-line);border-radius:var(--pt-r);
  padding:clamp(22px,2.8vw,32px);min-width:0;
}
.mil-pt-step-n{
  display:block;font-family:var(--pt-dsp);font-weight:400;
  font-size:clamp(40px,5vw,60px);line-height:.9;color:var(--pt-red);letter-spacing:-.02em;
}
.mil-pt-step-n::after{
  content:"";display:block;width:42px;height:4px;background:var(--pt-red);
  margin:clamp(13px,1.8vw,18px) 0 clamp(13px,1.8vw,16px);
}
.mil-pt-step h3{
  margin:0 0 9px;font-family:var(--pt-dsp);font-weight:400;text-transform:uppercase;
  font-size:var(--pt-card);line-height:1.12;color:var(--pt-navy);
}
.mil-pt-step p{margin:0;font-size:15px;line-height:1.6;color:var(--pt-mute)}

/* --- 11. FUNDING BAND ---------------------------------------------------- */
.mil-pt-fund{display:grid;gap:clamp(18px,2.6vw,40px);align-items:center;grid-template-columns:minmax(0,1fr)}
@media (min-width:820px){.mil-pt-fund{grid-template-columns:auto minmax(0,1fr)}}
.mil-pt-fund-n{
  font-family:var(--pt-dsp);font-weight:400;font-size:clamp(52px,8vw,108px);
  line-height:.9;letter-spacing:-.03em;color:var(--pt-green);white-space:nowrap;
}
.mil-pt-fund h3{
  margin:0 0 12px;font-family:var(--pt-dsp);font-weight:400;text-transform:uppercase;
  font-size:var(--pt-h2);line-height:1.02;color:#fff;padding-bottom:.05em;
}
.mil-pt-fund p{margin:0 0 22px;max-width:56ch;font-size:var(--pt-body);line-height:1.6;color:rgba(255,255,255,.76)}

/* --- 12. INDUSTRIES POSTER (brand page) ----------------------------------
   The `industries` array is structured data partner.php never read; it lived
   inside a 30-word sentence. Eight Anton words on full-bleed navy is a whole
   visual event built with zero images. */
.mil-pt-inds{grid-template-columns:repeat(2,minmax(0,1fr))}
@media (min-width:760px){.mil-pt-inds{grid-template-columns:repeat(4,minmax(0,1fr))}}
.mil-pt-ind{
  background:var(--pt-navy);padding:clamp(16px,2.4vw,28px);min-width:0;
  font-family:var(--pt-dsp);font-weight:400;text-transform:uppercase;
  font-size:clamp(17px,2.1vw,28px);line-height:1.06;letter-spacing:-.01em;color:#fff;
  overflow-wrap:break-word;transition:background .3s cubic-bezier(0,0,.3642,1);
}
.mil-pt-ind:hover{background:#26263F}
.mil-pt-ind i{
  display:block;margin-bottom:10px;font-style:normal;
  font:600 11px/1 var(--pt-txt);letter-spacing:.14em;color:var(--pt-green);
}
/* The same poster once a sector also says what the SYSTEM DOES there. A sentence needs
   a wider measure than one Anton word, so the column count steps 1 -> 2 -> 4 and never
   3: eight tiles have to divide evenly or the last row is an orphan. The label drops a
   few points too — at the poster's own size a two-line word and a 13.5px sentence fight
   each other. Both grid selectors repeat the base class, so they outrank the plain
   poster's 760px rule and its <=575px mobile guard wherever those sit in the file, and
   nothing here touches a poster with no copy: that one still renders exactly as it did.
   The sentence sits on the cell floor — labels run to one or two lines, and the edge
   that shows against the hairline is the bottom one. */
.mil-pt-inds.mil-pt-inds--use{grid-template-columns:minmax(0,1fr)}
@media (min-width:520px){.mil-pt-inds.mil-pt-inds--use{grid-template-columns:repeat(2,minmax(0,1fr))}}
@media (min-width:1000px){.mil-pt-inds.mil-pt-inds--use{grid-template-columns:repeat(4,minmax(0,1fr))}}
.mil-pt-inds--use .mil-pt-ind{display:flex;flex-direction:column;font-size:clamp(17px,1.7vw,24px)}
.mil-pt-inds--use .mil-pt-ind small{margin-top:auto;padding-top:12px}
/* The hub's SOLUTION AREAS are the same poster with a line of copy under the word:
   the hub names the kinds of work we bring, the manufacturer's page carries the
   detail. Wider cells than the industries poster because these carry a sentence, so
   the count is explicit rather than auto-fit — and because it is explicit, the last
   row can be closed. An orphan cell leaves a third of the panel flat navy and the
   block reads as unfinished; the last child takes whatever the row has left, the
   same trick .mil-pt-facts uses for an odd ledger. */
.mil-pt-areas{grid-template-columns:minmax(0,1fr)}
@media (min-width:560px){
  .mil-pt-areas{grid-template-columns:repeat(2,minmax(0,1fr))}
  .mil-pt-areas>:last-child:nth-child(odd){grid-column:1/-1}
}
@media (min-width:900px){
  .mil-pt-areas{grid-template-columns:repeat(3,minmax(0,1fr))}
  .mil-pt-areas>:last-child:nth-child(odd){grid-column:auto}
  .mil-pt-areas>:last-child:nth-child(3n+1){grid-column:1/-1}
  .mil-pt-areas>:last-child:nth-child(3n+2){grid-column:span 2}
}
.mil-pt-ind small{
  display:block;margin-top:11px;
  font:400 13.5px/1.5 var(--pt-txt);letter-spacing:0;text-transform:none;
  color:rgba(255,255,255,.72);
}

/* --- 13. CREDENTIAL CELLS -------------------------------------------------
   A trademark is NEVER set in the display face: SIEMENS in Anton condensed does
   not read as honest-until-the-logo-arrives, it reads as a counterfeit. The name
   is Roboto 600; the logo appears only when a file exists AND the record grants
   consent. */
.mil-pt-creds{grid-template-columns:repeat(auto-fit,minmax(min(100%,220px),1fr))}
.mil-pt-cred{
  display:grid;gap:11px;align-content:start;background:#fff;min-height:150px;
  padding:clamp(20px,2.6vw,28px);color:var(--pt-navy);text-decoration:none;min-width:0;
}
a.mil-pt-cred:hover{background:#FAFAF9}
.mil-pt-cred-mark{display:flex;align-items:center;min-height:44px}
/* A partner wordmark is a flex item: without a fixed height it shrinks to whatever the
   grid cell allows (the Siemens mark rendered 72x17). Pin the height, let width follow. */
.mil-pt-cred-mark img{height:26px;width:auto;max-height:44px;max-width:100%;object-fit:contain;flex:0 0 auto}
.mil-pt-cred-mark strong{font:600 20px/1.15 var(--pt-txt);letter-spacing:.01em}
.mil-pt-cred small{margin-top:auto;font-size:13px;line-height:1.45;color:var(--pt-mute)}
.mil-pt-cred-dl{display:inline-flex;align-items:center;gap:7px;font:600 13px/1 var(--pt-txt);color:var(--pt-red)}

/* --- 14. DOWNLOADS (new `downloads` field) ------------------------------- */
.mil-pt-dls{border-top:1px solid var(--pt-line)}
.mil-pt-dl{
  display:flex;align-items:center;gap:14px;padding:16px 0;
  border-bottom:1px solid var(--pt-line);color:var(--pt-navy);text-decoration:none;min-width:0;
}
.mil-pt-dl-type{
  flex:0 0 auto;width:50px;height:50px;display:grid;place-items:center;border-radius:12px;
  background:var(--pt-navy);color:#fff;font:400 13px/1 var(--pt-dsp);letter-spacing:.06em;
  transition:background .28s;
}
.mil-pt-dl:hover .mil-pt-dl-type{background:var(--pt-red)}
.mil-pt-dl-body{flex:1 1 auto;min-width:0}
.mil-pt-dl b{
  display:block;font-family:var(--pt-dsp);font-weight:400;text-transform:uppercase;
  font-size:clamp(17px,1.5vw,21px);line-height:1.15;overflow-wrap:break-word;
}
.mil-pt-dl span{
  display:block;margin-top:4px;font:600 11px/1.3 var(--pt-txt);
  letter-spacing:.09em;text-transform:uppercase;color:var(--pt-mute);
}
.mil-pt-dl i{flex:0 0 auto;font-size:16px;color:var(--pt-red)}

/* --- 15. STORY / CLAIM / TERMS / REP -------------------------------------
   Only ONE red left rule in this stack: the claim. Two stacked reads as a bug. */
.mil-pt-claim{
  font-size:15px;line-height:1.6;color:var(--pt-navy);background:#fff;
  border-left:4px solid var(--pt-red);padding:14px 18px;margin:0 0 clamp(22px,3vw,30px);
}
.mil-pt-body{max-width:62ch;font-size:var(--pt-body);line-height:1.75;color:var(--pt-ink)}
.mil-pt-body p{margin:0 0 1.1em}
.mil-pt-body p:last-child{margin-bottom:0}
.mil-pt-body a{color:var(--pt-red)}
.mil-pt-panel{background:#fff;border:1px solid var(--pt-line);border-radius:var(--pt-r);padding:clamp(22px,3vw,30px)}
.mil-pt-terms{display:grid;gap:0 clamp(24px,3.4vw,48px);grid-template-columns:minmax(0,1fr)}
@media (min-width:768px){.mil-pt-terms{grid-template-columns:repeat(2,minmax(0,1fr))}}
.mil-pt-terms>div{
  display:flex;justify-content:space-between;align-items:baseline;gap:16px;min-width:0;
  padding:13px 0;border-bottom:1px solid var(--pt-line-soft);
}
.mil-pt-terms dt{
  margin:0;flex:0 0 auto;font:500 13px/1.4 var(--pt-txt);
  letter-spacing:.05em;text-transform:uppercase;color:var(--pt-mute);
}
.mil-pt-terms dd{
  margin:0;min-width:0;text-align:right;font:500 15px/1.45 var(--pt-txt);
  color:var(--pt-navy);overflow-wrap:break-word;
}
.mil-pt-rep{
  display:flex;flex-wrap:wrap;gap:18px;align-items:center;
  background:#fff;border:1px solid var(--pt-line);border-left:4px solid var(--pt-accent);
  border-radius:var(--pt-r);padding:clamp(20px,2.8vw,30px);
}
.mil-pt-rep-ico{
  flex:0 0 auto;width:60px;height:60px;border-radius:50%;background:var(--pt-accent);color:#fff;
  display:inline-flex;align-items:center;justify-content:center;font-size:22px;
}
.mil-pt-rep p{margin:0;font-size:15px;line-height:1.55}
.mil-pt-rep strong{font-size:17px}
.mil-pt-rep .mil-btn{margin-left:auto}

/* --- 16. GALLERY --------------------------------------------------------- */
.mil-pt-gallery{display:grid;gap:12px;grid-template-columns:repeat(2,minmax(0,1fr))}
@media (min-width:760px){
  .mil-pt-gallery{grid-template-columns:repeat(4,minmax(0,1fr));gap:16px}
  .mil-pt-gallery>:first-child{grid-column:span 2;grid-row:span 2}
}
.mil-pt-gallery img{width:100%;height:100%;aspect-ratio:4/3;object-fit:cover;border-radius:14px;display:block}

/* --- 17. FAQ ------------------------------------------------------------- */
.mil-pt-faq-list{max-width:860px;border-top:1px solid var(--pt-line)}
.mil-pt-faq-item{border-bottom:1px solid var(--pt-line);padding:0}
.mil-pt-faq-item summary{
  display:block;position:relative;cursor:pointer;list-style:none;
  padding:clamp(16px,2.2vw,22px) 44px clamp(16px,2.2vw,22px) 0;
  font-family:var(--pt-dsp);font-weight:400;text-transform:uppercase;
  font-size:clamp(17px,1.9vw,23px);line-height:1.18;color:var(--pt-navy);
}
.mil-pt-faq-item summary::-webkit-details-marker{display:none}
.mil-pt-faq-item summary::after{
  content:"+";position:absolute;right:2px;top:50%;transform:translateY(-50%);
  font:400 26px/1 var(--pt-dsp);color:var(--pt-red);
}
.mil-pt-faq-item[open] summary::after{content:"\2212"}
.mil-pt-faq-item[open] summary{color:var(--pt-red)}
.mil-pt-faq-item p{
  margin:0 0 clamp(18px,2.6vw,26px);max-width:68ch;
  font-size:16px;line-height:1.7;color:var(--pt-ink);
}

/* --- 18. CTAs — spend the accent as area --------------------------------
   `.mil-c-gone` matches NOTHING in any of the five stylesheets (verified), so
   every primary CTA fell back to .mil-btn's #ececea with navy text and read as
   disabled. Markup moves to .mil-btn.mil-a1; .mil-btn hard-sets color:#1e1e32,
   so the white label has to be supplied here. #D82549 is the AA-safe fill for
   the 12px uppercase label (white on #E52E51 is 4.34:1, which fails AA). */
.mil-pt-page .mil-btn.mil-a1,
.mil-pt-sticky .mil-btn.mil-a1{background-color:var(--pt-red-ink);color:#fff}
.mil-pt-page .mil-btn.mil-a1:hover,
.mil-pt-sticky .mil-btn.mil-a1:hover{background-color:#C21F41;filter:none}
.mil-pt-page .mil-btn{height:60px;padding:0 34px}

/* --- 19. BADGES ---------------------------------------------------------- */
.mil-pt-badge{
  display:inline-block;padding:6px 12px;border-radius:999px;
  font:600 11px/1.35 var(--pt-txt);letter-spacing:.08em;text-transform:uppercase;
  background:var(--pt-ground);color:var(--pt-navy);
}
/* `introduced` claims nothing, so it must not borrow the colour of a claim: authorised
   is green and exclusive is red, this one stays in the navy/white family. An OUTLINE
   rather than a fill, so it is also visually a weaker assertion than `represented`
   sitting in the same place. It only ever renders on a dark ground — the brand hero and
   the wall, where .mil-pt-wall re-fills it — so the label is white; a navy-on-navy tint
   was invisible on the hero. */
.mil-pt-badge--introduced{
  background:transparent;color:rgba(255,255,255,.92);
  box-shadow:inset 0 0 0 1px rgba(255,255,255,.42);
}
.mil-pt-badge--represented{background:rgba(255,255,255,.16);color:#fff}
.mil-pt-badge--authorised{background:#1B7F4E;color:#fff}
.mil-pt-badge--exclusive{background:var(--pt-red-ink);color:#fff}
.mil-pt-wall .mil-pt-badge{background:rgba(10,10,25,.42);color:#fff;backdrop-filter:blur(3px)}
.mil-pt-link{color:inherit;text-decoration:underline;text-underline-offset:4px;align-self:center}

/* --- 20. MOBILE GUARDS --------------------------------------------------- */
@media (max-width:575px){
  .mil-pt-page .mil-btn{width:100%;justify-content:center;padding:0 24px}
  .mil-pt-hero .mil-ep-cta-row{gap:10px}
  /* The primary CTA takes the full width; WhatsApp and "book a call" share the line
     under it. Stacking all three full-width made the hero 576px at 375 — 36 over
     budget — and three identical full-width bars read as three primary actions. */
  .mil-pt-hero .mil-ep-wa{flex:1 1 auto;justify-content:center;padding:13px 16px}
  .mil-pt-eyebrow{font-size:11px;letter-spacing:.11em}
  .mil-pt-brand-badge{font-size:10px;padding:5px 9px}
  .mil-pt-rep .mil-btn{margin-left:0}
  .mil-pt-inds{grid-template-columns:repeat(2,minmax(0,1fr))}
}

/* --- 21. PAGES OUTSIDE THIS REDESIGN ------------------------------------
   offer.php, guide.php, guides-index.php and the three fixed pages share this
   stylesheet and were NOT rewritten. They still render pt_offer_card() /
   pt_guide_card() into .mil-pt-grid, still park a .mil-pt-aside beside the
   prose, and still use .mil-pt-hero-eyebrow / -meta. Deleting these rules with
   the rest of the old card system would have left six live pages as unstyled
   stacks, so they stay until those templates are redone in their own right.
   Everything here is scoped to a class the two rewritten templates no longer
   emit, so nothing above is overridden. */
.mil-pt-hero-eyebrow{font:600 12px/1 var(--pt-txt);letter-spacing:.12em;text-transform:uppercase;color:rgba(255,255,255,.7);margin:0 0 18px}
/* Attribution line under an offer's H1: a solution belongs to the manufacturer that
   makes it. Typographic only — the red underline is the same affordance .mil-pt-slot
   uses, and the logo stays where it already is, in the sidebar panel. */
.mil-pt-hero-by{margin:0 0 clamp(14px,1.6vw,20px);font-size:15px;line-height:1.5;color:rgba(255,255,255,.72)}
.mil-pt-hero-by a{color:#fff;text-decoration:none;border-bottom:1px solid var(--pt-red);padding-bottom:2px}
.mil-pt-hero-by a:hover{border-bottom-color:#fff}
.mil-pt-hero-meta{display:flex;flex-wrap:wrap;gap:10px 24px;font-size:14px;color:rgba(255,255,255,.75);margin-top:24px}
.mil-pt-grid{display:grid;gap:28px;grid-template-columns:repeat(auto-fit,minmax(min(100%,300px),1fr))}
.mil-pt-card,.mil-pt-offer,.mil-pt-guide{display:flex;flex-direction:column;gap:12px;padding:28px;background:#fff;border:1px solid var(--pt-line-soft);border-radius:var(--pt-r);color:var(--pt-navy);text-decoration:none;min-width:0;transition:transform .25s,box-shadow .25s}
.mil-pt-card:hover,.mil-pt-offer:hover,.mil-pt-guide:hover{transform:translateY(-4px);box-shadow:0 24px 48px rgba(30,30,50,.12)}
.mil-pt-card{border-top:4px solid var(--pt-accent)}
.mil-pt-card-top{display:flex;align-items:center;justify-content:space-between;gap:12px;min-height:56px}
.mil-pt-card-top img{max-height:48px;max-width:160px;object-fit:contain}
.mil-pt-card-initial{width:48px;height:48px;border-radius:12px;background:var(--pt-accent);color:#fff;display:inline-flex;align-items:center;justify-content:center;font:700 22px/1 var(--pt-txt)}
.mil-pt-card-title{font-size:22px;line-height:1.25;margin:0;color:var(--pt-navy)}
.mil-pt-card-text{font-size:15px;line-height:1.6;color:var(--pt-mute);margin:0;flex:1}
.mil-pt-card-tags,.mil-pt-offer-type,.mil-pt-guide-date{font:600 11px/1 var(--pt-txt);letter-spacing:.1em;text-transform:uppercase;color:var(--pt-mute);margin:0}
.mil-pt-card-more{font-weight:600;color:var(--pt-red)}
.mil-pt-offer-img,.mil-pt-guide-img{width:100%;aspect-ratio:16/9;object-fit:cover;border-radius:12px}
.mil-pt-price{font-weight:600;color:var(--pt-navy);margin:0}
.mil-pt-aside{display:flex;flex-direction:column;gap:28px}
.mil-pt-panel h3{font-size:18px;margin:0 0 14px}
/* Rich text from the CMS: offer and guide bodies carry h2/h3/ul/table. */
.mil-pt-body h2{font-size:30px;margin:48px 0 16px;color:var(--pt-navy)}
.mil-pt-body h3{font-size:22px;margin:32px 0 12px;color:var(--pt-navy)}
.mil-pt-body ul{padding-left:22px}
/* Kept alongside the overflow fix further down: without border-collapse a prose
   table draws every border twice. That rule only changes `display`. */
.mil-pt-body table{width:100%;border-collapse:collapse;font-size:15px;margin:16px 0}
.mil-pt-body td,.mil-pt-body th{border-bottom:1px solid var(--pt-line-soft);padding:10px 8px;text-align:left}
/* pt_funding_box_html() still renders this aside on every eligible offer page. */
/* NAME COLLISION, do not un-scope: partners_render_fixed() puts the page kind on the
   BODY as `mil-pt-funding`, which is the same string as this component. Unscoped, the
   navy-on-white box style applied to the whole funding page and every cell of the
   programme table rendered white text on a light background — 105 invisible elements.
   `.mil-pt-page` is a descendant of body, so scoping here can never match the body. */
.mil-pt-page .mil-pt-funding{background:var(--pt-navy);color:#fff;border-radius:var(--pt-r);padding:28px}
.mil-pt-page .mil-pt-funding h3{color:#fff;font-size:20px;margin:0 0 10px}
.mil-pt-page .mil-pt-funding p{color:rgba(255,255,255,.8);font-size:15px;line-height:1.6;margin:0 0 18px}
/* Tables ----------------------------------------------------------------- */
.mil-pt-table{width:100%;border-collapse:collapse;font-size:15px;color:#1E1E32}
.mil-pt-table th,.mil-pt-table td{padding:14px 12px;border-bottom:1px solid #E6E6E4;text-align:left;vertical-align:top;color:#1E1E32}
.mil-pt-table th{font-weight:600;color:#1E1E32;background:#F6F6F4;white-space:nowrap}
.mil-pt-table-wrap{overflow-x:auto;-webkit-overflow-scrolling:touch}
.mil-pt-status--live{color:#1B7F4E;font-weight:600}
.mil-pt-status--announced{color:#B7791E;font-weight:600}
.mil-pt-status--closed{color:#7A7A7A;font-weight:600;text-decoration:line-through}
.mil-pt-benefits{list-style:none;margin:0;padding:0;display:grid;gap:12px}
.mil-pt-benefits li{padding-left:28px;position:relative;font-size:15px;line-height:1.5}
.mil-pt-benefits li::before{content:"\2713";position:absolute;left:0;top:0;color:#1B7F4E;font-weight:700}
/* RFQ -------------------------------------------------------------------- */
.mil-pt-rfq{padding:80px 0 120px;background:#ECECEA}
.mil-pt-rfq-card{max-width:820px;margin:0 auto;background:#fff;border-radius:24px;padding:48px;box-shadow:0 30px 60px rgba(30,30,50,.08)}
.mil-rfq-grid{display:grid;gap:18px;grid-template-columns:repeat(2,1fr);margin:28px 0 18px}
.mil-rfq-full{grid-column:1/-1}
.mil-rfq label{display:flex;flex-direction:column;gap:8px;font-size:14px;color:#1E1E32}
.mil-rfq label span{font-weight:600}
.mil-rfq input,.mil-rfq textarea{width:100%;padding:14px 16px;border:1px solid #D8D8D8;border-radius:12px;font:16px/1.4 "Roboto",sans-serif;color:#1E1E32;background:#fff}
.mil-rfq input:focus,.mil-rfq textarea:focus{outline:none;border-color:#1E1E32;box-shadow:0 0 0 3px rgba(30,30,50,.08)}
.mil-rfq-consent{flex-direction:row!important;align-items:flex-start;gap:12px!important;font-size:13px!important;color:#7A7A7A!important;margin:0 0 24px}
.mil-rfq-consent input{width:18px;height:18px;margin-top:2px}
.mil-rfq-hp{position:absolute;left:-9999px;top:-9999px;opacity:0;height:0;width:0}
.mil-form-thankyou{max-width:820px;margin:0 auto;text-align:center;padding:40px 0}
@media (max-width:767px){.mil-rfq-grid{grid-template-columns:1fr}.mil-pt-rfq-card{padding:28px}}
/* Sticky bar ------------------------------------------------------------- */
.mil-pt-sticky{position:fixed;left:0;right:0;bottom:0;z-index:8000;display:flex;align-items:center;justify-content:space-between;gap:16px;padding:12px 20px;background:#fff;border-top:1px solid #E6E6E4;box-shadow:0 -10px 30px rgba(30,30,50,.08);transform:translateY(110%);transition:transform .3s}
.mil-pt-sticky.mil-active{transform:none}
.mil-pt-sticky-text{font-size:14px;color:#1E1E32;font-weight:600}
.mil-pt-sticky-actions{display:flex;gap:10px;align-items:center}
@media (max-width:575px){.mil-pt-sticky-text{display:none}}
/* Manufacturers page ----------------------------------------------------- */
.mil-pt-tr{background:#F6F6F4;border-left:4px solid #E52E51;padding:28px;border-radius:0 18px 18px 0;font-size:16px;line-height:1.7}
/* OEE calculator --------------------------------------------------------- */
.mil-pt-oee{display:grid;gap:14px;grid-template-columns:repeat(auto-fit,minmax(160px,1fr));align-items:end;background:#ECECEA;border-radius:18px;padding:24px;margin:24px 0}
.mil-pt-oee label{display:flex;flex-direction:column;gap:6px;font-size:13px;font-weight:600}
.mil-pt-oee input{padding:12px;border:1px solid #D8D8D8;border-radius:10px;font-size:16px}
.mil-pt-oee output{font:400 34px/1 "Anton","Roboto",sans-serif;color:#1E1E32}
/* Two-column layout ------------------------------------------------------ */
.mil-pt-cols{display:grid;gap:48px;grid-template-columns:minmax(0,1fr) 360px;align-items:start}
@media (max-width:991px){.mil-pt-cols{grid-template-columns:1fr}}
.mil-pt-venture-card{display:flex;flex-wrap:wrap;gap:24px;align-items:center;justify-content:space-between;background:#1E1E32;color:#fff;border-radius:24px;padding:40px}
.mil-pt-venture-card h3{color:#fff;margin:0 0 8px;font-size:26px}
.mil-pt-venture-card p{color:rgba(255,255,255,.8);margin:0;max-width:560px}
/* Bottom-edge fixes (P3 audit) ------------------------------------------- */
/* site.css parks .mil-transition-frame at filter:blur(0) so swup can animate to
   blur(15px). A filtered ancestor becomes the containing block for its
   position:fixed descendants, so .mil-pt-sticky was pinned to the END OF THE PAGE
   instead of the viewport and never appeared. Drop the resting filter on section
   pages and re-assert the page-out blur, which does not need to hold between
   transitions. */
body.mil-pt .mil-transition-fade .mil-transition-frame{filter:none}
html.is-animating body.mil-pt .mil-transition-fade .mil-transition-frame{filter:blur(15px)}
/* The cookie banner (chrome-i18n.css, bottom:16px z-9000) and the sticky CTA bar
   (bottom:0 z-8000) share the bottom edge; on a phone the banner covers the bar's
   buttons outright. Lift the banner while the bar is showing.
   The bar is 95px tall on desktop and 85px under 576px (its label is dropped), so a
   single 107px offset clears both with room to spare. :has() is the guard - browsers
   without it simply keep today's behaviour. */
body.mil-pt:has(.mil-pt-sticky.mil-active) .mil-cookie{bottom:107px}
/* A wide <table> in body copy has a min-content width of its own; under the old
   `grid-template-columns:1fr` (an auto minimum) it pushed the whole prose column
   past the container - 367px inside a 345px track at 375px wide, clipped by
   .mil-transition-fade's overflow:hidden, so ~7px of every paragraph was cut off.
   Cap the track and let the table itself scroll. */
@media (max-width:991px){.mil-pt-cols{grid-template-columns:minmax(0,1fr)}}
.mil-pt-body table{display:block;max-width:100%;overflow-x:auto;-webkit-overflow-scrolling:touch}
/* The site-wide floating actions (WhatsApp + back-to-top, bottom:24px, z-9999980)
   land on top of the sticky bar's primary CTA at desktop width and, outranking it on
   z-index, swallow clicks meant for "Zapytaj o ofertę". Lift them clear while the bar
   is up; 84px covers the tallest form of the bar (95px) plus a gap. */
body.mil-pt:has(.mil-pt-sticky.mil-active) .mil-floating-actions{transform:translateY(-84px);transition:transform .3s}
/* Lifting the actions puts them in the cookie banner's band on a phone, where the
   banner is nearly full width. A consent dialog outranks a convenience button:
   let the banner paint over them for the short time it is on screen. */
body.mil-pt .mil-cookie{z-index:9999990}
