/* ========================================================================
   R31 RESPONSIVE FULL-PAGE · 2026-09-16
   - Desktop primary scenes use the real browser viewport, including 1366x768.
   - Fixed header clearance is supplied by JS via --home-header-height.
   - Content is compacted by viewport height, not by physical monitor size.
   - If real CMS content cannot fit safely, JS adds .home-section--overflow and
     restores native scrolling rather than clipping inaccessible content.
   ======================================================================== */
@media (min-width: 1200px) {
  .is-home {
    --home-viewport: var(--home-viewport-height, 100dvh);
    --home-safe-top: max(78px, var(--home-header-height, 78px));
    --home-safe-bottom: clamp(18px, 3.2dvh, 42px);
  }

  .is-home .hero {
    height: var(--home-viewport);
    min-height: var(--home-viewport);
    max-height: var(--home-viewport);
  }

  .is-home .about,
  .is-home .products,
  .is-home .projects,
  .is-home .capability,
  .is-home .news {
    width: 100%;
    height: var(--home-viewport);
    min-height: var(--home-viewport);
    max-height: var(--home-viewport);
    box-sizing: border-box;
    padding-top: max(var(--home-safe-top), 5dvh);
    padding-bottom: var(--home-safe-bottom);
    scroll-margin-top: 0;
    overflow: visible;
  }

  .is-home .about {
    grid-template-rows: minmax(min-content, 1fr) auto;
    align-content: stretch;
  }
  .is-home .about-visual,
  .is-home .about-copy { align-self: center; }

  .is-home .products,
  .is-home .projects,
  .is-home .capability {
    display: flex;
    flex-direction: column;
    justify-content: safe center;
  }

  .is-home .news { align-content: safe center; }

  /* Safety fallback for unexpectedly long CMS content. It is applied only
     after a real DOM measurement, so normal desktop sections remain one-screen. */
  .is-home .home-section--overflow {
    height: auto !important;
    min-height: var(--home-viewport) !important;
    max-height: none !important;
    overflow-x: clip !important;
    overflow-y: visible !important;
  }
}

/* Laptop / short desktop: fit the complete composition inside 1366x768 and
   similar browser viewports without hiding titles behind the fixed header. */
@media (min-width: 1200px) and (max-height: 900px) {
  .is-home {
    --home-safe-top: max(72px, var(--home-header-height, 72px));
    --home-safe-bottom: 12px;
  }

  .is-home .section-index { top: max(24px, calc(var(--home-safe-top) - 46px)); }

  .is-home .about {
    padding-left: 5vw;
    padding-right: 5vw;
    grid-template-columns: .92fr 1.08fr;
    gap: clamp(24px, 3vw, 42px);
  }
  .is-home .about-visual { max-width: 530px; padding: 10px 22px 20px 10px; }
  .is-home .about-frame { height: clamp(290px, 43dvh, 350px); border-width: 5px; border-radius: 28px; }
  .is-home .about-seal { width: 104px; border-width: 5px; }
  .is-home .about h2 { font-size: clamp(38px, 3.55vw, 52px); line-height: 1.02; }
  .is-home .about-lead { margin: 14px 0; font-size: 13px; line-height: 1.55; }
  .is-home .about-proof { margin-bottom: 14px; }
  .is-home .about-proof>div { grid-template-columns: 25px 36px minmax(0,1fr); gap: 8px; padding: 10px 10px 10px 0; }
  .is-home .about-proof>div+div { padding-left: 12px; }
  .is-home .about-proof .proof-icon { width: 34px; height: 34px; }
  .is-home .about-proof b { font-size: 11px; }
  .is-home .about-proof span { margin-top: 3px; font-size: 9px; line-height: 1.35; }
  .is-home .outline-link { min-height: 42px; min-width: 210px; padding-left: 14px; font-size: 10px; }
  .is-home .solution-ribbon { margin-top: 12px; gap: 8px; }
  .is-home .solution-ribbon article { min-height: 82px; padding: 11px 12px; grid-template-columns: 30px 1fr auto; gap: 9px; border-radius: 16px 6px 16px 6px; }
  .is-home .solution-ribbon article>span { top: 9px; left: 10px; font-size: 8px; }
  .is-home .solution-ribbon article>svg:first-of-type { width: 30px; height: 30px; padding: 5px; }
  .is-home .solution-ribbon h3 { font-size: 12px; }
  .is-home .solution-ribbon p { margin-top: 3px; font-size: 9px; line-height: 1.3; }

  .is-home .products { padding-left: 5vw; padding-right: 5vw; }
  .is-home .product-heading { max-width: 720px; }
  .is-home .products h2 { font-size: clamp(38px, 3.55vw, 52px); line-height: 1.01; }
  .is-home .product-heading .eyebrow,
  .is-home .projects-head .eyebrow,
  .is-home .capability-head .eyebrow,
  .is-home .news-head .eyebrow { margin-bottom: 10px; font-size: 12px; }
  .is-home .product-drag-hint { margin-top: 7px; font-size: 10px; }
  .is-home .product-layout { margin-top: 15px; grid-template-columns: minmax(215px,.5fr) minmax(0,1.5fr); gap: 20px; }
  .is-home .product-nav button { min-height: 52px; padding: 6px 7px; grid-template-columns: 32px 1fr auto; }
  .is-home .product-nav button strong { font-size: 14px; }
  .is-home .product-nav button small { font-size: 9px; line-height: 1.25; }
  /* D9 product-fit hotfix: the category rail on the left intentionally keeps
     the original D9 dimensions. Only the visual showcase and information panel
     are compacted for short desktop viewports / 125% browser zoom. */
  .is-home .product-showcase,
  .is-home .product-image { min-height: 0; height: clamp(285px, 41dvh, 330px); }
  .is-home .product-showcase {
    width: min(92%, 1080px);
    justify-self: start;
    grid-template-columns: minmax(0,1.12fr) minmax(260px,.88fr);
    border-radius: 30px 30px 10px 30px;
    backdrop-filter: none;
  }
  .is-home .quality-seal { top: 12px; right: 12px; width: 60px; border-width: 4px; }
  .is-home .product-info { padding: 17px 20px; }
  .is-home .product-info>p { margin-bottom: 7px; font-size: 10px; }
  .is-home .product-info h3 { font-size: clamp(23px, 2.05vw, 29px); line-height: 1.08; }
  .is-home .product-info>strong { margin-top: 6px; font-size: 11px; line-height: 1.35; }
  .is-home .product-info>span { margin-top: 8px; font-size: 11.5px; line-height: 1.4; display: -webkit-box; -webkit-box-orient: vertical; -webkit-line-clamp: 2; line-clamp: 2; overflow: hidden; }
  .is-home .product-info ul { margin: 9px 0 10px; padding: 7px 0; }
  .is-home .product-info li { padding: 1px 0; font-size: 10px; line-height: 1.3; }
  .is-home .product-info>a { padding-top: 0; font-size: 10px; }

  .is-home .projects { padding-left: 5vw; padding-right: 5vw; }
  .is-home .projects-head { width: 100%; max-width: 700px; }
  .is-home .projects h2 { font-size: clamp(38px, 3.55vw, 52px); line-height: .99; }
  .is-home .projects-intro { margin-top: 8px; font-size: 11px; line-height: 1.45; display: -webkit-box; -webkit-box-orient: vertical; -webkit-line-clamp: 2; line-clamp: 2; overflow: hidden; }
  .is-home .project-showcase { width: 100%; max-width: 1280px; margin-top: 10px; grid-template-columns: minmax(0,1.42fr) minmax(330px,1.08fr); }
  .is-home .project-main,
  .is-home .project-detail { height: clamp(255px, 39dvh, 300px); min-height: 0; }
  .is-home .project-detail { padding: 16px 22px; }
  .is-home .project-code { top: 16px; left: 20px; }
  .is-home .project-code strong { font-size: 20px; }
  .is-home .project-location { left: 20px; bottom: 16px; font-size: 10px; }
  .is-home .project-detail>p { margin-bottom: 8px; font-size: 10px; }
  .is-home .project-detail>strong { font-size: clamp(34px,3.1vw,44px); }
  .is-home .project-detail>strong small { margin-bottom: 3px; font-size: 9px; }
  .is-home .project-detail h3 { margin: 8px 0 4px; font-size: clamp(17px,1.5vw,20px); line-height: 1.2; }
  .is-home .project-detail>span { font-size: 10px; line-height: 1.35; display: -webkit-box; -webkit-box-orient: vertical; -webkit-line-clamp: 2; line-clamp: 2; overflow: hidden; }
  .is-home .project-detail>a { margin-top: 8px; padding-top: 7px; font-size: 9px; }
  .is-home .project-arrows { margin-top: 7px; }
  .is-home .project-arrows button { width: 32px; height: 32px; }
  .is-home .project-thumbs { width: 100%; max-width: 1280px; margin-top: 5px; gap: 7px; padding: 2px 2px 4px; }
  .is-home .project-thumbs button { grid-template-columns: 58px 15px minmax(0,1fr); grid-template-rows: 1fr; height: clamp(60px, 9.5dvh, 70px); min-height: 60px; gap: 5px; padding: 5px; border-radius: 11px; }
  .is-home .project-thumbs button .project-thumb-image { width: 58px; height: 43px; aspect-ratio: 4/3; border-radius: 8px 4px 8px 4px; }
  .is-home .project-thumbs button .project-thumb-index { padding-top: 2px; font-size: 8px; }
  .is-home .project-thumbs button .project-thumb-copy strong { font-size: 9px; line-height: 1.17; }
  .is-home .project-thumbs button .project-thumb-copy small { margin-top: 2px; font-size: 8px; }

  .is-home .capability { padding-left: 5vw; padding-right: 5vw; }
  .is-home .capability-head { max-width: 720px; margin-inline: auto; }
  .is-home .capability h2 { font-size: clamp(38px,3.55vw,52px); line-height: 1.01; }
  .is-home .capability-head>p:last-child { margin-top: 10px; font-size: 11px; line-height: 1.45; }
  .is-home .process-line { margin-top: 20px; padding-top: 12px; padding-bottom: 2px; }
  .is-home .process-line::before { top: 55px; }
  .is-home .process-icon { width: 70px; margin-bottom: 8px; }
  .is-home .process-icon span { width: 24px; height: 24px; font-size: 9px; }
  .is-home .process-glyph { font-size: 23px; }
  .is-home .process-line h3 { margin-bottom: 4px; font-size: 13px; }
  .is-home .process-line p { max-width: 190px; font-size: 10px; line-height: 1.35; }
  .is-home .capability-band { margin-top: 18px; padding: 12px 20px; gap: 12px; }
  .is-home .capability-band span { font-size: 9px; }
  .is-home .capability-band strong { font-size: 11px; }

  .is-home .news { padding-left: 5vw !important; padding-right: 5vw !important; gap: 14px !important; }
  .is-home .news-head { margin-bottom: 0 !important; }
  .is-home .news h2 { font-size: clamp(38px,3.55vw,52px); line-height: 1.01; }
  .is-home .news-head>a { min-height: 40px; font-size: 10px; }
  .is-home .news-photo { height: clamp(200px, 29dvh, 230px) !important; }
  .is-home .featured-news>div:last-child { padding: 14px 17px; }
  .is-home .featured-news p,
  .is-home .news-stack p { margin-bottom: 6px; font-size: 9px; }
  .is-home .featured-news h3 { font-size: clamp(21px,1.8vw,27px); line-height: 1.25; }
  .is-home .news-excerpt { margin-top: 6px !important; display: -webkit-box !important; -webkit-box-orient: vertical; -webkit-line-clamp: 2; line-clamp: 2; overflow: hidden; font-size: 11px !important; line-height: 1.4; }
  .is-home .featured-news a { margin-top: 10px; font-size: 9px; }
  .is-home .news-stack { gap: 7px !important; }
  .is-home .news-stack article { grid-template-columns: 88px minmax(0,1fr) auto; height: clamp(82px, 12dvh, 96px); min-height: 82px !important; gap: 9px !important; padding: 7px !important; }
  .is-home .news-thumb { height: 68px !important; border-radius: 10px; }
  .is-home .news-stack h3 { font-size: 12px !important; line-height: 1.25 !important; display: -webkit-box; -webkit-box-orient: vertical; -webkit-line-clamp: 2; line-clamp: 2; overflow: hidden; }

  .is-home .news-stack article>a { width: 32px; height: 32px; }
}

/* 1920px display at 125% browser zoom and other short desktop viewports.
   Keep the original left category rail; compact only the right-hand showcase. */
@media (min-width: 1200px) and (max-height: 720px) {
  .is-home .products { --home-safe-bottom: 8px; }
  .is-home .product-layout { margin-top: 10px; }
  .is-home .product-showcase,
  .is-home .product-image { height: clamp(255px, 39dvh, 285px); }
  .is-home .product-showcase {
    width: min(88%, 1000px);
    grid-template-columns: minmax(0,1.15fr) minmax(245px,.85fr);
  }
  .is-home .product-info { padding: 13px 17px; }
  .is-home .product-info h3 { font-size: clamp(21px, 1.9vw, 27px); }
  .is-home .product-info>span { margin-top: 6px; -webkit-line-clamp: 2; line-clamp: 2; font-size: 11px; }
  .is-home .product-info ul { margin: 7px 0 8px; padding: 6px 0; }
  .is-home .quality-seal { width: 54px; top: 10px; right: 10px; }
}

/* Standard Full HD / tall desktop. Preserve premium breathing room while
   keeping every section as a single visual scene. */
@media (min-width: 1600px) and (min-height: 901px) {
  .is-home {
    --home-safe-top: max(clamp(80px, 6dvh, 96px), var(--home-header-height, 80px));
    --home-safe-bottom: clamp(30px, 4.5dvh, 68px);
  }
  .is-home .about { gap: clamp(54px, 5vw, 80px); }
  .is-home .about-frame { height: clamp(440px, 46dvh, 560px); }
  .is-home .solution-ribbon { margin-top: clamp(26px, 3dvh, 48px); }
  .is-home .solution-ribbon article { min-height: clamp(110px, 12dvh, 132px); }
  .is-home .product-layout { margin-top: clamp(24px, 3dvh, 42px); }
  .is-home .product-showcase,
  .is-home .product-image { min-height: 0; height: clamp(440px, 48dvh, 560px); }
  .is-home .project-showcase { margin-top: clamp(16px, 2dvh, 28px); }
  .is-home .project-main,
  .is-home .project-detail { height: clamp(390px, 43dvh, 500px); }
  .is-home .project-thumbs button { height: clamp(92px, 10dvh, 108px); min-height: 92px; }
  .is-home .process-line { margin-top: clamp(28px, 3dvh, 46px); }
  .is-home .capability-band { margin-top: clamp(26px, 3dvh, 44px); }
  .is-home .news-photo { height: clamp(280px, 31dvh, 360px) !important; }
  .is-home .news-stack article { min-height: clamp(112px, 12.5dvh, 142px) !important; }
}

/* 34–38in ultrawide: viewport height governs vertical size; width only changes
   the readable shell, so content never turns into huge typography/cards. */
@media (min-width: 3000px) and (min-height: 1200px) {
  .is-home {
    --home-safe-top: max(96px, var(--home-header-height, 96px));
    --home-safe-bottom: clamp(58px, 5dvh, 84px);
  }
  .is-home .hero-slider-nav { bottom: 154px; }
  .is-home .hero-stats>div { min-height: 112px; }
  .is-home .about-frame { height: clamp(520px, 42dvh, 640px); }
  .is-home .product-showcase,
  .is-home .product-image { height: clamp(520px, 42dvh, 640px); }
  .is-home .project-showcase,
  .is-home .project-thumbs { max-width: 1600px; }
  .is-home .project-main,
  .is-home .project-detail { height: clamp(480px, 38dvh, 560px); }
  .is-home .project-thumbs button { height: 108px; min-height: 108px; }
  .is-home .news-photo { height: clamp(340px, 31dvh, 450px) !important; }
}


/* Shared geometry: widths are capped independently from viewport height. */
.is-home { --home-shell: 1640px; --home-gutter: max(4.5vw, calc((100vw - var(--home-shell))/2)); }
.is-home [data-section] { min-width: 0; }
.is-home .hero-slide picture { display: contents; }
.is-home img[data-home-image] {
  object-fit: var(--image-fit, contain) !important;
  object-position: var(--image-x, 50%) var(--image-y, 50%) !important;
  transform: none !important;
}
.is-home .news-photo, .is-home .news-thumb { background: #eaf0f5; }
.is-home .news-head, .is-home .project-detail, .is-home .product-info { min-width: 0; }
.is-home .project-detail h3, .is-home .featured-news h3 {
  display: -webkit-box; -webkit-box-orient: vertical; -webkit-line-clamp: 2; overflow: hidden;
}
.is-home .home-section--overflow .product-showcase,
.is-home .home-section--overflow .product-info,
.is-home .home-section--overflow .project-detail { height: auto !important; overflow: visible; }
.is-home .home-section--overflow .about { align-content: start; }
@media (min-width: 1200px) {
  .is-home :is(.about,.products,.projects,.capability,.news) {
    padding-inline: var(--home-gutter) !important;
    padding-top: max(calc(var(--home-header-height, 94px) + 16px), 5dvh) !important;
    padding-bottom: var(--home-safe-bottom) !important;
  }
  .is-home .hero h1 { font-size: clamp(48px, 6.8dvh, 88px); }
  .is-home .hero-stats { left: var(--home-gutter); right: var(--home-gutter); }
  .is-home .about { column-gap: clamp(24px, 3vw, 64px); row-gap: 16px; }
  .is-home .about-frame { height: clamp(290px, 40dvh, 560px); }
  .is-home .solution-ribbon { margin-top: 12px; }
  .is-home .product-layout { min-height: min-content; }
  .is-home .product-showcase { width: 100%; min-width: 0; grid-template-columns: minmax(0,1.1fr) minmax(0,1fr); }
  .is-home .product-info { min-height: min-content; }
  .is-home .project-showcase { width: 100%; max-width: none; grid-template-columns: minmax(0,1.35fr) minmax(0,1fr); }
  .is-home .project-thumbs { max-width: none; }
  .is-home .news { grid-template-columns: minmax(0,1.3fr) minmax(0,1fr); gap: clamp(16px,2vw,32px) !important; }
  .is-home .news-head { grid-column: 1 / -1; }
  .is-home .news-photo { height: clamp(200px,28dvh,400px) !important; }
  .is-home .news-stack { align-content: start; gap: 10px !important; }
  .is-home .news-stack article { height: auto; min-height: 90px !important; grid-template-columns: clamp(88px,8vw,140px) minmax(0,1fr) 32px; }
  .is-home .news-thumb { height: clamp(68px,9dvh,112px) !important; }
  .is-home .news-summary { -webkit-line-clamp: 2; }
  .is-home .hero.home-section--overflow { min-height: max(740px,100dvh) !important; }
}
@media (min-width: 2200px) { .is-home { --home-shell: 1760px; } }
@media (min-width: 3000px), (min-width: 1200px) and (min-aspect-ratio: 21/9) {
  .is-home { --home-shell: 1840px; }
  /* Wide artwork is optional; the hero always fills its viewport. */
}
@media (min-width:1200px) and (max-height:900px) {
  .is-home .hero-lead { margin: 14px 0; font-size: 14px; }
  .is-home .hero-slider-nav { bottom: 106px; }
  .is-home .hero-stats > div { min-height: 80px; padding-block: 12px; }
  .is-home .about h2, .is-home .products h2, .is-home .projects h2,
  .is-home .capability h2, .is-home .news h2 { font-size: clamp(34px,5.4dvh,48px); }
  .is-home .project-detail > span { -webkit-line-clamp: 2; }
  .is-home .project-detail { min-height: min-content; }
  .is-home .news-stack article { padding: 7px !important; }
}
@media (min-width:1200px) and (max-height:720px) {
  .is-home .about-frame { height: 260px; }
  .is-home .about-lead { margin-block: 10px; }
  .is-home .solution-ribbon article { min-height: 72px; }
  .is-home .hero h1 { font-size: 44px; }
  .is-home .hero { height: auto; min-height: 100dvh; max-height: none; }
}
/* Touch/zoom fallback keeps all content reachable without section locking. */
@media (max-width:1199px), (pointer:coarse) {
  .is-home :is(.about,.products,.projects,.capability,.news) {
    height: auto !important; max-height: none !important; min-height: 0 !important;
    padding-top: 44px !important; padding-bottom: 36px !important;
    scroll-margin-top: calc(var(--home-header-height,80px) + 12px);
  }
}
@media (max-width:1199px) {
  .is-home .projects-head { width: 100%; max-width: 100%; }
  .is-home .solution-ribbon {
    display: grid; grid-auto-flow: column; grid-template-columns: none;
    grid-auto-columns: minmax(160px,44%); gap: 12px; width: 100%; min-width: 0;
    overflow-x: auto !important; scroll-snap-type: x proximity; padding: 4px 2px 10px;
  }
  .is-home .solution-ribbon article { scroll-snap-align: start; min-width: 0; }
  .is-home .project-mobile-card { min-height: clamp(330px,52dvh,540px) !important; height: auto !important; }
  .is-home .project-mobile-copy { padding-top: 90px; }
  .is-home .news-photo { height: clamp(180px,27dvh,300px) !important; }
  .is-home .news-stack { overflow-x: auto !important; }
  .is-home .news-summary { font-size: 12px !important; }
  .is-home :is(.product-mobile-prev,.product-mobile-next,.project-mobile-prev,.project-mobile-next) {
    min-width: 44px !important; min-height: 44px !important; width: 44px !important; height: 44px !important;
  }
  .is-home :is(.product-mobile-picker-shell,.project-mobile-thumb-shell) { grid-template-columns: 44px minmax(0,1fr) 44px !important; gap: 8px !important; }
}
@media (min-width:768px) and (max-width:1199px) {
  .is-home { --type-hero: 56px; --type-section-h2: 42px; --type-body: 16px; }
  .is-home :is(.about,.products,.projects,.capability,.news) { padding-inline: 5vw !important; }
  .is-home .about { grid-template-columns: 1fr 1fr; gap: 24px; }
  .is-home .about-frame { height: clamp(240px,32dvh,390px) !important; }
  .is-home .solution-ribbon { grid-column: 1 / -1; grid-auto-columns: minmax(190px,30%); }
  .is-home .product-layout { width: min(820px,100%); margin-inline: auto; }
  .is-home .project-mobile-swiper, .is-home .project-mobile-thumb-shell { max-width: 900px; margin-inline: auto !important; }
  .is-home .news { grid-template-columns: 1fr; }
  .is-home .news-stack { grid-auto-columns: minmax(240px,42%); }
}
.is-home .project-main > img, .is-home .project-mobile-card > img,
.is-home .project-thumb-image img, .is-home .project-mobile-thumb-media img {
  object-fit: contain; object-position: center; transform: none;
}
@media (max-width:1199px) {
  .is-home .hero { height: auto !important; min-height: 100svh !important; max-height: none !important; }
}
@media (max-width:1199px) {
  .is-home .product-mobile-picker.swiper-fallback .product-mobile-picker-card,
  .is-home .project-mobile-thumbs.swiper-fallback .project-mobile-thumb {
    width: calc((100% - 12px)/2) !important; flex-basis: calc((100% - 12px)/2) !important;
  }
}

/* R30: Hero content stays in normal flow. Animation never controls its position.
   Backgrounds remain absolute; heading/actions/navigation/KPIs cannot overlap. */
.is-home .hero,
.is-home .hero.home-section--overflow {
  display: flex; flex-direction: column; isolation: isolate;
  box-sizing: border-box; height: auto !important;
  min-height: var(--home-viewport-height,100svh) !important; max-height: none !important;
  padding: calc(var(--home-header-height,94px) + 24px) var(--home-gutter) 20px;
  gap: 16px; overflow: hidden !important;
}
.is-home .hero .hero-copy {
  position: relative !important; inset: auto !important;
  width: min(800px,100%) !important; max-width: 100% !important;
  flex: 0 0 auto; margin: auto 0 !important; padding: 0 !important;
  transform: none !important; animation: none !important;
  opacity: 1 !important; visibility: visible !important;
}
.is-home .hero h1 { margin: 0; line-height: 1.08; overflow-wrap: anywhere; }
.is-home .hero .hero-lead { max-width: 62ch; margin: 20px 0; }
.is-home .hero .hero-actions { display: flex; flex-wrap: wrap; gap: 12px; }
.is-home .hero #hero-label { white-space: normal; max-width: 100%; }
.is-home .hero .hero-slider-nav {
  position: relative !important; inset: auto !important; flex: 0 0 auto;
  align-self: flex-end; margin: 0; max-width: 100%; min-height: 44px;
}
.is-home .hero .hero-stats {
  position: relative !important; inset: auto !important;
  flex: 0 0 auto; width: 100%; margin: 0; grid-template-columns: repeat(4,minmax(0,1fr));
}
.is-home .hero .hero-stats > div { min-width: 0; min-height: 90px; padding: 16px 20px; }
.is-home .hero .hero-drag-hint { display: none; }
.is-home .hero .hero-meta { max-height: 50%; pointer-events: none; }
@media (min-width:1200px) and (max-height:900px) {
  .is-home .hero { gap: 10px; padding-top: calc(var(--home-header-height,94px) + 18px); padding-bottom: 12px; }
  .is-home .hero h1 { font-size: clamp(38px,6.4dvh,58px) !important; }
  .is-home .hero .eyebrow { margin-bottom: 12px; }
  .is-home .hero .hero-lead { margin: 14px 0; font-size: 15px; line-height: 1.55; }
  .is-home .hero .hero-actions > a { min-height: 46px; }
  .is-home .hero .hero-stats > div { min-height: 76px; padding: 12px 18px; }
}
@media (max-width:1199px) {
  .is-home .hero { --home-gutter: clamp(16px,4vw,36px); gap: 14px; }
  .is-home .hero .hero-copy { max-width: 720px !important; }
  .is-home .hero .hero-slider-nav { align-self: stretch; justify-content: space-between; width: 100%; }
  .is-home .hero .hero-stats { grid-template-columns: repeat(4,minmax(0,1fr)); }
  .is-home .hero .hero-stats > div { min-height: 72px; padding: 12px 10px; }
  .is-home .hero .hero-meta { display: none; }
}
@media (max-width:767px) {
  .is-home .hero { padding-top: calc(var(--home-header-height,80px) + 20px); padding-bottom: 16px; gap: 12px; }
  .is-home .hero h1 { font-size: clamp(30px,8.2vw,44px) !important; line-height: 1.12; }
  .is-home .hero .eyebrow { margin-bottom: 12px; }
  .is-home .hero .hero-lead { margin: 14px 0; font-size: 14px; line-height: 1.55; }
  .is-home .hero .hero-actions > a { min-height: 44px; padding-inline: 14px; }
  .is-home .hero .hero-stats { grid-template-columns: repeat(2,minmax(0,1fr)); }
  .is-home .hero .hero-stats > div { min-height: 60px; padding: 10px 12px; }
  .is-home .hero .hero-stats > div:nth-child(2) { border-right: 0; }
  .is-home .hero .hero-stats > div:nth-child(-n+2) { border-bottom: 1px solid #ffffff24; }
}
/* One height budget owns desktop panels, including the 1200–1599 tall range.
   Override old site.css !important rules; contain images without hiding text. */
@media (min-width:1200px) {
  .is-home { --home-panel-height: clamp(270px,42dvh,560px); }
  .is-home .product-layout { width:100%; grid-template-columns:minmax(220px,.5fr) minmax(0,1.5fr); gap:clamp(20px,3vw,48px); margin-top:24px; }
  .is-home .product-showcase { width:100% !important; min-width:0; max-width:100%; }
  .is-home .product-showcase, .is-home .product-image { height:var(--home-panel-height) !important; min-height:0 !important; }
  .is-home .product-info { min-width:0; min-height:0; padding:clamp(18px,2dvh,28px); }
  .is-home .product-info h3 { font-size:clamp(24px,2vw,36px); }
  .is-home .product-info > span { display:-webkit-box; -webkit-box-orient:vertical; -webkit-line-clamp:3; overflow:hidden; font-size:14px; line-height:1.5; }
  .is-home .project-main, .is-home .project-detail { height:var(--home-panel-height) !important; min-height:0 !important; }
  .is-home .project-thumbs button { height:clamp(62px,9dvh,100px) !important; min-height:0 !important; }
  .is-home .project-thumbs button .project-thumb-image { height:clamp(44px,6dvh,70px) !important; }
  .is-home .news { grid-template-rows:auto auto; align-items:start; align-content:safe center; }
  .is-home .featured-news { align-self:start; }
  .is-home .news-stack { display:grid; grid-template-columns:minmax(0,1fr); grid-template-rows:none; grid-auto-flow:row; gap:10px !important; align-content:start; }
  .is-home .news-stack article { height:auto !important; min-height:0 !important; grid-template-columns:clamp(88px,8vw,140px) minmax(0,1fr) 32px !important; gap:12px !important; padding:10px !important; }
  .is-home .news-card-copy { min-width:0; }
  .is-home .news-stack h3 { font-size:clamp(14px,1vw,17px) !important; line-height:1.35 !important; margin:4px 0 !important; display:-webkit-box; -webkit-box-orient:vertical; -webkit-line-clamp:2; overflow:hidden; }
  .is-home .news-meta { font-size:11px !important; line-height:1.3 !important; margin:0 0 4px !important; }
  .is-home .news-date { display:block; font-size:11px; line-height:1.3; }

  .is-home .news-thumb { height:clamp(76px,9dvh,110px) !important; }
  .is-home .news-copy { padding:18px 22px !important; }
  .is-home .featured-news h3 { font-size:clamp(22px,1.8vw,30px) !important; line-height:1.3; margin:8px 0; }
  .is-home .news-excerpt { font-size:14px !important; line-height:1.5 !important; -webkit-line-clamp:2; }
  .is-home .featured-news a { margin-top:12px; }
  .is-home .home-section--overflow .product-showcase,
  .is-home .home-section--overflow .product-info,
  .is-home .home-section--overflow .project-detail { height:auto !important; min-height:var(--home-panel-height) !important; }
}
@media (min-width:1200px) and (max-height:900px) {
  .is-home { --home-panel-height:clamp(260px,39dvh,340px); }
  .is-home .product-info { padding:14px 18px; }
  .is-home .product-info > span { font-size:12px; -webkit-line-clamp:2; }
  .is-home .news-copy { padding:12px 16px !important; }
  .is-home .news-photo { height:clamp(160px,25dvh,230px) !important; }
  .is-home .news-thumb { height:68px !important; }
  .is-home .news-stack article { padding:7px !important; gap:9px !important; }
  .is-home .news-excerpt { font-size:12px !important; }
}

/* R31: explicit layout contracts for the audited regressions. */
.is-home .hero-slide img[data-home-image] { object-fit: cover !important; }
.is-home [data-section] { scroll-margin-top: 0 !important; }
@media (min-width:1200px) {
  html:has(body.is-home) { scroll-padding-top: 0 !important; }
}
@media (max-width:1199px) {
  html:has(body.is-home) { scroll-padding-top: var(--home-header-height,92px) !important; }
}
.is-home .product-info > [hidden] { display: none !important; }
@media (min-width:1200px) {
  .is-home .products { overflow-x: clip; overflow-y: visible; }
  .is-home .product-layout { align-items: stretch; min-width: 0; }
  .is-home .product-nav { min-width: 0; align-self: stretch; }
  .is-home .product-nav button { min-height: 0 !important; padding: 12px 10px !important; }
  .is-home .product-nav button strong { font-size: clamp(15px,1.2vw,20px); line-height: 1.3; }
  .is-home .product-nav button small { font-size: 12px; line-height: 1.45; }
  .is-home .product-showcase,
  .is-home .home-section--overflow .product-showcase {
    height: auto !important; min-height: var(--home-panel-height) !important;
    max-height: none !important; contain: layout; overflow: visible;
    align-items: stretch; align-self: stretch;
  }
  .is-home .product-image { height: auto !important; min-height: var(--home-panel-height) !important; align-self: stretch; }
  .is-home .product-info,
  .is-home .home-section--overflow .product-info {
    display: flex; flex-direction: column; justify-content: center;
    height: auto !important; min-height: 0 !important; max-height: none !important;
    padding: clamp(16px,2.2dvh,30px) !important; gap: 12px;
    overflow: visible !important;
  }
  .is-home .product-info > * { flex-shrink: 0 !important; margin: 0 !important; min-height: min-content; }
  .is-home .product-info h3,
  .is-home #product-description,
  .is-home #product-note {
    display: block; -webkit-line-clamp: unset !important; line-clamp: unset !important;
    max-height: none !important; overflow: visible !important; overflow-wrap: anywhere;
  }
  .is-home .product-info h3 { font-size: clamp(24px,2vw,34px) !important; line-height: 1.2 !important; }
  .is-home #product-code { font-size: 12px; line-height: 1.4; }
  .is-home #product-note, .is-home #product-description { font-size: 14px !important; line-height: 1.5 !important; }
  .is-home .product-info ul { margin: 0 !important; padding: 10px 0 !important; overflow: visible !important; }
  .is-home #product-specs li, .is-home #product-specs li:nth-child(n+6) { display: flex; font-size: 12px; line-height: 1.5; padding-block: 3px; }
  .is-home #product-link { min-height: 44px; padding-block: 8px; }
  .is-home .project-main { height: auto !important; min-height: var(--home-panel-height) !important; align-self: stretch; }
  .is-home .project-detail,
  .is-home .home-section--overflow .project-detail {
    height: auto !important; min-height: var(--home-panel-height) !important;
    max-height: none; overflow: visible; padding: clamp(18px,2.5dvh,32px);
  }
  .is-home .project-detail > * { flex-shrink: 0; }
  .is-home .project-detail h3,
  .is-home .project-detail > span { display: block; -webkit-line-clamp: unset; line-clamp: unset; overflow: visible; }
  .is-home .news-stack article { grid-template-columns: clamp(88px,8vw,140px) minmax(0,1fr) 44px !important; }
}
.is-home .news-stack article > a { width: 44px !important; min-width: 44px !important; height: 44px !important; box-sizing: border-box; }
.is-home .project-main > img, .is-home .project-image-transition { object-fit: cover !important; object-position: center !important; }
.is-home .project-thumbs { min-width: 0; max-width: 100%; overflow-x: auto !important; overflow-y: hidden !important; scrollbar-width: thin; }
/* The decorative capability ring ends 190px outside its section. Clip only
   this horizontal decoration; keep vertical content and nested rails readable. */
.is-home .capability { overflow-x: clip; overflow-y: visible; }
@media (min-width:1200px) and (min-height:901px) {
  .is-home .solution-ribbon article { min-height: clamp(108px,13dvh,156px); padding: 20px 18px; }
  .is-home .process-line { margin-top: clamp(24px,4dvh,48px); }
  .is-home .capability-band { margin-top: clamp(24px,4dvh,48px); }
}

/* R31.1 News: equal desktop columns, four equal rows, two readable summary lines. */
.is-home .news .news-card-copy {
  display: flex; flex-direction: column; gap: 4px;
  min-width: 0 !important; overflow: visible;
}
.is-home .news .news-card-copy > * { flex-shrink: 0; }
.is-home .news .news-card-copy h3 { margin: 0 !important; }
.is-home .news .news-card-copy .news-date { margin: 0 !important; line-height: 1.4 !important; }
.is-home .news .news-summary,
.is-home .news .news-excerpt {
  display: -webkit-box !important; -webkit-box-orient: vertical;
  -webkit-line-clamp: 2 !important; line-clamp: 2 !important;
  font-size: 13px !important; line-height: 1.45 !important;
  min-height: 2.9em !important; max-height: 2.9em !important;
  margin: 0 !important; overflow: hidden !important;
  font-weight: 400 !important; text-transform: none !important;
  letter-spacing: 0 !important; overflow-wrap: anywhere;
}
.is-home .news .news-copy { display: flex; flex-direction: column; gap: 8px; }
.is-home .news .news-copy > * { flex-shrink: 0; }
.is-home .news .news-copy h3, .is-home .news .news-copy .news-date { margin: 0 !important; }
.is-home .news .news-copy > a { margin-top: 4px !important; }
@media (min-width:1200px) {
  .is-home .news {
    grid-template-columns: minmax(0,1fr) minmax(0,1fr) !important;
    grid-template-rows: auto auto; align-items: stretch !important;
    column-gap: clamp(18px,2vw,32px) !important; row-gap: 20px !important;
  }
  .is-home .news .featured-news {
    display: flex; flex-direction: column; align-self: stretch !important;
    height: auto !important; min-height: 0; margin: 0;
  }
  .is-home .news .news-photo {
    flex: 1 1 auto; height: auto !important;
    min-height: clamp(180px,25dvh,320px); max-height: none !important;
  }
  .is-home .news .news-copy { flex: 0 0 auto; padding: 18px 20px !important; }
  .is-home .news .news-stack {
    display: grid !important; align-self: stretch !important;
    grid-template-columns: minmax(0,1fr) !important;
    grid-template-rows: none !important; grid-auto-flow: row;
    grid-auto-rows: minmax(128px,1fr); align-content: stretch !important;
    gap: 10px !important; margin: 0 !important; padding: 0 !important;
    height: auto !important; min-height: 0; overflow: visible !important;
  }
  .is-home .news .news-stack article {
    display: grid !important; align-items: center; align-self: stretch;
    grid-template-columns: clamp(90px,7vw,132px) minmax(0,1fr) 44px !important;
    grid-template-rows: auto !important; min-height: 128px !important;
    height: auto !important; max-height: none !important;
    gap: 10px !important; padding: 10px !important;
  }
  .is-home .news .news-stack h3 {
    font-size: clamp(14px,1vw,17px) !important; line-height: 1.35 !important;
    min-height: 2.7em; max-height: 2.7em;
  }
  .is-home .news .news-thumb { height: 100% !important; min-height: 100px; max-height: none; }
  .is-home .news .news-stack article > a { width: 44px !important; height: 44px !important; min-width: 44px !important; }
}
@media (min-width:1200px) and (max-height:800px) {
  .is-home .news .news-copy { padding: 14px 16px !important; }
  .is-home .news .news-photo { min-height: 160px; }
}
@media (max-width:1199px) {
  .is-home .news .news-stack article {
    grid-template-columns: minmax(0,1fr) 44px !important;
    grid-template-rows: auto auto !important; height: auto !important;
  }
  .is-home .news .news-card-copy { padding: 0 !important; }
  .is-home .news .news-stack article > a { align-self: end !important; }
}

/* R32: compact desktop composition, including scaled 1920px monitors. */
@media (min-width:1200px) and (max-width:2199px) {
  .is-home { --home-shell:1440px; }
  .is-home :is(.about,.products,.projects,.capability,.news) {
    padding-top:calc(var(--home-header-height,94px) + 20px) !important;
  }
  .is-home :is(.products,.projects) { justify-content:safe center; }
  .is-home .news { align-content:start; }
  .is-home .about { grid-template-rows:auto auto; align-content:safe center; }
  .is-home .about-copy { align-self:center; }
  .is-home :is(.about,.products,.projects,.capability,.news) h2 {
    font-size:clamp(34px,3.8dvh,42px) !important; line-height:1.08 !important;
    margin-top:0 !important;
  }
  .is-home :is(.product-heading,.projects-head,.capability-head,.news-head) {
    margin-top:0 !important; padding-top:0 !important;
  }
  .is-home .projects .project-showcase {
    grid-template-columns:minmax(0,1.1fr) minmax(0,1fr);
    margin-top:18px; column-gap:0; row-gap:12px;
    min-width:0; --home-panel-height:clamp(340px,48dvh,620px);
  }
  .is-home .projects .project-main { border-radius:12px 0 0 12px; }
  .is-home .projects .project-detail {
    border-radius:0 12px 12px 0; padding:22px 26px !important;
  }
}
/* All desktop project selectors use a wrapping grid, never a horizontal rail. */
@media (min-width:1200px) {
  .is-home .projects .project-thumbs {
    display:grid !important;
    grid-template-columns:repeat(auto-fit,minmax(min(100%,200px),1fr)) !important;
    grid-auto-flow:row; grid-auto-columns:auto;
    gap:10px; width:100%; max-width:100%; min-width:0;
    margin:0; padding:6px;
    overflow:visible !important; scroll-snap-type:none;
    cursor:default; touch-action:auto;
  }
  .is-home .projects .project-thumbs button {
    display:grid; width:100% !important; min-width:0 !important;
    max-width:100%; flex:none !important;
    grid-template-columns:58px 16px minmax(0,1fr) !important;
    grid-template-rows:1fr; align-items:center;
    height:auto !important; min-height:88px !important;
    gap:6px; padding:8px !important; border-radius:8px;
    scroll-snap-align:none;
  }
  .is-home .projects .project-thumbs button .project-thumb-image {
    width:58px !important; height:58px !important;
    aspect-ratio:1; border-radius:5px;
  }
  .is-home .projects .project-thumb-copy { min-width:0; overflow-wrap:anywhere; }
  .is-home .projects .project-thumbs button .project-thumb-copy strong {
    font-size:12px; line-height:1.35;
  }
  .is-home .projects .project-thumbs button .project-thumb-copy small {
    font-size:10px; line-height:1.4;
  }
}

/* R32: home category artwork fills its container with no inset frame. */
.is-home .product-image > img,
.is-home .product-mobile-media img {
  width:100% !important; height:100% !important;
  max-width:none !important; max-height:none !important;
  padding:0 !important; margin:0 !important;
  object-fit:cover !important; object-position:center !important;
}
.is-home #product-note, .is-home #product-description {
  font-size:16px !important; line-height:1.6 !important;
}

/* R33: balance the four home scenes within the space below the fixed header. */
@media (min-width:1200px) {
  .is-home .about {
    grid-template-rows:auto auto; align-content:safe center;
    row-gap:clamp(24px,4dvh,56px);
  }
  .is-home .about-visual, .is-home .about-copy { align-self:center; }
  .is-home .about-visual { width:100%; max-width:680px; }
  .is-home .about .about-frame { height:clamp(300px,44dvh,560px); }
  .is-home .about .solution-ribbon { margin-top:0; }
  .is-home .about .about-lead { font-size:16px; line-height:1.65; }
  .is-home .about .about-proof b { font-size:14px; }
  .is-home .about .about-proof span { font-size:12px; line-height:1.5; }
  .is-home .about .solution-ribbon h3 { font-size:16px; }
  .is-home .about .solution-ribbon p { font-size:13px; line-height:1.5; }
  .is-home .products .product-image { border-radius:24px 0 0 24px; overflow:hidden; }
  .is-home .projects { justify-content:safe center; }
  .is-home .projects .project-showcase { --home-panel-height:clamp(340px,48dvh,620px); }
  .is-home .projects .project-main { background-image:none; }
  .is-home .capability {
    justify-content:safe center; gap:clamp(28px,6dvh,76px);
  }
  .is-home .capability .capability-head { max-width:1100px; width:100%; }
  .is-home .capability .capability-head > p:last-child { font-size:16px; line-height:1.6; margin-top:16px; }
  .is-home .capability .process-line {
    --r33-icon-size:clamp(76px,9dvh,110px);
    margin-top:0; padding-top:12px; padding-bottom:0;
  }
  .is-home .capability .process-line::before { top:calc(12px + var(--r33-icon-size)/2); }
  .is-home .capability .process-icon {
    width:var(--r33-icon-size); height:var(--r33-icon-size);
    margin:0 auto 16px;
  }
  .is-home .capability .process-icon span { font-size:11px; width:28px; height:28px; }
  .is-home .capability .process-glyph { font-size:30px; }
  .is-home .capability .process-line h3 { font-size:19px; line-height:1.35; margin-bottom:10px; }
  .is-home .capability .process-line p { font-size:15px; line-height:1.6; max-width:260px; margin-inline:auto; }
  .is-home .capability .capability-band { margin:0 auto; padding:18px 28px; }
  .is-home .capability .capability-band span { font-size:12px; line-height:1.5; }
  .is-home .capability .capability-band strong { font-size:16px; line-height:1.55; }
}
@media (min-width:1200px) and (max-width:2199px) {
  .is-home :is(.about,.products,.projects,.capability) { --home-shell:1640px; --home-gutter:max(4.5vw,calc((100vw - var(--home-shell))/2)); }
}
@media (min-width:1200px) and (max-height:800px) {
  .is-home .about { row-gap:20px; }
  .is-home .about .about-frame { height:clamp(260px,39dvh,320px); }
  .is-home .projects .project-showcase { --home-panel-height:clamp(280px,40dvh,340px); }
  .is-home .capability { gap:26px; }
  .is-home .capability .process-line h3 { font-size:17px; }
  .is-home .capability .process-line p { font-size:14px; }
}

/* R34: inline desktop section titles; long translations may wrap naturally. */
@media (min-width:1200px) {
  .is-home :is(.product-heading,.projects-head,.capability-head) {
    width:100%; max-width:none !important;
  }
  .is-home :is(.about,.products,.projects,.capability,.news) h2 {
    font-size:clamp(28px,2.2vw,40px) !important;
    line-height:1.15 !important; white-space:normal;
  }
  .is-home :is(.about,.products,.projects,.capability,.news) h2 br { display:none; }
  .is-home :is(.about,.products,.projects,.capability,.news) h2 em {
    display:inline; margin-inline-start:.22em;
  }
  .is-home .about h2 { font-size:clamp(26px,1.9vw,36px) !important; }
}
/* Use the saved heading height for media on sufficiently tall desktops. */
@media (min-width:1200px) and (min-height:801px) {
  .is-home .products { --home-panel-height:clamp(320px,46dvh,600px); }
  .is-home .projects .project-showcase { --home-panel-height:clamp(360px,52dvh,660px); }
}

/* R35: one native link per news card, extended over photo, title and card. */
.is-home .news .featured-news,
.is-home .news .news-stack article { position:relative; isolation:isolate; }
.is-home .news .news-copy { position:static; transform:none; }
.is-home .news .news-card-link {
  position:static !important; transform:none !important;
}
.is-home .news .news-card-link::after {
  content:""; position:absolute; inset:0; z-index:3;
  cursor:pointer; border-radius:inherit;
}
.is-home .news .featured-news:focus-within,
.is-home .news .news-stack article:focus-within {
  outline:3px solid #087dcc; outline-offset:3px;
}

/* R36: taller media, with room reserved for header, title, controls and footer
   padding. These are minimum panel sizes: long CMS text may still grow. */
@media (min-width:1200px) {
  .is-home .about .about-frame {
    height:min(clamp(300px,52dvh,680px),max(240px,calc(var(--home-viewport) - var(--home-header-height,94px) - 220px)));
  }
  .is-home .products {
    --home-panel-height:min(clamp(340px,60dvh,820px),max(280px,calc(var(--home-viewport) - var(--home-header-height,94px) - 190px)));
  }
  .is-home .projects .project-showcase {
    --home-panel-height:min(clamp(320px,58dvh,780px),max(260px,calc(var(--home-viewport) - var(--home-header-height,94px) - 260px)));
  }
  .is-home .news .news-photo { min-height:clamp(220px,40dvh,540px); }
  .is-home .capability { gap:clamp(32px,8dvh,96px); }
  .is-home .capability .process-line { --r33-icon-size:clamp(80px,10dvh,128px); }
}
@media (min-width:1200px) and (max-height:800px) {
  .is-home .about .about-frame { height:clamp(260px,43dvh,344px); }
  .is-home .news .news-photo { min-height:190px; }
  .is-home .capability { gap:28px; }
  .is-home .capability .process-line { --r33-icon-size:76px; }
}

/* R38: native project title link; no geometry changes for other desktops. */
.is-home .projects #project-title-link { color:inherit; font:inherit; text-decoration:none; }
.is-home .projects #project-title-link:hover { color:#80dcff; text-decoration:none; }
.is-home .projects #project-title-link:focus-visible { outline:3px solid #8edcff; outline-offset:4px; }
@media (min-width:1200px) and (max-width:2199px) {
  .is-home .projects .project-detail h3 { font-size:24px; line-height:1.3; }
  .is-home .projects #project-scope { font-size:16px; line-height:1.65; color:#d1deeb; }
  .is-home .projects #project-link {
    display:inline-flex; align-self:flex-start; align-items:center;
    justify-content:space-between; gap:22px;
    min-height:50px; padding:13px 20px; margin-top:18px;
    border:1px solid #258bdf; border-radius:10px;
    background:#0872cc; color:#fff; font-size:14px; font-weight:800;
    line-height:1.4; text-decoration:none;
    box-shadow:0 6px 18px #0002;
  }
  .is-home .projects #project-link:hover { background:#0959a2; border-color:#8cd9ff; }
  .is-home .projects #project-link:focus-visible { outline:3px solid #8edcff; outline-offset:4px; }
  .is-home .projects #project-link svg { width:20px; flex-shrink:0; }
  .is-home .projects .project-code > span { font-size:13px; color:#fff; }
  .is-home .projects .project-code strong { font-size:24px; }
  .is-home .projects .project-location { font-size:15px; line-height:1.5; color:#fff; }
  .is-home .projects .project-code,
  .is-home .projects .project-location { text-shadow:0 2px 5px #000b; }
}

/* R39: stable desktop project frame across image and text changes. */
@media (min-width:1200px) and (max-width:2199px) {
  .is-home .projects .project-detail > strong {
    font-size:calc(clamp(34px,3.1vw,44px) - 15px);
  }
  .is-home .projects .project-showcase > .project-main,
  .is-home .projects .project-showcase > .project-detail {
    box-sizing:border-box; align-self:start;
    height:var(--home-panel-height) !important;
    min-height:0 !important; max-height:var(--home-panel-height) !important;
  }
  .is-home .projects .project-showcase > .project-main { overflow:hidden; }
  .is-home .projects .project-showcase > .project-detail {
    overflow-y:auto !important; overflow-x:hidden !important;
    justify-content:safe center; scrollbar-gutter:stable;
  }
  .is-home .projects .project-main > img,
  .is-home .projects .project-main > .project-image-transition {
    position:absolute !important; inset:0 !important;
    width:100% !important; height:100% !important;
    object-fit:cover !important;
  }
}

/* R40: fixed footer row; changing copy cannot move project actions. */
@media (min-width:1200px) and (max-width:2199px) {
  .is-home .projects .project-showcase > .project-detail {
    display:grid; grid-template-columns:minmax(0,1fr) auto;
    grid-template-rows:auto auto auto minmax(0,1fr) 50px;
    gap:12px 16px; align-content:stretch; align-items:start;
    overflow:hidden !important; scrollbar-gutter:auto;
  }
  .is-home .projects .project-detail > p {
    grid-column:1/-1; grid-row:1; margin:0;
  }
  .is-home .projects .project-detail > h3 {
    grid-column:1/-1; grid-row:2; margin:0;
    max-height:3.9em; overflow:auto;
  }
  .is-home .projects .project-detail > strong {
    grid-column:1/-1; grid-row:3; margin:0;
    color:#80dcff; line-height:1.2; letter-spacing:-.025em;
    align-items:baseline; gap:10px; flex-wrap:wrap; white-space:normal;
  }
  .is-home .projects .project-detail > strong small {
    font-size:17px; line-height:1.35; color:#c6efff;
    margin:0; letter-spacing:0; font-weight:500;
  }
  .is-home .projects #project-scope {
    grid-column:1/-1; grid-row:4; min-height:0;
    max-height:100%; margin:0; align-self:start;
    display:-webkit-box; -webkit-box-orient:vertical;
    -webkit-line-clamp:3; line-clamp:3; overflow:hidden;
  }
  .is-home .projects #project-link {
    grid-column:1; grid-row:5; align-self:stretch; justify-self:start;
    margin:0; height:50px; min-height:50px; max-width:100%;
    padding:10px 16px; background:transparent; color:#d7efff;
    border:1px solid #8ccfff66; border-radius:8px; box-shadow:none;
    font-size:13px; transition:background .2s ease,border-color .2s ease,color .2s ease;
  }
  .is-home .projects #project-link:hover,
  .is-home .projects #project-link:focus-visible {
    background:#0872cc; color:#fff; border-color:#62bcff;
  }
  .is-home .projects .project-arrows {
    grid-column:2; grid-row:5; align-self:center;
    margin:0; height:44px;
  }
  .is-home .projects .project-arrows button { width:44px; height:44px; }
}

@media (min-width:2200px) {
  .is-home .projects .project-detail > p { order:0; }
  .is-home .projects .project-detail > strong { order:1; }
  .is-home .projects .project-detail > h3 { order:2; }
  .is-home .projects .project-detail > span { order:3; }
  .is-home .projects .project-detail > a { order:4; }
  .is-home .projects .project-detail > .project-arrows { order:5; }
}

/* R41: clip the news decoration, not the width of the page or its contents. */
.is-home .news { overflow-x:clip; overflow-y:visible; }
/* Pseudo icons survive textContent updates when projects change. */
.is-home .projects #project-number::before {
  content:""; flex:0 0 24px; width:24px; height:28px;
  align-self:center; margin-right:8px;
  background:center/contain no-repeat url("data:image/svg+xml,%3Csvg xmlns='http://www.w3.org/2000/svg' viewBox='0 0 24 28' fill='none' stroke='%2380dcff' stroke-width='1.8'%3E%3Cpath d='M12 2S3 12 3 18a9 9 0 0 0 18 0C21 12 12 2 12 2Z'/%3E%3Cpath d='M7 18a5 5 0 0 0 5 5'/%3E%3C/svg%3E");
}
.is-home .projects #project-scope { position:relative; padding-left:30px; }
.is-home .projects #project-scope::before {
  content:""; position:absolute; left:0; top:3px; width:20px; height:22px;
  background:center/contain no-repeat url("data:image/svg+xml,%3Csvg xmlns='http://www.w3.org/2000/svg' viewBox='0 0 24 24' fill='none' stroke='%2380dcff' stroke-width='1.7'%3E%3Crect x='4' y='2' width='16' height='20' rx='3'/%3E%3Cpath d='M8 7h8M8 12h8M8 17h5'/%3E%3C/svg%3E");
}
@media (min-width:1200px) and (max-width:2199px) {
  .is-home .projects .project-showcase > .project-detail {
    grid-template-rows:auto auto minmax(0,1fr) 50px;
  }
  .is-home .projects .project-detail > h3 { grid-row:1; }
  .is-home .projects .project-detail > strong { grid-row:2; }
  .is-home .projects #project-scope { grid-row:3; }
  .is-home .projects #project-link,
  .is-home .projects .project-arrows { grid-row:4; }
}

/* R42: both decorative overflows and the home root are bounded horizontally. */
html:has(body.is-home) { overflow-x:clip; }
.is-home .about, .is-home .projects { overflow-x:clip; overflow-y:visible; }
.is-home .projects #project-title-link { transition:color .2s ease; }
.is-home .projects #project-title-link:hover,
.is-home .projects #project-title-link:focus-visible { color:#80dcff; text-decoration:none; }
.is-home .projects #project-number::before,
.is-home .projects #project-scope::before {
  width:24px; height:24px; box-sizing:border-box;
  background-size:24px 24px;
}
.is-home .projects #project-number::before {
  flex:0 0 24px; margin-right:0;
  background-image:url("data:image/svg+xml,%3Csvg xmlns='http://www.w3.org/2000/svg' viewBox='0 0 24 24' fill='none' stroke='%2380dcff' stroke-width='1.7' stroke-linecap='round' stroke-linejoin='round'%3E%3Cpath d='M12 2S4 11 4 16a8 8 0 0 0 16 0C20 11 12 2 12 2Z'/%3E%3Cpath d='M8 16a4 4 0 0 0 4 4'/%3E%3C/svg%3E");
}
.is-home .projects #project-scope { padding-left:34px; }
.is-home .projects #project-scope::before {
  top:1px;
  background-image:url("data:image/svg+xml,%3Csvg xmlns='http://www.w3.org/2000/svg' viewBox='0 0 24 24' fill='none' stroke='%2380dcff' stroke-width='1.7' stroke-linecap='round' stroke-linejoin='round'%3E%3Crect x='4' y='2' width='16' height='20' rx='3'/%3E%3Cpath d='M8 7h8M8 12h8M8 17h5'/%3E%3C/svg%3E");
}
@media (min-width:1200px) and (max-width:2199px) {
  /* Equal flexible spaces above/below the copy; footer remains on the bottom. */
  .is-home .projects .project-showcase > .project-detail {
    grid-template-rows:minmax(0,1fr) auto auto auto minmax(0,1fr) 50px;
  }
  .is-home .projects .project-detail > h3 { grid-row:2; }
  .is-home .projects .project-detail > strong { grid-row:3; }
  .is-home .projects #project-scope { grid-row:4; max-height:4.95em; }
  .is-home .projects #project-link,
  .is-home .projects .project-arrows { grid-row:6; }
}

/* === V6.30 mobile solution cards: restore stable 2 x 2 layout ===============
   home-responsive.css is loaded after style.css, so this must live here.
   Prevent the old horizontal rail from exposing clipped slivers of prior cards. */
@media (max-width: 767px) {
  .is-home .about .solution-ribbon {
    width: 100% !important;
    max-width: 100% !important;
    margin: 24px 0 0 !important;
    padding: 0 !important;
    display: grid !important;
    grid-template-columns: repeat(2, minmax(0, 1fr)) !important;
    grid-auto-columns: initial !important;
    grid-auto-flow: row !important;
    grid-auto-rows: 1fr !important;
    gap: 8px !important;
    overflow: visible !important;
    overflow-x: visible !important;
    overflow-y: visible !important;
    scroll-snap-type: none !important;
    touch-action: auto !important;
  }

  .is-home .about .solution-ribbon article,
  .is-home .about .solution-ribbon article:nth-child(2) {
    width: 100% !important;
    max-width: 100% !important;
    min-width: 0 !important;
    min-height: 112px !important;
    margin: 0 !important;
    padding: 20px 11px 12px !important;
    display: grid !important;
    grid-template-columns: 31px minmax(0, 1fr) !important;
    grid-template-rows: auto !important;
    align-items: center !important;
    align-content: center !important;
    gap: 8px !important;
    flex: none !important;
    scroll-snap-align: none !important;
    transform: none !important;
    box-sizing: border-box !important;
    border-radius: 14px !important;
  }

  .is-home .about .solution-ribbon article > span {
    top: 8px !important;
    left: 10px !important;
    font-size: 9px !important;
  }

  .is-home .about .solution-ribbon article > svg:first-of-type {
    width: 30px !important;
    height: 30px !important;
    padding: 5px !important;
  }

  .is-home .about .solution-ribbon article > div {
    min-width: 0 !important;
  }

  .is-home .about .solution-ribbon h3 {
    margin: 0 !important;
    font-size: 14px !important;
    line-height: 1.22 !important;
    overflow-wrap: anywhere !important;
  }

  .is-home .about .solution-ribbon p {
    margin: 4px 0 0 !important;
    display: -webkit-box !important;
    -webkit-box-orient: vertical !important;
    -webkit-line-clamp: 2 !important;
    overflow: hidden !important;
    font-size: 10px !important;
    line-height: 1.4 !important;
  }

  .is-home .about .solution-ribbon .solution-jump {
    display: none !important;
  }
}

@media (max-width: 430px) {
  .is-home .about .solution-ribbon {
    margin-top: 20px !important;
    gap: 7px !important;
  }
  .is-home .about .solution-ribbon article,
  .is-home .about .solution-ribbon article:nth-child(2) {
    min-height: 108px !important;
    padding: 18px 9px 11px !important;
    grid-template-columns: 28px minmax(0, 1fr) !important;
    gap: 7px !important;
  }
  .is-home .about .solution-ribbon article > svg:first-of-type {
    width: 28px !important;
    height: 28px !important;
  }
  .is-home .about .solution-ribbon h3 { font-size: 13px !important; }
  .is-home .about .solution-ribbon p { font-size: 9px !important; }
}

@media (max-width: 330px) {
  .is-home .about .solution-ribbon {
    grid-template-columns: 1fr !important;
  }
  .is-home .about .solution-ribbon article,
  .is-home .about .solution-ribbon article:nth-child(2) {
    min-height: 94px !important;
    grid-template-columns: 30px minmax(0, 1fr) !important;
  }
}
