/* Site-wide finishing touches: page transitions, floating header, image reveals, typography. */

/* Typography: balanced headings, no single word left on the last line of a paragraph. */
h1,h2,h3{text-wrap:balance}
.about-jet__headline{text-wrap:wrap}
p,li,figcaption{text-wrap:pretty}

/* Reveal the complete hero frame only after decoding; never paint a JPEG in strips. */
.hero__image{transition:opacity .18s ease}
.hero__image--decoding{opacity:0}
.hero--sequence-pending .hero__content{visibility:hidden}
.sector-explorer__tabs.is-dragging,.sector-explorer__tabs.is-dragging *{cursor:grabbing;user-select:none}

/* Smooth scrolling (Lenis) takes over from the CSS one. */
html.lenis,html.lenis body{height:auto}
html.lenis{scroll-behavior:auto!important}
.lenis.lenis-stopped{overflow:hidden}

/* On phones the hero owns the entrance; avoid fading an old menu snapshot over it. */
@media(min-width:801px){@view-transition{navigation:auto}}
@media(max-width:800px){.manifesto__word{transition:none}}
::view-transition-old(root){animation:jet-page-out .32s cubic-bezier(.4,0,1,1) both}
::view-transition-new(root){animation:jet-page-in .6s cubic-bezier(.16,1,.3,1) both}
@keyframes jet-page-out{to{opacity:0}}
@keyframes jet-page-in{from{opacity:0}}

/* Floating header: after the first screen it hides on the way down and returns on the way up. */
.topbar.is-floating{position:fixed;top:var(--wp-admin--admin-bar--height,0px);right:0;left:0;z-index:50;height:72px;padding-top:0;align-items:center;color:#fff;border-bottom:1px solid rgba(255,255,255,.08);background:rgba(9,10,10,.94);-webkit-backdrop-filter:blur(18px) saturate(1.4);backdrop-filter:blur(18px) saturate(1.4);transform:translateY(calc(-100% - var(--wp-admin--admin-bar--height,0px)));transition:transform .55s cubic-bezier(.16,1,.3,1)}
.topbar.is-floating.is-shown{transform:none}
.topbar.is-floating .logo{width:88px}
.topbar.is-floating .nav{padding-top:0}
.topbar.is-floating .header-cta{min-height:44px}
.topbar-spacer{display:block}
/* The hero is its own stacking layer: lift it while its header floats, so the header stays above
   the following sections (the header is fixed, so the hero's overflow does not clip it). */
.hero:has(>.topbar.is-floating),.news-hero:has(>.topbar.is-floating){z-index:60}
.topbar.is-floating.is-entering{transition:none}

/* Services dropdown (desktop): dark glass panel matching the floating header, opening with a fade. */
@media(min-width:801px){
  .service-menu__panel{top:calc(100% + 14px);left:-28px;width:340px;padding:8px;border:1px solid rgba(255,255,255,.1);border-radius:4px;background:rgba(15,17,18,.92);-webkit-backdrop-filter:blur(18px) saturate(1.4);backdrop-filter:blur(18px) saturate(1.4);color:#fff;box-shadow:0 24px 60px -20px rgba(0,0,0,.55);transition:opacity .25s ease,translate .45s cubic-bezier(.16,1,.3,1)}
  @starting-style{.service-menu__panel{opacity:0;translate:0 -8px}}
  .topbar.is-floating .service-menu__panel{top:calc(100% + 24px)}
  .service-menu__panel li+li{border-top:0}
  .nav .service-menu__panel a{position:relative;min-height:52px;padding:14px 16px;border-radius:2px;font-size:15px;letter-spacing:-.01em;transition:background .25s ease,padding .45s cubic-bezier(.16,1,.3,1)}
  .nav .service-menu__panel a::after{display:block;position:absolute;top:50%;right:16px;left:auto;bottom:auto;width:auto;height:auto;background:none;content:"";display:inline-block;width:1.15em;height:1.15em;flex:none;vertical-align:-.2em;background:currentColor;-webkit-mask:var(--jet-arrow) center/contain no-repeat;mask:var(--jet-arrow) center/contain no-repeat;opacity:0;transform:translate(-6px,-50%);transition:opacity .25s ease,transform .45s cubic-bezier(.16,1,.3,1)}
  .nav .service-menu__panel a:hover{padding-left:22px;background:rgba(255,255,255,.06);color:#fff}
  .nav .service-menu__panel a:hover::after{opacity:1;transform:translate(0,-50%)}
  .service-menu__number{color:#6f777b;font-size:11px;font-variant-numeric:tabular-nums;transition:color .25s ease}
  .service-menu__panel a:hover .service-menu__number,.service-menu__panel a[aria-current="page"] .service-menu__number{color:var(--red)}
  .service-menu__panel a[aria-current="page"]{color:#fff}
}

/* Images open from the bottom as they enter the screen. */
.polish .article-work-card__media,.polish .article__body img{clip-path:inset(100% 0 0 0)}
.polish .is-revealed .article-work-card__media,.polish .article__body img.is-revealed{clip-path:inset(0);transition:clip-path 1.1s cubic-bezier(.16,1,.3,1) var(--reveal-delay,0ms)}

@media(max-width:800px){
  .topbar.is-floating{height:64px}
  .topbar.is-floating .nav{top:64px}
}
@media(prefers-reduced-motion:reduce){
  .hero__image{transition:none}
  .service-menu__panel,.nav .service-menu__panel a,.nav .service-menu__panel a::after{transition:none}
  ::view-transition-old(root),::view-transition-new(root){animation:none}
  .topbar.is-floating{transition:none}
  .polish .article-work-card__media,.polish .article__body img{clip-path:none}
}

/* Same hover behaviour on every page. */
.header-cta{transition:background .3s cubic-bezier(.16,1,.3,1),color .3s cubic-bezier(.16,1,.3,1)}
.header-cta:hover{background:var(--red);color:#fff}
@media(min-width:801px){
  /* "Cosa facciamo" gets the same drawn underline as the other menu links. */
  .service-menu__trigger,.service-menu__trigger:hover,.service-menu__trigger[aria-expanded="true"],.service-menu__trigger[data-active]{position:relative;text-decoration:none}
  .service-menu__trigger::after{position:absolute;right:14px;bottom:calc(50% - 13px);left:0;height:1px;background:currentColor;content:"";transform:scaleX(0);transform-origin:right;transition:transform .35s cubic-bezier(.16,1,.3,1)}
  .service-menu__trigger:hover::after,.service-menu__trigger[aria-expanded="true"]::after,.service-menu__trigger[data-active]::after{transform:scaleX(1);transform-origin:left}
}
@media(min-width:801px){
  /* Menu links keep their own height, so their drawn underline sits just under the text. */
  .nav>a{align-self:flex-start}
  /* In the floating bar the menu is centred vertically, like the logo and the button. */
  .topbar.is-floating .nav{align-items:center}
  .topbar.is-floating .nav>a{align-self:center}
  .topbar.is-floating .service-menu__trigger{margin-top:0}
}
/* The link of the page being viewed keeps its underline, like "Cosa facciamo" on service pages. */
@media(min-width:801px){.nav>a[aria-current="page"]::after{transform:scaleX(1)}}

/* Call to action finale (tutte le pagine): foto a tutta larghezza, testo in basso a sinistra come l'hero delle pagine servizio. */
.jet-footer__cta{position:relative;min-height:max(640px,calc(88vh / var(--jet-zoom, 1)));padding:120px var(--page-margin) 72px;align-items:flex-end;justify-content:flex-start;isolation:isolate;overflow:hidden;background:#090a0a var(--cta-image) center 40%/cover no-repeat;text-align:left}
.jet-footer__cta::before{position:absolute;inset:0;z-index:-1;background:linear-gradient(180deg,rgba(9,10,10,.25) 0%,rgba(9,10,10,.35) 45%,rgba(9,10,10,.88) 100%),linear-gradient(90deg,rgba(9,10,10,.55),transparent 65%);content:""}
.jet-footer__cta-inner{display:grid;grid-template-columns:minmax(0,1.5fr) minmax(0,1fr);max-width:none;gap:28px 80px;align-items:end}
.jet-footer__cta-title{grid-row:1/3;max-width:980px;font-size:clamp(52px,5.4vw,96px);font-weight:400;line-height:.98;letter-spacing:-.05em;text-wrap:balance}
.jet-footer__cta-copy{max-width:440px;margin:0;color:rgba(255,255,255,.82);font-size:18px;line-height:26px;text-wrap:pretty}
.jet-footer__cta-button{justify-self:start;min-height:56px;margin:0;padding:16px 32px;border-radius:0;background:#fff;color:#090a0a;font-size:16px}
.jet-footer__cta-button:hover{background:var(--red);color:#fff;transform:none}
@media(max-width:809px){
.jet-footer__cta{min-height:560px;padding:96px var(--page-margin) 48px}
.jet-footer__cta-inner{grid-template-columns:minmax(0,1fr);gap:20px}
.jet-footer__cta-title{grid-row:auto;font-size:clamp(40px,10.5vw,54px)}
.jet-footer__cta-copy{font-size:16px;line-height:23px}
.jet-footer__cta-button{margin-top:8px}
}
/* Lo slogan resta su due righe definite (a capo dove va a capo nell'editor). */
@media(min-width:810px){.jet-footer__cta-title{max-width:none;white-space:nowrap}.jet-footer__cta-inner{grid-template-columns:auto minmax(0,1fr)}}
/* Footer CTA title on the foundation section-title values (same as home h2s) */
.jet-footer__cta .jet-footer__cta-title{font-size:52px;font-weight:450;line-height:55px;letter-spacing:-.03em}
@media(max-width:809px){.jet-footer__cta .jet-footer__cta-title{font-size:38px;line-height:42px}}
/* Footer CTA: title on the left, text and button in a column pinned to the right margin */
@media(min-width:810px){.jet-footer__cta .jet-footer__cta-inner{grid-template-columns:minmax(0,1fr) minmax(0,440px)}}
/* Footer CTA link: underlined text + foundation arrow, same as the "Scopri JET" link in the intro */
.jet-footer__cta .jet-footer__cta-button{display:inline-flex;min-height:0;margin-top:14px;padding:0 0 4px;gap:10px;align-items:center;border-bottom:1px solid currentColor;border-radius:0;background:none;color:#fff;font-size:14px;line-height:1.2;transition:color .25s ease}
.jet-footer__cta .jet-footer__cta-button:hover{background:none;color:var(--red)}
.jet-footer__cta-arrow{display:inline-flex;width:18px;height:18px;transition:transform .3s var(--ease)}
.jet-footer__cta-arrow svg{width:100%;height:100%;overflow:visible}
.jet-footer__cta-button:hover .jet-footer__cta-arrow{transform:translateX(4px)}
/* Arrow hidden; on hover it grows in from the left and pushes the label */
.jet-footer__cta .jet-footer__cta-button{gap:0}
.jet-footer__cta .jet-footer__cta-arrow{width:0;margin-right:0;overflow:hidden;opacity:0;transform:translateX(-8px);transition:width .45s var(--ease),margin-right .45s var(--ease),opacity .3s ease,transform .45s var(--ease)}
.jet-footer__cta .jet-footer__cta-arrow svg{flex:0 0 18px;width:18px}
.jet-footer__cta .jet-footer__cta-button:hover .jet-footer__cta-arrow,.jet-footer__cta .jet-footer__cta-button:focus-visible .jet-footer__cta-arrow{width:18px;margin-right:10px;opacity:1;transform:none}
/* Hover: only the arrow turns red, the label and the underline stay white */
.jet-footer__cta .jet-footer__cta-button:hover{color:#fff}
.jet-footer__cta .jet-footer__cta-button:hover .jet-footer__cta-arrow,.jet-footer__cta .jet-footer__cta-button:focus-visible .jet-footer__cta-arrow{color:var(--red)}
/* Hover: only the underline turns red; label and arrow stay white */
.jet-footer__cta .jet-footer__cta-button{transition:border-color .3s ease}
.jet-footer__cta .jet-footer__cta-button:hover,.jet-footer__cta .jet-footer__cta-button:focus-visible{border-bottom-color:var(--red)}
.jet-footer__cta .jet-footer__cta-button:hover .jet-footer__cta-arrow,.jet-footer__cta .jet-footer__cta-button:focus-visible .jet-footer__cta-arrow{color:#fff}
/* Hover: everything stays white, only the arrow slides in */
.jet-footer__cta .jet-footer__cta-button:hover,.jet-footer__cta .jet-footer__cta-button:focus-visible{border-bottom-color:#fff}
/* Foundation label (eyebrow), one style on every page: 12px uppercase, 6px red square (same as the home) */
html body :is(.about-eyebrow,.eyebrow-mark,.approach-proof__eyebrow,.capabilities__eyebrow,.cotech__eyebrow,.sectors__eyebrow){display:flex;align-items:center;gap:12px;color:#676d70;font-size:12px;font-weight:550;line-height:18px;letter-spacing:.5px;text-transform:uppercase}
html body :is(.about-eyebrow,.eyebrow-mark,.approach-proof__eyebrow,.capabilities__eyebrow,.cotech__eyebrow,.sectors__eyebrow)::before{display:block;width:6px;height:6px;flex:0 0 6px;border-radius:0;background:var(--jet-red,#e5231f);content:""}
/* Foundation: square corners on every public button and control (same as "Parliamone" and "Invia") */
html body :is(.news-filter a,.news-view,.news-view button,.news-view__pill,.news-areas__menu summary,.news-areas__list,.articles-work__control,.sector-cta__link){border-radius:0}
/* Foundation label marker: a short red line (16×2) instead of the square, on every label of the site */
html body :is(.about-eyebrow,.eyebrow-mark,.approach-proof__eyebrow,.capabilities__eyebrow,.cotech__eyebrow,.sectors__eyebrow,.about-jet__eyebrow)::before{width:16px;height:2px;flex:0 0 16px}
html body .about-jet--split .about-jet__eyebrow::before{width:16px;height:2px;flex:0 0 16px}
/* Footer partners on phones: label, then the three logos in one balanced row */
@media(max-width:809px){.jet-footer__partners{grid-template-columns:repeat(3,minmax(0,1fr))!important;grid-auto-flow:row!important;padding:0 var(--page-margin)}.jet-footer__partners-label{grid-column:1/-1;min-height:0!important;padding:28px 0 4px!important;border:0!important}.jet-footer__partner{min-height:96px!important;padding:0!important;border:0!important;overflow:visible}}
@media(max-width:809px){.jet-footer__partner img{opacity:.62!important}}
/* 03/11 — four partners since Amoritas: on phones a 2×2 grid of tiles, like the alliances on Chi siamo (dark version) */
@media(max-width:809px){
.jet-footer__partners{grid-template-columns:repeat(2,minmax(0,1fr))!important;gap:8px!important;padding:0 var(--page-margin) 32px}
.jet-footer__partners-label{padding:28px 0 8px!important}
.jet-footer__partner{min-height:0!important;aspect-ratio:4/3;overflow:hidden;border:0!important;background:#161819}
.jet-footer__partner img{opacity:.78!important} /* size: optical fit in polish.js */
}
/* 03/11: images can't be dragged out, and on phones a long press doesn't offer "Save image" (see polish.js) */
img, canvas, video { -webkit-user-drag: none; user-drag: none; -webkit-touch-callout: none; }
.jet-footer__partner img[src*="camera-italiana"]{max-height:68px;max-width:120px;opacity:.5} /* 03/11: the new Camera logo is vertical: taller and a bit stronger so it reads in the row */

/* 04/11: six menu items (Settori added) — tighter gaps on small laptops so the menu never touches the language switcher. */
@media (min-width: 801px) and (max-width: 1240px) { .topbar .nav { gap: 22px; } }
@media (min-width: 801px) and (max-width: 1080px) { .topbar { grid-template-columns: 150px 1fr 110px; } .topbar .header-cta { display: none; } .topbar__end { justify-self: end; } } /* Contatti is in the menu */

/* 05/11 — Dropdowns rebuilt on konrad.com's own CSS (values read from their stylesheet):
   band #090a0a, 8px padding/gap, cards #15191b → #2d3235 on hover, 300px tall, 40px padding;
   open .36s / close .22s cubic-bezier(.22,1,.36,1); cards in at 80ms + 60ms each; page behind black 60% + blur 10px. */
.service-menu__desc{display:none}
@media(min-width:801px){
  .topbar .service-menu{position:static}
  .service-menu__panel,.service-menu__panel[hidden]{position:absolute;z-index:60;top:100%;left:0;right:0;width:auto;max-width:none;display:flex;gap:8px;margin:0;padding:8px;border:0;border-radius:0;background:#090a0a;color:#fff;box-shadow:none;-webkit-backdrop-filter:none;backdrop-filter:none;translate:none;visibility:hidden;opacity:0;transform:translateY(-4px);clip-path:inset(0 0 100% 0);transition:clip-path .22s cubic-bezier(.22,1,.36,1),opacity .18s cubic-bezier(.22,1,.36,1),transform .22s cubic-bezier(.22,1,.36,1),visibility .22s allow-discrete}
  .service-menu__trigger[aria-expanded="true"]+.service-menu__panel{visibility:visible;opacity:1;transform:none;clip-path:inset(0 0 0 0);transition:clip-path .36s cubic-bezier(.22,1,.36,1),opacity .22s cubic-bezier(.22,1,.36,1),transform .36s cubic-bezier(.22,1,.36,1),visibility .36s allow-discrete}
  /* the page behind: black 60%, blur 10px */
  .topbar::after{position:fixed;z-index:55;inset:var(--jet-bar-bottom,96px) 0 0;background:rgba(0,0,0,.66);/* no backdrop blur: measured 105–400ms frames over the hero photo (05/11) */content:"";opacity:0;visibility:hidden;pointer-events:none;transition:opacity .22s cubic-bezier(.22,1,.36,1),visibility .22s allow-discrete}
  .topbar:has(.service-menu__trigger[aria-expanded="true"])::after{opacity:1;visibility:visible;transition:opacity .36s cubic-bezier(.22,1,.36,1),visibility .36s allow-discrete}
  .service-menu__trigger[aria-expanded="true"]{color:#8d969b}
  .service-menu__panel li,.service-menu__panel li+li{flex:1 1 0;min-width:0;max-width:calc((100% - 24px) / 4);border:0;background:none;opacity:0;transform:translateY(8px);translate:none;transition:opacity .14s cubic-bezier(.22,1,.36,1),transform .14s cubic-bezier(.22,1,.36,1)}
  .service-menu__trigger[aria-expanded="true"]+.service-menu__panel li{opacity:1;transform:none;transition:opacity .28s cubic-bezier(.22,1,.36,1) calc(80ms + var(--j,0) * 60ms),transform .28s cubic-bezier(.22,1,.36,1) calc(80ms + var(--j,0) * 60ms)}
  .nav .service-menu__panel a,.nav .service-menu__panel a:hover{display:flex;flex-direction:column;align-items:flex-start;justify-content:space-between;gap:16px;height:300px;text-align:left;min-height:0;padding:40px;border-radius:0;background:#15191b;color:#fff;white-space:normal;text-decoration:none;transition:background-color .3s cubic-bezier(.16,1,.3,1)}
  .nav .service-menu__panel a:hover{background:#2d3235}
  .nav .service-menu__panel a[aria-current="page"]:hover{background:#15191b}
  .nav .service-menu__panel a:active{transform:scale(.96);transition:transform .12s cubic-bezier(.16,1,.3,1),background-color .12s cubic-bezier(.16,1,.3,1)}
  .service-menu__top{display:flex;flex-direction:column;gap:40px}
  .service-menu__number{height:24px;color:#8d969b;font-size:12px;font-weight:500;line-height:24px;letter-spacing:.02em}
  .service-menu__panel a[aria-current="page"] .service-menu__number{color:var(--red,#e5231f)}
  .service-menu__name{font-size:18px;font-weight:500;line-height:24px;letter-spacing:-.017em}
  .service-menu__desc{display:block;max-width:34ch;color:#b8bdc0;opacity:.8;font-size:14px;line-height:20px;letter-spacing:0}
  .nav .service-menu__panel a::before{display:none}
  .nav .service-menu__panel a::after{position:static;display:block;flex:none;width:20px;height:20px;background:#fff;-webkit-mask:var(--jet-arrow) center/contain no-repeat;mask:var(--jet-arrow) center/contain no-repeat;content:"";opacity:1;transform:none;transition:transform .18s cubic-bezier(.22,1,.36,1)}
  .nav .service-menu__panel a:hover::after{transform:translateX(4px)}
  .nav .service-menu__panel a[aria-current="page"]::after{background:var(--red,#e5231f)}
  .nav .service-menu__panel a[aria-current="page"]:hover::after{transform:none}
}
@media(min-width:801px) and (prefers-reduced-motion:reduce){.service-menu__panel,.service-menu__panel li,.topbar::after,.nav .service-menu__panel a,.nav .service-menu__panel a::after{transition:none}.nav .service-menu__panel a:active{transform:none}}
/* phone menu: the wrapper is transparent to the existing grid */
@media(max-width:800px){.service-menu__top{display:contents}}
/* 05/11: while a dropdown is open the header and the panel are one dark block (as on konrad.com), and the open
   item stays readable (no "disabled" grey + underline). */
@media(min-width:801px){
  .topbar{transition:background-color .22s cubic-bezier(.22,1,.36,1)}
  .topbar:has(.service-menu__trigger[aria-expanded="true"]){background-color:#090a0a;transition:background-color .36s cubic-bezier(.22,1,.36,1)}
  .service-menu__trigger[aria-expanded="true"]{color:#fff}
  .service-menu__trigger[aria-expanded="true"]:not([data-active])::after{transform:scaleX(0)}
  .service-menu__panel,.service-menu__panel[hidden]{padding-top:0}
}

/* 05/11: switching from one open dropdown to another: the band stays put (no close + reopen, no second flash);
   only the cards change, entering with their usual stagger. */
@media(min-width:801px){
  .nav.is-switching .service-menu__panel{transition:none}
}
@media(min-width:801px){
  /* on a switch the new cards start at once (no 80ms of empty band); stagger kept */
  .nav.is-switching .service-menu__trigger[aria-expanded="true"]+.service-menu__panel li{transition:opacity .24s cubic-bezier(.22,1,.36,1) calc(var(--j,0) * 45ms),transform .24s cubic-bezier(.22,1,.36,1) calc(var(--j,0) * 45ms)}
}
@media(min-width:801px){
  /* 05/11: the old floating-header rule pushed the panel 24px down, leaving a strip of page visible */
  .topbar.is-floating .service-menu__panel{top:100%}
}
@media(min-width:801px){
  /* the floating header's own blur makes it the containing block of the fixed veil (veil disappeared when scrolled);
     while a menu is open the header is solid anyway */
  .topbar:has(.service-menu__trigger[aria-expanded="true"]){-webkit-backdrop-filter:none;backdrop-filter:none}
}

/* 05/11 TEST — section titles: words rise from a mask (assets/js/title-reveal.js) */
.tr-mask{display:inline-block;overflow:hidden;vertical-align:top;padding-bottom:.08em;margin-bottom:-.08em}
.tr-word{display:inline-block;transform:translateY(105%);transition:transform .66s cubic-bezier(.16,1,.3,1) calc(var(--i,0) * 40ms)}
.tr-title.tr-in .tr-word{transform:none}
/* 05/11 — Dropdowns with photos (more consulting): each card shows a photo on top (sectors: the home tiles; services and news: the page's own hero),
   then number, name, line and arrow below, on the same #15191b card. Hover: the photo grows a little, as the cards do. */
@media(min-width:801px){
  .nav .service-menu__panel a:has(.service-menu__ph),.nav .service-menu__panel a:has(.service-menu__ph):hover{justify-content:flex-start;gap:0;height:auto;padding:0 0 28px}
  .service-menu__ph{display:block;width:100%;aspect-ratio:16/10;overflow:hidden;background:#0f1213}
  .service-menu__ph img{display:block;width:100%;height:100%;object-fit:cover;filter:saturate(.84) contrast(1.04) brightness(.92);transition:transform .7s cubic-bezier(.22,1,.36,1),filter .4s ease}
  .nav .service-menu__panel a:hover .service-menu__ph img{transform:scale(1.04);filter:saturate(.9) contrast(1.04) brightness(1)}
  .service-menu__panel a:has(.service-menu__ph) .service-menu__top{gap:12px;padding:24px 28px 0}
  .service-menu__panel a:has(.service-menu__ph) .service-menu__desc{margin-top:12px;padding:0 28px}
  .nav .service-menu__panel a:has(.service-menu__ph)::after{margin:28px 0 0 28px}
}
@media(max-width:800px){.service-menu__ph{display:none}}

/* News keeps its original left alignment and card widths; align card bottoms. */
@media(max-width:800px){
  /* The fixed mobile menu must escape the hero's lower stacking level. */
  html.jet-menu-open .hero{z-index:1000}
}
@media(min-width:801px){
  .nav .service-menu--news .service-menu__panel a:has(.service-menu__ph){height:100%}
  .service-menu--news .service-menu__ph{flex-shrink:0}
  .service-menu--news .service-menu__desc{flex:1}
}

/* Full-width native tab scrolling: Safari owns touch gestures and momentum. */
@media(max-width:1023px){
  .sector-explorer__tabs{width:100vw;max-width:100vw;min-width:0;margin-left:calc(var(--page-margin) * -1);padding:0;gap:0;overflow-x:auto;overflow-y:hidden;-webkit-overflow-scrolling:touch;touch-action:auto}
  .sector-explorer__tabs::before,.sector-explorer__tabs::after{content:"";display:block;flex:0 0 var(--page-margin)}
  .sector-explorer__tabs>.sector-explorer__tab+.sector-explorer__tab{margin-left:28px}
  .sector-explorer__panel{touch-action:pan-y pinch-zoom}
}
