/* Generated by scripts/build-css-bundles.mjs from styles.css, baseline-integration.css, campus-experience.css, lenis.css, campus-baseline.css: edit those files, then rerun it. */
/* assets/css/styles.css */
/* Manrope és Sora helyi, változtatható súlyú WOFF2-fájlokból (latin és latin-ext), SIL OFL 1.1.
   Nincs külső betűtípus-kérés; lásd THIRD_PARTY_NOTICES.md. */

@font-face {
  font-family: "Manrope";
  font-style: normal;
  font-weight: 400 800;
  font-display: swap;
  src: url("../fonts/manrope-latin-ext.woff2") format("woff2");
  unicode-range: U+0100-02BA, U+02BD-02C5, U+02C7-02CC, U+02CE-02D7, U+02DD-02FF, U+0304, U+0308, U+0329, U+1D00-1DBF, U+1E00-1E9F, U+1EF2-1EFF, U+2020, U+20A0-20AB, U+20AD-20C4, U+2113, U+2C60-2C7F, U+A720-A7FF;
}

@font-face {
  font-family: "Manrope";
  font-style: normal;
  font-weight: 400 800;
  font-display: swap;
  src: url("../fonts/manrope-latin.woff2") format("woff2");
  unicode-range: U+0000-00FF, U+0131, U+0152-0153, U+02BB-02BC, U+02C6, U+02DA, U+02DC, U+0304, U+0308, U+0329, U+2000-206F, U+20AC, U+2122, U+2191, U+2193, U+2212, U+2215, U+FEFF, U+FFFD;
}

@font-face {
  font-family: "Sora";
  font-style: normal;
  font-weight: 400 700;
  font-display: swap;
  src: url("../fonts/sora-latin-ext.woff2") format("woff2");
  unicode-range: U+0100-02BA, U+02BD-02C5, U+02C7-02CC, U+02CE-02D7, U+02DD-02FF, U+0304, U+0308, U+0329, U+1D00-1DBF, U+1E00-1E9F, U+1EF2-1EFF, U+2020, U+20A0-20AB, U+20AD-20C4, U+2113, U+2C60-2C7F, U+A720-A7FF;
}

@font-face {
  font-family: "Sora";
  font-style: normal;
  font-weight: 400 700;
  font-display: swap;
  src: url("../fonts/sora-latin.woff2") format("woff2");
  unicode-range: U+0000-00FF, U+0131, U+0152-0153, U+02BB-02BC, U+02C6, U+02DA, U+02DC, U+0304, U+0308, U+0329, U+2000-206F, U+20AC, U+2122, U+2191, U+2193, U+2212, U+2215, U+FEFF, U+FFFD;
}

:root {
  color-scheme: light;
  --bg: #fbfdf9;
  --paper: #ffffff;
  --paper-2: #f1f8f3;
  --ink: #17211f;
  --muted: #65736f;
  --line: rgba(61, 117, 108, 0.16);
  --green: #3D756C;
  --mint: #B7DDC8;
  --black: #14201d;
  --shadow: 0 28px 85px rgba(45, 84, 76, 0.15);
  --max: 1680px;
  --content-pad: clamp(18px, 4.4vw, 76px);
  --cut-sm: 13px;
  --cut-md: 24px;
  --cut-lg: 42px;
}

* {
  box-sizing: border-box;
}

html {
  overflow-x: clip;
  scroll-behavior: smooth;
}

body {
  margin: 0;
  overflow-x: clip;
  background:
    radial-gradient(circle at 8% 12%, rgba(183, 221, 200, 0.54), transparent 31rem),
    radial-gradient(circle at 92% 2%, rgba(61, 117, 108, 0.11), transparent 34rem),
    linear-gradient(180deg, #fbfdf9 0%, #f5faf6 46%, #ffffff 100%);
  color: var(--ink);
  font-family: Manrope, ui-sans-serif, system-ui, -apple-system, BlinkMacSystemFont, "Segoe UI", sans-serif;
  font-size: 16px;
  line-height: 1.82;
}

/* Lock scrolling on the root, not on body: with html's overflow-x:clip a
   hidden body becomes its own scroll container and the sticky header (and
   the menu under it) jump back to the top of the document. */
html:has(> body.menu-open) {
  overflow: hidden;
}

img {
  display: block;
  max-width: 100%;
}

a {
  color: inherit;
  text-decoration: none;
}

main a:not([class]),
.card-link,
.contact-card-body a,
.footer-grid a {
  color: var(--green);
  background-image: linear-gradient(currentColor, currentColor);
  background-position: 0 calc(100% - 0.04em);
  background-repeat: no-repeat;
  background-size: 48% 1px;
  text-decoration: none;
  transition: background-size 220ms ease, color 180ms ease;
}

main a:not([class]):hover,
.card-link:hover,
.contact-card-body a:hover,
.footer-grid a:hover {
  color: var(--green);
  background-size: 100% 1px;
}

p {
  margin: 0 0 1rem;
  color: var(--muted);
}

ul {
  margin: 0;
  padding: 0;
  list-style: none;
}

.skip-link {
  position: absolute;
  left: -999px;
  top: 10px;
  z-index: 100;
  padding: 10px 14px;
  background: #fff;
  color: #000;
}

.skip-link:focus {
  left: 10px;
}

.site-header {
  position: sticky;
  top: 0;
  z-index: 50;
  border-bottom: 1px solid var(--line);
  background: rgba(255, 255, 255, 0.82);
  backdrop-filter: blur(20px);
  transition: background-color 0.6s ease;
}

/* Solid white at the very top of the page; once the page scrolls (baseline.js sets
   data-scrolled) it fades to the slightly translucent glass. Without JS it stays white.
   The blur behind solid white shows nothing, and it is a costly first paint for a
   phone that draws without a GPU (PageSpeed's test machine). */
html:not([data-scrolled]) .site-header {
  background-color: #fff;
  backdrop-filter: none;
}

.nav {
  display: flex;
  align-items: center;
  justify-content: space-between;
  min-height: 88px;
  width: min(var(--max), calc(100% - var(--content-pad) * 2));
  margin: 0 auto;
}

.brand {
  display: inline-flex;
  align-items: center;
  gap: 12px;
}

.brand-mark {
  width: 124px;
  height: auto;
  border: 0;
  background: transparent;
  box-shadow: none;
}

.brand small {
  display: block;
  color: var(--muted);
  font-size: 0.7rem;
  font-weight: 700;
  letter-spacing: 0.08em;
}

.nav-links {
  display: flex;
  align-items: center;
  gap: clamp(14px, 1.55vw, 30px);
  font-size: clamp(0.7rem, 0.72vw, 0.78rem);
  font-weight: 800;
  text-transform: uppercase;
}

.nav-links a {
  position: relative;
  color: #22322f;
}

.nav-links a:not(.nav-cta)::after {
  position: absolute;
  left: 0;
  bottom: -10px;
  width: 100%;
  height: 2px;
  background: var(--green);
  content: "";
  transform: scaleX(0);
  transform-origin: left;
  transition: transform 220ms ease;
}

.nav-links a:not(.nav-cta):hover::after,
.nav-links a:not(.nav-cta)[aria-current="page"]::after {
  transform: scaleX(1);
}

.nav-links .nav-cta,
.nav-links .nav-cta:hover {
  color: #fff;
}

.button,
.nav-cta {
  display: inline-flex;
  align-items: center;
  justify-content: center;
  position: relative;
  min-height: 46px;
  padding: 0 24px;
  border: 0;
  background: var(--green);
  --cut-line: var(--green);
  --cut-size: var(--cut-sm);
  color: #fff;
  font-size: 0.76rem;
  font-weight: 800;
  text-transform: uppercase;
  clip-path: polygon(0 0, calc(100% - var(--cut-sm)) 0, 100% var(--cut-sm), 100% 100%, var(--cut-sm) 100%, 0 calc(100% - var(--cut-sm)));
  overflow: hidden;
  isolation: isolate;
  transition: transform 180ms ease, background 180ms ease, border-color 180ms ease, box-shadow 180ms ease;
}

.button::before,
.nav-cta::before {
  display: none;
}

.button::after,
.nav-cta::after,
.accordion-item::before,
.footer-quick-item::after {
  position: absolute;
  inset: 0;
  z-index: 2;
  background:
    linear-gradient(var(--cut-line, rgba(61, 117, 108, 0.20)), var(--cut-line, rgba(61, 117, 108, 0.20))) top left / calc(100% - var(--cut-size, 24px)) 1px no-repeat,
    linear-gradient(var(--cut-line, rgba(61, 117, 108, 0.20)), var(--cut-line, rgba(61, 117, 108, 0.20))) bottom right / 1px calc(100% - var(--cut-size, 24px)) no-repeat,
    linear-gradient(to bottom left, transparent calc(50% - 0.8px), var(--cut-line, rgba(61, 117, 108, 0.20)) calc(50% - 0.8px) calc(50% + 0.8px), transparent calc(50% + 0.8px)) top right / var(--cut-size, 24px) var(--cut-size, 24px) no-repeat,
    linear-gradient(var(--cut-line, rgba(61, 117, 108, 0.20)), var(--cut-line, rgba(61, 117, 108, 0.20))) bottom right / calc(100% - var(--cut-size, 24px)) 1px no-repeat,
    linear-gradient(var(--cut-line, rgba(61, 117, 108, 0.20)), var(--cut-line, rgba(61, 117, 108, 0.20))) top left / 1px calc(100% - var(--cut-size, 24px)) no-repeat,
    linear-gradient(to bottom left, transparent calc(50% - 0.8px), var(--cut-line, rgba(61, 117, 108, 0.20)) calc(50% - 0.8px) calc(50% + 0.8px), transparent calc(50% + 0.8px)) bottom left / var(--cut-size, 24px) var(--cut-size, 24px) no-repeat;
  content: "";
  pointer-events: none;
}

.button:hover,
.nav-cta:hover {
  transform: translateY(-2px);
  background: var(--black);
  --cut-line: var(--black);
  color: #fff;
  box-shadow: 0 16px 38px rgba(61, 117, 108, 0.22);
}

.button:hover::before,
.nav-cta:hover::before {
  display: none;
}

.button.secondary {
  background: rgba(255, 255, 255, 0.58);
  color: var(--ink);
  --cut-line: rgba(61, 117, 108, 0.32);
}

.button.secondary:hover {
  background: rgba(183, 221, 200, 0.24);
  --cut-line: var(--green);
  color: var(--green);
}

.menu-toggle {
  display: none;
  width: 44px;
  height: 44px;
  border: 1px solid var(--line);
  background: #fff;
  color: var(--green);
}

.menu-toggle span {
  display: block;
  width: 18px;
  height: 2px;
  margin: 5px auto;
  background: currentColor;
}

.side-rail {
  display: none;
}

.side-rail a {
  color: var(--green);
}

.side-rail + main {
  margin-left: 0;
}

.hero {
  position: relative;
  min-height: calc(100vh - 88px);
  overflow: hidden;
  background:
    linear-gradient(90deg, rgba(251, 253, 249, 0.98) 0 38%, rgba(251, 253, 249, 0.34) 56%, rgba(251, 253, 249, 0.10)),
    radial-gradient(circle at 19% 34%, rgba(183, 221, 200, 0.58), transparent 28rem),
    url("../images/halvany-alaprajz-hatter.webp") left 22% bottom -40px / 560px auto no-repeat,
    #fbfdf9;
  color: var(--ink);
}

.hero.short {
  min-height: 68vh;
}

.hero::before {
  position: absolute;
  inset: 0;
  background-image:
    linear-gradient(rgba(61, 117, 108, 0.055) 1px, transparent 1px),
    linear-gradient(90deg, rgba(61, 117, 108, 0.055) 1px, transparent 1px);
  background-size: 76px 76px;
  mask-image: linear-gradient(90deg, rgba(0, 0, 0, 0.34), transparent 68%);
  content: "";
  pointer-events: none;
}

.hero::after {
  position: absolute;
  inset: 0;
  background:
    linear-gradient(90deg, rgba(251, 253, 249, 0.98) 0 34%, rgba(251, 253, 249, 0.58) 52%, rgba(251, 253, 249, 0.04)),
    linear-gradient(180deg, rgba(251, 253, 249, 0), rgba(251, 253, 249, 0.30));
  content: "";
  pointer-events: none;
}

.hero-media {
  position: absolute;
  top: 0;
  right: 0;
  bottom: 0;
  left: 42%;
  clip-path: polygon(7% 0, 100% 0, 100% 100%, 0 100%);
}

.hero-media img {
  width: 100%;
  height: 100%;
  object-fit: cover;
  object-position: left center;
  opacity: 0.98;
  filter: saturate(0.88) contrast(1.02) brightness(1.04);
  animation: slowScale 16s ease-in-out infinite alternate;
  will-change: transform;
}

.hero-content {
  position: relative;
  z-index: 1;
  display: grid;
  align-content: center;
  min-height: inherit;
  width: min(var(--max), calc(100% - var(--content-pad) * 2));
  margin: 0 auto;
  padding: clamp(82px, 8vw, 126px) 0 clamp(82px, 8vw, 130px);
}

.hero-layout {
  grid-template-columns: minmax(0, 0.88fr) minmax(320px, 0.48fr);
  gap: clamp(36px, 7vw, 118px);
  align-items: center;
}

.hero-copy {
  max-width: 760px;
}

.eyebrow {
  display: inline-flex;
  align-items: center;
  gap: 10px;
  margin-bottom: 18px;
  color: var(--green);
  font-size: 0.78rem;
  font-weight: 800;
  letter-spacing: 0.13em;
  text-transform: uppercase;
}

.eyebrow::before {
  width: 34px;
  height: 1px;
  background: currentColor;
  content: "";
}

h1,
h2,
h3 {
  margin: 0;
  color: inherit;
  font-family: Sora, Manrope, sans-serif;
  line-height: 1.13;
  letter-spacing: -0.02em;
}

h1 {
  max-width: 890px;
  font-size: clamp(3.2rem, 6.6vw, 7.1rem);
  font-weight: 500;
}

.hero.short h1 {
  font-size: clamp(3rem, 6vw, 6.2rem);
}

.lead {
  max-width: 720px;
  margin: 24px 0 0;
  color: #52625e;
  font-size: 1.04rem;
  line-height: 1.9;
}

.hero-actions {
  display: flex;
  flex-wrap: wrap;
  gap: 12px;
  margin-top: 34px;
}

.section {
  padding: clamp(86px, 9vw, 154px) 0;
}

.section.soft {
  background:
    linear-gradient(180deg, rgba(241, 248, 243, 0.88), rgba(255, 255, 255, 0.98)),
    url("../images/halvany-alaprajz-hatter.webp") left 8% top 12% / 360px auto no-repeat;
}

.container {
  width: min(var(--max), calc(100% - var(--content-pad) * 2));
  margin: 0 auto;
}

.section-head {
  display: grid;
  grid-template-columns: minmax(0, 0.96fr) minmax(320px, 0.56fr);
  gap: clamp(36px, 7vw, 118px);
  align-items: end;
  margin-bottom: clamp(42px, 6vw, 76px);
}

.section-head h2 {
  max-width: 900px;
  font-size: clamp(2.25rem, 3.65vw, 4.15rem);
  font-weight: 500;
}

.section-head p {
  font-size: 1.04rem;
}

.discipline-index-layout {
  display: grid;
  grid-template-columns: minmax(0, 0.82fr) minmax(520px, 1fr);
  gap: clamp(48px, 7vw, 126px);
  align-items: start;
}

.discipline-index-copy {
  position: sticky;
  top: 122px;
}

.discipline-index-copy h2 {
  max-width: 760px;
  font-size: clamp(2.25rem, 3.65vw, 4.15rem);
  font-weight: 500;
}

.discipline-index-copy p {
  max-width: 680px;
  margin-top: 28px;
  font-size: 1.04rem;
}

.discipline-index {
  position: relative;
  padding: clamp(22px, 2.6vw, 36px);
  background:
    linear-gradient(145deg, rgba(255, 255, 255, 0.82), rgba(241, 248, 243, 0.78));
  --cut-line: rgba(61, 117, 108, 0.18);
  --cut-size: var(--cut-lg);
  clip-path: polygon(0 0, calc(100% - var(--cut-lg)) 0, 100% var(--cut-lg), 100% 100%, var(--cut-lg) 100%, 0 calc(100% - var(--cut-lg)));
  isolation: isolate;
}

.discipline-index::before {
  position: absolute;
  inset: 0;
  z-index: 0;
  background:
    linear-gradient(var(--cut-line), var(--cut-line)) top left / calc(100% - var(--cut-size)) 1px no-repeat,
    linear-gradient(var(--cut-line), var(--cut-line)) right 0 top var(--cut-size) / 1px calc(100% - var(--cut-size)) no-repeat,
    linear-gradient(to bottom left, transparent calc(50% - 0.7px), var(--cut-line) calc(50% - 0.7px) calc(50% + 0.7px), transparent calc(50% + 0.7px)) top right / var(--cut-size) var(--cut-size) no-repeat,
    linear-gradient(var(--cut-line), var(--cut-line)) right 0 bottom 0 / calc(100% - var(--cut-size)) 1px no-repeat,
    linear-gradient(var(--cut-line), var(--cut-line)) left 0 top 0 / 1px calc(100% - var(--cut-size)) no-repeat,
    linear-gradient(to bottom left, transparent calc(50% - 0.7px), var(--cut-line) calc(50% - 0.7px) calc(50% + 0.7px), transparent calc(50% + 0.7px)) bottom left / var(--cut-size) var(--cut-size) no-repeat;
  content: "";
  pointer-events: none;
}

.discipline-index::after {
  position: absolute;
  top: 1px;
  right: 1px;
  z-index: 1;
  width: var(--cut-size);
  height: var(--cut-size);
  background: linear-gradient(to bottom left, transparent calc(50% - 0.7px), var(--cut-line) calc(50% - 0.7px) calc(50% + 0.7px), transparent calc(50% + 0.7px));
  content: "";
  pointer-events: none;
}

.discipline-index h2 {
  position: relative;
  z-index: 2;
  margin-bottom: clamp(18px, 2vw, 26px);
  color: var(--ink);
  font-size: clamp(1.45rem, 2vw, 2rem);
  font-weight: 500;
}

.discipline-index a {
  position: relative;
  z-index: 2;
  display: grid;
  grid-template-columns: 34px minmax(126px, 170px) minmax(54px, 0.54fr) minmax(330px, 1.12fr);
  gap: 14px;
  align-items: baseline;
  padding: 15px 14px;
  color: var(--ink);
  background-image: none;
  background-size: 0 0;
  transition: background 180ms ease, color 180ms ease, transform 180ms ease;
}

.discipline-index a:hover {
  color: var(--ink);
  background-image: none;
  background-size: 0 0;
  background: rgba(183, 221, 200, 0.16);
  transform: translateX(6px);
}

.discipline-index a + a {
  border-top: 1px solid rgba(61, 117, 108, 0.12);
}

.discipline-index-divider {
  position: relative;
  z-index: 2;
  margin: 22px 0 8px;
  padding-top: 18px;
  border-top: 1px solid rgba(61, 117, 108, 0.22);
  color: var(--green);
  font-size: 0.72rem;
  font-weight: 800;
  letter-spacing: 0.12em;
  text-transform: uppercase;
}

.discipline-index span {
  color: var(--green);
  font-size: 0.78rem;
  font-weight: 800;
  letter-spacing: 0.08em;
}

.discipline-index strong {
  font-size: clamp(1rem, 1.2vw, 1.18rem);
  font-weight: 650;
  transition: color 180ms ease;
}

.discipline-index i {
  border-bottom: 1px dotted rgba(61, 117, 108, 0.34);
  transform: translateY(-4px);
}

.discipline-index small {
  grid-column: 4;
  color: var(--muted);
  font-size: 0.92rem;
  line-height: 1.45;
  white-space: nowrap;
}

.discipline-index a:hover strong {
  color: var(--green);
}

.discipline-index a:hover i {
  border-bottom-color: var(--green);
}

.discipline-section {
  scroll-margin-top: 96px;
}

.special-solutions {
  padding: clamp(58px, 6vw, 96px) 0;
  border-top: 1px solid rgba(61, 117, 108, 0.14);
  border-bottom: 1px solid rgba(61, 117, 108, 0.12);
}

.special-solutions h2 {
  max-width: 920px;
  font-size: clamp(2.25rem, 3.65vw, 4.15rem);
  font-weight: 500;
}

.discipline-grid {
  display: grid;
  grid-template-columns: minmax(390px, 0.52fr) minmax(0, 1fr);
  gap: clamp(44px, 5vw, 88px);
  align-items: start;
}

.discipline-title {
  position: sticky;
  top: 116px;
}

.discipline-number {
  display: inline-grid;
  place-items: center;
  width: 78px;
  height: 78px;
  margin-bottom: 28px;
  background: rgba(183, 221, 200, 0.34);
  color: var(--green);
  font-size: 1.5rem;
  font-weight: 700;
  clip-path: polygon(0 0, calc(100% - 18px) 0, 100% 18px, 100% 100%, 18px 100%, 0 calc(100% - 18px));
}

.discipline-copy h2 {
  max-width: 1040px;
  margin-bottom: 26px;
  font-size: clamp(2.05rem, 2.8vw, 3.35rem);
  line-height: 1.08;
  text-wrap: balance;
}

.discipline-copy > p {
  max-width: 820px;
  font-size: 1.06rem;
}

.discipline-thumb {
  display: block;
  width: min(470px, 100%);
  height: min(318px, 72vw);
  aspect-ratio: 4 / 3;
  margin-top: 34px;
  object-fit: cover;
  object-position: center;
  box-shadow: 0 18px 46px rgba(61, 117, 108, 0.12);
  clip-path: polygon(0 0, calc(100% - 24px) 0, 100% 24px, 100% 100%, 24px 100%, 0 calc(100% - 24px));
}

.discipline-gallery {
  margin-top: 34px;
}

.discipline-gallery .accordion-panel {
  transition: grid-template-rows 520ms cubic-bezier(0.22, 1, 0.36, 1);
}

.gallery-wrap {
  overflow: hidden;
  margin: 0;
  padding: 0 20px;
}

.accordion-item.active .gallery-wrap {
  padding-bottom: 20px;
}

.lazy-gallery {
  display: grid;
  grid-template-columns: repeat(3, minmax(0, 1fr));
  gap: 12px;
}

.lazy-gallery figure {
  position: relative;
  min-height: 236px;
  margin: 0;
  overflow: hidden;
  background: rgba(241, 248, 243, 0.86);
  clip-path: polygon(0 0, calc(100% - 18px) 0, 100% 18px, 100% 100%, 18px 100%, 0 calc(100% - 18px));
  cursor: zoom-in;
  opacity: 0;
  transform: translateY(14px);
  transition: opacity 420ms ease, transform 520ms cubic-bezier(0.22, 1, 0.36, 1);
}

.accordion-item.active .lazy-gallery figure {
  opacity: 1;
  transform: translateY(0);
}

.accordion-item.active .lazy-gallery figure:nth-child(2) {
  transition-delay: 70ms;
}

.accordion-item.active .lazy-gallery figure:nth-child(3) {
  transition-delay: 140ms;
}

.lazy-gallery img {
  display: block;
  width: 100%;
  height: 100%;
  min-height: 236px;
  object-fit: cover;
  filter: saturate(0.92) contrast(1.02);
  transition: transform 360ms ease, filter 360ms ease;
}

.lazy-gallery figure:hover img {
  transform: scale(1.04);
  filter: saturate(1) contrast(1.04);
}

.lazy-gallery figcaption {
  position: absolute;
  left: 14px;
  bottom: 14px;
  z-index: 2;
  padding: 8px 10px;
  background: rgba(11, 31, 28, 0.72);
  color: #fff;
  font-size: 0.76rem;
  font-weight: 800;
  clip-path: polygon(0 0, calc(100% - 10px) 0, 100% 10px, 100% 100%, 10px 100%, 0 calc(100% - 10px));
}

.image-lightbox {
  position: fixed;
  inset: 0;
  z-index: 120;
  display: grid;
  place-items: center;
  padding: clamp(18px, 4vw, 54px);
  background: rgba(246, 251, 247, 0.54);
  backdrop-filter: blur(18px);
  opacity: 0;
  /* Closed, it is not drawn at all (its full-screen blur was still part of every
     frame); hidden only after the fade-out. */
  visibility: hidden;
  pointer-events: none;
  transition: opacity 180ms ease, visibility 0s 180ms;
}

.image-lightbox.active {
  opacity: 1;
  visibility: visible;
  pointer-events: auto;
  transition: opacity 180ms ease;
}

.image-lightbox figure {
  position: relative;
  display: inline-grid;
  width: auto;
  max-width: min(92vw, 1280px);
  max-height: min(82vh, 860px);
  margin: 0;
  transform: scale(0.92);
  transition: transform 220ms ease;
}

.image-lightbox.active figure {
  transform: scale(1);
}

.image-lightbox img {
  display: block;
  width: auto;
  max-width: min(92vw, 1280px);
  max-height: min(82vh, 860px);
  object-fit: contain;
  background: transparent;
  box-shadow: 0 34px 90px rgba(21, 44, 39, 0.24);
  clip-path: none;
}

.image-lightbox figcaption {
  position: absolute;
  left: 18px;
  bottom: 18px;
  padding: 9px 12px;
  background: rgba(11, 31, 28, 0.78);
  color: #fff;
  font-size: 0.78rem;
  font-weight: 800;
  clip-path: polygon(0 0, calc(100% - 10px) 0, 100% 10px, 100% 100%, 10px 100%, 0 calc(100% - 10px));
}

.lightbox-close {
  position: fixed;
  top: 24px;
  right: 24px;
  z-index: 2;
  display: grid;
  place-items: center;
  width: 48px;
  height: 48px;
  border: 0;
  background: var(--green);
  color: #fff;
  font-size: 2rem;
  line-height: 1;
  cursor: pointer;
  clip-path: polygon(0 0, calc(100% - 14px) 0, 100% 14px, 100% 100%, 14px 100%, 0 calc(100% - 14px));
}

.lightbox-nav {
  position: fixed;
  top: 50%;
  z-index: 2;
  display: grid;
  place-items: center;
  width: 48px;
  height: 48px;
  margin-top: -24px;
  border: 0;
  background: var(--green);
  color: #fff;
  cursor: pointer;
  clip-path: polygon(0 0, calc(100% - 14px) 0, 100% 14px, 100% 100%, 14px 100%, 0 calc(100% - 14px));
}

.lightbox-prev {
  left: 24px;
}

.lightbox-next {
  right: 24px;
}

.lightbox-nav svg {
  width: 22px;
  height: 22px;
  fill: none;
  stroke: currentColor;
  stroke-width: 2.4;
  stroke-linecap: square;
}

.lightbox-close,
.lightbox-nav {
  transition: background 160ms ease, color 160ms ease;
}

.lightbox-close:hover,
.lightbox-nav:hover {
  background: var(--mint);
  color: var(--ink);
}

.lightbox-close:focus-visible,
.lightbox-nav:focus-visible {
  outline: 2px solid var(--mint);
  outline-offset: 3px;
}

.image-lightbox.single .lightbox-nav {
  display: none;
}

body.lightbox-open {
  overflow: hidden;
}

.accordion {
  display: grid;
  gap: 10px;
  margin-top: 34px;
  margin-bottom: 24px;
}

.accordion-item {
  position: relative;
  border: 0;
  background: rgba(255, 255, 255, 0.78);
  --cut-line: rgba(61, 117, 108, 0.17);
  --cut-size: 18px;
  clip-path: polygon(0 0, calc(100% - 18px) 0, 100% 18px, 100% 100%, 18px 100%, 0 calc(100% - 18px));
  isolation: isolate;
  transition: border-color 180ms ease, box-shadow 180ms ease;
}

.accordion-item.active {
  --cut-line: rgba(61, 117, 108, 0.38);
  box-shadow: 0 18px 46px rgba(61, 117, 108, 0.10);
}

.accordion-item:hover {
  --cut-line: rgba(61, 117, 108, 0.30);
  background: rgba(255, 255, 255, 0.94);
}

.accordion-item:nth-child(2n) {
  background: linear-gradient(135deg, rgba(255, 255, 255, 0.78), rgba(241, 248, 243, 0.78));
}

.accordion-item button {
  display: flex;
  align-items: center;
  justify-content: space-between;
  width: 100%;
  min-height: 62px;
  padding: 0 20px;
  border: 0;
  background: transparent;
  color: var(--ink);
  font: inherit;
  font-weight: 800;
  cursor: pointer;
}

.accordion-item button::after {
  width: 12px;
  height: 12px;
  border-right: 2px solid var(--green);
  border-bottom: 2px solid var(--green);
  content: "";
  transform: rotate(45deg);
  transition: transform 180ms ease;
}

.accordion-item.active button::after {
  transform: rotate(225deg);
}

.accordion-panel {
  display: grid;
  grid-template-rows: 0fr;
  transition: grid-template-rows 240ms ease;
}

.accordion-panel > p {
  overflow: hidden;
  margin: 0;
  padding: 0 20px;
}

.accordion-item.active .accordion-panel {
  grid-template-rows: 1fr;
}

.accordion-item.active .accordion-panel > p {
  padding-bottom: 20px;
}

.card-link {
  display: inline-flex;
  margin-top: 18px;
  color: var(--green);
  font-size: 0.76rem;
  font-weight: 800;
  letter-spacing: 0.06em;
  text-transform: uppercase;
}

@keyframes tierTextIn {
  from {
    opacity: 0;
    transform: translateY(8px);
  }

  to {
    opacity: 1;
    transform: translateY(0);
  }
}

@keyframes tierFillIn {
  from {
    transform: scaleX(0);
  }

  to {
    transform: scaleX(1);
  }
}

@keyframes tierMarkerIn {
  from {
    opacity: 0;
    transform: translate(-28px, 10px);
  }

  to {
    opacity: 1;
    transform: translate(0, 0);
  }
}

.contact-hero {
  background:
    radial-gradient(circle at 84% 18%, rgba(183, 221, 200, 0.34), transparent 28%),
    linear-gradient(135deg, rgba(251, 253, 249, 0.98), rgba(244, 250, 246, 0.92));
}

.contact-hero-layout {
  grid-template-columns: minmax(0, 0.9fr) minmax(360px, 0.72fr);
  gap: clamp(34px, 6vw, 92px);
  align-items: center;
}

.contact-card {
  position: relative;
  --cut-line: rgba(61, 117, 108, 0.18);
  --cut-size: var(--cut-md);
  clip-path: polygon(0 0, calc(100% - var(--cut-size)) 0, 100% var(--cut-size), 100% 100%, var(--cut-size) 100%, 0 calc(100% - var(--cut-size)));
}

.contact-card::before {
  position: absolute;
  inset: 0;
  z-index: 2;
  background:
    linear-gradient(var(--cut-line), var(--cut-line)) top left / calc(100% - var(--cut-size)) 1px no-repeat,
    linear-gradient(var(--cut-line), var(--cut-line)) right 0 top var(--cut-size) / 1px calc(100% - var(--cut-size)) no-repeat,
    linear-gradient(45deg, transparent calc(50% - 0.8px), var(--cut-line) calc(50% - 0.8px) calc(50% + 0.8px), transparent calc(50% + 0.8px)) top right / var(--cut-size) var(--cut-size) no-repeat,
    linear-gradient(var(--cut-line), var(--cut-line)) right 0 bottom 0 / calc(100% - var(--cut-size)) 1px no-repeat,
    linear-gradient(var(--cut-line), var(--cut-line)) left 0 top 0 / 1px calc(100% - var(--cut-size)) no-repeat,
    linear-gradient(45deg, transparent calc(50% - 0.8px), var(--cut-line) calc(50% - 0.8px) calc(50% + 0.8px), transparent calc(50% + 0.8px)) bottom left / var(--cut-size) var(--cut-size) no-repeat;
  content: "";
  pointer-events: none;
}

.contact-card-body span {
  display: block;
  margin-bottom: 14px;
  color: var(--green);
  font-size: 0.78rem;
  font-weight: 800;
  letter-spacing: 0.08em;
  text-transform: uppercase;
}

.contact-grid {
  display: grid;
  grid-template-columns: repeat(2, minmax(0, 1fr));
  gap: clamp(20px, 3vw, 34px);
}

.contact-card {
  overflow: hidden;
  background: rgba(255, 255, 255, 0.88);
  box-shadow: 0 24px 70px rgba(61, 117, 108, 0.10);
}

.map-frame {
  position: relative;
  min-height: 360px;
  background: rgba(183, 221, 200, 0.22);
}

.map-frame iframe {
  display: block;
  width: 100%;
  height: 360px;
  border: 0;
  filter: grayscale(0.18) contrast(0.96) saturate(0.86);
}

.contact-card-body {
  padding: 28px;
}

.contact-card-body h3 {
  margin-bottom: 12px;
  font-size: clamp(1.22rem, 1.8vw, 1.62rem);
}

.contact-card-body p {
  margin-bottom: 18px;
}

/* Footer: dark brand band with the light logo, quick contacts and icon rows. */
.site-footer {
  --footer-text: #e3efe7;
  --footer-muted: rgba(227, 239, 231, 0.66);
  --footer-line: rgba(221, 240, 229, 0.16);
  padding: 64px 0 30px;
  background: #143e32;
  color: var(--footer-text);
}

.footer-top {
  display: grid;
  grid-template-columns: minmax(0, 1fr) auto;
  gap: 32px 56px;
  align-items: end;
  padding-bottom: 40px;
  border-bottom: 1px solid var(--footer-line);
}

.footer-brand p {
  margin: 0;
  color: #fff;
  font-family: Sora, Manrope, sans-serif;
  font-size: 1.12rem;
  font-weight: 600;
  line-height: 1.45;
}

.footer-brand .footer-partners {
  margin-top: 10px;
  color: var(--footer-muted);
  font-family: Manrope, sans-serif;
  font-size: 0.82rem;
  font-weight: 400;
}

.footer-quick {
  display: flex;
  flex-wrap: wrap;
  gap: 14px;
}

.footer-quick-item {
  --cut-size: var(--cut-sm);
  --cut-line: rgba(221, 240, 229, 0.28);
  position: relative;
  display: grid;
  grid-template-columns: 34px auto;
  gap: 14px;
  align-items: center;
  padding: 16px 26px 16px 18px;
  background: rgba(255, 255, 255, 0.04);
  color: #fff;
  text-decoration: none;
  clip-path: polygon(0 0, calc(100% - var(--cut-size)) 0, 100% var(--cut-size), 100% 100%, var(--cut-size) 100%, 0 calc(100% - var(--cut-size)));
  transition: background-color 200ms ease;
}

.footer-quick-item:hover,
.footer-quick-item:focus-visible {
  --cut-line: var(--mint);
  background: rgba(255, 255, 255, 0.08);
}

.footer-quick-item small {
  display: block;
  color: var(--footer-muted);
  font-size: 0.74rem;
  line-height: 1.4;
}

.footer-quick-item strong {
  display: block;
  font-family: Sora, Manrope, sans-serif;
  font-size: 1.12rem;
  font-weight: 600;
  line-height: 1.35;
}

.footer-icon {
  display: block;
  width: 22px;
  height: 22px;
  color: var(--mint);
}

.footer-quick-item .footer-icon {
  width: 34px;
  height: 34px;
}

.footer-grid {
  display: grid;
  grid-template-columns: repeat(4, minmax(0, 1fr));
  gap: 36px clamp(28px, 4vw, 56px);
  padding-top: 44px;
}

.footer-grid > * {
  min-width: 0;
}

/* Footer headings are plain labels so they stay out of each page's outline. */
.footer-title {
  margin: 0 0 18px;
  color: var(--mint);
  font-family: Sora, Manrope, sans-serif;
  font-size: 0.72rem;
  font-weight: 600;
  line-height: 1.3;
  letter-spacing: 0.12em;
  text-transform: uppercase;
}

.footer-grid a {
  color: var(--footer-text);
}

.footer-grid a:hover {
  color: #fff;
}

.footer-grid nav a {
  display: table;
  margin: 0 0 11px;
  font-size: 0.94rem;
}

.footer-grid .footer-contact {
  display: grid;
  grid-template-columns: 22px minmax(0, 1fr);
  gap: 12px;
  margin: 0 0 15px;
  color: var(--footer-text);
  font-size: 0.92rem;
  line-height: 1.5;
}

.footer-contact .footer-icon {
  margin-top: 3px;
}

.footer-contact small {
  display: block;
  color: var(--footer-muted);
  font-size: 0.76rem;
}

.footer-grid .footer-contact a {
  display: inline;
  margin: 0;
}

.footer-grid .footer-legal {
  margin: 18px 0 0;
  padding-left: 34px;
  color: var(--footer-muted);
  font-size: 0.84rem;
  line-height: 1.75;
}

.footer-bottom {
  display: flex;
  flex-wrap: wrap;
  justify-content: space-between;
  gap: 12px 24px;
  margin-top: 44px;
  padding-top: 22px;
  border-top: 1px solid var(--footer-line);
  color: var(--footer-muted);
  font-size: 0.84rem;
}

.site-footer a:focus-visible {
  outline: 2px solid var(--mint);
  outline-offset: 4px;
}

@media (max-width: 1180px) {
  .footer-grid {
    grid-template-columns: repeat(2, minmax(0, 1fr));
    row-gap: 40px;
  }
}

/* The tagline stays on one line: below this width the contact buttons move under it. */
@media (max-width: 1360px) {
  .footer-top {
    grid-template-columns: minmax(0, 1fr);
    align-items: start;
  }
}

@media (max-width: 620px) {
  .site-footer {
    padding-top: 52px;
  }

  .footer-grid {
    grid-template-columns: minmax(0, 1fr);
  }

  .footer-quick {
    flex-direction: column;
  }
}

.scroll-progress {
  position: fixed;
  left: 0;
  top: 0;
  z-index: 100;
  width: 100%;
  height: 3px;
  background: linear-gradient(90deg, var(--green), var(--mint));
  transform: scaleX(0);
  transform-origin: left;
}

.pointer-glow {
  position: fixed;
  z-index: 0;
  width: 360px;
  height: 360px;
  border-radius: 999px;
  background: radial-gradient(circle, rgba(61, 117, 108, 0.10), transparent 64%);
  pointer-events: none;
  transform: translate(-50%, -50%);
  transition: opacity 220ms ease;
  mix-blend-mode: multiply;
}

@keyframes slowScale {
  from { transform: scale(1); }
  to { transform: scale(1.035); }
}

@media (max-width: 980px) {
  .side-rail {
    display: none;
  }

  .side-rail + main {
    margin-left: 0;
  }

  .nav-links {
    position: fixed;
    inset: 88px 0 auto 0;
    display: none;
    grid-template-columns: 1fr;
    gap: 0;
    padding: 20px;
    background: rgba(255, 255, 255, 0.98);
    border-bottom: 1px solid var(--line);
  }

  body.menu-open .nav-links {
    display: grid;
  }

  .nav-links a,
  .nav-links .nav-cta {
    padding: 16px 0;
  }

  .menu-toggle {
    display: block;
  }

  .discipline-index-layout,
.discipline-grid,
.lazy-gallery,
.section-head,
.contact-grid {
    grid-template-columns: 1fr;
  }

  .hero {
    background:
      linear-gradient(180deg, rgba(251, 253, 249, 0.93), rgba(251, 253, 249, 0.80)),
      url("../images/halvany-alaprajz-hatter.webp") center bottom / 420px auto no-repeat,
      #fbfdf9;
  }

  /* Faint behind the text. Phones (up to 620px) load a lighter 640px copy of the
     photo (the <source> in each page's hero): at this opacity it looks the same. */
  .hero-media {
    left: 0;
    clip-path: none;
    opacity: 0.22;
  }

  .hero::after {
    background: linear-gradient(90deg, rgba(251, 253, 249, 0.95), rgba(251, 253, 249, 0.54));
  }

  .hero-layout {
    grid-template-columns: 1fr;
  }

  .discipline-title {
    position: static;
  }

  .discipline-index-copy {
    position: static;
  }

  .discipline-index a {
    grid-template-columns: 34px minmax(0, 1fr);
    gap: 6px 14px;
  }

  .discipline-index i {
    display: none;
  }

  .discipline-index small {
    grid-column: 2;
    white-space: normal;
  }

  .map-frame,
  .map-frame iframe {
    min-height: 320px;
    height: 320px;
  }

}

@media (max-width: 620px) {
  .nav,
.container,
.hero-content {
    width: min(100% - 28px, var(--max));
  }

  .brand small {
    display: none;
  }

  .section {
    padding: 78px 0;
  }

  .hero {
    min-height: 74vh;
  }

  h1,
  .hero.short h1 {
    font-size: 2.6rem;
  }

  .discipline-number {
    width: 64px;
    height: 64px;
    margin-bottom: 18px;
    font-size: 1.2rem;
  }

  .gallery-wrap {
    padding-inline: 14px;
  }

  .lightbox-nav {
    top: auto;
    bottom: 24px;
    margin-top: 0;
  }

  .lazy-gallery figure,
  .lazy-gallery img {
    min-height: 220px;
  }

  .footer-bottom {
    flex-direction: column;
  }
}

@media (prefers-reduced-motion: reduce) {
  *,
  *::before,
  *::after {
    scroll-behavior: auto !important;
    transition: none !important;
    animation: none !important;
  }

  .pointer-glow {
    display: none;
  }
}

/* Impresszum és adatkezelési tájékoztató: keskeny, jól olvasható szöveghasáb. */
.legal-hero {
  padding: clamp(56px, 7vw, 110px) 0 clamp(30px, 4vw, 52px);
}

.legal-page h1 {
  max-width: 860px;
  font-size: clamp(2.4rem, 4.8vw, 3.8rem);
}

.legal-content {
  max-width: 860px;
}

.legal-content h2 {
  margin: 2.6rem 0 0.8rem;
  font-size: clamp(1.3rem, 2vw, 1.6rem);
}

.legal-content > h2:first-child {
  margin-top: 0;
}

.legal-content h3 {
  margin: 1.6rem 0 0.5rem;
  font-size: 1.08rem;
}

.legal-content ul {
  max-width: none;
  margin: 0 0 1rem;
  padding-left: 1.2rem;
}

.legal-content li {
  margin: 0.3rem 0;
}

.legal-data {
  display: grid;
  grid-template-columns: minmax(180px, 0.42fr) 1fr;
  margin: 0 0 1.4rem;
  border-top: 1px solid var(--line);
}

.legal-data dt,
.legal-data dd {
  margin: 0;
  padding: 12px 0;
  border-bottom: 1px solid var(--line);
}

.legal-data dt {
  padding-right: 20px;
  color: var(--muted);
}

.legal-data dd {
  color: var(--ink);
}

.legal-updated {
  margin-top: 2.4rem;
  font-size: 0.9rem;
}

@media (max-width: 620px) {
  .legal-data {
    grid-template-columns: 1fr;
  }

  .legal-data dt {
    padding-bottom: 0;
    border-bottom: 0;
  }
}

/* ------------------------------------------------------------------------------------------------
   Restrained motion, switched on per page with <body data-motion> (script: assets/js/site-motion.js).
   ------------------------------------------------------------------------------------------------ */

/* Cards and boxes: on hover the top-right corner folds over like the corner of a page. One
   animated length drives both the clip and the folded flap, so the fold grows from the corner.
   The flap is drawn flat, like the icons: one light tone with a thin outline. Boxes with a green
   top border get a green crease. Boxes and lists with only a side bar do not fold. */
@property --card-cut { syntax: '<length>'; inherits: true; initial-value: 0px; }
@media (hover: hover) {
  /* Defaults without specificity, so the per-box settings below always win. */
  [data-motion] :where(.planning-usecase, .planning-system, .planning-tier, .construction-work, .doors-level,
    .about-facts li) {
    --card-cut: 0px;
    --card-cut-size: 22px;
    --card-crease: rgba(61, 117, 108, .45);
    --card-flap-edge: rgba(61, 117, 108, .3);
  }
  [data-motion] :is(.planning-usecase, .planning-system, .planning-tier, .construction-work, .doors-level,
    .about-facts li) {
    position: relative;
    clip-path: polygon(0 0, calc(100% - var(--card-cut)) 0, 100% var(--card-cut), 100% 100%, 0 100%);
    transition: --card-cut .42s cubic-bezier(.3, .7, .2, 1), border-color .34s ease;
  }
  [data-motion] :is(.planning-usecase, .planning-tier, .construction-work, .doors-level) { --card-crease: var(--green); }
  /* The small fact boxes fold a smaller corner, inside their padding. */
  [data-motion] .about-facts li { --card-cut-size: 10px; }

  [data-motion] :is(.planning-usecase, .planning-system, .planning-tier, .construction-work, .doors-level,
    .about-facts li)::after {
    position: absolute;
    top: 0;
    right: 0;
    width: var(--card-cut);
    height: var(--card-cut);
    background:
      linear-gradient(to bottom left, transparent calc(50% - .6px), var(--card-crease) calc(50% - .6px) calc(50% + .6px), transparent calc(50% + .6px)),
      linear-gradient(var(--card-flap-edge), var(--card-flap-edge)) left top / 1px 100% no-repeat,
      linear-gradient(var(--card-flap-edge), var(--card-flap-edge)) left bottom / 100% 1px no-repeat,
      linear-gradient(to bottom left, transparent 50%, rgba(61, 117, 108, .1) 50%);
    content: "";
    pointer-events: none;
  }
  [data-motion] :is(.planning-usecase, .planning-system, .planning-tier, .construction-work, .doors-level,
    .about-facts li):is(:hover, :focus-within) {
    --card-cut: var(--card-cut-size);
  }
  [data-motion] .planning-system:is(:hover, :focus-within) { border-color: rgba(61, 117, 108, .5); }
}

/* Scroll: content below the first screen rises in once. */
[data-motion] .reveal-ready:not(.is-revealed) { opacity: 0; }
[data-motion] .reveal-ready.is-revealed { animation: motion-rise .55s cubic-bezier(.2, .7, .2, 1) var(--reveal-delay, 0ms) both; }
@keyframes motion-rise { from { opacity: 0; transform: translateY(14px); } to { opacity: 1; transform: none; } }

/* Vertical process list (design phases): the numbers and the line between them fill as the reader passes them. */
[data-motion] .planning-process-step::after {
  position: absolute;
  top: 50px;
  bottom: -17px;
  left: 15px;
  border-left: 1px solid var(--green);
  transform: scaleY(var(--step-fill, 0));
  transform-origin: top;
  content: "";
  pointer-events: none;
}
[data-motion] .planning-process-step:last-child::after { display: none; }
[data-motion] .planning-step-number { position: relative; z-index: 1; transition: background-color .3s ease, border-color .3s ease, color .3s ease; }
[data-motion] .planning-step-output { transition: border-color .3s ease; }
[data-motion] .planning-process-step.is-reached .planning-step-number { border-color: var(--green); background: var(--green); color: #fff; }
[data-motion] .planning-process-step.is-reached .planning-step-output { border-left-color: var(--green); }

/* Horizontal step rows (construction stages, EMC measurement): the steps fill one after another. */
[data-motion] :is(.construction-gate-number, .emc-step-number) {
  transition: background-color .35s ease var(--seq-delay, 0ms), border-color .35s ease var(--seq-delay, 0ms), color .35s ease var(--seq-delay, 0ms);
}
[data-motion] .is-reached :is(.construction-gate-number, .emc-step-number) { border-color: var(--green); background: var(--green); color: #fff; }
[data-motion] .construction-gates .construction-gate::before {
  background: linear-gradient(var(--green), var(--green)) left top / 0% 100% no-repeat var(--planning-rule);
  transition: background-size .5s ease calc(var(--seq-delay, 0ms) + 150ms);
}
[data-motion] .construction-gates .construction-gate.is-reached::before { background-size: 100% 100%; }
[data-motion] .construction-gate-result { transition: border-color .35s ease var(--seq-delay, 0ms); }
[data-motion] .construction-gate.is-reached .construction-gate-result { border-left-color: var(--green); }
[data-motion] .emc-process-step::after {
  position: absolute;
  top: -1px;
  left: 0;
  right: 0;
  height: 1px;
  background: var(--green);
  transform: scaleX(0);
  transform-origin: left;
  transition: transform .5s ease var(--seq-delay, 0ms);
  content: "";
  pointer-events: none;
}
[data-motion] .emc-process-step.is-reached::after { transform: scaleX(1); }

/* The print header only shows on paper. */
.print-header { display: none; }

@media print {
  [data-motion] .reveal-ready { opacity: 1 !important; animation: none !important; }
}

/* ------------------------------------------------------------------------------------------------
   Print: every subpage prints as a tidy A4 document with a company header, without navigation,
   buttons and coloured bands. Browsers skip background colours by default, so text and diagram lines
   that were light on the green bands are darkened. The Szakterületek page has its own print view.
   ------------------------------------------------------------------------------------------------ */
@media print {
  @page { size: A4; margin: 12mm 12mm 13mm; }
  body:is(.planning-page:not(.specialties-page), .contact-page, .legal-page) { background: #fff !important; color: #1c2a24; font-size: 9.5pt; }
  :is(.planning-page:not(.specialties-page), .contact-page, .legal-page) *, :is(.planning-page:not(.specialties-page), .contact-page, .legal-page) *::before, :is(.planning-page:not(.specialties-page), .contact-page, .legal-page) *::after { animation: none !important; transition: none !important; box-shadow: none !important; text-shadow: none !important; }
  :is(.planning-page:not(.specialties-page), .contact-page, .legal-page) :is(.site-header, .site-footer, .skip-link, .scroll-progress, .pointer-glow, .image-lightbox, .planning-subnav,
    .hero-media, .hero-actions, .button, .text-link, .card-link, .map-frame) { display: none !important; }
  :is(.planning-page:not(.specialties-page), .contact-page, .legal-page) a { color: inherit !important; background: none !important; text-decoration: none !important; }

  :is(.planning-page:not(.specialties-page), .contact-page, .legal-page) .print-header { display: flex; align-items: center; gap: 6mm; margin: 0 0 6mm; padding-bottom: 4mm; border-bottom: 1.2pt solid #2b5847; }
  :is(.planning-page:not(.specialties-page), .contact-page, .legal-page) main .print-header img { width: 32mm !important; height: auto; max-height: none; }
  :is(.planning-page:not(.specialties-page), .contact-page, .legal-page) .print-header strong { display: block; color: #143e32; font: 600 12.5pt/1.3 Sora, Manrope, sans-serif; }
  :is(.planning-page:not(.specialties-page), .contact-page, .legal-page) .print-header span { display: block; margin-top: 1mm; color: #4a5c54; font-size: 7.5pt; }

  /* Sections: no bands, no tall paddings, a thin rule between them. */
  :is(.planning-page:not(.specialties-page), .contact-page, .legal-page) main :is(.section, .hero, .legal-hero) { min-height: 0 !important; margin: 0 !important; padding: 0 !important; border: 0 !important; background: none !important; overflow: visible !important; }
  :is(.planning-page:not(.specialties-page), .contact-page, .legal-page) main :is(.section, .hero, .legal-hero) { color: #1c2a24 !important; }
  :is(.planning-page:not(.specialties-page), .contact-page, .legal-page) main > .section { margin-top: 6mm !important; padding-top: 5mm !important; border-top: .8pt solid #c6d6cd !important; }
  :is(.planning-page:not(.specialties-page), .contact-page, .legal-page) .hero::before, :is(.planning-page:not(.specialties-page), .contact-page, .legal-page) .hero::after { display: none !important; }
  :is(.planning-page:not(.specialties-page), .contact-page, .legal-page) main .container, :is(.planning-page:not(.specialties-page), .contact-page, .legal-page) .hero-content { width: auto !important; max-width: none !important; min-height: 0 !important; margin: 0 !important; padding: 0 !important; }
  :is(.planning-page:not(.specialties-page), .contact-page, .legal-page) .hero-copy { max-width: none !important; padding: 0 !important; background: none !important; }
  :is(.planning-page:not(.specialties-page), .contact-page, .legal-page) main *:not(svg, svg *) { background-color: transparent !important; clip-path: none !important; }
  :is(.planning-page:not(.specialties-page), .contact-page, .legal-page) main .contact-card::before { display: none !important; }

  /* Type */
  :is(.planning-page:not(.specialties-page), .contact-page, .legal-page) main :is(h1, h2, h3, h4, p, li, dt, dd, span, strong, small, figcaption, td, th, summary, a, div) { color: #1c2a24 !important; }
  :is(.planning-page:not(.specialties-page), .contact-page, .legal-page) main :is(.eyebrow, .planning-system-index, .planning-render-index, .construction-caption-index, .maint-caption-index, .emc-caption-index,
    .planning-step-number, .emc-step-number, .construction-gate-number, .emc-leak-number, .planning-step-output, .construction-gate-result) { color: #2b5847 !important; }
  :is(.planning-page:not(.specialties-page), .contact-page, .legal-page) main .planning-icon { color: #2b5847 !important; }
  :is(.planning-page:not(.specialties-page), .contact-page, .legal-page) main h1 { margin: 0 0 2mm; font-size: 20pt; }
  :is(.planning-page:not(.specialties-page), .contact-page, .legal-page) main h2 { max-width: none; margin-bottom: 3mm; font-size: 14pt; }
  :is(.planning-page:not(.specialties-page), .contact-page, .legal-page) main h3 { font-size: 10.5pt; }
  :is(.planning-page:not(.specialties-page), .contact-page, .legal-page) main :is(p, li, dd, dt, td) { font-size: 9.3pt; line-height: 1.5; }
  :is(.planning-page:not(.specialties-page), .contact-page, .legal-page) .hero .lead { max-width: none; font-size: 10.5pt; }
  :is(.planning-page:not(.specialties-page), .contact-page, .legal-page) main .eyebrow { margin-bottom: 1.5mm; font-size: 7.5pt; }
  :is(.planning-page:not(.specialties-page), .contact-page, .legal-page) main .eyebrow::before { display: none; }
  :is(.planning-page:not(.specialties-page), .contact-page, .legal-page) main :is(h2, h3) { break-after: avoid; }

  /* Layouts: keep the desktop columns on paper. */
  :is(.planning-page:not(.specialties-page), .contact-page, .legal-page) main :is(.planning-overview, .planning-ai, .planning-process-panel, .planning-columns, .planning-start, .construction-intro, .construction-live-grid,
    .construction-detail-grid, .emc-overview, .emc-explain-grid, .emc-filter-grid, .emc-leak-layout, .doors-explain-grid, .doors-feature-grid,
    .doors-partner-grid, .maint-intro, .maint-response-grid, .contact-grid, .section-head) { display: grid !important; grid-template-columns: repeat(2, minmax(0, 1fr)) !important; gap: 6mm !important; align-items: start !important; }
  :is(.planning-page:not(.specialties-page), .contact-page, .legal-page) main :is(.planning-system-grid, .construction-work-grid, .doors-level-grid, .planning-decision-grid) { display: grid !important; grid-template-columns: repeat(3, minmax(0, 1fr)) !important; gap: 4mm !important; }
  :is(.planning-page:not(.specialties-page), .contact-page, .legal-page) main :is(.planning-usecases, .construction-gates, .emc-process, .construction-handover-list, .doors-gallery) { display: grid !important; grid-template-columns: repeat(4, minmax(0, 1fr)) !important; gap: 4mm !important; }
  :is(.planning-page:not(.specialties-page), .contact-page, .legal-page) main :is(.planning-tier-grid, .construction-test-strip, .planning-ai-checklist) { display: grid !important; grid-template-columns: repeat(2, minmax(0, 1fr)) !important; gap: 4mm !important; }
  :is(.planning-page:not(.specialties-page), .contact-page, .legal-page) main :is(.planning-usecase, .planning-system, .planning-tier, .construction-work, .doors-level) { padding: 3mm !important; border: .6pt solid #c6d6cd; }
  :is(.planning-page:not(.specialties-page), .contact-page, .legal-page) main :is(.planning-hero-facts) { display: flex !important; flex-wrap: wrap; gap: 3mm 8mm !important; margin: 3mm 0 0 !important; }
  :is(.planning-page:not(.specialties-page), .contact-page, .legal-page) main :is(.doors-partner-logo, .construction-partner, .emc-laboshield-logo) img, :is(.planning-page:not(.specialties-page), .contact-page, .legal-page) main img.emc-laboshield-logo { width: 40mm !important; max-height: 18mm; }
  :is(.planning-page:not(.specialties-page), .contact-page, .legal-page) main img { width: auto !important; max-width: 100% !important; max-height: 70mm; object-fit: contain !important; }
  :is(.planning-page:not(.specialties-page), .contact-page, .legal-page) main :is(article, figure, li, details, tr, .construction-gate, .planning-process-step, .planning-tier, .maint-area, .print-header) { break-inside: avoid; }
  :is(.planning-page:not(.specialties-page), .contact-page, .legal-page) main :is(.planning-decision-visual, .construction-zone-diagram, .emc-route-diagram, .doors-diagram, .emc-leak-diagram) { break-inside: avoid; }

  /* Diagrams drawn for the green bands: light lines and labels become dark on white paper. */
  :is(.planning-page:not(.specialties-page), .contact-page, .legal-page) main :is(.planning-decision-visual, .planning-motion, .doors-diagram) { color: #2f6b5c !important; }
  :is(.planning-page:not(.specialties-page), .contact-page, .legal-page) main svg :is([stroke="#b9dbca" i], [stroke="#b8ddd0" i], [stroke="#a9d9c7" i], [stroke="#81b7a1" i], [stroke="#d8eee7" i], [stroke="#dceee4" i]) { stroke: #2f6b5c !important; }
  :is(.planning-page:not(.specialties-page), .contact-page, .legal-page) main svg :is([fill="#b9dbca" i], [fill="#b8ddd0" i], [fill="#d8eee7" i]) { fill: #2f6b5c !important; }
  :is(.planning-page:not(.specialties-page), .contact-page, .legal-page) main svg :is([stroke="#d8b778" i], [stroke="#d8b97c" i]) { stroke: #a07a28 !important; }
  :is(.planning-page:not(.specialties-page), .contact-page, .legal-page) main svg :is([fill="#d8b778" i], [fill="#d8b97c" i], [fill="#efd9a6" i]) { fill: #a07a28 !important; }
  :is(.planning-page:not(.specialties-page), .contact-page, .legal-page) main svg :is([fill="#e4f0e8" i], [fill="#e2f0e7" i], [fill="#ffffff" i][fill-opacity]) { fill: #1c2a24 !important; }
  :is(.planning-page:not(.specialties-page), .contact-page, .legal-page) main svg :is([fill="#ffffff" i][fill-opacity], [fill="#0f2f26" i]) { fill-opacity: .03 !important; }
  :is(.planning-page:not(.specialties-page), .contact-page, .legal-page) main svg [fill="#3D756C" i] { fill: #fff !important; }
  :is(.planning-page:not(.specialties-page), .contact-page, .legal-page) main svg [stroke="#e4f0e8" i] { stroke: #1c2a24 !important; }
}
/* assets/css/baseline-integration.css */
/* The supplied design. The full menu stays in the header down to 1241 px, so
   the common 1280 and 1366 px laptops keep it (the client did not notice the
   three-bar button there, 2026-10-16); narrower screens use the drop-down. */
@media (max-width:1240px) {
  /* The drop-down fades and slides in; closed, it stays hidden from focus and readers. */
  .nav-links {position:fixed;inset:88px 0 auto;display:grid;grid-template-columns:1fr;gap:0;padding:20px var(--content-pad);background:#fff;border-bottom:1px solid var(--line);max-height:calc(100svh - 89px);overflow:auto;
    visibility:hidden;opacity:0;transform:translateY(-6px);transition:opacity .22s ease,transform .22s ease,visibility 0s linear .22s;}
  body.menu-open .nav-links {visibility:visible;opacity:1;transform:none;transition:opacity .22s ease,transform .22s ease,visibility 0s;}
  .nav-links a,.nav-links .nav-cta {padding:14px 0;}
  /* One label per row: the full-width underline read as a divider between two
     items. The current page keeps its green line, under its own label only. */
  .nav-links a:not(.nav-cta)::after {display:none;}
  .nav-links a:not(.nav-cta):hover {color:var(--green);}
  .nav-links a:not(.nav-cta)[aria-current="page"] {color:var(--green);text-decoration-line:underline;text-decoration-thickness:2px;text-decoration-color:currentColor;text-underline-offset:7px;}
  .menu-toggle {display:block;}
  html:not(.js) .nav-links {position:static;display:grid;max-height:none;visibility:visible;opacity:1;transform:none;}
  html:not(.js) .menu-toggle {display:none;}
}
.nav-links a:focus-visible,.menu-toggle:focus-visible {outline:2px solid var(--green);outline-offset:5px;}
/* The three bars carry a visible word: an icon alone read as a settings button. */
.menu-toggle {position:relative;}
.menu-toggle::before {content:"Menü";position:absolute;right:calc(100% + 10px);top:50%;transform:translateY(-50%);
  color:var(--green);font-size:.72rem;font-weight:800;letter-spacing:.08em;text-transform:uppercase;white-space:nowrap;}
.menu-toggle[aria-expanded="true"]::before {content:"Bezárás";}
/* Open menu: the three bars turn into a cross (bar centres are 7 px apart). */
.menu-toggle span {transition:transform .25s ease,opacity .2s ease;}
.menu-toggle[aria-expanded="true"] span:nth-child(1) {transform:translateY(7px) rotate(45deg);}
.menu-toggle[aria-expanded="true"] span:nth-child(2) {opacity:0;transform:scaleX(.4);}
.menu-toggle[aria-expanded="true"] span:nth-child(3) {transform:translateY(-7px) rotate(-45deg);}
@media (prefers-reduced-motion:reduce) {
  .menu-toggle span,.nav-links,body.menu-open .nav-links {transition:none;}
}
/* Single-line menu labels on desktop. The tagline yields its space first. */
@media (min-width:1241px) {
  .nav-links a {white-space:nowrap;}
}
@media (min-width:1241px) and (max-width:1600px) {
  .brand small {display:none;}
}
/* 1241-1320 px: a tighter gap keeps all seven items and the button on one line. */
@media (min-width:1241px) and (max-width:1320px) {
  .nav-links {gap:14px;}
}
/* Phones: a compact sticky header (logo and menu button only), in the usual
   56-64 px range; the opened menu starts right under it. */
@media (max-width:760px) {
  .nav {min-height:60px;}
  .brand-mark {width:100px;}
  .nav-links {inset:60px 0 auto;max-height:calc(100svh - 61px);}
}
/* assets/css/campus-experience.css */
/* Tervalapú adatközpont: a tér és a szemantikus tartalom együtt halad. */
html.lenis,html.campus-motion-disabled { scroll-behavior:auto!important; }
/* Set by the tour script while it loads (see campus-experience.js). */
html:has(.campus-story[data-campus-loading]) { overflow:hidden; }
.campus-story { --campus-night:#081e17; --campus-vh:1svh; --campus-height:calc(100 * var(--campus-vh) - 96px); --campus-accent:#b9ddbf; --campus-copy:clamp(280px,28vw,390px); position:relative; isolation:isolate; background:var(--campus-night); color:#f0f4eb; }
.campus-story .campus-scene { position:sticky; top:96px; height:var(--campus-height); min-height:0; margin-bottom:calc(-1 * var(--campus-height)); overflow:hidden; z-index:0; background:radial-gradient(ellipse at 69% 51%,#1a422f 0%,#133523 36%,#0d291d 62%,var(--campus-night) 88%); }
.campus-story .campus-scene::after { content:""; position:absolute; inset:0; pointer-events:none; background:linear-gradient(90deg,var(--campus-night) 0%,var(--campus-night) 26%,#081e17e8 31%,#081e1770 40%,transparent 53%); z-index:1; }
.campus-story canvas[data-campus-canvas] { position:absolute; top:0; right:-2%; width:74%; height:100%; display:block; touch-action:pan-y; }
.campus-story .campus-opening { position:absolute; top:0; right:-2%; width:74%; height:100%; pointer-events:none; opacity:1; transition:opacity .38s ease; }
.campus-story .campus-opening img { width:100%; height:100%; object-fit:contain; animation:campus-opening-ink 1.6s ease-out both; }
.campus-story[data-campus-painted="true"] .campus-opening { opacity:0; }
.campus-story:not([data-campus-painted="true"]) canvas[data-campus-canvas] { opacity:0; }
@keyframes campus-opening-ink { from { clip-path:inset(0 100% 0 0); opacity:.25; } to { clip-path:inset(0); opacity:1; } }
@media(prefers-reduced-motion:reduce){.campus-story .campus-opening img{animation:none;}}
.campus-story .campus-fallback { position:absolute; inset:9% -2% 10% auto; width:74%; height:81%; margin:0; }
.campus-story .campus-fallback img { width:100%; height:100%; object-fit:cover; opacity:.68; }
.campus-story .campus-fallback figcaption { position:absolute; bottom:20px; right:var(--pad); margin:0; color:#c4d5c7; font-size:10px; }
.campus-story[data-campus-ready="true"] .campus-fallback,.campus-story[data-campus-ready="true"] .campus-status { display:none; }
.campus-story .campus-topline { position:absolute; top:24px; left:var(--pad); right:var(--pad); display:flex; justify-content:space-between; gap:30px; z-index:2; color:#9cb7a2; font:10px/1.5 Consolas,monospace; text-transform:uppercase; letter-spacing:.09em; }
.campus-story .campus-topline>span:last-child { color:#7c9c85; font-size:9px; }
.campus-story .campus-controls { position:absolute; top:53px; right:var(--pad); display:flex; gap:6px; z-index:3; }
.campus-story .campus-controls button { min-height:40px; padding:9px 13px; border:1px solid #627d666e; background:#0d281fcf; color:#bdd5c0; font-size:10px; line-height:1.4; }
.campus-story .campus-controls button:hover,.campus-story .campus-controls button[aria-pressed="true"] { background:#224832; border-color:#96b994; color:#eaf5e5; }
.campus-story:not([data-campus-active="-1"]) [data-campus-replay] { display:none; }
.campus-story .campus-legend { position:absolute; top:108px; right:var(--pad); display:flex; gap:15px; z-index:2; color:#bdd0c3; font-size:9px; }
.campus-story .campus-legend>span { display:flex; align-items:center; gap:6px; opacity:.4; transition:opacity .4s; }
.campus-story .campus-legend>span[data-active="true"] { opacity:1; }
.campus-story .campus-legend i { display:block; width:6px; height:6px; background:#ee7666; }
.campus-story [data-campus-legend="cooling"] i { background:#29b5d0; }
.campus-story [data-campus-legend="power"] i { background:#e6ad4e; }
.campus-story :focus-visible { outline:2px solid #d5e8be; outline-offset:4px; }
.campus-story .campus-status { position:absolute; z-index:2; top:47%; left:60%; width:260px; max-width:35%; transform:translateX(-25%); margin:0; padding:18px 22px; border-left:2px solid #a6c995; background:#0b271de8; color:#c6dac6; font-size:12px; line-height:1.6; }
/* Loading line along the status box, filled by the tour's start-up (--campus-load, 0-1). */
.campus-story .campus-status::after { content:""; position:absolute; left:-2px; bottom:0; width:calc(var(--campus-load,0) * (100% + 2px)); height:2px; background:#a6c995; transition:width .4s ease-out; }
@media(prefers-reduced-motion:reduce){.campus-story .campus-status::after{transition:none;}}
.campus-story[data-campus-error="true"] .campus-status::after { display:none; }
.campus-story .campus-caption-line { position:absolute; z-index:2; left:44%; right:var(--pad); bottom:24px; display:flex; align-items:center; gap:18px; min-height:38px; border-top:1px solid #6f936746; padding:12px 14px; color:#b8d1b7; background:#081e17e6; pointer-events:none; }
.campus-story .campus-step { color:#91af91; font:10px/1.5 Consolas,monospace; white-space:nowrap; }
.campus-story .campus-caption { display:flex; align-items:center; gap:9px; margin:0; color:#c3d8c0; font-size:11px; line-height:1.4; }
.campus-story .campus-caption::before { content:""; display:block; width:6px; height:6px; background:var(--campus-accent); flex-shrink:0; }
.campus-story .campus-caption-end { margin-left:auto; color:#6f9478; font-size:9px; white-space:nowrap; }
/* The longer stretches of the route: cooling, fire protection, maintenance. */
.campus-story .campus-chapter[data-campus-stage="1"] { min-height:calc(165 * var(--campus-vh)); }
.campus-story .campus-chapter[data-campus-stage="3"] { min-height:calc(220 * var(--campus-vh)); }
.campus-story .campus-chapter[data-campus-stage="4"] { min-height:calc(200 * var(--campus-vh)); }
/* The progress line runs along the lower edge of the chapter strip. */
.campus-story .campus-progress-track { position:absolute; left:0; right:0; bottom:-1px; height:2px; background:#375541; z-index:6; }
.campus-story [data-campus-progress] { display:block; width:100%; height:100%; background:var(--campus-accent); transform:scaleX(0); transform-origin:left center; }
.campus-story .campus-nav-label { margin:0; color:var(--campus-accent); font-size:10px; line-height:1.4; letter-spacing:.12em; text-transform:uppercase; white-space:nowrap; }
.campus-story .campus-nav-links { display:flex; align-items:stretch; gap:clamp(10px,1.6vw,28px); height:100%; margin-left:auto; }
/* JS lines the chapters up with the main menu, from its first to its last page link. */
.campus-story .campus-nav[data-campus-aligned] .campus-nav-links { position:absolute; top:0; bottom:0; left:var(--campus-chapters-left); width:var(--campus-chapters-width); margin:0; justify-content:space-between; }
.campus-story .campus-nav[data-campus-label-hidden] .campus-nav-label { visibility:hidden; }
/* The chapter strip sits right under the site header: label under the logo, chapters under the menu. */
.campus-story .campus-nav { position:sticky; top:96px; z-index:5; display:flex; align-items:center; gap:24px; height:46px; padding:0 max(var(--pad),calc((100% - var(--max,1680px))/2)); margin-bottom:-46px; background:#081e17e8; border-bottom:1px solid #39543c; backdrop-filter:none; }
/* Chapter buttons, not links (2026-10-29): the chapters have no address of
   their own, so no one links into the middle of the tour. */
.campus-story .campus-nav button { position:relative; display:flex; align-items:center; gap:8px; margin:0; padding:0; border:0; background:none; color:#88a88f; font-family:inherit; font-size:11px; line-height:1.4; white-space:nowrap; cursor:pointer; }
/* The current chapter's line sits right under its label, clear of the
   progress line that runs along the strip's lower edge. */
.campus-story .campus-nav button::after { content:""; position:absolute; left:0; right:0; bottom:8px; height:2px; background:var(--campus-accent); transform:scaleX(0); transform-origin:left center; transition:transform .3s ease; }
.campus-story .campus-nav button>span { font:9px/1.5 Consolas,monospace; color:#617f69; }
.campus-story .campus-nav button:hover { color:#ecf5e7; }
.campus-story .campus-nav button[aria-current="step"] { color:#e0efd8; }
.campus-story .campus-nav button[aria-current="step"]::after { transform:scaleX(1); }
.campus-story .campus-nav button[aria-current="step"]>span { color:#bfd5b5; }
.campus-story .campus-navigation-curtain { position:fixed; inset:var(--campus-header-height,96px) 0 0; z-index:8; background:var(--campus-night); opacity:0; pointer-events:none; }
.campus-story .campus-nav { z-index:9; }
.campus-story .campus-chapters { position:relative; z-index:2; pointer-events:none; }
.campus-story .campus-chapter { position:relative; min-height:calc(105 * var(--campus-vh)); display:flex; align-items:center; padding:130px var(--pad) 140px; scroll-margin-top:96px; }
.campus-story .campus-copy { width:var(--campus-copy); max-width:calc(100vw - var(--pad)*2); pointer-events:auto; }
/* Originals stay in their semantic articles. A shared viewport baseline avoids
 * mixing chapter offsets with the eased camera/scroll timeline. */
.campus-story[data-campus-reading-mode="panel"][data-campus-ready="true"]:not([data-campus-error="true"]) .campus-copy { position:fixed; top:var(--campus-reading-top); left:var(--pad); margin:0; max-height:var(--campus-reading-max); overflow-y:auto; overflow-x:hidden; overscroll-behavior:contain; scrollbar-width:thin; scrollbar-color:#4b6b55 transparent; opacity:var(--campus-reading-opacity,0); visibility:visible; pointer-events:none; transform:none!important; will-change:opacity; }
.campus-story[data-campus-reading-mode="panel"][data-campus-ready="true"]:not([data-campus-error="true"]) .campus-copy[data-campus-copy-state="hidden"] { visibility:hidden; }
.campus-story[data-campus-reading-mode="panel"][data-campus-ready="true"]:not([data-campus-error="true"]) .campus-copy[data-campus-copy-state="current"] { pointer-events:auto; }
.campus-story[data-campus-reading-mode="panel"] .campus-topline>span:first-child { visibility:hidden; }
.campus-story .campus-mode-line { position:absolute; z-index:2; left:44%; right:var(--pad); bottom:84px; display:flex; gap:16px; justify-content:space-between; padding:5px 8px; background:#081e17db; color:#a0bda8; font:9px/1.5 Consolas,monospace; letter-spacing:.05em; text-transform:uppercase; pointer-events:none; }
.campus-story[data-campus-drawing="true"] .campus-mode-line { color:#c7dacb; }
.campus-story[data-campus-drawing="true"] .campus-legend { opacity:.35; }
.campus-story .campus-eyebrow { display:block; color:#9bb897; text-transform:uppercase; letter-spacing:.12em; font-size:9px; line-height:1.65; margin-bottom:28px; }
.campus-story h1,.campus-story h2 { color:#f0f4eb; letter-spacing:-.055em; line-height:1.03; text-wrap:balance; }
.campus-story h1 { font-size:clamp(43px,3.9vw,56px); }
.campus-story h2 { font-size:clamp(49px,4.7vw,70px); }
.campus-story h1 em,.campus-story h2 em { color:#bfdbaf; font-style:normal; }
.campus-story .campus-copy>p { margin:28px 0 0; color:#b0c6b1; font-size:14px; line-height:1.85; max-width:360px; }
.campus-story .campus-copy>p.campus-lead { font-size:15px; line-height:1.8; }
.campus-story .text-link { color:#d0dfc5; border-color:#627c5c; font-size:12px; }
.campus-story .text-link:hover { color:#fff; }
.campus-story .campus-copy>.text-link+.text-link { display:flex; width:fit-content; margin-top:13px; }
.campus-story .button { font-size:12px; min-height:52px; padding:16px 20px; gap:25px; }
.campus-story .button.light { background:#e2ebd9; color:#153c29; }
.campus-story .button.light:hover { background:#cce1bd; }
.campus-story .campus-reading-cue { display:flex; align-items:center; gap:11px; margin-top:33px; color:#75977d; font-size:10px; }
.campus-story .campus-reading-cue>span { display:block; height:24px; width:1px; background:#819d79; }
/* The opening copy fades in piece by piece. Only its children animate: the
   copy itself carries the reading panel's own scroll-driven opacity. */
@keyframes campus-copy-in { from { opacity:0; transform:translateY(14px); } }
.campus-story .campus-hero .campus-copy>* { animation:campus-copy-in .9s cubic-bezier(.2,.7,.2,1) .15s backwards; }
.campus-story .campus-hero .campus-copy>p { animation-delay:.4s; }
.campus-story .campus-hero .campus-copy>.campus-actions { animation-delay:.6s; }
.campus-story .campus-hero .campus-copy>.campus-reading-cue { animation:none; }
/* The scroll cue appears once the opening has finished (scrolling is held
   until then): a fade, and a short segment running down its line. */
.campus-story .campus-hero .campus-reading-cue { opacity:0; transition:opacity .7s ease; }
.campus-story[data-campus-ready="true"][data-campus-intro="complete"] .campus-hero .campus-reading-cue,
.campus-story[data-campus-error="true"] .campus-hero .campus-reading-cue,
html:not(.js) .campus-story .campus-hero .campus-reading-cue { opacity:1; }
.campus-story .campus-reading-cue>span { position:relative; overflow:hidden; }
.campus-story[data-campus-ready="true"][data-campus-intro="complete"] .campus-hero .campus-reading-cue>span::after { content:""; position:absolute; left:0; top:-45%; width:100%; height:45%; background:#e2ebd9; animation:campus-cue-drop 1.9s ease-in-out .4s infinite; }
@keyframes campus-cue-drop { to { top:100%; } }
@media(prefers-reduced-motion:reduce){ @keyframes campus-copy-in { from { opacity:0; } } }
@media(prefers-reduced-motion:reduce){.campus-story .campus-nav button::after{transition:none;}.campus-story .campus-reading-cue>span::after{animation:none!important;display:none;}}
.campus-story[data-campus-active="1"] { --campus-accent:#29b5d0; }
.campus-story[data-campus-active="2"] { --campus-accent:#e6ad4e; }
.campus-story[data-campus-active="3"] { --campus-accent:#ee7666; }
.campus-story[data-campus-active="4"] { --campus-accent:#29b5d0; }
.campus-story[data-campus-highlight="generator"] { --campus-accent:#c4a37d; }
.campus-story[data-campus-error="true"] .campus-scene { position:relative; top:auto; height:420px; min-height:0; margin-bottom:0; }
.campus-story[data-campus-error="true"] .campus-fallback { display:block; inset:0; width:100%; height:100%; }
.campus-story[data-campus-error="true"] canvas[data-campus-canvas] { display:none; }
.campus-story[data-campus-error="true"] .campus-status { display:block; top:auto; bottom:24px; left:var(--pad); max-width:calc(100% - var(--pad)*2); transform:none; }
.campus-story[data-campus-error="true"] .campus-controls,.campus-story[data-campus-error="true"] .campus-caption-line,.campus-story[data-campus-error="true"] .campus-progress-track,.campus-story[data-campus-error="true"] .campus-legend,.campus-story[data-campus-error="true"] .btr-campus-callouts { display:none; }
.campus-story[data-campus-error="true"] .campus-scene::after { background:linear-gradient(0deg,#081e1740,transparent); }
.campus-story[data-campus-error="true"] .campus-chapter { min-height:0; padding:60px var(--pad); border-top:1px solid #284830; }
.campus-story[data-campus-error="true"] .campus-chapter[data-campus-stage="1"],.campus-story[data-campus-error="true"] .campus-chapter[data-campus-stage="3"],.campus-story[data-campus-error="true"] .campus-chapter[data-campus-stage="4"] { min-height:0; }
.campus-story[data-campus-error="true"] .campus-mode-line { display:none; }
.campus-story[data-campus-error="true"] .campus-copy { width:min(760px,100%); max-width:none; }
.campus-story[data-campus-error="true"] .campus-copy { transform:none!important; }
.campus-story[data-campus-error="true"] .campus-copy>p { max-width:640px; }
.campus-story[data-campus-error="true"] .campus-nav { position:relative; top:auto; margin-bottom:0; }
@media (min-width:1600px) {
  .campus-story .campus-copy { margin-left:max(0px,calc((100vw - var(--max))/2 - var(--pad))); }
  .campus-story[data-campus-reading-mode="panel"][data-campus-ready="true"]:not([data-campus-error="true"]) .campus-copy { left:max(var(--pad),calc((100vw - var(--max))/2)); margin-left:0; }
}
@media (min-width:761px) and (max-height:820px) {
  .campus-story .campus-chapter { min-height:calc(100 * var(--campus-vh)); padding-top:74px; padding-bottom:110px; }
  .campus-story .campus-hero { align-items:flex-start; padding-top:88px; }
  .campus-story h1 { font-size:clamp(39px,3.6vw,51px); }
  .campus-story .campus-eyebrow { margin-bottom:20px; }
  .campus-story .campus-copy>p { margin-top:22px; }
  .campus-story .campus-reading-cue { margin-top:18px; }
}
@media (max-width:1100px) {
  .campus-story { --campus-copy:300px; }
  .campus-story h1 { font-size:clamp(36px,4.1vw,43px); }
  .campus-story h2 { font-size:54px; }
  .campus-story .campus-caption-end { display:none; }
}
@media (max-width:940px) {
  .campus-story { --campus-height:calc(100 * var(--campus-vh) - 80px); }
  .campus-story .campus-scene { top:80px; }
  .campus-story .campus-topline>span:last-child { display:none; }
  .campus-story .campus-nav { top:80px; }
  .campus-story .campus-nav button { font-size:10px; }
}
@media (max-width:760px) {
  /* Phones: chapter labels under the header, the model under them, its lower
     edge fading into the reading column (no separating bar). */
  .campus-story { --campus-height:calc(46 * var(--campus-vh)); --campus-copy:100%; }
  .campus-story .campus-scene { top:120px; height:calc(46 * var(--campus-vh)); min-height:300px; margin-bottom:calc(-1 * max(46 * var(--campus-vh),300px)); z-index:3; }
  .campus-story .campus-scene::after { background:linear-gradient(0deg,var(--campus-night),#081e1700 34%); }
  /* Below the model the dark fade continues over the reading column, so copy
     scrolling up melts into the scene instead of being cut at its edge. Off
     while the page rests at the top, where it would dim the opening. */
  .campus-story .campus-chapters::after { content:""; position:fixed; z-index:1; left:0; right:0; top:calc(80px + 40px + max(46 * var(--campus-vh),300px) - 1px); height:28px; background:linear-gradient(var(--campus-night),#081e1700); pointer-events:none; opacity:0; transition:opacity .35s ease; }
  .campus-story[data-campus-scrolled="true"] .campus-chapters::after { opacity:1; }
  .campus-story canvas[data-campus-canvas] { width:100%; height:100%; top:0; right:0; }
  .campus-story .campus-opening { width:100%; right:0; }
  .campus-story .campus-fallback { inset:0; width:100%; height:100%; }
  .campus-story .campus-fallback figcaption { bottom:17px; font-size:9px; }
  .campus-story .campus-topline { top:14px; font-size:8px; }
  .campus-story .campus-controls { top:36px; right:var(--pad); }
  .campus-story .campus-controls button { min-height:34px; padding:8px 10px; font-size:9px; }
  .campus-story .campus-legend { top:82px; gap:12px; font-size:8px; }
  .campus-story .campus-caption-line { left:var(--pad); right:var(--pad); bottom:18px; padding-top:12px; min-height:31px; gap:14px; }
  .campus-story .campus-caption { font-size:10px; }
  .campus-story .campus-step { font-size:9px; }
  .campus-story .campus-progress-track { height:2px; }
  .campus-story .campus-status { left:50%; top:44%; max-width:76%; width:auto; min-width:230px; transform:translateX(-50%); font-size:11px; }
  .campus-story .campus-nav { top:80px; height:40px; margin-bottom:-40px; padding:0; gap:0; }
  .campus-story .campus-nav-label { display:none; }
  .campus-story .campus-nav-links { width:100%; margin:0; padding:0 var(--pad); gap:20px; overflow-x:auto; overscroll-behavior-x:contain; scrollbar-width:none; }
  .campus-story .campus-nav-links::-webkit-scrollbar { display:none; }
  .campus-story .campus-nav button { flex:none; font-size:10px; }
  .campus-story .campus-nav button::after { bottom:7px; }
  .campus-story .campus-nav button>span { display:none; }
  .campus-story .campus-chapter { min-height:0; align-items:flex-start; padding:70px var(--pad) 80px; scroll-margin-top:80px; }
  .campus-story .campus-hero { min-height:calc(105 * var(--campus-vh)); padding-top:calc(40px + max(46 * var(--campus-vh),300px) + 18px); }
  /* Scrolling is held during the opening: the heading, the sentence and the
     scroll cue fit under the model at once; the buttons follow on scrolling. */
  .campus-story .campus-hero .campus-copy { display:flex; flex-direction:column; align-items:flex-start; }
  .campus-story .campus-hero .campus-copy>p { order:1; }
  .campus-story .campus-hero .campus-copy>.campus-reading-cue { order:2; margin-top:16px; }
  .campus-story .campus-hero .campus-copy>.campus-actions { order:3; margin-top:28px; }
  .campus-story .campus-copy { width:100%; max-width:590px; }
  /* Defensive reset if a breakpoint changes before the next animation frame. */
  .campus-story[data-campus-reading-mode="panel"][data-campus-ready="true"]:not([data-campus-error="true"]) .campus-copy { position:static; max-height:none; opacity:1; visibility:visible; overflow:visible; pointer-events:auto; will-change:auto; }
  .campus-story[data-campus-reading-mode="panel"][data-campus-ready="true"]:not([data-campus-error="true"]) .campus-copy[data-campus-copy-state="hidden"] { visibility:visible; }
  .campus-story .campus-chapter[data-campus-stage="1"],.campus-story .campus-chapter[data-campus-stage="3"],.campus-story .campus-chapter[data-campus-stage="4"] { min-height:0; }
  .campus-story .campus-mode-line { left:var(--pad); right:var(--pad); bottom:66px; font-size:8px; }
  .campus-story .campus-eyebrow { margin-bottom:20px; font-size:9px; }
  .campus-story h1 { font-size:clamp(42px,7.4vw,54px); }
  .campus-story h2 { font-size:clamp(43px,7.4vw,56px); }
  .campus-story .campus-copy>p { margin-top:22px; font-size:14px; max-width:530px; line-height:1.75; }
  .campus-story .campus-copy>p.campus-lead { font-size:14px; }
  .campus-story .campus-reading-cue { margin-top:23px; }
  .campus-story[data-campus-error="true"] .campus-scene { height:310px; }
  .campus-story[data-campus-error="true"] .campus-nav { margin-top:0; }
}
@media (max-width:390px) {
  .campus-story h1 { font-size:40px; }
  .campus-story h2 { font-size:42px; }
  .campus-story .campus-eyebrow { font-size:8px; }
  .campus-story .campus-copy>p { font-size:13px; }
  .campus-story .button { font-size:11px; padding:15px 16px; }
}
@media (min-width:761px) and (max-height:820px) {
  .campus-story h2 { font-size:clamp(42px,4vw,52px); }
  .campus-story .campus-copy>p:not(.campus-lead) { font-size:13.5px; line-height:1.72; margin-top:20px; }
}
/* assets/js/vendor/lenis.css */
html.lenis,
html.lenis body {
  height: auto;
}

.lenis:not(.lenis-autoToggle).lenis-stopped {
  overflow: clip;
}

.lenis [data-lenis-prevent],
.lenis [data-lenis-prevent-wheel],
.lenis [data-lenis-prevent-touch],
.lenis [data-lenis-prevent-vertical],
.lenis [data-lenis-prevent-horizontal] {
  overscroll-behavior: contain;
}

.lenis.lenis-smooth iframe {
  pointer-events: none;
}

.lenis.lenis-autoToggle {
  transition-property: overflow;
  transition-duration: 1ms;
  transition-behavior: allow-discrete;
}
/* assets/css/campus-baseline.css */
/* The standalone tour uses the Kiindulo-honlap typography, palette and cut
 * corners. Scope every rule to this page; the original website stays intact.
 * Scene, reading and callout geometry remain owned by the existing experience.
 */
.campus-preview-page {
  --pad:var(--content-pad);
  --campus-header-height:89px;
  background:var(--black);
  font-family:Manrope,ui-sans-serif,system-ui,-apple-system,BlinkMacSystemFont,"Segoe UI",sans-serif;
}
.campus-preview-page .pointer-glow,
.campus-preview-page>.scroll-progress { display:none; }
/* Scrolling drives the tour here, so the header (and the phone menu bar) stays solid white
   instead of turning into the translucent glass of the other pages. */
.campus-preview-page .site-header { background-color:#fff; -webkit-backdrop-filter:none; backdrop-filter:none; transition:none; }
.campus-preview-page .campus-story {
  --campus-night:var(--black);
  --campus-height:calc(100 * var(--campus-vh) - var(--campus-header-height));
  --campus-accent:var(--mint);
  color:#f1f8f3;
  font-family:inherit;
}
.campus-preview-page .campus-story[data-campus-active="1"],
.campus-preview-page .campus-story[data-campus-active="4"] { --campus-accent:#29b5d0; }
.campus-preview-page .campus-story[data-campus-active="2"] { --campus-accent:#e6ad4e; }
.campus-preview-page .campus-story[data-campus-active="3"] { --campus-accent:#ee7666; }
.campus-preview-page .campus-story[data-campus-highlight="generator"] { --campus-accent:#c4a37d; }
.campus-preview-page .campus-scene {
  top:var(--campus-header-height);
  background:radial-gradient(ellipse at 70% 48%,#28423b 0%,#203831 38%,#192a25 65%,var(--black) 92%);
}
.campus-preview-page .campus-scene::after {
  background:linear-gradient(90deg,var(--black) 0%,var(--black) 26%,#14201de8 31%,#14201d70 40%,transparent 53%);
}
.campus-preview-page .campus-chapter { scroll-margin-top:var(--campus-header-height); }
.campus-preview-page .campus-copy { font-family:inherit; }
.campus-preview-page .campus-story h1,
.campus-preview-page .campus-story h2 {
  font-family:Sora,Manrope,sans-serif;
  font-weight:500;
  letter-spacing:-.025em;
  line-height:1.13;
  color:#fbfdf9;
}
.campus-preview-page .campus-story h1 { font-size:clamp(38px,3.7vw,57px); }
.campus-preview-page .campus-story h2 { font-size:clamp(38px,3.65vw,56px); }
.campus-preview-page .campus-story h1 em,
.campus-preview-page .campus-story h2 em { color:var(--mint); }
.campus-preview-page .campus-copy>p,
.campus-preview-page .campus-copy>p.campus-lead { color:#bdcec5; font-size:14px; line-height:1.85; }
.campus-preview-page .campus-eyebrow,
.campus-preview-page .campus-topline,
.campus-preview-page .campus-step,
.campus-preview-page .campus-mode-line,
.campus-preview-page .campus-nav button>span {
  font-family:Manrope,ui-sans-serif,system-ui,sans-serif;
  font-weight:700;
}
.campus-preview-page .campus-eyebrow { color:var(--mint); letter-spacing:.13em; font-size:9px; }
.campus-preview-page .campus-topline { color:#a9c1b6; }
.campus-preview-page .campus-topline>span:last-child { color:#7e9b8f; }
.campus-preview-page .campus-controls,
.campus-preview-page .campus-legend,
.campus-preview-page .campus-topline,
.campus-preview-page .campus-mode-line { display:none; }
.campus-preview-page .campus-reading-cue { color:var(--mint); font-size:11px; font-weight:600; letter-spacing:.02em; }
.campus-preview-page .campus-reading-cue>span { background:var(--green); }
.campus-preview-page .campus-story .text-link {
  color:var(--mint);
  border-color:#6f9e906e;
  font-family:inherit;
  font-size:12px;
  font-weight:700;
}
.campus-preview-page .campus-story .text-link:hover { color:#fff; border-color:var(--mint); }
.campus-preview-page .campus-story .button {
  --cut-line:var(--green);
  --cut-size:var(--cut-sm);
  background:var(--green);
  color:#fff;
  border:0;
  border-radius:0;
  font-family:inherit;
  font-weight:800;
  font-size:11px;
  line-height:1.4;
  letter-spacing:.035em;
  text-transform:uppercase;
  clip-path:polygon(0 0,calc(100% - var(--cut-sm)) 0,100% var(--cut-sm),100% 100%,var(--cut-sm) 100%,0 calc(100% - var(--cut-sm)));
}
.campus-preview-page .campus-story .button.light {
  --cut-line:var(--mint);
  background:var(--mint);
  color:var(--black);
}
.campus-preview-page .campus-story .button:hover,
.campus-preview-page .campus-story .button.light:hover {
  --cut-line:#d2eadc;
  background:#d2eadc;
  color:var(--black);
}
.campus-preview-page .campus-controls button {
  position:relative;
  border:0;
  border-radius:0;
  min-height:40px;
  padding:10px 15px;
  background:#243c34;
  color:#c8ddd1;
  font-family:inherit;
  font-weight:700;
  font-size:9px;
  letter-spacing:.025em;
  text-transform:uppercase;
  clip-path:polygon(0 0,calc(100% - 7px) 0,100% 7px,100% 100%,7px 100%,0 calc(100% - 7px));
}
.campus-preview-page .campus-controls button:hover,
.campus-preview-page .campus-controls button[aria-pressed="true"] { background:var(--green); color:#fff; }
.campus-preview-page .campus-controls button:focus-visible { outline-offset:-3px; }
.campus-preview-page .campus-legend { color:#c5d7cd; font-family:inherit; }
.campus-preview-page .campus-status {
  background:#14201de8;
  color:#c5d9cd;
  border-left-color:var(--mint);
}
.campus-preview-page .campus-caption-line,
.campus-preview-page .campus-mode-line { background:#14201de8; }
.campus-preview-page .campus-caption-line { border-top-color:#3d756c66; }
.campus-preview-page .campus-caption { color:#cbded2; font-family:inherit; font-weight:500; }
.campus-preview-page .campus-caption-end { color:#86aa9a; }
/* Let the complete source plan and rising contours use the opening frame.
   Section metadata returns once the spatial model has settled. */
.campus-preview-page .campus-story[data-campus-ready="true"][data-campus-intro]:not([data-campus-intro="complete"]) :is(.campus-mode-line,.campus-caption-line) { visibility:hidden; }
.campus-preview-page .campus-step,
.campus-preview-page .campus-mode-line { color:#a3c2b4; }
.campus-preview-page .campus-progress-track { background:#365349; }
.campus-preview-page .campus-nav {
  top:var(--campus-header-height);
  background:#14201dea;
  border-color:#3d756c66;
  font-family:inherit;
}
.campus-preview-page .campus-nav-label {
  color:var(--mint);
  font-size:10px;
  font-weight:800;
  letter-spacing:.13em;
}
.campus-preview-page .campus-nav button {
  color:#92b1a2;
  font-size:10px;
  font-weight:700;
  letter-spacing:.025em;
  text-transform:uppercase;
  background-image:none;
}
.campus-preview-page .campus-nav button>span { color:#6e9582; }
.campus-preview-page .campus-nav button:hover,
.campus-preview-page .campus-nav button[aria-current="step"] { color:#f1f8f3; }
.campus-preview-page .campus-nav button[aria-current="step"]>span { color:var(--mint); }
.campus-preview-page .campus-story :focus-visible { outline-color:var(--mint); }
/* Keep the measured boxes, leaders and marker geometry intact. Higher scope
 * specificity wins over the runtime-injected label stylesheet, without !important.
 */
.campus-preview-page .btr-campus-callout {
  font-family:Manrope,ui-sans-serif,system-ui,sans-serif;
  color:#eef7f0;
  background:#14201df0;
  border-left-color:var(--mint);
}
.campus-preview-page .btr-campus-callout small { color:#a8c9b7; font-weight:600; }
.campus-preview-page .btr-campus-callout strong { font-family:inherit; font-weight:700; }
.campus-preview-page .btr-campus-callout span { color:#b4cabc; }
.campus-preview-page .btr-campus-callouts path { stroke:#b7ddc8; }
.campus-preview-page .btr-campus-callouts circle { fill:#d7ecdf; stroke:var(--black); }
.campus-preview-page .campus-story[data-campus-error="true"] .campus-scene { top:auto; }
.campus-preview-page .campus-story[data-campus-error="true"] .campus-scene::after { background:linear-gradient(0deg,#14201d40,transparent); }
.campus-preview-page .campus-story[data-campus-error="true"] .campus-chapter { border-top-color:#3d756c66; }
@media (min-width:761px) and (max-height:820px) {
  .campus-preview-page .campus-story h1,
  .campus-preview-page .campus-story h2 { font-size:clamp(36px,3.5vw,49px); }
  .campus-preview-page .campus-copy>p:not(.campus-lead) { font-size:13.5px; line-height:1.76; }
}
@media (max-width:1100px) and (min-width:761px) {
  .campus-preview-page .campus-story h1,
  .campus-preview-page .campus-story h2 { font-size:clamp(36px,3.8vw,43px); }
}
@media (max-width:760px) {
  .campus-preview-page { --campus-header-height:61px; }
  .campus-preview-page .campus-story { --campus-height:calc(46 * var(--campus-vh)); }
  .campus-preview-page .campus-scene { top:calc(var(--campus-header-height) + 40px); }
  .campus-preview-page .campus-scene::after { background:linear-gradient(0deg,var(--black),#14201d00 34%); }
  .campus-preview-page .campus-chapters::after { top:calc(var(--campus-header-height) + 40px + max(46 * var(--campus-vh),300px) - 1px); background:linear-gradient(var(--black),#14201d00); }
  /* The chapter labels above already say where the tour is. */
  .campus-preview-page .campus-caption-line { display:none; }
  .campus-preview-page .campus-nav { background:var(--black); }
  .campus-preview-page .campus-nav button { font-size:10px; letter-spacing:.02em; }
  .campus-preview-page .campus-controls button { min-height:34px; padding:8px 11px; font-size:8px; }
  .campus-preview-page .campus-story h1,
  .campus-preview-page .campus-story h2 { font-size:clamp(34px,7.4vw,46px); }
  .campus-preview-page .campus-copy>p,
  .campus-preview-page .campus-copy>p.campus-lead { font-size:14px; line-height:1.8; }
  .campus-preview-page .campus-story .button { font-size:11px; }
}
@media (max-width:390px) {
  .campus-preview-page .campus-story h1,
  .campus-preview-page .campus-story h2 { font-size:34px; }
}

/* The published homepage uses short statements in the existing reading panels.
   Keep every scene, chapter and navigation dimension owned by the tour. */
.campus-homepage .campus-story h1,
.campus-homepage .campus-story h2 {
  font-size:clamp(42px,4.25vw,64px);
  line-height:1.08;
  letter-spacing:-.035em;
  text-wrap:initial;
}
.campus-homepage .campus-story h2 { font-size:clamp(38px,3.45vw,50px); }
.campus-homepage .campus-heading-line {
  display:block;
  white-space:nowrap;
}
.campus-homepage .campus-experience-years {
  display:block;
  margin-bottom:14px;
  font-size:clamp(64px,6.3vw,92px);
  line-height:1;
  letter-spacing:-.055em;
  white-space:nowrap;
}
/* The brand name is longer than a year: a step smaller, so it stays inside
   the reading column without wrapping. Phones keep the 46px of the years. */
.campus-homepage .campus-hero-brand { font-size:clamp(54px,5vw,74px); }
/* The opening statement is a full sentence (2026-10-27): its two parts wrap,
   balanced, inside the reading column (the fixed panel clips sideways), at a
   size that keeps the opening as tall as the former two short lines. */
.campus-homepage .campus-story .campus-hero h1 { font-size:clamp(30px,2.5vw,36px); }
.campus-homepage .campus-hero .campus-heading-line { white-space:normal; text-wrap:balance; }
/* Three set lines (2026-10-29): "Adatközpontokat és" and "szervertermeket
   tervezünk," in white, "építünk és karbantartunk." in green, each on one
   line. Beside the model they may reach a little past the reading column
   over it, and the panel widens with them; the lead text below keeps its
   width. On phones the lines fit the full-width column as they are. */
@media (min-width:761px) {
  .campus-homepage .campus-story .campus-hero .campus-copy { width:max-content; }
  .campus-homepage .campus-hero .campus-heading-line { white-space:nowrap; }
  .campus-homepage .campus-story .campus-hero .campus-copy>p { max-width:min(360px,var(--campus-copy)); }
}
.campus-homepage .campus-copy>p,
.campus-homepage .campus-copy>p.campus-lead {
  font-size:14px;
  line-height:1.75;
}
.campus-homepage .campus-actions {
  display:flex;
  flex-direction:column;
  align-items:flex-start;
  gap:12px;
  margin-top:26px;
}
.campus-homepage .campus-actions .button {
  max-width:100%;
  gap:18px;
  text-align:left;
}
.campus-homepage .campus-actions .button>span { flex-shrink:0; }
@media (max-width:1100px) and (min-width:761px) {
  .campus-homepage .campus-story h1 { font-size:clamp(38px,4.2vw,46px); }
  .campus-homepage .campus-story .campus-hero h1 { font-size:30px; }
  .campus-homepage .campus-story h2 { font-size:38px; }
}
@media (max-width:760px) {
  .campus-homepage .campus-story h1,
  .campus-homepage .campus-story h2 { font-size:clamp(34px,7.4vw,46px); }
  /* The opening must fit under the model without scrolling (held meanwhile). */
  .campus-homepage .campus-story .campus-hero h1 { font-size:24px; }
  .campus-homepage .campus-experience-years { font-size:46px; margin-bottom:6px; }
  .campus-homepage .campus-hero .campus-eyebrow { margin-bottom:10px; }
  .campus-homepage .campus-hero .campus-copy>p.campus-lead { margin-top:12px; font-size:13.5px; line-height:1.55; }
}
/* Short phones (640 px tall) keep the scroll cue on the first screen too. */
@media (max-width:760px) and (max-height:680px) {
  .campus-homepage .campus-experience-years { font-size:36px; margin-bottom:2px; }
  .campus-homepage .campus-story .campus-hero h1 { font-size:21px; }
  .campus-homepage .campus-hero .campus-eyebrow { margin-bottom:6px; }
  .campus-homepage .campus-hero .campus-copy>p.campus-lead { margin-top:8px; font-size:12.5px; line-height:1.45; }
}
