/* ============================================================
   FIRST PAGE — page stylesheet
   Layout for the whole first page. Components keep their own
   CSS files; this file only positions and spaces things.

   The page is built from card-sections stacked vertically.
   The hero is simply the first section. Add more sections
   (more .sc-card blocks) below it using this same file.
   ============================================================ */

* {
  box-sizing: border-box;
}

body {
  margin: 0;
  /* page background matches the card colour */
  background: var(--sc-surface);
  font-family: var(--sc-font-sans);
}

/* ---- page shell — centered, capped width ---- */
.page {
  position: relative; /* anchor for .sc-rails decoration */
  max-width: 1920px;
  margin: 0 auto; /* centers the whole page */
  padding: 14px 24px 40px;
  /* safety net against horizontal scroll: clips any decoration that escapes
     the page box (e.g. rails, or a transform nudge) without creating a scroll
     container — `clip` (unlike `hidden`) won't break position:sticky. */
  overflow-x: clip;
  /* shared decoration band dimensions — both the seam band and the
     vertical band read these, so they always stay identical boxes */
  --grain: url("data:image/png;base64,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");
  --deco-len: 360px; /* long edge of the band */
  --deco-thick: 72px; /* thickness of the band */
  --deco-inset: 4px; /* how far both bands sit in from the right dashed edge */
  --deco-v-shift: 2px; /* small offset that lines the vertical arm's right
                              edge up with the horizontal arm's (clean corner);
                              breakpoint-independent — see .batch__deco-v */
}

.breadcrumb {
  font-size: var(--sc-text-sm);
  color: var(--sc-gray-2);
  padding: 6px 0 14px;
}

/* vertical stack of card-sections */
.page__sections {
  position: relative; /* anchor for .sc-rails so they span only the sections */
  display: flex;
  flex-direction: column;
  align-items: center; /* center the (now narrower) cards */
  gap: 0;
}

/* ---- a section: a card, optionally with a background image ---- */
/* applied alongside .sc-card .sc-card--solid (or --dashed) */
.section {
  position: relative;
  overflow: hidden;
  padding: 0; /* override card default padding */
  border-radius: 0; /* sharp corners (override card default) */
  background-color: var(--sc-surface); /* fallback behind any image */
  --sc-card-max: 1680px; /* narrow the section cards (overrides the component default) */
}

/* opt-in background for the hero — now a scroll-scrubbed <video> layer
   (see .hero__media below). Fallback colour shows if the video is absent. */
.section--bg-hero {
  background-color: var(--sc-surface);
}

/* ---- subtle background grid ----
   Mirrors the hero's canvas grid (see hero-video.js): 80px cells,
   faint #2a2a2a hairlines. Painted on the ::after layer (::before is
   taken by the corner markers in sc-corners.css) so it sits behind the
   section content but above the card fill, and never disturbs the
   dashed cards' border (which is a background-image). None of these
   sections are the page's last child, so the bottom-corner ::after
   rule never applies to them. */
.section--sc1::after,
.section--batch::after,
.section--sc1specs::after,
.section--scqubespecs::after,
.section--scoptimaspecs::after {
  content: "";
  position: absolute;
  inset: 0;
  z-index: 0;
  pointer-events: none;
  background-image:
    /* vertical lines */
    linear-gradient(to right, rgba(42, 42, 42, 0.08) 0 1px, transparent 1px),
    /* horizontal lines */
    linear-gradient(to bottom, rgba(42, 42, 42, 0.08) 0 1px, transparent 1px);
  background-size:
    80px 100%,
    100% 80px;
  /* Centre-anchor the VERTICAL lines: calc(50% + 40px) resolves to W/2
     for any width, so a line sits on each section's horizontal centre.
     Every gridded section shares the same width, so their lines line up
     section-to-section (no mismatch), and the line also lands on the
     batch divider. Horizontal lines keep their left/top anchor. */
  background-position:
    calc(50% + 40px) top,
    left top;
}

/* keep each section's content above its grid overlay */
.section--sc1 > .section__inner,
.section--batch > .section__inner,
.section--sc1specs > .section__inner,
.section--scqubespecs > .section__inner,
.section--scoptimaspecs > .section__inner {
  position: relative;
  z-index: 1;
}

/* video sits behind the hero content, covering the whole card */
.hero__media {
  position: absolute;
  inset: 0;
  z-index: 0;
  overflow: hidden;
  border-radius: inherit; /* follow the card's rounded corners */
}
.hero__video {
  width: 100%;
  height: 100%;
  object-fit: cover;
  display: block;
  background: transparent; /* let the WebM's alpha reveal the page behind */
}
/* frame canvas sits on top of the (poster-fallback) video and fills the card */
.hero__frames {
  position: absolute;
  inset: 0;
  width: 100%;
  height: 100%;
  display: block;
  z-index: 1;
}
/* hero scroll-scrub: .hero-track is a tall runway; the hero card pins to the
   viewport while you scroll through it, and hero-video.js maps the scroll
   position through the track to the animation frame. The card stays a normal
   ~1-viewport card visually; the extra track height is the scrub distance. */
.hero-track {
  position: relative;
  height: 320vh; /* runway: more = longer scroll to play the whole animation */
}
/* keep the hero content above the video layer */
.section--hero {
  position: sticky;
  top: 0;
  height: 100vh;
  height: 100svh; /* avoid the mobile address-bar jump where supported */
  border-bottom-color: transparent; /* sc1's dashed top draws the seam; the
     sibling selector that used to hide this can't reach across .hero-track */
}
.section--hero .section__inner {
  position: relative;
  z-index: 1;
}

/* inner padding wrapper, keeps content off the card edge */
.section__inner {
  position: relative;
  display: flex;
  flex-direction: column;
  padding: 0 150px 0;
}

/* the hero content fills the pinned 100vh card (heading top, footer bottom) */
.section--hero .section__inner {
  min-height: 0;
  height: 100%;
}

/* ---- the embedded menu ----
   Keep the menu at its component default: 800px wide, centered.
   The header row is forced to fill that 800px so the dark bar
   stretches properly (without this it shrinks to its content
   inside the flex-column section). */
/* ---- the embedded menu ----
   Left-aligned to the section's inner padding edge so it lines up
   with the hero heading and footer text. */
.section .sc-page {
  max-width: 1400px;
  width: 100%;
  margin: 0;
}
.section .sc-header {
  width: 100%;
}

/* When the HERO menu opens, drop the panels as an absolute overlay instead
   of pushing the heading/footer down (which used to shove the footer into
   the next section, since the hero has a fixed 16:9 height). Scoped to the
   hero so the other pages keep their normal in-flow dropdown. */
.section--hero .sc-page {
  position: relative;
  z-index: 10;
}
.section--hero .sc-panels.sc-open {
  position: absolute;
  top: 100%;
  left: 14px;
  right: 14px;
  margin-top: 0;
}

/* ---- hero content ---- */

/* big heading — caption component bumped to 80px */
.hero__heading {
  --sc-heading-size: clamp(44px, 5.7vw, 80px);
  margin-top: 200px;
  margin-left: 14px; /* matches .sc-page padding → aligns with menu logo */
}

/* spacer pushes the footer row to the bottom */
.hero__spacer {
  flex: 1 1 auto;
}

/* footer row: body text left, CTA button right.
   max-width + 14px side padding match the menu (.sc-page, which has
   padding:14px), so the text/button edges line up with the menu's
   logo (left) and Menu button (right). */
.hero__footer {
  display: flex;
  align-items: flex-start; /* button aligns with the top of the text */
  align-self: flex-start; /* don't stretch in the column — respect max-width */
  justify-content: space-between;
  gap: 40px;
  margin-top: 200px; /* nudges the whole row down a bit */
  padding: 0 14px 60px; /* 14px sides; bottom padding sets how far the row sits above the section bottom — smaller = lower */
  max-width: 1400px; /* same cap as the menu */
  width: 100%;
}

.hero__text {
  max-width: 820px;
  margin: 0;
  font-size: var(--sc-text-md);
  font-weight: var(--sc-weight-regular);
  line-height: 1.4;
  color: var(--sc-gray-2);
}

/* second sentence in dark for accent (matches the SC-1 desc-lead treatment) */
.hero__text-accent {
  color: var(--sc-ink);
}

.hero__cta {
  flex: 0 0 auto;
}

/* ============================================================
   SECTION 2 — SC-1 ALD/PVD cluster
   ============================================================ */
.section--sc1 .section__inner {
  --sc1-pad-x: 60px;
  padding: 72px var(--sc1-pad-x) 30px;
  gap: 16px;
}

/* top row: heading on the left, two-tone description on the right */
.sc1__top {
  display: flex;
  justify-content: space-between;
  align-items: flex-start;
  gap: 60px;
  flex-wrap: nowrap; /* keep heading + description on one row */
}

.sc1__heading {
  display: flex;
  flex-direction: column;
  flex: 0 0 auto; /* heading keeps its size */
}

.sc1__heading .sc-heading {
  --sc-heading-size: clamp(32px, 3.4vw, 48px);
  line-height: 1.05;
}

.sc1__desc {
  max-width: 620px;
  flex: 0 1 620px; /* can shrink below 620px when space is tight */
  min-width: 0;
  margin: 10px 0 0;
  font-size: var(--sc-text-md);
  font-weight: var(--sc-weight-regular);
  line-height: 1.4;
  color: var(--sc-gray-2);
}

.sc1__desc-lead {
  color: var(--sc-ink);
}

/* main row — 4 columns:
   1) SC-1 label (vertically centred) + CTA pinned to bottom
   2) sc1whole.png small machine, vertically centred
   3) sc1explode.png exploded view, centred
   4) ald/pvd patterns stacked, flush right */
.sc1__body {
  position: relative; /* anchor for absolutely-positioned patterns */
  display: grid;
  grid-template-columns: 90px 520px 1fr 260px;
  gap: 20px;
  align-items: stretch;
  min-height: 944px; /* image pushed up toward the heading; just fits the CTA below */
  margin-top: 6px;
  /* shifting vertical offset for patterns + connector lines.
     At wide screens (~1920px) they sit ~110px above centre; at narrow
     desktop / tablet (~1100px) they smoothly drift down to ~10px above
     centre, keeping the connector lines aligned with the chambers as
     the exploded machine scales down. */
  --sc1-pat-offset: clamp(10px, calc(10px + (100vw - 1100px) * 0.122), 110px);
  --conn-left: calc(62% - 120px); /* follow the machine's nudged-left right edge */
  --sc1-center: 400px; /* shared vertical anchor (machine/connectors/patterns/CTA); lower = higher up */
}

.sc1__left {
  display: flex;
  flex-direction: column;
  align-items: flex-start;
}

.sc1__label-wrap {
  flex: 1 1 auto;
  display: flex;
  align-items: center;
  justify-content: flex-start;
}

.sc1__label {
  /* uses .sc-machine-name component defaults (80px, weight 900) */
  margin: 0;
}

/* button uses its component default width — no override here */

/* ---- sc1whole: small machine, preserves natural aspect ratio.
   position:relative so the CTA can be absolutely anchored beneath the
   image without affecting the grid or any sibling. ---- */
.sc1__whole {
  position: static; /* CTA now anchors to .sc1__body (card-centered) */
  display: flex;
  align-items: center;
  justify-content: flex-start;
  min-width: 0;
}

.sc1__whole img {
  display: block;
  width: auto;
  height: auto;
  max-width: 100%;
  max-height: 840px;
  object-fit: contain;
}

/* CTA centered on the card, just below the exploded machine image. */
.sc1__cta {
  position: absolute;
  top: calc(var(--sc1-center) + 380px); /* below the exploded image (≈720px tall) */
  left: 0;
  right: 140px; /* smaller right inset pushes the centered CTA rightward, onto the machine */
  display: flex;
  flex-direction: column;
  align-items: flex-start; /* text + button share the same left edge */
  gap: 12px;
  padding-top: 16px;
  width: 340px; /* size the column to the text block... */
  max-width: 100%;
  margin-inline: auto; /* ...and keep that column centered under the machine */
}

.sc1__cta-text {
  margin: 0;
  max-width: 340px; /* narrower text block */
  font-size: var(--sc-text-md);
  font-weight: var(--sc-weight-regular);
  line-height: 1.4;
  color: var(--sc-gray-2);
  text-align: left;
}

.sc1__machine {
  /* break out of the grid flow so the exploded view centers
     against the whole card, not just its grid column */
  position: absolute;
  left: calc(50% - 120px); /* nudged left to reduce the empty left gap */
  top: var(--sc1-center);
  transform: translate(-50%, -50%);
  display: flex;
  align-items: center;
  justify-content: center;
  pointer-events: none; /* don't block clicks on neighbours */
  z-index: 1;
}

.sc1__machine-main {
  display: block;
  max-width: 100%;
  max-height: 720px;
  height: auto;
  width: auto;
  object-fit: contain;
  pointer-events: auto;
}

.sc1__patterns {
  /* anchor flush to the right dashed edge of the card, vertically
     CENTRED against the body — stays right-centre as the screen shrinks */
  position: absolute;
  top: var(--sc1-center);
  /* shifts smoothly with --sc1-pat-offset (inherited from .sc1__body) */
  transform: translateY(calc(-50% - var(--sc1-pat-offset)));
  /* pull outside the body's padded inner area so the frames
     sit flush with the card's right dashed border */
  right: calc(var(--sc1-pad-x) * -1);
  width: 260px; /* matches the grid column width */
  display: flex;
  flex-direction: column;
  justify-content: center; /* centre the two frames in the group */
  gap: 0; /* frames touch each other */
  z-index: 2; /* sit above the absolutely-positioned machine */
}

/* transparent frame with 1px border, slightly bigger than the
   image inside — both ald/pvd frames are the same size */
.sc1__pattern {
  margin: 0;
  padding: 6px;
  border: 1px solid var(--sc-gray);
  background: transparent;
  aspect-ratio: 16 / 7;
  display: flex;
  align-items: center;
  justify-content: center;
}

.sc1__pattern img {
  display: block;
  max-width: 100%;
  max-height: 100%;
  width: auto;
  height: auto;
  object-fit: contain;
}

/* ---- connector lines: link each machine chamber to its pattern ----
   1px horizontal lines from the exploded machine's right edge across
   to the left edge of the matching pattern frame. Desktop / wide
   tablet only (hidden below 1100px where patterns leave the right side).
   Positioned relative to the body CENTRE so they track the vertically
   centred patterns as the screen shrinks. */
.sc1__connector {
  position: absolute;
  height: 1px;
  background: var(--sc-gray);
  z-index: 2; /* above the machine, same layer as patterns */
  pointer-events: none;
  /* horizontal span: from the machine's right edge (--conn-left) to the
     pattern frame's left edge (--conn-right, measured from body right) */
  left: var(--conn-left, 62%);
  right: var(--conn-right, 200px);
  top: var(--sc1-center); /* anchor to body centre, like the patterns */
}

/* vertical offsets from centre — match the two centred pattern frames
   (each ~114px tall, so centres sit ~57px above/below the patterns'
   centre). Both share --sc1-pat-offset so they drift with the patterns
   as the viewport shrinks. The top line has an extra upward nudge so
   it points at the upper chamber rather than the pattern's centre. */
.sc1__connector--top {
  transform: translateY(calc(-57px - 90px - var(--sc1-pat-offset))) scaleX(0);
  transform-origin: right center;
  transition: transform 1.17s cubic-bezier(0.22, 0.61, 0.36, 1);
}
.sc1__connector--bottom {
  transform: translateY(calc(57px - var(--sc1-pat-offset))) scaleX(0);
  transform-origin: right center;
  transition: transform 1.17s cubic-bezier(0.22, 0.61, 0.36, 1) 0.195s;
}

/* small label sitting just above the start of each connector line */
.sc1__connector-label {
  position: absolute;
  left: 140px; /* sit further along the line so labels clear the machine (line stays full length) */
  bottom: 4px; /* sit just above the 1px line */
  font-family: var(--sc-font-sans);
  font-size: var(--sc-text-sm);
  font-weight: var(--sc-weight-semibold);
  letter-spacing: 0.5px;
  color: var(--sc-gray-2); /* grey, matching the body text */
  white-space: nowrap;
  /* hidden until the line lands — see scroll-reveal block below */
  opacity: 0;
  transition: opacity 0.52s ease 1.17s;
}

/* ============================================================
   SCROLL REVEAL (SC-1)
   Initial state: patterns + connector lines + labels hidden.
   When `.sc1__body.is-revealed` is applied (by JS when the body
   enters the viewport) they animate in:
     1. Pattern frames fade in (top first, then bottom, staggered)
     2. Connector lines grow left → right (machine end → pattern)
     3. ALD / PVD labels fade in after their line lands
   Respects prefers-reduced-motion: instant reveal, no animation.
   ============================================================ */

.sc1__pattern {
  opacity: 0;
  transform: translateX(20px);
  transition:
    opacity 0.78s ease,
    transform 0.78s ease;
}

/* revealed state — patterns fade in, top then bottom */
.sc1__body.is-revealed .sc1__pattern {
  opacity: 1;
  transform: translateX(0);
}
.sc1__body.is-revealed .sc1__pattern:nth-of-type(2) {
  transition-delay: 0.195s;
}

/* revealed state — connector lines grow to full length.
   The transform restores scaleX(1); the translateY stays unchanged. */
.sc1__body.is-revealed .sc1__connector--top {
  transform: translateY(calc(-57px - 90px - var(--sc1-pat-offset))) scaleX(1);
  transition-delay: 0.455s;
}
.sc1__body.is-revealed .sc1__connector--bottom {
  transform: translateY(calc(57px - var(--sc1-pat-offset))) scaleX(1);
  transition-delay: 0.65s;
}

/* revealed state — labels appear */
.sc1__body.is-revealed .sc1__connector-label {
  opacity: 1;
}

@media (prefers-reduced-motion: reduce) {
  .sc1__pattern,
  .sc1__connector--top,
  .sc1__connector--bottom,
  .sc1__connector-label,
  .seam-deco::after,
  .batch__deco-v {
    transition: none;
  }
  /* show everything immediately, no animation, no scaleX(0) */
  .sc1__pattern {
    opacity: 1;
    transform: none;
  }
  .sc1__connector-label {
    opacity: 1;
  }
  .sc1__connector--top {
    transform: translateY(calc(-57px - 90px - var(--sc1-pat-offset)));
  }
  .sc1__connector--bottom {
    transform: translateY(calc(57px - var(--sc1-pat-offset)));
  }
  /* L-shape: show fully, no clip animation */
  .seam-deco::after,
  .batch__deco-v {
    clip-path: inset(0 0 0 0);
  }
}

/* ============================================================
   SECTION 3 — BATCH ALD (SC Qube + SC Optima)
   Two machines side by side, split by a vertical divider.
   Each machine: rotated name label beside its image, with a
   pill button underneath.
   ============================================================ */
.section--batch .section__inner {
  --batch-pad-x: 60px;
  padding: 72px var(--batch-pad-x) 50px;
  gap: 24px;
}

/* top row: two-tone heading on the left, description on the right */
.batch__top {
  display: flex;
  justify-content: space-between;
  align-items: flex-start;
  gap: 60px;
  flex-wrap: nowrap; /* keep heading + description on one row */
}

.batch__heading {
  display: flex;
  flex-direction: column;
  flex: 0 0 auto; /* heading keeps its size (matches sc1) */
}

.batch__heading .sc-heading {
  --sc-heading-size: clamp(32px, 3.4vw, 48px);
  line-height: 1.05;
}

.batch__desc {
  max-width: 620px;
  flex: 0 1 620px; /* shrinkable, matches sc1__desc */
  min-width: 0;
  margin: 6px 0 0;
  font-size: var(--sc-text-md);
  font-weight: var(--sc-weight-regular);
  line-height: 1.4;
  color: var(--sc-gray-2);
}

/* darker lead sentence, matching the SC-1 description treatment */
.batch__desc-lead {
  color: var(--sc-ink);
}

/* two-machine row with a vertical divider between the columns */
.batch__machines {
  display: grid;
  grid-template-columns: 1fr 1fr;
  align-items: stretch;
}

/* the divider: a 1px line on the inner edge of the 2nd column */
.batch__machines > .batch__col + .batch__col {
  border-left: 1px solid #c9c9cc;
  padding-left: 40px; /* breathing room off the divider */
}

/* images are centred in their column (the rotated label is pinned
   absolutely on the left, so it no longer offsets the image) */
.batch__col .batch__img,
.batch__machines > .batch__col + .batch__col .batch__img {
  margin-left: 0;
}

/* one machine column: stage (label + image) on top, button below */
.batch__col {
  display: flex;
  flex-direction: column;
  align-items: center;
  padding: 24px 0 0; /* no side padding so label aligns to column edge */
  gap: 28px;
}

/* stage: the rotated label and the image share ONE grid cell, so the
   cell grows to fit the taller of the two (usually the label) and
   nothing overflows. The image centres in the full column (lining up
   with the centred button below) while the label frames the left edge
   — which for the first column matches the heading's left edge. */
.batch__stage {
  flex: 1 1 auto;
  display: grid;
  grid-template-columns: 1fr;
  place-items: center; /* centre both; label is re-pinned left below */
  width: 100%;
  min-height: 480px;
}

/* rotated vertical machine name — same cell as the image, pinned to the
   left edge. Being in the grid flow, its height keeps the cell tall
   enough that it never overflows into neighbouring content. */
.batch__label {
  /* uses .sc-machine-name component defaults (80px, weight 900) */
  grid-area: 1 / 1;
  justify-self: start;
  writing-mode: vertical-rl;
  transform: rotate(180deg);
  white-space: nowrap;
  margin: 0;
  line-height: 1;
}

.batch__img {
  grid-area: 1 / 1; /* overlaps the label cell → image centres in the column */
  display: flex;
  align-items: center;
  justify-content: center;
  min-width: 0;
}

.batch__img img {
  display: block;
  width: auto;
  height: auto;
  max-width: 100%;
  max-height: 440px;
  object-fit: contain;
}

/* pill button under each machine — wide, centered */
.batch__btn {
  width: 100%;
  max-width: 340px;
}

/* ============================================================
   SECTION 4 — THIN FILM DEVELOPMENT SERVICES
   Heading + description + button stacked on the left, with a
   diagonal-hatched decorative box in the top-right corner.
   ============================================================ */
.section--services .section__inner {
  --services-pad-x: 60px;
  padding: 80px var(--services-pad-x) 90px;
  min-height: clamp(520px, 42vw, 760px); /* fluid section height */
}

/* services section keeps default overflow:hidden (was overflow:visible
   for the old hatch decoration; the wafers frame sits inside the section
   so we don't need to let anything bleed out). */

/* content column, indented from the left like the hero heading */
.services__content {
  display: flex;
  flex-direction: column;
  align-items: flex-start;
  /* dynamically cap text width so it never extends into the bento area.
     Bento width = small col (clamp 160..22vw..320) + large col (clamp 240..32vw..520).
     We subtract that + breathing-room from the section's available width. */
  max-width: calc(100% - clamp(420px, 56vw, 880px));
  margin-left: 0; /* align to section inner edge like other sections */
}

.services__heading {
  --sc-heading-size: clamp(32px, 3.4vw, 48px);
  margin: 0 0 24px;
  line-height: 1.05;
}

.services__desc {
  max-width: 560px;
  margin: 0 0 32px;
  font-size: var(--sc-text-md);
  font-weight: var(--sc-weight-regular);
  line-height: 1.4;
  color: var(--sc-gray-2);
}

/* darker lead sentence, matching the SC-1 description treatment */
.services__desc-lead {
  color: var(--sc-ink);
}

/* the button uses the sc-btn / sc-btn--basic component as-is — no
   width or sizing override here, so it renders at its native size
   (same as the SC-1 "System Overview" button) */

/* bento-style frame group, pinned to the right of the section.
   Two columns × two rows: small square frames occupy the LEFT column
   in rows 1 and 2 (stacked); the LARGE wafers frame occupies the
   RIGHT column spanning both rows. */
.services__frames {
  position: absolute;
  top: 0;
  bottom: 0;
  /* pull out through the section's --services-pad-x padding so the
     right edge of the bento wrapper sits flush with the card's right
     dashed border. The section's overflow:hidden clips any overflow. */
  right: calc(var(--services-pad-x) * -1);
  display: grid;
  grid-template-columns: auto 1fr; /* small squares + bigger wafers */
  grid-template-rows: 1fr 1fr; /* two equal-height rows fill section */
  column-gap: 0; /* left and right columns touch */
  row-gap: 0; /* top and bottom rows touch too */
  /* no extra padding — the bento touches the section's top/bottom/right
     edges directly. Right-pad matches the section's pad-x so the LAST
     frame's dashed right border sits ON the section's right dashed border. */
  padding: 0 var(--services-pad-x) 0 0;
  pointer-events: none;
  z-index: 0;
  box-sizing: border-box;
}

/* each frame draws a dashed rectangle around its image using the
   SAME gradient technique as the section card borders (16px dash +
   10px gap, var(--sc-gray)). The image fills the frame entirely — no inner
   padding — so the picture touches the dashed borders directly. */
.services__frame {
  position: relative;
  /* padding so the dashed border has visible breathing room around
     the image inside — reads as a proper picture frame, not just
     a thin line at the photo edge. */
  padding: 8px;
  box-sizing: border-box;
  overflow: hidden;
  /* prevent the contained image's intrinsic dimensions from
     stretching the frame beyond its declared width/height */
  min-width: 0;
  min-height: 0;
  display: flex;
  flex-direction: column;
  align-items: stretch;
  justify-content: stretch;

  /* dashed rectangle (matches section card border style) */
  background-image:
    linear-gradient(90deg, var(--sc-gray) 0 16px, transparent 16px 26px),
    linear-gradient(90deg, var(--sc-gray) 0 16px, transparent 16px 26px),
    linear-gradient(0deg, var(--sc-gray) 0 16px, transparent 16px 26px),
    linear-gradient(0deg, var(--sc-gray) 0 16px, transparent 16px 26px);
  background-size:
    26px 1px,
    26px 1px,
    1px 26px,
    1px 26px;
  background-position:
    left top,
    left bottom,
    left top,
    right top;
  background-repeat: repeat-x, repeat-x, repeat-y, repeat-y;
}

/* SMALL squares — left column, one per row. Fixed width, height
   stretches to fill the row (1fr of half the section height).
   Width uses clamp() so it scales fluidly between breakpoints. */
.services__frame--sm {
  width: clamp(160px, 22vw, 320px);
}

/* LARGE wafers frame — right column, spans both rows for a tall card.
   Width also clamp()-based so the bento shrinks proportionally. */
.services__frame--lg {
  grid-column: 2;
  grid-row: 1 / 3;
  width: clamp(240px, 32vw, 520px);
}

/* empty placeholder square — subtle grid fill (same 80px / faint
   #2a2a2a hairlines as the section grids), no image content */
.services__frame--empty {
  background-image:
    /* grid: vertical + horizontal hairlines */
    linear-gradient(to right, rgba(42, 42, 42, 0.08) 0 1px, transparent 1px),
    linear-gradient(to bottom, rgba(42, 42, 42, 0.08) 0 1px, transparent 1px),
    /* + the four dashed border gradients (re-stated because this
       overrides the parent's background-image stack) */
    linear-gradient(90deg, var(--sc-gray) 0 16px, transparent 16px 26px),
    linear-gradient(90deg, var(--sc-gray) 0 16px, transparent 16px 26px),
    linear-gradient(0deg, var(--sc-gray) 0 16px, transparent 16px 26px),
    linear-gradient(0deg, var(--sc-gray) 0 16px, transparent 16px 26px);
  background-size:
    80px 80px,
    80px 80px,
    26px 1px,
    26px 1px,
    1px 26px,
    1px 26px;
  background-position:
    left top,
    left top,
    left top,
    left bottom,
    left top,
    right top;
  background-repeat: repeat, repeat, repeat-x, repeat-x, repeat-y, repeat-y;
}

/* image fills the entire frame — no padding, no figure wrapper.
   Touches the dashed border edges directly. */
.services__image {
  display: block;
  width: 100%;
  height: 100%;
  object-fit: cover;
}

/* SHARED BENTO SEAMS — suppress duplicate dashes where adjacent frames
   touch (row-gap:0 + column-gap:0 makes their borders overlap, drawing
   doubled lines). Remove the redundant inner edges so each seam is
   drawn by only ONE frame, not two.

   The dashed border is drawn via background-image gradients on each
   frame; to suppress one edge we just remove the corresponding gradient
   layer by re-declaring background-image without it. */

/* TOP-LEFT (holdwafer) — first .services__frame--sm in the grid.
   Suppress its RIGHT edge (covered by wafers frame's LEFT), its
   BOTTOM (covered by the empty square's TOP), AND its TOP (covered
   by the section card's outer top border). Keep only LEFT. */
.services__frames > .services__frame--sm:not(.services__frame--empty) {
  background-image: linear-gradient(
    0deg,
    var(--sc-gray) 0 16px,
    transparent 16px 26px
  ); /* left only */
  background-size: 1px 26px;
  background-position: left top;
  background-repeat: repeat-y;
}

/* BOTTOM-LEFT (empty hatched square) — keep only LEFT.
   TOP is handled by holdwafer-bottom… wait no — we just removed that.
   Actually: top-edge of empty is the horizontal seam to holdwafer.
   Bottom-edge of empty would overlap with section card's bottom border.
   Right-edge of empty would overlap with wafers' left edge.
   So keep TOP + LEFT only. */
.services__frame--empty {
  background-image:
    /* subtle grid (replaces the diagonal hatch) */
    linear-gradient(to right, rgba(42, 42, 42, 0.08) 0 1px, transparent 1px),
    linear-gradient(to bottom, rgba(42, 42, 42, 0.08) 0 1px, transparent 1px),
    /* TOP edge (horizontal seam to holdwafer) + LEFT edge */
    linear-gradient(90deg, var(--sc-gray) 0 16px, transparent 16px 26px),
    linear-gradient(0deg, var(--sc-gray) 0 16px, transparent 16px 26px);
  background-size:
    80px 80px,
    80px 80px,
    26px 1px,
    1px 26px;
  background-position:
    left top,
    left top,
    left top,
    left top;
  background-repeat: repeat, repeat, repeat-x, repeat-y;
}

/* WAFERS (large right frame) — keep only its LEFT edge (the vertical
   seam between left and right columns). Top, bottom, and right are
   all redundant with the section card's outer border. */
.services__frame--lg {
  background-image: linear-gradient(
    0deg,
    var(--sc-gray) 0 16px,
    transparent 16px 26px
  ); /* left only */
  background-size: 1px 26px;
  background-position: left top;
  background-repeat: repeat-y;
}

/* ============================================================
   SECTION 5 — ENGINEERED IN SWITZERLAND
   Centered heading + description up top, a row of three partner
   logos along the bottom. Solid-border card.
   ============================================================ */
/* Engineered in Switzerland section uses a 60% white wash so the
   page background blends through slightly, reading as a softer band
   than a pure-white card. */
.section--swiss {
  background-color: var(--sc-glass);
}

.section--swiss .section__inner {
  --swiss-pad-x: 72px;
  padding: 64px var(--swiss-pad-x) 72px;
  display: flex;
  flex-direction: column;
  align-items: center;
  gap: 80px;
}

/* centered intro block */
.swiss__intro {
  display: flex;
  flex-direction: column;
  align-items: center;
  text-align: center;
}

.swiss__heading {
  --sc-heading-size: clamp(32px, 3.4vw, 48px);
  margin: 0 0 20px;
  line-height: 1.05;
}

.swiss__desc {
  max-width: 860px;
  margin: 0;
  font-size: var(--sc-text-md);
  font-weight: var(--sc-weight-regular);
  line-height: 1.4;
  color: var(--sc-gray-2);
  text-align: left; /* every line starts at the same left edge */
}

/* darker lead sentence, matching the SC-1 / Batch description treatment */
.swiss__desc-lead {
  color: var(--sc-ink);
}

/* logo row — evenly spread across the width */
.swiss__logos {
  display: flex;
  align-items: center;
  justify-content: space-between;
  gap: 60px;
  width: 100%;
  max-width: 1100px;
  flex-wrap: wrap;
}

.swiss__logo {
  display: flex;
  align-items: center;
  justify-content: center;
  flex: 1 1 0;
  min-width: 0;
}

.swiss__logo img {
  display: block;
  width: auto;
  height: 88px; /* uniform logo height */
  max-width: 100%;
  object-fit: contain;
}

/* ============================================================
   SECTION 6 — DISCUSS YOUR APPLICATION
   Large two-line heading on the left, description + dark button
   on the right. Solid-border card.
   ============================================================ */
.section--contact .section__inner {
  --contact-pad-x: 60px;
  padding: 72px var(--contact-pad-x) 80px;
  display: flex;
  flex-direction: row;
  align-items: flex-start;
  justify-content: space-between;
  gap: 60px; /* same gap as sc1/batch top rows */
}

.contact__heading {
  --sc-heading-size: clamp(36px, 3.8vw, 52px);
  margin: 0; /* align to section inner edge like other sections */
  line-height: 1.05;
  flex: 0 0 auto;
}

/* right column: description on top, button left-aligned to the text */
.contact__right {
  display: flex;
  flex-direction: column;
  align-items: flex-start; /* button aligns to start of the text */
  gap: 28px;
  flex: 0 1 620px; /* matches sc1__desc / batch__desc width */
  min-width: 0;
}

.contact__desc {
  margin: 0;
  width: 100%; /* fills the column; text reads left-aligned */
  font-size: var(--sc-text-md);
  font-weight: var(--sc-weight-regular);
  line-height: 1.4;
  color: var(--sc-gray-2);
}

/* darker accent sentence, matching the other section descriptions */
.contact__desc-lead {
  color: var(--sc-ink);
}

/* ============================================================
   PAGE-EDGE RAILS — re-enabled (the two tall dashed rectangles
   framing the page sides). They sit in the margins just outside
   the section cards. Note: where a rail's inner edge meets a
   section-card border the dashes can double up slightly.
   (Hidden on phones via the rails component's own ≤720px rule.)
   ============================================================ */
.sc-rails {
  display: block;
}

/* ============================================================
   SECTION-CARD BOUNDARY OVERLAPS
   When two card-bordered sections sit next to each other in the
   page flow, both draw a horizontal line at the seam → doubled.
   Rule: at any seam where one side is DASHED and the other is
   SOLID/WHITE, only the dashed border wins. At a solid↔white
   seam (both have solid 1px borders), suppress one side.

   Card variants involved: .sc-card--solid, .sc-card--dashed,
   .sc-card--white. Borders come from the cards component.
   ============================================================ */

/* ---- DASHED wins over its neighbours ----
   Hide the adjacent border-edge of whichever solid/white card
   sits directly above OR below a dashed card. */
.page__sections > .sc-card--solid:has(+ .sc-card--dashed),
.page__sections > .sc-card--white:has(+ .sc-card--dashed) {
  border-bottom-color: transparent;
}
.page__sections > .sc-card--dashed + .sc-card--solid,
.page__sections > .sc-card--dashed + .sc-card--white {
  border-top-color: transparent;
}

/* ---- SOLID vs WHITE seam ----
   Both have solid 1px borders. Hide the BOTTOM of whichever sits
   above so only the next section's top border draws the seam. */
.page__sections > .sc-card--solid:has(+ .sc-card--white),
.page__sections > .sc-card--white:has(+ .sc-card--solid) {
  border-bottom-color: transparent;
}

/* ---- DASHED vs DASHED seam ----
   Two dashed cards both draw their dashed edge at the same seam.
   Dashed cards draw their dashes via background-image (border:none),
   so suppress the BOTTOM edge of the upper card by zeroing its
   per-edge stroke colour — the lower card's TOP dashes then draw
   the single seam line. The second selector covers the case where a
   .seam-deco element sits between the two dashed cards (SC-1 / Batch),
   which breaks the direct adjacent-sibling match. */
.page__sections > .sc-card--dashed:has(+ .sc-card--dashed),
.page__sections > .sc-card--dashed:has(+ .seam-deco + .sc-card--dashed) {
  --sc-card-stroke-bottom: transparent;
}

/* ============================================================
   SEAM DECORATION — pattern straddling the SC-1 / Batch ALD join
   Lives between the two sections in the flow (so it is NOT clipped
   by either section's overflow:hidden). Zero height in flow; the
   image bleeds up into SC-1 and down into Batch ALD, pinned right.
   ============================================================ */
.seam-deco {
  position: relative;
  height: 0; /* takes no vertical space in the stack */
  z-index: 3; /* above section content */
  pointer-events: none;
  width: 100%;
  max-width: 1680px; /* MUST match the section cards' --sc-card-max (1680px, set on
                                .section) so both deco arms anchor to the same right edge and
                                form an L — not a T — on wide screens */
}

.seam-deco img {
  display: none; /* using a tiled background instead (see below) */
}

.seam-deco {
  /* horizontal band on the seam line, tiled texture (no stretch/crop) */
  position: relative;
  height: 0;
}
.seam-deco::after {
  content: "";
  position: absolute;
  /* right edge sits --deco-inset in from the dashed border; the vertical
     arm (.batch__deco-v) uses the same --deco-inset so the two arms line up. */
  right: var(--deco-inset);
  top: 50%;
  transform: translateY(-50%);
  width: var(--deco-len);
  height: var(--deco-thick);
  /* SCROLL REVEAL — start fully clipped from the bottom (height=0 from top),
     then expand downward to full height when .seam-deco.is-revealed is set.
     The grain pattern doesn't change; the mask just uncovers more of it,
     producing an atom-by-atom top→down growth effect. */
  clip-path: inset(0 0 100% 0);
  transition: clip-path 2.6s cubic-bezier(0.22, 0.61, 0.36, 1);
  /* grain: a single seamless tiling PNG (baked once) instead of ~900 live
     radial-gradients — paints essentially free, so the clip-path reveal
     animates smoothly. The pattern is static; the mask just uncovers it. */
  background-color: var(--sc-surface);
  background-image: var(--grain);
  background-size: 100px 100px;
  background-repeat: repeat;
}

/* revealed: clip-path opens top → down, dots appear sequentially */
.seam-deco.is-revealed::after {
  clip-path: inset(0 0 0 0);
}

/* vertical copy of the same pattern, in its NATURAL (tall) orientation,
   running down the right edge of the Batch ALD section. Together with
   the rotated seam band above it this forms the L / corner shape. */
.batch__deco-v {
  position: absolute;
  top: 0;
  /* right edge sits --deco-inset in from the dashed border — the SAME
     reference as the horizontal arm — plus a small --deco-v-shift to line
     the two arms up. Deliberately NOT tied to --batch-pad-x (which changes
     per breakpoint), so the corner stays aligned at every size. */
  right: calc(var(--deco-inset) + var(--deco-v-shift, 0px));
  width: var(--deco-thick); /* same thickness as seam band */
  height: var(--deco-len); /* same length as seam band */
  pointer-events: none;
  z-index: 0;
  /* SCROLL REVEAL — start fully clipped from the left (width=0 from right),
     then expand leftward to full width when .batch__deco-v.is-revealed is set.
     This produces an atom-by-atom right→left growth effect. */
  clip-path: inset(0 0 0 100%);
  transition: clip-path 2.6s cubic-bezier(0.22, 0.61, 0.36, 1);
  /* same Poisson-disk grain as the seam band — see above */
  background-color: var(--sc-surface);
  background-image: var(--grain);
  background-size: 100px 100px;
  background-repeat: repeat;
}

/* revealed: clip-path opens right → left, dots appear sequentially.
   Grows simultaneously with the horizontal seam band to form the L. */
.batch__deco-v.is-revealed {
  clip-path: inset(0 0 0 0);
}

.batch__deco-v img {
  display: none; /* using the tiled background above instead */
}

/* ============================================================
   RESPONSIVE
   The desktop layout uses absolute positioning for the exploded
   machine (.sc1__machine) and the side patterns (.sc1__patterns).
   At each breakpoint below we RESET those back into normal grid
   flow before re-laying things out — otherwise the absolute
   positioning leaks across breakpoints.
   ============================================================ */

/* ---------- LARGE DESKTOP / LAPTOP (<= 1400px) ----------
   Tighten the oversized columns so nothing gets clipped on
   narrower desktops, while keeping the same visual structure. */
@media (max-width: 1400px) {
  .section__inner {
    padding: 0 80px;
  }
  .hero__heading {
    margin-left: 14px;
  }
  .hero__footer {
    padding: 0 14px 60px;
  }

  .sc1__body {
    grid-template-columns: 80px 360px 1fr 240px;
    min-height: 784px; /* pushed up; fits the smaller machine + CTA */
    --sc1-center: 320px;
  }
  /* CTA sits below the 560px-tall exploded machine at this width */
  .sc1__cta {
    top: calc(var(--sc1-center) + 300px);
  }
  /* scale the exploded machine down as the screen shrinks */
  .sc1__machine-main {
    max-height: 560px;
  }
  /* hide the small whole-machine image at this width; CTA still shows */
  .sc1__whole img {
    display: none;
  }
  .sc1__patterns {
    width: 240px;
  }
  /* shrink both bands together by changing the shared length */
  .page {
    --deco-len: 330px;
  }
}

/* ---------- TABLET (<= 1100px) ----------
   Hide sc1whole entirely. Bring the machine and patterns back
   into the grid flow so they sit in tidy columns. */
@media (max-width: 1100px) {
  .section__inner {
    padding: 0 48px;
  }
  .section--hero .section__inner {
    min-height: 0; /* pinned hero fills the viewport; no fixed min-height */
  }

  .hero__heading {
    margin-top: 140px;
    margin-left: 14px;
  }
  .hero__footer {
    margin-top: 120px;
    padding: 0 14px 48px;
  }

  /* SC-1 at tablet: not enough room for the desktop side-by-side
     layout (machine + right-pinned patterns + CTA), so hide the
     patterns + connector lines and stack label → machine → CTA. */
  .section--sc1 .section__inner {
    --sc1-pad-x: 40px;
    padding: 32px var(--sc1-pad-x) 24px;
  }

  /* hide patterns, connector lines and the small whole-machine image */
  .sc1__patterns {
    display: none;
  }
  .sc1__connector {
    display: none;
  }
  .sc1__whole img {
    display: none;
  }

  /* layout: rotated SC-1 label beside the exploded machine (like the
     Batch ALD machines), CTA stacked underneath */
  .sc1__body {
    position: relative;
    display: grid;
    grid-template-columns: auto 1fr;
    grid-template-areas:
      "label   machine"
      "cta     cta";
    column-gap: 24px;
    row-gap: 32px;
    align-items: center;
    min-height: 0;
  }
  .sc1__left {
    grid-area: label;
    display: flex;
    align-items: center;
    justify-content: center;
    width: auto;
  }
  .sc1__label-wrap {
    flex: 0 0 auto;
    display: flex;
    align-items: center;
    justify-content: center;
  }
  .sc1__label {
    writing-mode: vertical-rl;
    transform: rotate(180deg);
    white-space: nowrap;
    line-height: 1;
    margin: 0;
  }
  .sc1__machine {
    grid-area: machine;
    position: static;
    top: auto;
    left: auto;
    transform: none;
    pointer-events: auto;
    display: flex;
    width: 100%;
    justify-content: center;
  }
  .sc1__machine-main {
    max-height: 520px;
    max-width: 100%;
  }
  .sc1__whole {
    grid-area: cta;
    display: block;
    width: 100%;
  }
  .sc1__cta {
    position: static;
    top: auto;
    left: auto;
    right: auto;
    padding-top: 0;
    align-items: flex-start;
  }
  .sc1__cta-text {
    text-align: left;
  }

  /* batch: stack heading + description vertically at this width (no room
     for side-by-side; the description would squeeze into a narrow column) */
  .section--batch .section__inner {
    --batch-pad-x: 40px;
    padding: 32px var(--batch-pad-x) 40px;
  }
  .batch__top {
    flex-direction: column;
    gap: 16px;
  }
  .batch__desc {
    flex: 0 0 auto; /* clear the 620px flex-basis (acts as height in column) */
    max-width: 620px;
  }
  /* same treatment for SC-1 top row */
  .sc1__top {
    flex-direction: column;
    gap: 16px;
  }
  .sc1__desc {
    flex: 0 0 auto;
    max-width: 620px;
  }
  .batch__col {
    padding: 16px 24px 0;
    gap: 20px;
  }
  .batch__stage {
    min-height: 300px;
  }
  .batch__img img {
    max-height: 360px;
  }
  /* shrink both bands together via the shared variables */
  .page {
    --deco-len: 300px;
    --deco-thick: 70px;
  }

  /* services: at tablet sizes and below, switch straight to the
     holdwafer-only banner layout. The wafers frame and the empty
     hatched square hide; the holdwafer frame stretches edge-to-edge
     above the text — same look as mobile, just at tablet padding. */
  .section--services .section__inner {
    --services-pad-x: 48px;
    padding: 56px var(--services-pad-x) 64px;
    min-height: 0;
  }
  .services__content {
    margin-left: 0;
    max-width: none; /* drop the desktop dynamic constraint */
  }
  .services__frames {
    position: static;
    order: -1;
    display: block; /* override desktop grid */
    right: auto;
    top: auto;
    margin: -56px calc(var(--services-pad-x) * -1) 32px;
    padding: 0;
    column-gap: 0;
    row-gap: 0;
  }
  /* hide the wafers frame and the empty hatched square */
  .services__frame--lg,
  .services__frame--empty {
    display: none;
  }
  /* holdwafer frame fills the full width edge-to-edge */
  .services__frame--sm {
    width: auto;
    height: 320px;
    padding: 8px;
  }
  .services__frame--sm .services__image {
    width: 100%;
    height: 100%;
    object-fit: cover;
  }

  /* swiss: tighten padding and gap */
  .section--swiss .section__inner {
    --swiss-pad-x: 48px;
    padding: 56px var(--swiss-pad-x) 64px;
    gap: 60px;
  }
  .swiss__logos {
    gap: 40px;
  }
  .swiss__logo img {
    height: 72px;
  }

  /* contact: stack vertically like phone — heading on top, desc + button below */
  .section--contact .section__inner {
    --contact-pad-x: 48px;
    padding: 56px var(--contact-pad-x) 64px;
    flex-direction: column;
    align-items: flex-start;
    gap: 32px;
  }
  .contact__heading {
    --sc-heading-size: clamp(36px, 3.8vw, 52px);
    margin-left: 0;
  }
  .contact__right {
    align-items: flex-start;
    flex: 1 1 auto;
    width: 100%;
  }
}

/* ---------- MOBILE (<= 720px) ----------
   Single column; everything stacks. sc1whole stays hidden. */
@media (max-width: 720px) {
  /* GLOBAL (all pages): give content sections more vertical breathing
     room on mobile. Targets every section EXCEPT the first SECTION on each
     page (the header/hero), which keeps its padding-top:0 menu alignment.
     Uses :first-of-type (not :first-child) because on index the decorative
     rails <div> is the first child of .page__sections, so the hero is not
     :first-child — :first-of-type still correctly matches the first section.
     Higher specificity than the per-section rules so it wins everywhere;
     only top/bottom are set, so each section keeps its own side padding. */
  .page__sections > .section:not(:first-of-type) > .section__inner {
    padding-top: 48px;
    padding-bottom: 48px;
  }

  .section__inner {
    padding: 0 20px;
  }

  /* hero */
  .section--hero .section__inner {
    min-height: 0; /* pinned hero fills the viewport; no fixed min-height */
  }

  .hero__heading {
    margin-top: 120px;
    margin-left: 14px;
    margin-right: 14px;
  }
  .hero__footer {
    flex-direction: column;
    align-items: stretch; /* full width so the CTA can sit right */
    gap: 24px;
    margin-top: 80px;
    padding: 0 14px 20px; /* 14px sides match .sc-page padding; smaller bottom = lower */
  }
  /* button aligns to the left edge (same as the text) */
  .hero__cta {
    align-self: flex-start;
  }
  .hero__text {
    font-size: var(--sc-text-base);
  }

  /* sc1 */
  .section--sc1 .section__inner {
    --sc1-pad-x: 20px;
    padding: 24px var(--sc1-pad-x);
  }
  .sc1__top {
    flex-direction: column;
    gap: 16px;
  }
  .sc1__heading .sc-heading {
  }
  .sc1__desc {
    flex: 0 0 auto; /* clear the 620px flex-basis (which acts as height in column) */
    max-width: none;
    font-size: var(--sc-text-base);
  }

  /* hide the ald/pvd pattern frames on mobile */
  .sc1__patterns {
    display: none;
  }

  /* hide the chamber→pattern connector lines on mobile */
  .sc1__connector {
    display: none;
  }

  /* layout: rotated SC-1 label beside the exploded machine (like the
     Batch ALD machines in the next section), CTA stacked underneath */
  .sc1__body {
    position: relative;
    display: grid;
    /* 1fr | auto | 1fr → the machine (auto, middle) is centered in the
       full section width; the label sits in the left 1fr and hugs the
       machine's left edge (justify-self:end below). */
    grid-template-columns: 1fr auto 1fr;
    grid-template-areas:
      "label   machine ."
      "cta     cta     cta";
    column-gap: 16px;
    row-gap: 24px;
    align-items: center;
    min-height: 0;
  }

  /* SC-1 label rotated vertical, flush to the left of the machine */
  .sc1__left {
    grid-area: label;
    display: flex;
    align-items: center;
    justify-content: center;
    width: auto;
  }
  .sc1__label-wrap {
    flex: 0 0 auto;
    display: flex;
    align-items: center;
    justify-content: center;
  }
  .sc1__label {
    --sc-machine-name-size: 56px;
    writing-mode: vertical-rl;
    transform: rotate(180deg);
    white-space: nowrap;
    line-height: 1;
    margin: 0;
  }

  /* the sc1whole column holds the CTA on mobile; its image is hidden */
  .sc1__whole {
    grid-area: cta;
    display: block;
    width: 100%;
  }
  .sc1__whole img {
    display: none;
  }
  .sc1__cta {
    position: static;
    top: auto;
    left: auto;
    right: auto;
    padding-top: 0;
    width: 340px; /* column = text width, centered → text stays put */
    max-width: 100%;
    margin-inline: auto;
    align-items: flex-start; /* button shares the text's left edge */
    transform: translateX(30px); /* keep the rightward nudge (phone only) */
  }
  .sc1__cta .sc-btn {
    /* don't center this button (override the global mobile rule) */
    margin-left: 0;
    margin-right: 0;
  }
  .sc1__cta-text {
    text-align: left;
  }

  /* exploded machine sits beside the rotated label, fills the row */
  .sc1__machine {
    grid-area: machine;
    position: static;
    top: auto;
    left: auto;
    transform: none;
    pointer-events: auto;
    display: flex;
    width: 100%;
    justify-content: center;
  }
  .sc1__machine-main {
    max-height: 420px;
    max-width: 100%;
  }
  /* TASK1 — center the exploded machine: it sits in the auto middle column
     flanked by two equal 1fr columns, so its content stays dead-centre;
     the label is pushed to the right of its 1fr column to hug the machine. */
  .sc1__left {
    justify-self: end;
  }
  .sc1__machine {
    width: auto;
  }

  /* batch: stack the two machines vertically; divider becomes
     a horizontal line between them */
  .section--batch .section__inner {
    --batch-pad-x: 20px;
    padding: 24px var(--batch-pad-x) 32px;
  }
  .batch__top {
    flex-direction: column;
    gap: 16px;
  }
  .batch__heading .sc-heading {
  }
  .batch__desc {
    flex: 0 0 auto; /* clear the 620px flex-basis (acts as height in column) */
    max-width: none;
    font-size: var(--sc-text-base);
  }
  .batch__machines {
    grid-template-columns: 1fr;
  }
  /* replace the vertical divider with a horizontal one; reset the
     desktop left padding so both labels align at the same left edge */
  .batch__machines > .batch__col + .batch__col {
    border-left: 0;
    border-top: 1px solid #c9c9cc;
    padding-left: 0;
  }
  /* reset desktop image margins so Qube + Optima sit identically */
  .batch__col .batch__img,
  .batch__machines > .batch__col + .batch__col .batch__img {
    margin-left: 0;
  }
  .batch__col {
    padding: 28px 8px 0;
  }
  /* On a narrow stacked column the grid-overlap (desktop) would let the
     wide machine image cover the label, so switch to a flex ROW here:
     label sits BESIDE the image and the two centre together as a group. */
  .batch__stage {
    display: flex;
    align-items: center;
    justify-content: center;
    min-height: 0;
    gap: 16px;
  }
  /* content-width so the label+image pair centres (no flex-grow eating
     the free space, no grid-cell overlap) */
  .batch__img {
    flex: 0 1 auto;
  }
  .batch__img img {
    max-height: 320px;
  }
  .batch__label {
    --sc-machine-name-size: 48px;
  }
  /* keep the button centred in the column, aligned with the machine above */
  .batch__btn {
    max-width: none;
    margin-inline: auto;
  }

  /* hide both decorations on mobile — too cramped to fit cleanly */
  .seam-deco,
  .batch__deco-v {
    display: none;
  }

  /* services at mobile: smaller padding + heading + image height.
     Layout already swapped to holdwafer-banner at the tablet breakpoint
     above; here we just tighten everything down for phone-sized viewports. */
  .section--services .section__inner {
    --services-pad-x: 20px;
    padding: 40px var(--services-pad-x) 48px;
    min-height: 0;
  }
  .services__heading {
  }
  .services__desc {
    font-size: var(--sc-text-base);
  }
  .services__frames {
    margin: -40px calc(var(--services-pad-x) * -1) 32px;
  }
  .services__frame--sm {
    height: 240px;
    padding: 6px;
  }

  /* swiss: stack logos vertically, shrink heading */
  .section--swiss .section__inner {
    --swiss-pad-x: 20px;
    padding: 40px var(--swiss-pad-x) 48px;
    gap: 48px;
  }
  .swiss__heading {
  }
  .swiss__desc {
    font-size: var(--sc-text-base);
  }
  .swiss__logos {
    flex-direction: column;
    gap: 36px;
  }
  .swiss__logo {
    flex: 0 0 auto;
  }
  .swiss__logo img {
    height: 64px;
  }

  /* contact: stack into one column on mobile */
  .section--contact .section__inner {
    --contact-pad-x: 20px;
    padding: 40px var(--contact-pad-x) 48px;
    flex-direction: column;
    align-items: flex-start;
    gap: 32px;
  }
  .contact__heading {
    margin-left: 0;
  }
  .contact__right {
    align-items: flex-start;
    flex: 1 1 auto;
    width: 100%;
  }
  .contact__desc {
    font-size: var(--sc-text-base);
  }
}

/* ============================================================
   MENU: panel-title link
   Inner <a> inside .sc-panel-title (used for the Contact panel
   so the title doubles as a navigation link). Inherits the title
   font/colour so the label still looks like the other panels.
   ============================================================ */
.sc-panel-link {
  color: inherit;
  text-decoration: none;
  transition: opacity 0.234s ease;
}
.sc-panel-link:hover {
  opacity: 0.7;
}
/* ============================================================
   MOBILE: center all content buttons (the .sc-menu toggle and
   the .sc-totop button are not .sc-btn, so they stay as-is)
   ============================================================ */
@media (max-width: 720px) {
  .sc-btn {
    display: flex;
    width: -moz-fit-content;
    width: fit-content;
    margin-left: auto;
    margin-right: auto;
  }
}
