/* ==========================================================================
   MPTSS marketing site — built on the MPTSS design system tokens.
   ========================================================================== */

.skip-link{position:absolute;left:-999px;top:auto;background:var(--ink-900);color:#fff;padding:var(--space-2) var(--space-4);border-radius:var(--radius-sm);z-index:100}
.skip-link:focus{left:var(--space-4);top:var(--space-4)}

html,body{overflow-x:hidden}
img{max-width:100%;display:block}
.section{padding:var(--section-y) var(--gutter)}
.section > *{max-width:var(--container-max);margin-left:auto;margin-right:auto}
.section--subtle{background:var(--surface-subtle)}
.section--tight{padding-top:var(--space-16);padding-bottom:var(--space-16)}
.section-edge{line-height:0}
.section-edge svg{display:block}

.lede{font:var(--type-body-lg);color:var(--text-muted)}

/* ---------------------------------------------------------------------- */
/* Buttons — mirrors components/core/Button.jsx variants                   */
/* ---------------------------------------------------------------------- */
.btn{
  display:inline-flex;align-items:center;justify-content:center;gap:var(--space-2);
  font-family:var(--font-display);font-weight:var(--weight-semibold);letter-spacing:.01em;
  border-radius:var(--radius-sm);border:var(--border-w) solid transparent;cursor:pointer;
  white-space:nowrap;transition:var(--transition-control);text-decoration:none;
  height:var(--control-h-md);padding:0 var(--space-5);font-size:var(--text-body-sm);
  position:relative;
}
.btn:hover{text-decoration:none}
.btn:active{transform:translateY(1px)}
.btn--sm{height:var(--control-h-sm);padding:0 var(--space-3);font-size:var(--text-caption)}
.btn--lg{height:var(--control-h-lg);padding:0 var(--space-6);font-size:var(--text-body)}
.btn--primary{background:var(--action-primary);color:var(--text-on-accent);box-shadow:var(--shadow-sm)}
.btn--primary:hover{background:var(--action-primary-hover);color:var(--text-on-accent)}
.btn--secondary{background:var(--surface-card);color:var(--text-strong);border-color:var(--border-default)}
.btn--secondary:hover{background:var(--grey-050);border-color:var(--border-strong);color:var(--text-strong)}
.btn--ghost{background:transparent;color:var(--text-accent)}
.btn--ghost:hover{background:var(--blue-100);color:var(--text-accent)}
/* --gradient-wave's stops (0/35/75/100%) are tuned for wide surfaces —
   on a compact button that concentrates the whole blue-to-cyan change
   into the last quarter, which reads as a hard line rather than a
   blend. A plain 2-stop gradient spreads it evenly across the button. */
.btn--gradient{background:linear-gradient(90deg, var(--blue-500) 0%, var(--cyan-400) 100%);color:#fff;box-shadow:0 6px 22px rgba(53,198,242,.28)}
.btn--gradient:hover{filter:brightness(1.06);color:#fff}
.btn__spinner{display:none}

/* ---------------------------------------------------------------------- */
/* Header / nav                                                            */
/* ---------------------------------------------------------------------- */
.site-header{
  position:sticky;top:0;z-index:50;
  border-bottom:var(--border-w) solid var(--border-subtle);
}
/* The blur lives on its own layer, not on .site-header itself — a
   backdrop-filter ancestor becomes a containing block for fixed-position
   descendants, which would trap the mobile off-canvas nav inside the
   76px header box. */
.site-header__veil{
  position:absolute;inset:0;z-index:-1;
  background:var(--veil-light);backdrop-filter:var(--blur-veil);-webkit-backdrop-filter:var(--blur-veil);
}
.site-header__inner{
  position:relative;max-width:var(--container-max);margin:0 auto;padding:0 var(--gutter);
  height:76px;display:flex;align-items:center;gap:var(--space-8);
}
.brand{display:flex;align-items:center;perspective:600px}
.brand__tilt{display:block;will-change:transform;transition:transform var(--dur-base) var(--ease-out)}
.brand__logo{height:40px;width:auto;display:block}

.site-nav{display:flex;align-items:center;gap:var(--space-8);flex:1}
.site-nav__link{
  font-family:var(--font-display);font-weight:var(--weight-medium);font-size:var(--text-body-sm);
  color:var(--text-muted);position:relative;padding:6px 0;background:none;border:0;cursor:pointer;
  display:inline-flex;align-items:center;gap:6px;
}
.site-nav__link::after{
  content:"";position:absolute;left:0;right:100%;bottom:0;height:2px;background:var(--gradient-wave);
  border-radius:2px;transition:right var(--dur-base) var(--ease-out);
}
.site-nav__link:hover,.site-nav__link.is-active{color:var(--text-strong);text-decoration:none}
.site-nav__link:hover::after,.site-nav__link.is-active::after{right:0}
.site-nav__link--mobile-only{display:none}

.nav-dropdown{position:relative}
.nav-dropdown__trigger{font:inherit}
.nav-dropdown__chevron{transition:transform var(--dur-fast) var(--ease-standard)}
.nav-dropdown.is-open .nav-dropdown__chevron{transform:rotate(180deg)}
.nav-dropdown__panel{
  position:absolute;top:100%;left:-16px;padding-top:14px;
  opacity:0;visibility:hidden;transform:translateY(4px);
  transition:opacity var(--dur-base) var(--ease-out),transform var(--dur-base) var(--ease-out),visibility var(--dur-base);
  min-width:320px;
}
.nav-dropdown.is-open .nav-dropdown__panel{opacity:1;visibility:visible;transform:translateY(0)}
.nav-dropdown__panel > *{
  background:var(--surface-card);border:var(--border-w) solid var(--border-subtle);
  border-radius:var(--radius-md);box-shadow:var(--shadow-lg);overflow:hidden;
}
.nav-dropdown__panel{display:flex;flex-direction:column}
.nav-dropdown__item,.nav-dropdown__all{
  display:flex;align-items:center;gap:var(--space-3);padding:11px 18px;
  color:var(--text-body);font:var(--type-body-sm);text-decoration:none;
  background:var(--surface-card);border-bottom:1px solid var(--border-subtle);
}
.nav-dropdown__panel a:last-child{border-bottom:0}
.nav-dropdown__item:hover,.nav-dropdown__all:hover{background:var(--grey-050);color:var(--text-strong)}
.nav-dropdown__index{font:var(--type-mono);font-size:var(--text-caption);color:var(--text-accent);width:20px;flex:0 0 auto}
.nav-dropdown__all{font-weight:var(--weight-semibold);color:var(--text-accent);justify-content:space-between}
.nav-dropdown__all-arrow{transition:transform var(--dur-fast) var(--ease-standard)}
.nav-dropdown__all:hover .nav-dropdown__all-arrow{transform:translateX(3px)}

.site-header__cta{display:flex;align-items:center}
.nav-toggle{display:none}

/* ---------------------------------------------------------------------- */
/* Editorial stagger hero                                                  */
/* ---------------------------------------------------------------------- */
.hero-editorial{
  position:relative;background:var(--surface-page);overflow:hidden;
  padding:var(--space-16) var(--gutter) 0;
}
.hero-editorial__inner{
  max-width:var(--container-max);margin:0 auto;
  display:grid;grid-template-columns:1.1fr .9fr;gap:var(--space-16);align-items:center;
  padding-bottom:var(--space-20);position:relative;
}
.hero-editorial__folio{
  font:var(--type-mono);font-size:var(--text-caption);color:var(--text-faint);
  letter-spacing:.12em;margin-bottom:var(--space-6);
}
.hero-editorial__eyebrow{margin-bottom:var(--space-4)}
.hero-editorial__headline{
  font:var(--type-display);font-size:clamp(40px,6vw,72px);color:var(--text-strong);
  margin:0 0 var(--space-6);letter-spacing:var(--tracking-display);
}
.stagger-line{display:block;overflow:hidden;padding-bottom:.08em}
.stagger-word{
  display:inline-block;transform:translateY(115%) rotate(2deg);opacity:0;
  animation:stagger-in .78s var(--ease-out) forwards;
}
.hero-editorial__headline .stagger-line:nth-child(1) .stagger-word{animation-delay:.05s}
.hero-editorial__headline .stagger-line:nth-child(2) .stagger-word:nth-child(1){animation-delay:.16s}
.hero-editorial__headline .stagger-line:nth-child(2) .stagger-word:nth-child(2){animation-delay:.25s}
@keyframes stagger-in{
  to{transform:translateY(0) rotate(0deg);opacity:1}
}
.hero-editorial__lede{max-width:52ch;margin-bottom:var(--space-6)}
.hero-editorial__ctas{display:flex;gap:var(--space-3);flex-wrap:wrap;margin-bottom:var(--space-12)}
.hero-editorial__stats{display:flex;gap:var(--space-10);flex-wrap:wrap}
.hero-stat{display:flex;flex-direction:column;gap:2px}
.hero-stat__num,.hero-stat__num-text{font-family:var(--font-display);font-size:var(--text-h2);font-weight:var(--weight-bold);color:var(--text-strong)}
.hero-stat__label{font:var(--type-body-sm);font-size:var(--text-caption);color:var(--text-muted)}

.hero-editorial__col--figure{position:relative}
.hero-editorial__figure-wrap{position:relative;z-index:1;border-radius:var(--radius-lg);overflow:hidden;box-shadow:var(--shadow-xl)}
.hero-editorial__figure-wrap .image-slot{border-radius:var(--radius-lg)}
.hero-editorial__rule{
  position:absolute;inset:var(--space-6) calc(-1 * var(--space-6)) calc(-1 * var(--space-6)) var(--space-6);
  border:var(--border-w-thick) solid var(--blue-200);border-radius:var(--radius-lg);z-index:0;
}

/* generic scroll-reveal (the "editorial saga" motion used across the site).
   data-reveal takes an optional direction: up (default), left, right. */
[data-reveal]{opacity:0;transform:translateY(26px);transition:opacity .7s var(--ease-out),transform .7s var(--ease-out)}
[data-reveal="left"]{transform:translateX(-36px)}
[data-reveal="right"]{transform:translateX(36px)}
[data-reveal].is-visible{opacity:1;transform:translate(0,0)}
[data-reveal-group] > *{opacity:0;transform:translateY(22px);transition:opacity .6s var(--ease-out),transform .6s var(--ease-out)}
[data-reveal-group].is-visible > *{opacity:1;transform:translateY(0)}
[data-reveal-group].is-visible > *:nth-child(1){transition-delay:.02s}
[data-reveal-group].is-visible > *:nth-child(2){transition-delay:.09s}
[data-reveal-group].is-visible > *:nth-child(3){transition-delay:.16s}
[data-reveal-group].is-visible > *:nth-child(4){transition-delay:.23s}
[data-reveal-group].is-visible > *:nth-child(5){transition-delay:.30s}
[data-reveal-group].is-visible > *:nth-child(6){transition-delay:.37s}

/* Branded divider that draws in left-to-right under a heading once its
   [data-reveal] ancestor becomes visible. */
.wave-rule--reveal{
  width:56px;margin:var(--space-4) 0 var(--space-5);border:0;
  transform:scaleX(0);transform-origin:left center;
  transition:transform .6s var(--ease-out) .22s;
}
[data-reveal].is-visible .wave-rule--reveal{transform:scaleX(1)}

/* Mouse-tracked spotlight used on interactive cards — a restrained HUD
   flourish, only visible on hover so it never fights the copy. */
.spotlight{position:relative}
.spotlight::before{
  content:"";position:absolute;inset:0;border-radius:inherit;pointer-events:none;
  background:radial-gradient(220px circle at var(--mx,50%) var(--my,50%), rgba(53,198,242,.14), transparent 70%);
  opacity:0;transition:opacity var(--dur-base) var(--ease-out);
}
.spotlight:hover::before{opacity:1}

@media (prefers-reduced-motion: reduce){
  .stagger-word{animation:none !important;opacity:1;transform:none}
  [data-reveal],[data-reveal-group] > *{opacity:1;transform:none;transition:none}
  .wave-rule--reveal{transform:scaleX(1);transition:none}
  [data-parallax]{transform:none !important}
  .art-ping,.art-radar__sweep,.art-radar__needle,.art-scan,.art-draw,.cta-band__mesh{animation:none !important}
}

/* ---------------------------------------------------------------------- */
/* Split layout (text + media)                                             */
/* ---------------------------------------------------------------------- */
.split{display:grid;grid-template-columns:1fr 1fr;gap:var(--space-16);align-items:center}
.split--wide{grid-template-columns:1fr 1fr;align-items:start}
.split--text-first{grid-template-columns:1fr 1fr}
.split--media-first{grid-template-columns:1fr 1fr}
.split--media-first .split__media{order:0}
.split__media{border-radius:var(--radius-md);overflow:hidden;border:var(--border-w) solid var(--border-subtle)}
.split__media--tall{align-self:stretch}
.split__media--tall .image-slot{height:100%;--slot-ratio:auto}
.about-media-stack{margin-top:var(--space-10)}
/* Parallax lives on its own element, one level in from [data-reveal], so
   the two independent transforms (entrance slide vs. scroll drift) don't
   fight over the same `transform` property on the same node. */
.parallax-wrap{display:block;height:100%;will-change:transform}

/* ---------------------------------------------------------------------- */
/* Image slot — upload / paste placeholder                                 */
/* ---------------------------------------------------------------------- */
.image-slot{
  position:relative;width:100%;aspect-ratio:var(--slot-ratio,4/3);
  background:var(--surface-subtle);border:1.5px dashed var(--border-default);
  border-radius:var(--radius-md);overflow:hidden;cursor:pointer;
  display:flex;align-items:center;justify-content:center;transition:var(--transition-control);
}
.image-slot:hover{border-color:var(--border-accent);background:var(--blue-100)}
.image-slot.is-dragover{border-color:var(--border-accent);background:var(--blue-100);box-shadow:var(--ring-focus)}
.image-slot__img{width:100%;height:100%;object-fit:cover}
.image-slot__empty{
  display:flex;flex-direction:column;align-items:center;justify-content:center;gap:6px;
  padding:var(--space-6);text-align:center;color:var(--text-faint);
}
.image-slot__empty svg{color:var(--text-faint)}
.image-slot__label{font:var(--type-body-sm);color:var(--text-muted);margin:0}
.image-slot__hint{font-size:var(--text-micro);color:var(--text-faint);margin:0}
.image-slot.has-image .image-slot__empty{display:none}
.image-slot.has-image{cursor:default;border-style:solid}
.image-slot__remove{
  position:absolute;top:8px;right:8px;width:28px;height:28px;border-radius:var(--radius-sm);
  background:rgba(13,23,48,.6);color:#fff;border:0;display:none;align-items:center;justify-content:center;
  cursor:pointer;font-size:16px;line-height:1;
}
.image-slot.has-image:hover .image-slot__remove{display:flex}

/* Bespoke brand art (see partials/art.html) fills empty slots instead of a
   stock photo — the design system rules stock photography out entirely. */
.image-slot.has-art{border-style:solid;border-color:transparent;background:var(--ink-900)}
.image-slot.has-art:hover{border-color:var(--border-accent)}
.image-slot__art{position:absolute;inset:0}
.image-slot__art-svg{width:100%;height:100%;display:block}
.image-slot.has-art .image-slot__empty{
  position:absolute;inset:auto 0 0 0;padding:var(--space-4) var(--space-5);
  background:linear-gradient(0deg, rgba(8,15,36,.82), rgba(8,15,36,0));
  color:var(--ink-100);opacity:0;transition:opacity var(--dur-base) var(--ease-out);
  align-items:flex-start;text-align:left;
}
.image-slot.has-art:hover .image-slot__empty{opacity:1}
.image-slot.has-art .image-slot__label{color:#fff}
.image-slot.has-art .image-slot__hint{color:var(--ink-200)}
.image-slot.has-image .image-slot__art{display:none}

/* Pure decorative art, no upload affordance — used on the home page. */
.image-slot.image-slot--static{cursor:default}
.image-slot.has-art.image-slot--static:hover{border-color:transparent;background:var(--ink-900)}

/* Futuristic decoration used inside the bespoke art — thin-stroke,
   blue-to-cyan, motion gated behind the slot's own [data-reveal] ancestor
   so nothing animates until it's actually on screen. */
.art-ping{animation:art-ping 3.2s var(--ease-standard) infinite}
[data-reveal].is-visible .art-ping{animation-play-state:running}
.art-ping{animation-play-state:paused}
@keyframes art-ping{
  0%{transform:scale(.5);opacity:.9}
  60%{opacity:.35}
  100%{transform:scale(3.2);opacity:0}
}
.art-radar__sweep{transform:rotate(0deg);animation:art-radar-spin 7s linear infinite;animation-play-state:paused}
[data-reveal].is-visible .art-radar__sweep{animation-play-state:running}
@keyframes art-radar-spin{to{transform:rotate(360deg)}}
.art-radar__needle{animation:art-radar-spin 9s linear infinite;animation-play-state:paused}
[data-reveal].is-visible .art-radar__needle{animation-play-state:running}
.art-scan{stroke-dasharray:6 5;animation:art-scan-move 2.6s linear infinite;animation-play-state:paused}
[data-reveal].is-visible .art-scan{animation-play-state:running}
@keyframes art-scan-move{to{stroke-dashoffset:-66}}
.art-draw{stroke-dasharray:1000;stroke-dashoffset:1000;transition:stroke-dashoffset 1.4s var(--ease-out)}
[data-reveal].is-visible .art-draw{stroke-dashoffset:0}

/* ---------------------------------------------------------------------- */
/* Service overview list (home)                                            */
/* ---------------------------------------------------------------------- */
.service-overview{display:grid;grid-template-columns:1fr 1.2fr;gap:var(--space-16);align-items:start}
.service-overview__list{display:flex;flex-direction:column;gap:var(--space-8)}
.service-overview__item{display:grid;grid-template-columns:28px 1fr;gap:var(--space-4)}
.service-overview__item h3{font-size:var(--text-h4);margin-bottom:6px}
.service-overview__item h3 a{color:var(--text-strong)}
.service-overview__item h3 a:hover{color:var(--action-primary)}
.service-overview__item p{color:var(--text-muted);font-size:var(--text-body-sm);margin:0}

/* ---------------------------------------------------------------------- */
/* Services grid (overview page)                                           */
/* ---------------------------------------------------------------------- */
.services-intro{max-width:640px;margin-bottom:var(--space-10) !important}
.service-grid{display:grid;grid-template-columns:repeat(3,1fr);gap:var(--space-6)}
.service-card{
  display:block;position:relative;background:var(--surface-card);border:var(--border-w) solid var(--border-subtle);
  border-radius:var(--radius-md);box-shadow:var(--shadow-sm);padding:var(--space-6);
  color:var(--text-strong);transition:var(--transition-control);
}
.service-card:hover{border-color:var(--border-accent);box-shadow:var(--shadow-lg);transform:translateY(-2px);text-decoration:none}
.service-card__index{font:var(--type-mono);font-size:var(--text-caption);color:var(--text-accent);display:block;margin-bottom:var(--space-3)}
.service-card h3{font-size:var(--text-h4);margin-bottom:var(--space-2)}
.service-card p{color:var(--text-muted);font-size:var(--text-body-sm);margin:0 0 var(--space-4)}
.service-card__link{font:var(--type-label);color:var(--text-accent);display:inline-flex;align-items:center;gap:4px}
.service-card__arrow{transition:transform var(--dur-fast) var(--ease-standard)}
.service-card:hover .service-card__arrow{transform:translateX(3px)}

/* ---------------------------------------------------------------------- */
/* Service detail                                                          */
/* ---------------------------------------------------------------------- */
.service-detail__kicker{margin-bottom:var(--space-8) !important}
.service-detail__body{font-size:var(--text-body-lg);line-height:var(--leading-loose);color:var(--text-body)}

.service-pager{
  max-width:var(--container-max);margin:0 auto var(--space-4);padding:0 var(--gutter);
  display:grid;grid-template-columns:repeat(5,1fr);gap:var(--space-3);
}
.service-pager__item{
  display:flex;flex-direction:column;gap:6px;padding:var(--space-4);border-radius:var(--radius-md);
  border:var(--border-w) solid var(--border-subtle);color:var(--text-muted);background:var(--surface-card);
  transition:var(--transition-control);
}
.service-pager__item:hover{border-color:var(--border-accent);color:var(--text-strong);text-decoration:none}
.service-pager__item.is-current{border-color:var(--action-primary);background:var(--blue-100);color:var(--text-strong)}
.service-pager__index{font:var(--type-mono);font-size:var(--text-micro);color:var(--text-accent)}

/* ---------------------------------------------------------------------- */
/* CTA band                                                                 */
/* ---------------------------------------------------------------------- */
.cta-band{background:var(--gradient-ink);padding:var(--space-20) var(--gutter);text-align:center;position:relative;overflow:hidden}
.cta-band::before{
  content:"";position:absolute;inset:0;
  background:radial-gradient(60% 100% at 50% 0%, rgba(53,198,242,.18), transparent 70%);
}
.cta-band::after{
  content:"";position:absolute;inset:-20% -10%;pointer-events:none;opacity:.5;
  background-image:
    repeating-linear-gradient(90deg, rgba(99,216,247,.07) 0 1px, transparent 1px 64px),
    repeating-linear-gradient(0deg, rgba(99,216,247,.07) 0 1px, transparent 1px 64px);
  animation:cta-mesh-drift 22s linear infinite;animation-play-state:paused;
  -webkit-mask-image:radial-gradient(70% 70% at 50% 30%, #000, transparent);
  mask-image:radial-gradient(70% 70% at 50% 30%, #000, transparent);
}
.cta-band.is-visible::after{animation-play-state:running}
@keyframes cta-mesh-drift{to{transform:translate(64px,64px)}}
.cta-band__inner{max-width:600px;margin:0 auto;position:relative}
.cta-band h2{color:#fff}
.cta-band .lede{color:var(--ink-100);margin-bottom:var(--space-6)}

/* ---------------------------------------------------------------------- */
/* Page header (interior pages)                                            */
/* ---------------------------------------------------------------------- */
.page-header{background:var(--surface-subtle);padding:var(--space-10) var(--gutter)}
.page-header__inner{max-width:var(--container-max);margin:0 auto}
.page-header h1{font-size:var(--text-h1)}

/* ---------------------------------------------------------------------- */
/* About                                                                    */
/* ---------------------------------------------------------------------- */
.about-note{max-width:860px;margin:0 auto;padding:var(--space-10);background:var(--surface-card);border:var(--border-w) solid var(--border-subtle);border-radius:var(--radius-lg);box-shadow:var(--shadow-sm)}
.about-note p{font-size:var(--text-body-lg);color:var(--text-body);margin:0}
.values-grid{display:grid;grid-template-columns:repeat(3,1fr);gap:var(--space-6);max-width:var(--container-max);margin:0 auto}
.value-card{position:relative;background:var(--surface-card);border:var(--border-w) solid var(--border-subtle);border-radius:var(--radius-lg);padding:var(--space-6);box-shadow:var(--shadow-sm);transition:var(--transition-control)}
.value-card:hover{border-color:var(--border-accent);box-shadow:var(--shadow-md);transform:translateY(-2px)}
.value-card h3{font-size:var(--text-h4);margin:var(--space-3) 0 var(--space-2)}
.value-card p{color:var(--text-muted);font-size:var(--text-body-sm);margin:0}

/* ---------------------------------------------------------------------- */
/* Contact                                                                  */
/* ---------------------------------------------------------------------- */
.contact-grid{display:grid;grid-template-columns:1fr 1fr;gap:var(--space-16);align-items:start;max-width:var(--container-max);margin:0 auto}
.contact-field{display:flex;flex-direction:column;gap:4px;margin-top:var(--space-6)}
.contact-field__value{font:var(--type-mono);font-size:var(--text-body-lg);color:var(--text-accent)}
.contact-field__value--text{font-family:var(--font-body);color:var(--text-strong)}
.contact-form{
  background:var(--surface-card);border:var(--border-w) solid var(--border-subtle);border-radius:var(--radius-lg);
  box-shadow:var(--shadow-sm);padding:var(--space-8);display:flex;flex-direction:column;gap:var(--space-5);
}
.form-field{display:flex;flex-direction:column;gap:6px}
.form-field label{font:var(--type-label);color:var(--text-body)}
.form-field input,.form-field textarea,.select-wrap select{
  font:var(--type-body);color:var(--text-strong);background:var(--surface-card);
  border:var(--border-w) solid var(--border-default);border-radius:var(--radius-sm);
  padding:11px 12px;transition:var(--transition-control);width:100%;
}
.form-field textarea{resize:vertical}
.form-field input:focus,.form-field textarea:focus,.select-wrap select:focus{
  outline:none;border-color:var(--border-accent);box-shadow:var(--ring-focus);
}
.form-field.has-error input,.form-field.has-error textarea{border-color:var(--status-danger)}
.form-field__error{font-size:var(--text-caption);color:var(--status-danger);min-height:1em}
.select-wrap{position:relative}
.select-wrap select{appearance:none;padding-right:var(--space-8);cursor:pointer}
.select-wrap__chevron{position:absolute;right:var(--space-3);top:50%;transform:translateY(-50%);pointer-events:none;color:var(--text-faint);font-size:10px}
#contact-submit{align-self:flex-start}
#contact-submit.is-loading .btn__label{opacity:.5}
#contact-submit.is-loading .btn__spinner{
  display:inline-block;width:14px;height:14px;border-radius:50%;
  border:2px solid rgba(255,255,255,.4);border-top-color:#fff;animation:spin .7s linear infinite;
}
@keyframes spin{to{transform:rotate(360deg)}}
.contact-form__status{font-size:var(--text-body-sm);margin:0;min-height:1.2em}
.contact-form__status.is-success{color:var(--status-success)}
.contact-form__status.is-error{color:var(--status-danger)}

/* ---------------------------------------------------------------------- */
/* FAQ accordion                                                           */
/* ---------------------------------------------------------------------- */
.faq-list{max-width:var(--container-narrow);margin:0 auto;display:flex;flex-direction:column}
.faq-item{border-bottom:var(--border-w) solid var(--border-subtle)}
.faq-item__q{
  width:100%;display:flex;align-items:center;justify-content:space-between;gap:var(--space-4);
  padding:var(--space-5) 0;background:none;border:0;cursor:pointer;text-align:left;
  font:var(--type-h4);color:var(--text-strong);
}
.faq-item__chevron{transition:transform var(--dur-base) var(--ease-standard);color:var(--text-accent);flex:0 0 auto}
.faq-item.is-open .faq-item__chevron{transform:rotate(180deg)}
.faq-item__a{max-height:0;overflow:hidden;transition:max-height var(--dur-slow) var(--ease-standard)}
.faq-item__a p{color:var(--text-muted);padding-bottom:var(--space-5);margin:0;max-width:64ch}

/* ---------------------------------------------------------------------- */
/* Legal pages (privacy / terms / cookies)                                 */
/* ---------------------------------------------------------------------- */
.legal-page{max-width:var(--container-narrow);margin:0 auto}
.legal-page__updated{font-size:var(--text-caption);color:var(--text-faint);text-transform:uppercase;letter-spacing:.06em;margin-bottom:var(--space-6)}
.legal-page h2{font-size:var(--text-h3);margin-top:var(--space-10);margin-bottom:var(--space-3)}
.legal-page p,.legal-page li{color:var(--text-body);line-height:var(--leading-normal)}
.legal-page ul{padding-left:var(--space-5);margin:0 0 var(--space-4)}
.legal-page li{margin-bottom:var(--space-2)}
.legal-page code{background:var(--surface-inset);padding:2px 6px;border-radius:var(--radius-xs);font-size:var(--text-caption)}

.cookie-status-card{
  display:flex;align-items:center;justify-content:space-between;gap:var(--space-6);flex-wrap:wrap;
  background:var(--surface-subtle);border:var(--border-w) solid var(--border-subtle);border-radius:var(--radius-lg);
  padding:var(--space-6);margin-top:var(--space-8);
}
.cookie-status-card__value{font-family:var(--font-display);font-weight:var(--weight-semibold);font-size:var(--text-h4);color:var(--text-strong);margin:2px 0 0}
.cookie-status-card__actions{display:flex;gap:var(--space-3)}
.cookie-status-card__status{font-size:var(--text-caption);color:var(--status-success);min-height:1.2em;margin-top:var(--space-2)}

.cookie-table{width:100%;border-collapse:collapse;margin:var(--space-4) 0 var(--space-6);font-size:var(--text-body-sm)}
.cookie-table th,.cookie-table td{text-align:left;padding:var(--space-3) var(--space-4);border-bottom:var(--border-w) solid var(--border-subtle);color:var(--text-body)}
.cookie-table th{font:var(--type-label);color:var(--text-muted);border-bottom:var(--border-w-thick) solid var(--border-default)}
.cookie-table code{background:var(--surface-inset);padding:2px 6px;border-radius:var(--radius-xs);font-size:var(--text-caption)}

/* ---------------------------------------------------------------------- */
/* Footer                                                                   */
/* ---------------------------------------------------------------------- */
.site-footer{background:var(--ink-900);color:var(--text-inverse-muted)}
.site-footer__edge{line-height:0;margin-top:calc(-1 * var(--space-1))}
.site-footer__inner{
  max-width:var(--container-max);margin:0 auto;padding:var(--space-4) var(--gutter) var(--space-10);
  display:grid;grid-template-columns:1.4fr repeat(3,1fr);gap:var(--space-10);
}
.footer-col{display:flex;flex-direction:column;gap:10px}
.footer-col a{color:var(--text-inverse-muted);font-size:var(--text-body-sm);text-decoration:none}
.footer-col a:hover{color:var(--cyan-400);text-decoration:none}
.footer-col__eyebrow{color:var(--cyan-400);margin-bottom:4px}
.footer-col__email{font:var(--type-mono) !important;color:var(--text-inverse-muted) !important}
.footer-col__email:hover{color:var(--cyan-400) !important}
.footer-col__note{font-size:var(--text-caption);color:var(--ink-300);margin:2px 0 0}
.footer-brand{display:flex;align-items:center;gap:var(--space-3);margin-bottom:var(--space-3)}
.footer-brand__mark{height:34px;width:auto}
.footer-brand__word{font-family:var(--font-display);font-weight:var(--weight-bold);font-size:var(--text-h3);color:#fff;letter-spacing:var(--tracking-display)}
.footer-brand__tagline{font-size:var(--text-micro);letter-spacing:.1em;text-transform:uppercase;color:var(--ink-300);margin:0 0 var(--space-4)}
.footer-brand__desc{font-size:var(--text-body-sm);color:var(--ink-200);max-width:320px;margin:0}
.site-footer__bottom{border-top:var(--border-w) solid var(--border-inverse)}
.site-footer__bottom-inner{
  max-width:var(--container-max);margin:0 auto;padding:var(--space-5) var(--gutter);
  display:flex;justify-content:space-between;flex-wrap:wrap;gap:var(--space-2);
  font-size:var(--text-caption);color:var(--ink-300);
}
.site-footer__legal a{color:var(--ink-300);text-decoration:none}
.site-footer__legal a:hover{color:var(--cyan-400);text-decoration:none}

/* ---------------------------------------------------------------------- */
/* Cookie banner                                                           */
/* ---------------------------------------------------------------------- */
.cookie-banner{
  position:fixed;left:var(--space-4);right:var(--space-4);bottom:var(--space-4);z-index:80;
  max-width:760px;margin:0 auto;background:var(--surface-inverse);color:var(--text-on-inverse);
  border-radius:var(--radius-lg);box-shadow:var(--shadow-xl);border:var(--border-w) solid var(--border-inverse);
  transform:translateY(140%);transition:transform var(--dur-slow) var(--ease-signal);
}
.cookie-banner.is-visible{transform:translateY(0)}
.cookie-banner__inner{padding:var(--space-5) var(--space-6);display:flex;align-items:center;gap:var(--space-6);flex-wrap:wrap}
.cookie-banner__text{flex:1 1 320px;font-size:var(--text-body-sm);color:var(--text-inverse-muted);display:flex;flex-direction:column;gap:4px}
.cookie-banner__text strong{color:#fff;font:var(--type-h4);font-size:var(--text-body)}
.cookie-banner__actions{display:flex;gap:var(--space-3);flex:0 0 auto}
.cookie-banner .btn--ghost{color:var(--cyan-300)}
.cookie-banner .btn--ghost:hover{background:rgba(255,255,255,.1);color:#fff}

/* ---------------------------------------------------------------------- */
/* Not found                                                                */
/* ---------------------------------------------------------------------- */
.not-found{text-align:center;padding-top:var(--space-24);padding-bottom:var(--space-24)}
.not-found .lede{max-width:480px;margin:var(--space-4) auto var(--space-8)}

/* ---------------------------------------------------------------------- */
/* Responsive                                                               */
/* ---------------------------------------------------------------------- */
@media (max-width: 960px){
  .hero-editorial__inner{grid-template-columns:1fr}
  .hero-editorial__col--figure{order:-1}
  .hero-editorial__rule{display:none}
  .split,.split--wide{grid-template-columns:1fr !important}
  .split--media-first .split__media{order:-1}
  .service-overview{grid-template-columns:1fr}
  .service-grid{grid-template-columns:repeat(2,1fr)}
  .values-grid{grid-template-columns:1fr}
  .contact-grid{grid-template-columns:1fr}
  .service-pager{grid-template-columns:repeat(2,1fr)}
}

@media (max-width: 720px){
  /* Compact dropdown card instead of a full-screen takeover — anchored
     under the hamburger, like the desktop Services menu. */
  .site-nav{
    position:absolute;top:calc(100% + 10px);right:var(--gutter);left:auto;
    width:min(300px, calc(100vw - 2 * var(--gutter)));max-height:calc(100vh - 110px);
    background:var(--surface-card);border:var(--border-w) solid var(--border-subtle);
    border-radius:var(--radius-lg);box-shadow:var(--shadow-lg);padding:var(--space-2);
    flex-direction:column;align-items:stretch;gap:0;overflow-y:auto;
    opacity:0;visibility:hidden;transform:translateY(-8px);
    transition:opacity var(--dur-base) var(--ease-out),transform var(--dur-base) var(--ease-out),visibility var(--dur-base);
  }
  .site-nav.is-open{opacity:1;visibility:visible;transform:translateY(0)}
  .site-nav__link{width:100%;padding:12px 14px;border-radius:var(--radius-sm)}
  .site-nav__link:hover{background:var(--grey-050)}
  .site-nav__link::after{display:none}
  .site-nav__link--mobile-only{display:flex}
  .nav-dropdown{width:100%}
  .nav-dropdown__trigger{width:100%;justify-content:space-between}
  .nav-dropdown__panel{position:static;padding-top:0;opacity:1;visibility:visible;transform:none;max-height:0;overflow:hidden;transition:max-height var(--dur-base) var(--ease-out)}
  .nav-dropdown.is-open .nav-dropdown__panel{max-height:400px}
  .nav-dropdown__panel > *{border:0;box-shadow:none;border-radius:0;background:transparent}
  .nav-dropdown__item,.nav-dropdown__all{padding:9px 14px;border-radius:var(--radius-sm)}
  .nav-toggle{
    display:flex;flex-direction:column;justify-content:center;gap:5px;width:36px;height:36px;
    background:none;border:0;cursor:pointer;margin-left:auto;
  }
  .nav-toggle span{display:block;height:2px;width:100%;background:var(--ink-800);border-radius:2px;transition:transform var(--dur-base) var(--ease-standard),opacity var(--dur-fast) var(--ease-standard)}
  .nav-toggle.is-open span:nth-child(1){transform:translateY(7px) rotate(45deg)}
  .nav-toggle.is-open span:nth-child(2){opacity:0}
  .nav-toggle.is-open span:nth-child(3){transform:translateY(-7px) rotate(-45deg)}
  .site-header__cta{display:none}
  .service-grid{grid-template-columns:1fr}
  .service-pager{grid-template-columns:1fr}
  .hero-editorial__headline{font-size:clamp(34px,10vw,52px)}
}

/* ---------------------------------------------------------------------- */
/* Contact form honeypot (WordPress build only)                            */
/* ---------------------------------------------------------------------- */
.mptss-hp{position:absolute;left:-9999px;top:-9999px;width:1px;height:1px;overflow:hidden}
