/* ==========================================================================
   GCUBE — design system
   Brand: logo black + emerald (#05c187). Type: Commissioner + JetBrains Mono.
   ========================================================================== */

:root {
  --ink: #0a1311;
  --ink-2: #0f1a17;
  --ink-3: #15221e;
  --ink-4: #1c2b27;
  --paper: #f4f6f3;
  --paper-2: #e9eee9;
  --white: #fff;
  --green: #05c187;
  --green-hover: #2bd49d;
  --green-deep: #036b4d;
  --green-soft: rgba(5, 193, 135, .12);
  --text: var(--ink);
  --muted: #4b5b55;
  --muted-dark: #9fb0a9;
  --danger: #b3261e;
  --line: rgba(10, 19, 17, .12);
  --line-strong: rgba(10, 19, 17, .22);
  --line-dark: rgba(255, 255, 255, .1);
  --line-dark-strong: rgba(255, 255, 255, .2);

  --radius-sm: 8px;
  --radius: 14px;
  --radius-lg: 22px;
  --shadow-sm: 0 1px 2px rgba(10, 19, 17, .05), 0 4px 14px -6px rgba(10, 19, 17, .08);
  --shadow: 0 16px 36px -18px rgba(10, 19, 17, .3);
  --shadow-lg: 0 34px 70px -32px rgba(10, 19, 17, .4);

  --ease: cubic-bezier(.4, 0, .2, 1);
  --ease-out: cubic-bezier(.16, 1, .3, 1);

  --header-h: 76px;
  --container: 1240px;
  --gutter: clamp(16px, 4vw, 40px);

  --font-sans: "Commissioner", system-ui, -apple-system, "Segoe UI", Roboto, "Helvetica Neue", Arial, sans-serif;
  --font-mono: "JetBrains Mono", ui-monospace, SFMono-Regular, Menlo, Consolas, monospace;
  --font-brand: "Chakra Petch", var(--font-sans);
}

@view-transition { navigation: auto; }

/* ---------- Base ---------- */
*, *::before, *::after { box-sizing: border-box; }
html {
  -webkit-text-size-adjust: 100%;
  text-size-adjust: 100%;
  scroll-padding-top: calc(var(--header-h) + 16px);
}
/* Smooth only after load, so arriving at /#section from another page jumps straight there. */
html.is-ready { scroll-behavior: smooth; }
html.menu-open { overflow: hidden; }
body {
  margin: 0;
  min-height: 100vh;
  font-family: var(--font-sans);
  font-size: 1.0625rem;
  line-height: 1.65;
  color: var(--text);
  background: var(--paper);
  -webkit-font-smoothing: antialiased;
  -moz-osx-font-smoothing: grayscale;
  text-rendering: optimizeLegibility;
}
img, svg, picture, video { display: block; max-width: 100%; }
img { height: auto; }
a { color: inherit; text-decoration: none; }
button, input, select, textarea { font: inherit; color: inherit; }
h1, h2, h3, h4, p, ul, ol, figure, blockquote { margin: 0; }
ul, ol { padding: 0; list-style: none; }
h1, h2, h3 { font-weight: 700; line-height: 1.1; letter-spacing: -.025em; text-wrap: balance; }
p { text-wrap: pretty; }
::selection { background: var(--green); color: var(--ink); }
:focus-visible { outline: 2px solid var(--green); outline-offset: 3px; border-radius: 4px; }
main:focus { outline: none; }

.sr-only {
  position: absolute !important;
  width: 1px; height: 1px;
  padding: 0; margin: -1px;
  overflow: hidden; clip: rect(0, 0, 0, 0);
  white-space: nowrap; border: 0;
}
.skip-link {
  position: fixed; top: 12px; left: 12px; z-index: 100;
  padding: 12px 18px; border-radius: var(--radius-sm);
  background: var(--green); color: var(--ink); font-weight: 600;
  transform: translateY(-160%);
  transition: transform .2s var(--ease);
}
.skip-link:focus { transform: none; }

.container {
  width: 100%;
  max-width: calc(var(--container) + var(--gutter) * 2);
  margin-inline: auto;
  padding-inline: var(--gutter);
}
.mono { font-family: var(--font-mono); letter-spacing: .02em; }

/* ---------- Icons ---------- */
.icon {
  width: 1.25em; height: 1.25em; flex: none;
  fill: none; stroke: currentColor; stroke-width: 1.75;
  stroke-linecap: round; stroke-linejoin: round;
}
.cube-ico { width: 28px; height: auto; flex: none; overflow: visible; }
.cube-ico .f { fill: transparent; stroke: currentColor; stroke-width: 1.4; stroke-linejoin: round; }
.cube-ico--top .f-top,
.cube-ico--left .f-left,
.cube-ico--right .f-right { fill: var(--green); }

/* ---------- Brand ---------- */
.brand { display: inline-flex; align-items: center; gap: 12px; color: #fff; }
.brand-mark { width: 40px; height: auto; flex: none; overflow: visible; }
.brand-mark-fill { fill: var(--ink); }
.brand-mark-lines { fill: none; stroke: var(--green); stroke-width: 9; stroke-linejoin: miter; }
.brand-text { display: flex; flex-direction: column; line-height: 1; }
.brand-name { font-family: var(--font-brand); font-weight: 700; font-size: 1.42rem; letter-spacing: .06em; }
.brand-sub {
  margin-top: 6px;
  font-family: var(--font-mono); font-size: .6rem; font-weight: 500;
  letter-spacing: .2em; text-transform: uppercase; color: var(--muted-dark);
}
.brand--lg .brand-mark { width: 54px; }
.brand--lg .brand-name { font-size: 1.85rem; }
.header-brand { display: inline-flex; flex: none; border-radius: 6px; }
.header-brand:hover .brand-mark-lines { stroke: var(--green-hover); }

/* ---------- Buttons & links ---------- */
.btn {
  --h: 48px;
  display: inline-flex; align-items: center; justify-content: center; gap: .6em;
  min-height: var(--h); padding: 0 1.3em;
  border: 1px solid transparent; border-radius: var(--radius-sm);
  font-weight: 600; font-size: .98rem; line-height: 1.1; letter-spacing: -.005em;
  white-space: nowrap; cursor: pointer;
  transition: background-color .25s var(--ease), color .25s var(--ease), border-color .25s var(--ease), box-shadow .3s var(--ease), transform .2s var(--ease);
}
.btn .icon { width: 1.15em; height: 1.15em; transition: transform .3s var(--ease-out); }
.btn:hover > .icon:last-child:not(:first-child) { transform: translateX(3px); }
.btn:active { transform: translateY(1px); }
.btn--sm { --h: 40px; padding: 0 1.05em; font-size: .92rem; }
.btn--lg { --h: 56px; padding: 0 1.55em; font-size: 1rem; }
.btn--block { width: 100%; }
.btn--primary { background: var(--green); color: var(--ink); }
.btn--primary:hover { background: var(--green-hover); box-shadow: 0 12px 30px -12px rgba(5, 193, 135, .7); }
.btn--ghost { border-color: rgba(255, 255, 255, .28); color: #fff; }
.btn--ghost:hover { background: rgba(255, 255, 255, .08); border-color: rgba(255, 255, 255, .55); }
.btn--dark { background: var(--ink); color: #fff; }
.btn--dark:hover { background: var(--ink-4); }
.btn-row { display: flex; flex-wrap: wrap; gap: 12px; }

.text-link { display: inline-flex; align-items: center; gap: 8px; font-weight: 600; color: var(--green-deep); }
.text-link .icon { width: 18px; height: 18px; transition: transform .3s var(--ease-out); }
.text-link:hover .icon { transform: translateX(3px); }

.eyebrow {
  display: inline-flex; align-items: center; gap: .8em;
  font-family: var(--font-mono); font-size: .76rem; font-weight: 500; line-height: 1.4;
  letter-spacing: .14em; text-transform: uppercase; color: var(--green-deep);
}
.eyebrow .idx {
  display: inline-grid; place-items: center;
  min-width: 2.6em; height: 1.9em; padding: 0 .55em;
  border: 1px solid currentColor; border-radius: 999px;
  letter-spacing: .04em;
}

/* ---------- Header ---------- */
.site-header {
  position: fixed; inset: 0 0 auto; z-index: 50;
  height: var(--header-h);
  color: #fff;
  view-transition-name: site-header;
  transition: background-color .35s var(--ease), box-shadow .35s var(--ease);
}
.site-header::after {
  content: ""; position: absolute; inset: auto 0 0; height: 1px;
  background: var(--line-dark); opacity: 0; transition: opacity .35s var(--ease);
}
.site-header.is-scrolled {
  background: rgba(10, 19, 17, .93);
  -webkit-backdrop-filter: saturate(160%) blur(16px);
  backdrop-filter: saturate(160%) blur(16px);
}
.site-header.is-scrolled::after { opacity: 1; }
.header-inner { height: 100%; display: flex; align-items: center; gap: 20px; }

.nav { margin-left: clamp(16px, 3vw, 44px); height: 100%; }
.nav-list { display: flex; align-items: center; gap: 2px; height: 100%; }
.nav-item { display: flex; align-items: center; height: 100%; }
.nav-link {
  display: inline-flex; align-items: center; gap: 6px;
  height: 40px; padding: 0 14px;
  border: 0; border-radius: 999px; background: none; cursor: pointer;
  font-size: .95rem; font-weight: 500; color: rgba(255, 255, 255, .8);
  transition: color .2s var(--ease), background-color .2s var(--ease);
}
.nav-link:hover, .has-mega.is-open > .nav-link { color: #fff; background: rgba(255, 255, 255, .08); }
.nav-chevron { width: 16px; height: 16px; transition: transform .3s var(--ease-out); }
.has-mega.is-open .nav-chevron { transform: rotate(180deg); }

.header-actions { margin-left: auto; display: flex; align-items: center; gap: 8px; }
/* ESPA banner: the only header item that may shrink when space is tight (e.g. 1024px with a classic scrollbar). */
.header-actions { min-width: 0; }
.header-espa {
  display: flex; flex: 0 1 auto; min-width: 0; max-width: 240px; overflow: hidden;
  margin-right: 6px; padding: 4px 7px; border-radius: 8px; background: #fff;
  transition: max-width .35s var(--ease), margin .35s var(--ease), padding .35s var(--ease), opacity .25s var(--ease), visibility 0s;
}
.header-espa img { width: 204px; max-width: 100%; height: auto; }
/* Once the page scrolls (sticky header), the ESPA banner folds away; it stays at the top of the page and in the footer. */
.site-header.is-scrolled .header-espa {
  max-width: 0; margin-right: 0; padding-inline: 0; opacity: 0; visibility: hidden;
  transition: max-width .35s var(--ease), margin .35s var(--ease), padding .35s var(--ease), opacity .2s var(--ease), visibility 0s .35s;
}
.nav-link, .header-phone, .header-cta { white-space: nowrap; }
.header-phone, .header-cta, .menu-toggle { flex: none; }
.header-phone {
  display: inline-flex; align-items: center; gap: 8px;
  height: 40px; padding: 0 12px; border-radius: 999px;
  font-size: .95rem; font-weight: 600; font-variant-numeric: tabular-nums;
  transition: background-color .2s var(--ease);
}
.header-phone .icon { width: 18px; height: 18px; color: var(--green); }
.header-phone:hover { background: rgba(255, 255, 255, .08); }
.menu-toggle {
  display: none; place-items: center;
  width: 44px; height: 44px; border-radius: 999px;
  background: rgba(255, 255, 255, .08); color: #fff;
}
.menu-toggle .icon { width: 22px; height: 22px; }

/* Mega menu */
.mega {
  position: absolute; left: 0; right: 0; top: 100%;
  opacity: 0; visibility: hidden; transform: translateY(-8px);
  transition: opacity .22s var(--ease), transform .3s var(--ease-out), visibility 0s linear .3s;
}
.mega::before {
  content: ""; position: absolute; inset: 0; z-index: -1;
  background: var(--ink-2);
  border-top: 1px solid var(--line-dark); border-bottom: 1px solid var(--line-dark);
  box-shadow: 0 40px 70px -30px rgba(0, 0, 0, .6);
}
.has-mega.is-open .mega,
.no-js .has-mega:hover .mega,
.no-js .has-mega:focus-within .mega {
  opacity: 1; visibility: visible; transform: none;
  transition: opacity .22s var(--ease), transform .3s var(--ease-out), visibility 0s;
}
.mega-inner { display: grid; grid-template-columns: repeat(3, minmax(0, 1fr)) minmax(0, 1.05fr); gap: 32px; padding-block: 30px 34px; }
.mega-cat {
  display: flex; align-items: center; gap: 12px;
  padding-bottom: 14px; margin-bottom: 8px; border-bottom: 1px solid var(--line-dark);
  font-size: 1.05rem; font-weight: 650; color: #fff;
}
.mega-cat small { display: block; font-family: var(--font-mono); font-size: .68rem; font-weight: 500; letter-spacing: .12em; color: var(--green); }
.mega-cat .cube-ico { width: 30px; color: rgba(255, 255, 255, .7); }
.mega-cat:hover { color: var(--green); }
.mega-list li > * {
  display: flex; align-items: center; justify-content: space-between; gap: 10px;
  padding: 7px 0; font-size: .93rem; line-height: 1.35; color: rgba(255, 255, 255, .66);
}
.mega-list a { color: #fff; font-weight: 550; }
.mega-list a .icon { width: 16px; height: 16px; color: var(--green); transition: transform .3s var(--ease-out); }
.mega-list a:hover { color: var(--green); }
.mega-list a:hover .icon { transform: translateX(3px); }
.mega-aside {
  display: flex; flex-direction: column; align-items: flex-start; gap: 12px;
  padding: 24px; border-radius: var(--radius);
  background: linear-gradient(160deg, rgba(5, 193, 135, .16), rgba(5, 193, 135, .03));
  border: 1px solid rgba(5, 193, 135, .25);
  font-size: .93rem; color: rgba(255, 255, 255, .72);
}
.mega-aside-title { font-size: 1.05rem; font-weight: 650; color: #fff; }
.mega-aside .btn { margin-top: auto; }
.mega-all { display: inline-flex; align-items: center; gap: 6px; font-size: .9rem; font-weight: 600; color: var(--green); }
.mega-all .icon { width: 16px; height: 16px; transition: transform .3s var(--ease-out); }
.mega-all:hover .icon { transform: translateX(3px); }

/* Mobile navigation (dialog) */
.mnav {
  position: fixed; inset: 0;
  width: 100%; max-width: 100%; height: 100%; max-height: 100%;
  margin: 0; padding: 0; border: 0;
  background: var(--ink); color: #fff;
  flex-direction: column; overflow-y: auto; overscroll-behavior: contain;
}
.mnav[open] { display: flex; animation: mnav-in .4s var(--ease-out); }
.mnav::backdrop { background: rgba(10, 19, 17, .6); }
@keyframes mnav-in { from { opacity: 0; transform: translateY(-14px); } }
.mnav-head {
  display: flex; align-items: center; justify-content: space-between; flex: none;
  height: var(--header-h); padding-inline: var(--gutter); border-bottom: 1px solid var(--line-dark);
}
.mnav-close {
  display: grid; place-items: center; width: 44px; height: 44px;
  border: 0; border-radius: 999px; background: rgba(255, 255, 255, .08); color: #fff; cursor: pointer;
}
.mnav-close .icon { width: 22px; height: 22px; }
.mnav-body { flex: 1; padding: 24px var(--gutter) 12px; }
.mnav-label {
  margin-bottom: 6px;
  font-family: var(--font-mono); font-size: .72rem; letter-spacing: .14em; text-transform: uppercase; color: var(--green);
}
.mnav-group { border-bottom: 1px solid var(--line-dark); }
.mnav-group summary {
  display: flex; align-items: center; gap: 12px;
  padding: 16px 0; cursor: pointer; list-style: none;
  font-size: 1.28rem; font-weight: 650; letter-spacing: -.02em;
}
.mnav-group summary::-webkit-details-marker { display: none; }
.mnav-group summary .cube-ico { width: 30px; color: rgba(255, 255, 255, .7); }
.mnav-count {
  display: inline-grid; place-items: center; min-width: 24px; height: 22px; padding: 0 6px;
  border-radius: 999px; background: rgba(255, 255, 255, .08);
  font-family: var(--font-mono); font-size: .7rem; font-weight: 500; color: var(--muted-dark);
}
.mnav-plus { margin-left: auto; width: 22px; height: 22px; color: var(--green); transition: transform .3s var(--ease-out); }
.mnav-group[open] .mnav-plus { transform: rotate(45deg); }
.mnav-group ul { padding: 0 0 14px 42px; }
.mnav-group li > * {
  display: flex; align-items: center; justify-content: space-between; gap: 12px;
  padding: 9px 0; font-size: 1rem; color: rgba(255, 255, 255, .68);
}
.mnav-group a { color: #fff; font-weight: 550; }
.mnav-group a .icon { width: 18px; height: 18px; color: var(--green); }
.mnav-group .mnav-all { color: var(--green); font-weight: 600; }
.mnav-links a {
  display: block; padding: 16px 0; border-bottom: 1px solid var(--line-dark);
  font-size: 1.28rem; font-weight: 650; letter-spacing: -.02em;
}
.mnav-foot {
  display: grid; gap: 14px; flex: none;
  padding: 20px var(--gutter) calc(20px + env(safe-area-inset-bottom));
  border-top: 1px solid var(--line-dark);
}
.mnav-foot p { display: flex; align-items: center; justify-content: center; gap: 8px; font-size: .95rem; color: var(--muted-dark); }
.mnav-foot p .icon { width: 18px; height: 18px; color: var(--green); }

/* ---------- Dark hero shared background ---------- */
.hero-bg {
  position: absolute; inset: -24px; z-index: -1; pointer-events: none;
  background:
    radial-gradient(55% 60% at 74% 44%, rgba(5, 193, 135, .17), transparent 70%),
    radial-gradient(circle at center, rgba(255, 255, 255, .1) 1px, transparent 1.7px) 0 0 / 80px 33px,
    radial-gradient(circle at center, rgba(255, 255, 255, .1) 1px, transparent 1.7px) 40px 16.5px / 80px 33px;
  -webkit-mask-image: radial-gradient(85% 75% at 62% 45%, #000 25%, transparent 85%);
  mask-image: radial-gradient(85% 75% at 62% 45%, #000 25%, transparent 85%);
  transform: translate3d(calc(var(--px, 0) * -8px), calc(var(--py, 0) * -8px), 0);
  transition: transform .8s var(--ease-out);
}

/* ---------- Home hero ---------- */
.hero {
  position: relative; isolation: isolate; overflow: hidden;
  background: var(--ink); color: #fff;
  padding-top: calc(var(--header-h) + clamp(28px, 5vw, 64px));
}
.hero-grid {
  display: grid; grid-template-columns: minmax(0, 1fr) minmax(0, 1fr);
  align-items: center; gap: clamp(24px, 4vw, 64px);
  padding-bottom: clamp(36px, 5vw, 72px);
}
.hero-title {
  display: flex; flex-direction: column;
  font-size: clamp(3.3rem, 5.15vw, 4.7rem);
  font-weight: 750; line-height: 1; letter-spacing: -.045em;
}
.hero-eyebrow {
  margin-bottom: 28px; gap: 12px;
  color: var(--green); font-weight: 500; letter-spacing: .14em;
  animation: fade-up .8s var(--ease-out) both;
}
.pulse { position: relative; width: 8px; height: 8px; border-radius: 50%; background: var(--green); flex: none; }
.pulse::after {
  content: ""; position: absolute; inset: 0; border-radius: inherit;
  box-shadow: 0 0 0 0 rgba(5, 193, 135, .6);
  animation: pulse 2.4s var(--ease) infinite;
}
@keyframes pulse { 70% { box-shadow: 0 0 0 7px rgba(5, 193, 135, 0); } 100% { box-shadow: 0 0 0 0 rgba(5, 193, 135, 0); } }
.hero-title .line { display: block; overflow: hidden; padding: .08em 0 .14em; margin: -.08em 0 -.14em; }
.hero-title .line > span {
  display: inline-block;
  animation: rise 1s var(--ease-out) both;
  animation-delay: calc(.12s + var(--i) * .2s);
}
.hero-title i { font-style: normal; color: var(--green); }
.hero-lead {
  margin-top: 28px; max-width: 34em;
  font-size: clamp(1.05rem, 1.35vw, 1.18rem); line-height: 1.6; color: rgba(255, 255, 255, .72);
  animation: fade-up .9s var(--ease-out) .65s both;
}
.hero-actions { margin-top: 34px; animation: fade-up .9s var(--ease-out) .8s both; }
.hero-creds {
  display: flex; flex-wrap: wrap; gap: 10px 22px;
  margin-top: 38px; font-size: .9rem; color: rgba(255, 255, 255, .7);
  animation: fade-up .9s var(--ease-out) .95s both;
}
.hero-creds li { display: inline-flex; align-items: center; gap: 8px; }
.hero-creds .icon { width: 18px; height: 18px; color: var(--green); }
@keyframes rise { from { transform: translateY(108%); } }
@keyframes fade-up { from { opacity: 0; transform: translateY(16px); } }
@keyframes fade { to { opacity: 1; } }

/* Isometric cube */
.hero-visual { position: relative; }
.hero-cube {
  position: relative; width: 100%; max-width: 660px; margin-inline: auto;
  aspect-ratio: 720 / 620;
  transform: translate3d(calc(var(--px, 0) * 12px), calc(var(--py, 0) * 12px), 0);
  transition: transform .8s var(--ease-out);
}
.cube { width: 100%; height: 100%; overflow: visible; }
.face { transition: transform .7s var(--ease-out); }
.face-fill { transition: fill .45s var(--ease); }
.face--top .face-fill { fill: rgba(255, 255, 255, .055); }
.face--left .face-fill { fill: rgba(255, 255, 255, .018); }
.face--right .face-fill { fill: rgba(255, 255, 255, .034); }
.face-edge { fill: none; stroke: var(--green); stroke-width: 2; stroke-linejoin: round; }
.face-art { --art: rgba(255, 255, 255, .36); }
.face-art path { fill: none; stroke: var(--art); stroke-width: 1.15; stroke-linecap: round; stroke-linejoin: round; transition: stroke .45s var(--ease); }
.face-art .thin { stroke-width: .9; opacity: .75; }
.face-art .accent { stroke: var(--green); stroke-width: 2.4; }
.face-art .bar { stroke: rgba(255, 255, 255, .3); stroke-width: 1.1; animation: bar-in .8s var(--ease-out) both; animation-delay: calc(var(--d) * .8); }
.face-art .bar--a { fill: var(--green); stroke: var(--green); }
.face-art .bar--b { fill: rgba(5, 193, 135, .55); stroke: rgba(5, 193, 135, .85); }
.face-art .bar--c { fill: rgba(5, 193, 135, .22); stroke: rgba(5, 193, 135, .6); }
.draw { stroke-dasharray: 1; stroke-dashoffset: 1; animation: draw 1.2s var(--ease) forwards; animation-delay: calc(var(--d) * .8); }
@keyframes draw { to { stroke-dashoffset: 0; } }
@keyframes bar-in { from { opacity: 0; transform: translate(-13px, 5.4px); } }

.face--top:hover, .hero-cube[data-active="meletes"] .face--top { transform: translate(0, -18px); }
.face--left:hover, .hero-cube[data-active="kataskeues"] .face--left { transform: translate(-16px, 6.6px); }
.face--right:hover, .hero-cube[data-active="energeiaka"] .face--right { transform: translate(16px, 6.6px); }
.face:hover .face-fill,
.hero-cube[data-active="meletes"] .face--top .face-fill,
.hero-cube[data-active="kataskeues"] .face--left .face-fill,
.hero-cube[data-active="energeiaka"] .face--right .face-fill { fill: rgba(5, 193, 135, .13); }
.face:hover .face-art,
.hero-cube[data-active="meletes"] .face--top .face-art,
.hero-cube[data-active="kataskeues"] .face--left .face-art,
.hero-cube[data-active="energeiaka"] .face--right .face-art { --art: rgba(5, 193, 135, .95); }

.cube-annot { opacity: 0; animation: fade 1s var(--ease) 1.3s forwards; }
.cube-annot path, .cube-annot circle { fill: none; stroke: rgba(255, 255, 255, .26); stroke-width: 1; }
.cube-annot .solid { fill: rgba(255, 255, 255, .3); stroke: none; }
.cube-annot text { fill: rgba(255, 255, 255, .5); font-family: var(--font-mono); font-size: 11px; letter-spacing: .06em; }
.cube-leaders { opacity: 0; animation: fade .7s var(--ease) 1.7s forwards; }
.cube-leaders path { fill: none; stroke: rgba(255, 255, 255, .34); stroke-width: 1; }
.cube-leaders circle { fill: var(--ink); stroke: var(--green); stroke-width: 1.5; }

.cube-label {
  position: absolute; left: var(--x); top: var(--y);
  display: flex; flex-direction: column; gap: 3px;
  padding: 2px 2px 8px; white-space: nowrap;
  transform: translateY(-100%);
  opacity: 0; animation: fade .7s var(--ease) 1.8s forwards;
}
.cube-label-name { font-size: 1.02rem; font-weight: 650; letter-spacing: -.01em; transition: color .25s var(--ease); }
.cube-label-meta { font-family: var(--font-mono); font-size: .68rem; letter-spacing: .1em; text-transform: uppercase; color: var(--muted-dark); }
.cube-label:hover .cube-label-name, .cube-label.is-active .cube-label-name { color: var(--green); }

.cube-legend { display: none; flex-wrap: wrap; justify-content: center; gap: 8px; margin-top: 12px; }
.cube-legend a {
  display: inline-flex; align-items: center; gap: 8px;
  padding: 8px 14px 8px 10px; border-radius: 999px;
  border: 1px solid var(--line-dark-strong); font-size: .92rem; font-weight: 550;
  transition: border-color .25s var(--ease), background-color .25s var(--ease);
}
.cube-legend a:hover, .cube-legend a.is-active { border-color: var(--green); background: rgba(5, 193, 135, .1); }
.cube-legend .cube-ico { width: 22px; color: rgba(255, 255, 255, .75); }

.hero-bar { border-top: 1px solid var(--line-dark); font-size: .88rem; color: rgba(255, 255, 255, .64); }
.hero-bar-inner { display: flex; align-items: center; gap: 28px; min-height: 64px; }
.hero-bar a, .hero-bar span { display: inline-flex; align-items: center; gap: 8px; }
.hero-bar a { transition: color .2s var(--ease); }
.hero-bar a:hover { color: #fff; }
.hero-bar .icon { width: 16px; height: 16px; color: var(--green); }
.hero-geo { font-size: .76rem; letter-spacing: .08em; }
.scroll-cue { margin-left: auto; gap: 12px; font-family: var(--font-mono); font-size: .72rem; letter-spacing: .16em; text-transform: uppercase; }
.scroll-cue-line { position: relative; width: 1px; height: 30px; overflow: hidden; background: rgba(255, 255, 255, .2); }
.scroll-cue-line::after {
  content: ""; position: absolute; left: 0; top: -40%; width: 100%; height: 40%;
  background: var(--green); animation: scroll-cue 2.2s var(--ease) infinite;
}
@keyframes scroll-cue { to { top: 100%; } }

/* ---------- Ticker ---------- */
.ticker { overflow: hidden; background: var(--green); color: var(--ink); }
.ticker-track { display: flex; width: max-content; animation: ticker 70s linear infinite; }
.ticker:hover .ticker-track { animation-play-state: paused; }
.ticker ul { display: flex; flex: none; }
.ticker li { display: inline-flex; align-items: center; gap: 12px; padding: 15px 22px; font-size: .95rem; font-weight: 600; white-space: nowrap; }
.ticker .cube-ico { width: 20px; }
.ticker .cube-ico--top .f-top, .ticker .cube-ico--left .f-left, .ticker .cube-ico--right .f-right { fill: var(--ink); }
@keyframes ticker { to { transform: translateX(-50%); } }

/* ---------- Sections ---------- */
.section { position: relative; padding-block: clamp(76px, 10vw, 136px); }
.section-head { max-width: 780px; margin-bottom: clamp(40px, 5vw, 64px); }
.section-head h2 { margin-top: 18px; font-size: clamp(2rem, 4.1vw, 3.3rem); line-height: 1.05; letter-spacing: -.038em; }
.section-intro { margin-top: 18px; max-width: 40em; font-size: clamp(1.02rem, 1.3vw, 1.13rem); color: var(--muted); }
.section-head--split { max-width: none; display: grid; grid-template-columns: minmax(0, 1.25fr) minmax(0, 1fr); align-items: end; gap: 20px 64px; }
.section-head--split .section-intro { margin-top: 0; }

/* Services bento */
.services { background: var(--paper); }
.bento { display: grid; grid-template-columns: repeat(2, minmax(0, 1fr)); grid-template-areas: "e m" "k m"; gap: 20px; }
.svc-card--energeiaka { grid-area: e; }
.svc-card--meletes { grid-area: m; }
.svc-card--kataskeues { grid-area: k; }
.svc-card {
  position: relative; display: grid; overflow: hidden;
  background: #fff; border: 1px solid var(--line); border-radius: var(--radius-lg);
  scroll-margin-top: calc(var(--header-h) + 24px);
  transition: box-shadow .45s var(--ease), border-color .45s var(--ease), opacity .9s var(--ease-out), transform .9s var(--ease-out);
}
.svc-card:hover { border-color: transparent; box-shadow: var(--shadow-lg); }
.svc-card:target { border-color: var(--green); box-shadow: 0 0 0 4px var(--green-soft); }
.svc-card--energeiaka, .svc-card--kataskeues { grid-template-columns: minmax(0, .85fr) minmax(0, 1.15fr); }
.svc-card--meletes { grid-template-rows: auto 1fr; }
.svc-media { position: relative; overflow: hidden; background: var(--paper-2); }
.svc-media picture, .svc-media img { width: 100%; height: 100%; }
.svc-media img { object-fit: cover; transition: transform 1.2s var(--ease-out); }
.svc-card:hover .svc-media img { transform: scale(1.05); }
.svc-card--meletes .svc-media { aspect-ratio: 16 / 9; }
.svc-num {
  position: absolute; left: 14px; top: 14px;
  padding: 5px 10px; border-radius: 999px;
  background: rgba(10, 19, 17, .72); -webkit-backdrop-filter: blur(8px); backdrop-filter: blur(8px);
  color: #fff; font-size: .7rem; letter-spacing: .12em;
}
.svc-body { display: flex; flex-direction: column; padding: clamp(22px, 2.4vw, 32px); }
.svc-head { display: flex; align-items: center; gap: 12px; }
.svc-ico { width: 34px; color: var(--ink); }
.svc-head h3 { font-size: clamp(1.4rem, 2vw, 1.7rem); letter-spacing: -.03em; }
.svc-summary { margin-top: 12px; font-size: .98rem; line-height: 1.6; color: var(--muted); }
.svc-list { margin-top: auto; padding-top: 20px; }
.svc-list li { border-top: 1px solid var(--line); }
.svc-link {
  display: flex; align-items: center; justify-content: space-between; gap: 12px;
  padding: 12px 0; font-size: .97rem; font-weight: 550; line-height: 1.35;
  transition: color .2s var(--ease), padding .35s var(--ease-out);
}
.svc-link .icon { width: 18px; height: 18px; color: var(--green-deep); transition: transform .3s var(--ease-out); }
a.svc-link:hover { color: var(--green-deep); padding-left: 6px; }
a.svc-link:hover .icon { transform: translateX(3px); }
.svc-link--static { font-weight: 500; color: #2c3a35; }

/* Motto */
.manifesto {
  position: relative; overflow: hidden;
  padding-block: clamp(76px, 10vw, 140px);
  background: var(--paper); border-top: 1px solid var(--line);
  view-timeline-name: --motto;
}
.manifesto-mark { font-size: clamp(3rem, 6vw, 5rem); line-height: .6; color: var(--green); }
.manifesto-text { margin-top: 18px; max-width: 17.5em; font-size: clamp(1.9rem, 4.5vw, 3.9rem); font-weight: 650; line-height: 1.12; letter-spacing: -.038em; }
.manifesto-text .hl { color: var(--green-deep); }
.manifesto-sig { margin-top: 28px; font-size: .76rem; letter-spacing: .16em; text-transform: uppercase; color: var(--muted); }
.manifesto-sig::before { content: ""; display: inline-block; width: 36px; height: 1px; margin-right: 14px; vertical-align: middle; background: currentColor; }
.manifesto-grid { display: grid; grid-template-columns: minmax(0, 1.65fr) minmax(0, 1fr); align-items: center; gap: clamp(32px, 6vw, 96px); }
.energy-scale { display: grid; gap: 8px; }
.es-bar {
  display: flex; align-items: center;
  width: calc(40% + var(--i) * 10%); height: 38px; padding-left: 14px;
  clip-path: polygon(0 0, calc(100% - 16px) 0, 100% 50%, calc(100% - 16px) 100%, 0 100%);
  background: rgba(10, 19, 17, .06);
  font-family: var(--font-mono); font-size: .88rem; font-weight: 500; color: var(--muted);
  transform-origin: left center;
}
.es-bar:nth-child(1) { background: var(--green); color: var(--ink); }
.es-bar:nth-child(2) { background: rgba(5, 193, 135, .55); color: var(--ink); }
.es-bar:nth-child(3) { background: rgba(5, 193, 135, .28); color: var(--ink); }
.js .energy-scale .es-bar { transform: scaleX(0); transition: transform 1.1s var(--ease-out); transition-delay: calc(.2s + var(--i) * 90ms); }
.js .energy-scale.is-in .es-bar { transform: none; }
.es-caption { margin-top: 10px; font-size: .7rem; letter-spacing: .14em; text-transform: uppercase; color: var(--muted); }

/* About */
.about { background: #fff; }
.about-grid { display: grid; grid-template-columns: minmax(0, 1fr) minmax(0, 1.05fr); align-items: center; gap: clamp(36px, 6vw, 96px); }
.about-media { position: relative; }
.about-media picture { overflow: hidden; border-radius: var(--radius-lg); }
.about-media img { width: 100%; aspect-ratio: 773 / 621; object-fit: cover; }
.about-badge {
  position: absolute; left: clamp(-24px, -2vw, -12px); bottom: 28px;
  display: flex; flex-direction: column; gap: 4px;
  padding: 14px 18px; border-radius: 12px; background: var(--ink); color: #fff; box-shadow: var(--shadow);
  font-size: .98rem; line-height: 1.3;
}
.about-badge .mono { font-size: .66rem; letter-spacing: .16em; color: var(--green); }
.crop { position: absolute; width: 22px; height: 22px; border: 0 solid var(--green-deep); pointer-events: none; }
.crop--tl { top: -10px; left: -10px; border-top-width: 2px; border-left-width: 2px; }
.crop--tr { top: -10px; right: -10px; border-top-width: 2px; border-right-width: 2px; }
.crop--bl { bottom: -10px; left: -10px; border-bottom-width: 2px; border-left-width: 2px; }
.crop--br { bottom: -10px; right: -10px; border-bottom-width: 2px; border-right-width: 2px; }
.about-copy h2 { margin-top: 18px; font-size: clamp(2rem, 3.8vw, 3.1rem); letter-spacing: -.038em; line-height: 1.06; }
.about-text { display: grid; gap: 16px; margin-top: 24px; color: var(--muted); }
.creds { display: grid; gap: 10px; margin-top: 30px; }
.creds li {
  display: flex; align-items: flex-start; gap: 16px;
  padding: 16px 18px; border: 1px solid var(--line); border-radius: var(--radius); background: var(--paper);
}
.creds .icon { width: 26px; height: 26px; margin-top: 1px; color: var(--green-deep); }
.creds strong { display: block; font-size: 1rem; font-weight: 650; line-height: 1.35; }
.creds span { font-size: .88rem; color: var(--muted); }
.values { display: grid; grid-template-columns: repeat(4, minmax(0, 1fr)); margin-top: clamp(64px, 8vw, 112px); border-top: 1px solid var(--line); }
.value { padding: 32px 28px 4px 0; }
.value + .value { padding-left: 28px; border-left: 1px solid var(--line); }
.value-ico { display: grid; place-items: center; width: 48px; height: 48px; margin-bottom: 20px; border-radius: 12px; background: var(--green-soft); color: var(--green-deep); }
.value-ico .icon { width: 24px; height: 24px; }
.value h3 { font-size: 1.15rem; letter-spacing: -.015em; }
.value p { margin-top: 10px; font-size: .95rem; line-height: 1.6; color: var(--muted); }

/* Process */
.process { overflow: hidden; background: var(--ink); color: #fff; }
.process .eyebrow { color: var(--green); }
.process .section-intro { color: rgba(255, 255, 255, .66); }
.process-grid-bg {
  position: absolute; inset: 0; pointer-events: none; opacity: .7;
  background-image: linear-gradient(var(--line-dark) 1px, transparent 1px), linear-gradient(90deg, var(--line-dark) 1px, transparent 1px);
  background-size: 64px 64px;
  -webkit-mask-image: radial-gradient(70% 60% at 50% 20%, #000, transparent);
  mask-image: radial-gradient(70% 60% at 50% 20%, #000, transparent);
}
.steps { position: relative; display: grid; grid-template-columns: repeat(4, minmax(0, 1fr)); gap: 28px; }
.steps::before, .steps::after { content: ""; position: absolute; left: 0; right: 0; top: 11px; height: 1px; }
.steps::before { background: var(--line-dark-strong); }
.steps::after { background: var(--green); transform: scaleX(0); transform-origin: left; transition: transform 1.8s var(--ease-out) .15s; }
.steps.is-in::after { transform: scaleX(1); }
.step { position: relative; padding-top: 50px; }
.step:nth-child(2) { --i: 1; }
.step:nth-child(3) { --i: 2; }
.step:nth-child(4) { --i: 3; }
.step-node {
  position: absolute; top: 0; left: 0;
  display: grid; place-items: center; width: 23px; height: 23px;
  border: 1px solid var(--line-dark-strong); border-radius: 50%; background: var(--ink);
  transition: border-color .4s var(--ease), box-shadow .4s var(--ease);
  transition-delay: calc(.25s + var(--i, 0) * .4s);
}
.step-node::after { content: ""; width: 7px; height: 7px; border-radius: 50%; background: rgba(255, 255, 255, .3); transition: background-color .4s var(--ease); transition-delay: inherit; }
.steps.is-in .step-node { border-color: var(--green); box-shadow: 0 0 0 6px rgba(5, 193, 135, .1); }
.steps.is-in .step-node::after { background: var(--green); }
.step-num { font-size: .78rem; letter-spacing: .12em; color: var(--green); }
.step h3 { margin-top: 10px; font-size: 1.3rem; letter-spacing: -.02em; }
.step p { margin-top: 10px; font-size: .97rem; color: rgba(255, 255, 255, .66); }
.js .steps .step { opacity: 0; transform: translateY(18px); transition: opacity .8s var(--ease-out), transform .8s var(--ease-out); transition-delay: calc(var(--i, 0) * .12s); }
.js .steps.is-in .step { opacity: 1; transform: none; }

/* Contact */
.contact { background: var(--paper); }
.contact-grid { display: grid; grid-template-columns: minmax(0, 1fr) minmax(0, 1.08fr); align-items: start; gap: clamp(36px, 5vw, 80px); }
.contact-info h2 { margin-top: 18px; font-size: clamp(2rem, 4vw, 3.2rem); letter-spacing: -.038em; line-height: 1.05; }
.contact-list { display: grid; gap: 12px; margin-top: 32px; }
.contact-item {
  display: flex; align-items: center; gap: 16px;
  padding: 16px 18px; border: 1px solid var(--line); border-radius: var(--radius); background: #fff;
  transition: border-color .25s var(--ease), box-shadow .3s var(--ease), transform .3s var(--ease-out);
}
.contact-item:hover { border-color: var(--ink); box-shadow: var(--shadow); transform: translateY(-2px); }
.contact-ico { display: grid; place-items: center; flex: none; width: 46px; height: 46px; border-radius: 12px; background: var(--ink); color: var(--green); }
.contact-text { display: flex; flex-direction: column; min-width: 0; line-height: 1.3; }
.contact-text strong { overflow-wrap: anywhere; }
.contact-text small { font-family: var(--font-mono); font-size: .68rem; letter-spacing: .14em; text-transform: uppercase; color: var(--muted); }
.contact-text strong { margin-top: 4px; font-size: 1.1rem; font-weight: 650; }
.contact-go { margin-left: auto; color: var(--muted); transition: transform .3s var(--ease-out), color .25s var(--ease); }
.contact-item:hover .contact-go { color: var(--ink); transform: translate(2px, -2px); }

.map { position: relative; height: 270px; margin-top: 12px; overflow: hidden; border: 1px solid var(--line); border-radius: var(--radius); background: #e2e9e4; }
.map-art { position: absolute; inset: 0; width: 100%; height: 100%; }
.map-blocks path { fill: none; stroke: #fff; stroke-width: 12; stroke-linecap: round; }
.map-blocks .minor { stroke: #f3f6f3; stroke-width: 4; }
.map-coast { fill: #cde1dc; }
.map-pin {
  position: absolute; left: 50%; top: 40%;
  display: grid; place-items: center; width: 46px; height: 46px;
  border-radius: 50%; background: var(--ink); color: var(--green);
  transform: translate(-50%, -50%);
  box-shadow: 0 0 0 8px rgba(5, 193, 135, .22), 0 12px 24px -8px rgba(10, 19, 17, .5);
}
.map-pin .icon { width: 22px; height: 22px; }
.map-overlay {
  position: absolute; left: 12px; right: 12px; bottom: 12px;
  display: flex; flex-wrap: wrap; align-items: center; gap: 8px 14px;
  padding: 14px 16px; border-radius: 12px;
  background: rgba(255, 255, 255, .92); -webkit-backdrop-filter: blur(8px); backdrop-filter: blur(8px); box-shadow: var(--shadow-sm);
}
.map-overlay p { flex: 1; min-width: 170px; font-size: .9rem; line-height: 1.35; color: var(--muted); }
.map-overlay strong { display: block; color: var(--ink); }
.map-overlay small { flex-basis: 100%; font-size: .74rem; color: var(--muted); }
.map iframe { position: absolute; inset: 0; width: 100%; height: 100%; border: 0; }
.map.is-loaded .map-art, .map.is-loaded .map-pin, .map.is-loaded .map-overlay { display: none; }

.contact-form-wrap { position: sticky; top: calc(var(--header-h) + 24px); }
.form { padding: clamp(24px, 3vw, 40px); border: 1px solid var(--line); border-radius: var(--radius-lg); background: #fff; box-shadow: var(--shadow-sm); }
.form-head h3 { font-size: 1.5rem; letter-spacing: -.025em; }
.form-head p { margin-top: 8px; font-size: .96rem; color: var(--muted); }
.form-grid { display: grid; grid-template-columns: 1fr 1fr; gap: 18px 16px; margin-block: 28px 24px; }
.field--full { grid-column: 1 / -1; }
.field label { display: block; margin-bottom: 8px; font-size: .88rem; font-weight: 600; }
.optional { font-weight: 400; color: var(--muted); }
.field input, .field select, .field textarea {
  width: 100%; min-height: 52px; padding: 13px 16px;
  border: 1px solid var(--line-strong); border-radius: 10px; background: var(--paper);
  font-size: 1rem; line-height: 1.4;
  -webkit-appearance: none; appearance: none;
  transition: border-color .2s var(--ease), box-shadow .2s var(--ease), background-color .2s var(--ease);
}
.field textarea { min-height: 140px; resize: vertical; }
.field input::placeholder, .field textarea::placeholder { color: #7a8883; }
.field input:hover, .field select:hover, .field textarea:hover { border-color: rgba(10, 19, 17, .38); }
.field input:focus, .field select:focus, .field textarea:focus { outline: none; border-color: var(--green-deep); background: #fff; box-shadow: 0 0 0 4px rgba(5, 193, 135, .2); }
.field.is-invalid input, .field.is-invalid textarea { border-color: var(--danger); box-shadow: 0 0 0 4px rgba(179, 38, 30, .1); }
.field-error { margin-top: 6px; font-size: .84rem; color: var(--danger); }
.field-error:empty { display: none; }
.select { position: relative; }
.select select { padding-right: 46px; cursor: pointer; }
.select .icon { position: absolute; right: 14px; top: 50%; width: 18px; height: 18px; color: var(--muted); transform: translateY(-50%); pointer-events: none; }
.form-privacy { display: flex; align-items: flex-start; gap: 8px; margin-top: 14px; font-size: .84rem; color: var(--muted); }
.form-privacy .icon { width: 16px; height: 16px; margin-top: 2px; color: var(--green-deep); }
.form-privacy a { text-decoration: underline; text-underline-offset: 3px; }
.form-privacy a:hover { color: var(--ink); }
.form-status { margin-top: 16px; padding: 14px 16px; border: 1px solid rgba(5, 193, 135, .4); border-radius: 12px; background: rgba(5, 193, 135, .1); font-size: .92rem; line-height: 1.5; }
.form-status a { font-weight: 650; text-decoration: underline; text-underline-offset: 3px; }
.form-status--error, .form-status.is-error { border-color: rgba(179, 38, 30, .35); background: rgba(179, 38, 30, .07); }
.form-result { display: none; scroll-margin-top: calc(var(--header-h) + 24px); }
.form-result:target { display: block; }
.form-hp { position: absolute; left: -10000px; width: 1px; height: 1px; overflow: hidden; }

/* ---------- Service page ---------- */
.read-progress {
  position: fixed; left: 0; right: 0; top: var(--header-h); z-index: 49;
  height: 2px; background: var(--green);
  transform: scaleX(0); transform-origin: 0 50%;
}
.page-hero {
  position: relative; isolation: isolate; overflow: hidden;
  padding-top: calc(var(--header-h) + clamp(28px, 5vw, 60px));
  padding-bottom: clamp(64px, 8vw, 112px);
  background: var(--ink); color: #fff;
}
.page-service .page-hero { padding-bottom: clamp(104px, 11vw, 150px); }
.page-hero-grid { display: grid; grid-template-columns: minmax(0, 1.1fr) minmax(0, .9fr); align-items: center; gap: clamp(32px, 5vw, 72px); }
.page-hero--text .page-hero-grid { grid-template-columns: minmax(0, 1fr); }
.page-hero--text .page-hero-copy { max-width: 860px; }
.page-hero-art { position: relative; }
.page-hero-art .hero-cube { max-width: 540px; }
.page-hero-art .cube-label, .page-hero-art .cube-leaders, .page-hero-art .cube-annot { display: none; }
.page-hero-art[data-face-open="meletes"] .face--top { transform: translate(0, -18px); }
.page-hero-art[data-face-open="kataskeues"] .face--left { transform: translate(-16px, 6.6px); }
.page-hero-art[data-face-open="energeiaka"] .face--right { transform: translate(16px, 6.6px); }
.page-hero-art[data-face-open="meletes"] .face--top .face-fill,
.page-hero-art[data-face-open="kataskeues"] .face--left .face-fill,
.page-hero-art[data-face-open="energeiaka"] .face--right .face-fill { fill: rgba(5, 193, 135, .14); }
.page-hero-art[data-face-open="meletes"] .face--top .face-art,
.page-hero-art[data-face-open="kataskeues"] .face--left .face-art,
.page-hero-art[data-face-open="energeiaka"] .face--right .face-art { --art: rgba(5, 193, 135, .95); }
.breadcrumb ol { display: flex; flex-wrap: wrap; gap: 6px 10px; font-size: .85rem; color: rgba(255, 255, 255, .58); }
.breadcrumb li { display: inline-flex; align-items: center; gap: 10px; }
.breadcrumb li + li::before { content: "/"; color: rgba(255, 255, 255, .28); }
.breadcrumb a { transition: color .2s var(--ease); }
.breadcrumb a:hover { color: #fff; }
.breadcrumb [aria-current] { color: #fff; }
.page-cat { display: inline-flex; align-items: center; gap: 10px; margin-top: 32px; font-weight: 600; color: var(--green); }
.page-cat .cube-ico { width: 28px; color: rgba(255, 255, 255, .75); }
.page-cat .mono { font-size: .76rem; color: rgba(255, 255, 255, .5); }
.page-title { margin-top: 14px; font-size: clamp(2.6rem, 5.6vw, 4.8rem); line-height: 1.02; letter-spacing: -.045em; view-transition-name: svc-title; }
.page-lead { margin-top: 22px; max-width: 36em; font-size: clamp(1.04rem, 1.35vw, 1.17rem); line-height: 1.6; color: rgba(255, 255, 255, .72); }
.page-hero .btn-row { margin-top: 32px; }
.page-hero-media { position: relative; margin: 0; }
.page-hero-media picture { overflow: hidden; border-radius: var(--radius-lg); animation: unveil 1.3s var(--ease-out) .15s both; }
.page-hero-media img { width: 100%; aspect-ratio: 4 / 3.3; object-fit: cover; animation: settle 1.8s var(--ease-out) .15s both; }
.page-hero-media .crop { border-color: var(--green); }
@keyframes unveil { from { clip-path: inset(0 0 100% 0 round 22px); } to { clip-path: inset(0 0 0 0 round 22px); } }
@keyframes settle { from { transform: scale(1.14); } }

.facts { position: relative; z-index: 2; margin-top: clamp(-76px, -6vw, -52px); }
.facts-grid {
  display: grid; grid-template-columns: repeat(4, minmax(0, 1fr)); overflow: hidden;
  border: 1px solid var(--line); border-radius: var(--radius-lg); background: #fff; box-shadow: var(--shadow-lg);
}
.fact { display: flex; flex-direction: column; gap: 6px; padding: 26px 24px; }
.fact + .fact { border-left: 1px solid var(--line); }
.fact-ico { display: grid; place-items: center; width: 42px; height: 42px; margin-bottom: 10px; border-radius: 10px; background: var(--green-soft); color: var(--green-deep); }
.fact-ico .icon { width: 22px; height: 22px; }
.fact strong { font-size: 1.05rem; letter-spacing: -.01em; }
.fact > span:last-child { font-size: .9rem; line-height: 1.5; color: var(--muted); }

.page-body {
  display: grid; grid-template-columns: minmax(0, 1fr) 320px; align-items: start;
  gap: clamp(40px, 6vw, 96px);
  padding-block: clamp(56px, 7vw, 96px) clamp(72px, 9vw, 120px);
}
.page-aside { position: sticky; top: calc(var(--header-h) + 28px); display: grid; gap: 22px; }
.toc-title { margin-bottom: 12px; font-size: .72rem; letter-spacing: .14em; text-transform: uppercase; color: var(--muted); }
.toc ol { border-left: 1px solid var(--line); }
.toc a {
  display: block; margin-left: -1px; padding: 8px 0 8px 18px;
  border-left: 2px solid transparent; font-size: .94rem; line-height: 1.4; color: var(--muted);
  transition: color .2s var(--ease), border-color .2s var(--ease);
}
.toc a:hover { color: var(--ink); }
.toc a.is-active { border-left-color: var(--green); color: var(--ink); font-weight: 600; }
.aside-card { display: grid; gap: 12px; padding: 26px; border-radius: var(--radius-lg); background: var(--ink); color: rgba(255, 255, 255, .72); font-size: .95rem; }
.aside-card-title { font-size: 1.28rem; font-weight: 700; line-height: 1.2; letter-spacing: -.02em; color: #fff; }
.aside-card p + .btn { margin-top: 6px; }

.prose { max-width: 760px; font-size: 1.07rem; line-height: 1.75; color: #24322d; }
.prose > * + * { margin-top: 1.1em; }
.prose h2 { margin-top: 2.3em; font-size: clamp(1.6rem, 2.6vw, 2.1rem); line-height: 1.15; letter-spacing: -.03em; color: var(--ink); scroll-margin-top: calc(var(--header-h) + 28px); }
.prose h2:first-child { margin-top: 0; }
/* Tables (e.g. the cookie list): scroll sideways on small screens instead of widening the page. */
.prose table { display: block; max-width: 100%; overflow-x: auto; border-collapse: collapse; font-size: .92rem; line-height: 1.5; }
.prose th, .prose td { padding: 10px 14px; border-bottom: 1px solid var(--line); text-align: left; vertical-align: top; }
.prose th { font-weight: 650; color: var(--ink); white-space: nowrap; background: var(--paper); }
.prose td code { font-size: .88em; }
.page-body > .prose { min-width: 0; } /* let wide content (tables) scroll inside the column */
.prose h2::before { content: ""; display: block; width: 36px; height: 3px; margin-bottom: 18px; border-radius: 2px; background: var(--green); }
.prose h3 { margin-top: 1.8em; font-size: 1.18rem; letter-spacing: -.015em; color: var(--ink); }
.prose strong { font-weight: 650; color: var(--ink); }
.prose a:not(.btn) {
  color: var(--green-deep); font-weight: 550;
  text-decoration: underline; text-decoration-thickness: 1px; text-underline-offset: 3px; text-decoration-color: rgba(3, 107, 77, .35);
  transition: text-decoration-color .2s var(--ease);
}
.prose a:not(.btn):hover { text-decoration-color: currentColor; }
/* Plain lists: compact rows with a cube bullet */
.prose ul { display: grid; gap: 10px; margin-top: 1.2em; }
.prose ul > li { position: relative; padding-left: 32px; }
.prose ul > li::before {
  content: ""; position: absolute; left: 0; top: .28em; width: 20px; height: 20px;
  background: url("data:image/svg+xml,%3Csvg xmlns='http://www.w3.org/2000/svg' viewBox='0 0 32 32'%3E%3Cg stroke='%23036b4d' stroke-width='1.6' stroke-linejoin='round'%3E%3Cpath d='M16 3.9 28 8.8 16 13.8 4 8.8Z' fill='%2305c187'/%3E%3Cpath d='M4 8.8 16 13.8V28.2L4 23.2Z' fill='none'/%3E%3Cpath d='M16 13.8 28 8.8V23.2L16 28.2Z' fill='none'/%3E%3C/g%3E%3C/svg%3E") center / contain no-repeat;
}
/* Lists whose items start with a bold title become cards */
.prose ul:has(> li > strong) { gap: 12px; margin-top: 1.4em; }
.prose ul:has(> li > strong) > li { padding: 18px 20px 18px 60px; border: 1px solid var(--line); border-radius: var(--radius); background: #fff; }
.prose ul:has(> li > strong) > li::before { left: 20px; top: 21px; width: 24px; height: 24px; }
.prose li > strong:first-child { display: block; margin-bottom: 4px; font-size: 1.07rem; }
.prose .cols > ul { grid-template-columns: repeat(2, minmax(0, 1fr)); column-gap: 28px; margin-top: 0; }
/* Ordered lists: numbered process steps */
.prose ol { display: grid; gap: 12px; margin-top: 1.4em; counter-reset: step; }
.prose ol > li {
  position: relative; padding: 18px 20px 18px 68px;
  border: 1px solid var(--line); border-radius: var(--radius); background: #fff;
  counter-increment: step;
}
.prose ol > li::before {
  content: counter(step, decimal-leading-zero);
  position: absolute; left: 18px; top: 17px;
  display: grid; place-items: center; width: 34px; height: 34px;
  border-radius: 50%; background: var(--ink); color: var(--green);
  font-family: var(--font-mono); font-size: .76rem; font-weight: 500;
}
/* Grouped lists (e.g. business activities) */
.prose .groups { columns: 2; column-gap: 14px; }
.prose .group { break-inside: avoid; margin-bottom: 14px; padding: 20px 22px; border: 1px solid var(--line); border-radius: var(--radius); background: #fff; }
.prose .group h3 { margin: 0 0 12px; font-size: 1rem; line-height: 1.35; }
.prose .group ul { margin-top: 0; gap: 6px; }
.prose .group li { padding-left: 26px; font-size: .95rem; line-height: 1.5; }
.prose .group li::before { top: .2em; width: 16px; height: 16px; }
.note {
  position: relative; padding: 14px 16px 14px 46px;
  border-radius: 12px; background: var(--paper-2);
  font-size: .9rem; line-height: 1.55; color: var(--muted);
}
.note::before {
  content: ""; position: absolute; left: 16px; top: 15px; width: 18px; height: 18px;
  background: url("data:image/svg+xml,%3Csvg xmlns='http://www.w3.org/2000/svg' viewBox='0 0 24 24' fill='none' stroke='%234b5b55' stroke-width='1.8' stroke-linecap='round'%3E%3Ccircle cx='12' cy='12' r='9'/%3E%3Cpath d='M12 11v5M12 8h.01'/%3E%3C/svg%3E") center / contain no-repeat;
}

.callout {
  display: flex; gap: 18px; padding: 22px 24px;
  border: 1px solid rgba(5, 193, 135, .32); border-radius: var(--radius);
  background: linear-gradient(135deg, rgba(5, 193, 135, .13), rgba(5, 193, 135, .03));
}
.callout-ico { display: grid; place-items: center; flex: none; width: 46px; height: 46px; border-radius: 12px; background: var(--green); color: var(--ink); }
.callout-ico .icon, .benefit-ico .icon, .signature-ico .icon { width: 24px; height: 24px; }
.callout-title { margin-bottom: 4px; font-weight: 700; color: var(--ink); }
.benefits { display: grid; grid-template-columns: 1fr 1fr; gap: 16px; }
.benefit { padding: 24px; border: 1px solid var(--line); border-radius: var(--radius); background: #fff; }
.benefit-ico { display: grid; place-items: center; width: 46px; height: 46px; margin-bottom: 16px; border-radius: 12px; background: var(--ink); color: var(--green); }
.benefit h3 { margin-bottom: 8px; }
.benefit p { font-size: .98rem; line-height: 1.6; color: var(--muted); }
.signature { display: flex; gap: 20px; padding: 26px; border-radius: var(--radius-lg); background: var(--ink); color: rgba(255, 255, 255, .75); }
.signature-ico { display: grid; place-items: center; flex: none; width: 50px; height: 50px; border-radius: 12px; background: rgba(5, 193, 135, .15); color: var(--green); }
.signature-title { margin-bottom: 6px; font-size: 1.15rem; font-weight: 700; color: #fff; }

.faq { display: grid; gap: 10px; margin-top: 1.4em; }
.faq-item { border: 1px solid var(--line); border-radius: var(--radius); background: #fff; transition: border-color .25s var(--ease), box-shadow .3s var(--ease); }
.faq-item[open] { border-color: rgba(5, 193, 135, .5); box-shadow: var(--shadow-sm); }
.faq-item summary {
  display: flex; align-items: center; justify-content: space-between; gap: 16px;
  padding: 18px 20px; cursor: pointer; list-style: none;
  font-weight: 650; line-height: 1.4; color: var(--ink);
}
.faq-item summary::-webkit-details-marker { display: none; }
.faq-toggle { display: grid; place-items: center; flex: none; width: 32px; height: 32px; border-radius: 50%; background: var(--paper); transition: transform .35s var(--ease-out), background-color .25s var(--ease); }
.faq-toggle .icon { width: 18px; height: 18px; }
.faq-item[open] .faq-toggle { transform: rotate(45deg); background: var(--green); }
.faq-a { padding: 0 20px 20px; color: var(--muted); }
@supports (interpolate-size: allow-keywords) {
  :root { interpolate-size: allow-keywords; }
  .faq-item::details-content { height: 0; overflow: clip; transition: height .4s var(--ease), content-visibility .4s allow-discrete; }
  .faq-item[open]::details-content { height: auto; }
}

.related { background: var(--paper); border-top: 1px solid var(--line); }

/* Service cards (hub pages, services index, related services) */
.card-grid { display: grid; grid-template-columns: repeat(3, minmax(0, 1fr)); gap: 20px; }
.card-grid > li { display: flex; }
@media (min-width: 1180px) {
  .card-grid[data-count="4"], .card-grid[data-count="7"] { grid-template-columns: repeat(4, minmax(0, 1fr)); gap: 18px; }
  .card-grid[data-count="4"] .svc-tile-body, .card-grid[data-count="7"] .svc-tile-body { padding: 20px 20px 22px; }
}
.svc-tile {
  position: relative; display: flex; flex-direction: column; width: 100%; overflow: hidden;
  border: 1px solid var(--line); border-radius: var(--radius-lg); background: #fff;
  transition: box-shadow .4s var(--ease), border-color .4s var(--ease), transform .4s var(--ease-out);
}
.svc-tile:hover { border-color: transparent; box-shadow: var(--shadow-lg); transform: translateY(-3px); }
.svc-tile:has(a:focus-visible) { outline: 2px solid var(--green); outline-offset: 3px; }
.svc-tile-media { aspect-ratio: 16 / 10; overflow: hidden; background: var(--paper-2); }
.svc-tile-media picture, .svc-tile-media img { width: 100%; height: 100%; }
.svc-tile-media img { object-fit: cover; transition: transform 1.2s var(--ease-out); }
.svc-tile:hover .svc-tile-media img { transform: scale(1.05); }
.svc-tile-body { display: flex; flex: 1; flex-direction: column; padding: 22px 24px 24px; }
.svc-tile-cat { display: flex; align-items: center; gap: 8px; font-size: .7rem; letter-spacing: .12em; text-transform: uppercase; color: var(--muted); }
.svc-tile-cat .cube-ico { width: 20px; color: var(--ink); }
.svc-tile h3 { margin-top: 12px; font-size: 1.22rem; line-height: 1.25; letter-spacing: -.02em; }
.svc-tile h3 a::after { content: ""; position: absolute; inset: 0; border-radius: inherit; }
.svc-tile h3 a:focus-visible { outline: none; }
.svc-tile p { margin-top: 8px; font-size: .95rem; line-height: 1.6; color: var(--muted); }
.svc-tile-more { display: inline-flex; align-items: center; gap: 8px; margin-top: auto; padding-top: 18px; font-size: .92rem; font-weight: 600; color: var(--green-deep); }
.svc-tile-more .icon { width: 18px; height: 18px; transition: transform .3s var(--ease-out); }
.svc-tile:hover .svc-tile-more .icon { transform: translateX(3px); }

/* Category pages */
.cat-intro { padding-block: clamp(56px, 7vw, 96px); background: var(--paper); }
.cat-intro-grid { display: grid; grid-template-columns: minmax(0, 1fr) 340px; align-items: start; gap: clamp(40px, 6vw, 96px); }
.cat-services { background: #fff; }
.cat-others { background: var(--paper); border-top: 1px solid var(--line); }
.cat-links { display: grid; grid-template-columns: repeat(2, minmax(0, 1fr)); gap: 16px; }
.cat-links--three { grid-template-columns: repeat(3, minmax(0, 1fr)); }
.cat-links > li { display: flex; }
.cat-link {
  position: relative; display: flex; align-items: flex-start; gap: 18px; width: 100%;
  padding: 26px; border: 1px solid var(--line); border-radius: var(--radius-lg); background: #fff;
  transition: box-shadow .4s var(--ease), border-color .4s var(--ease), transform .4s var(--ease-out);
}
.cat-link:hover { border-color: transparent; box-shadow: var(--shadow-lg); transform: translateY(-3px); }
.cat-link .cube-ico { width: 44px; color: var(--ink); }
.cat-link-text { display: flex; flex-direction: column; gap: 6px; }
.cat-link-text .mono { font-size: .7rem; letter-spacing: .12em; text-transform: uppercase; color: var(--muted); }
.cat-link-text strong { font-size: 1.4rem; line-height: 1.15; letter-spacing: -.02em; }
.cat-link-text span:last-child { font-size: .95rem; line-height: 1.55; color: var(--muted); }
.cat-link-go { flex: none; width: 22px; height: 22px; margin-left: auto; color: var(--green-deep); transition: transform .3s var(--ease-out); }
.cat-link:hover .cat-link-go { transform: translateX(3px); }

/* Services index */
.svc-jump {
  position: sticky; top: var(--header-h); z-index: 20;
  background: rgba(244, 246, 243, .94); -webkit-backdrop-filter: blur(12px); backdrop-filter: blur(12px);
  border-bottom: 1px solid var(--line);
}
.svc-jump-inner { display: flex; gap: 8px; padding-block: 12px; overflow-x: auto; scrollbar-width: none; }
.svc-jump-inner::-webkit-scrollbar { display: none; }
.svc-jump a {
  display: inline-flex; align-items: center; gap: 8px; flex: none;
  padding: 8px 14px 8px 10px; border: 1px solid var(--line-strong); border-radius: 999px; background: #fff;
  font-size: .92rem; font-weight: 600; white-space: nowrap;
  transition: border-color .2s var(--ease);
}
.svc-jump a:hover { border-color: var(--ink); }
.svc-jump .cube-ico { width: 20px; color: var(--ink); }
.svc-jump .mono { font-size: .72rem; color: var(--muted); }
.svc-group { background: var(--paper); scroll-margin-top: calc(var(--header-h) + 64px); }
.svc-group + .svc-group { border-top: 1px solid var(--line); }
.svc-group h2 a { transition: color .2s var(--ease); }
.svc-group h2 a:hover { color: var(--green-deep); }

/* Office page */
.office-intro { background: var(--paper); }
.office-grid { display: grid; grid-template-columns: minmax(0, 1fr) 380px; align-items: start; gap: clamp(40px, 6vw, 96px); }
.engineer-card {
  position: sticky; top: calc(var(--header-h) + 28px);
  padding: 28px; border-radius: var(--radius-lg); background: var(--ink); color: rgba(255, 255, 255, .78);
}
.engineer-label { font-size: .7rem; letter-spacing: .14em; text-transform: uppercase; color: var(--green); }
.engineer-name { margin: 8px 0 18px; font-size: 1.6rem; font-weight: 700; line-height: 1.15; letter-spacing: -.02em; color: #fff; }
.engineer-creds { display: grid; gap: 12px; margin-bottom: 24px; padding-bottom: 24px; border-bottom: 1px solid var(--line-dark); }
.engineer-creds:last-child { margin-bottom: 0; padding-bottom: 0; border-bottom: 0; }
.engineer-creds + .engineer-label { margin-bottom: 14px; }
.engineer-creds li { display: flex; align-items: flex-start; gap: 12px; font-size: .95rem; line-height: 1.45; }
.engineer-creds .icon { flex: none; width: 20px; height: 20px; margin-top: 1px; color: var(--green); }
.office-sectors { background: #fff; }
.office-values .values { margin-top: 0; }

.section-link { margin-top: 18px; }
.about-link { margin-top: 26px; }
.break { overflow-wrap: anywhere; }

/* CTA band */
.cta-band { position: relative; isolation: isolate; overflow: hidden; padding-block: clamp(92px, 11vw, 150px); background: var(--ink); color: #fff; }
.cta-bg { position: absolute; inset: 0; z-index: -2; }
.cta-bg img { width: 100%; height: 100%; object-fit: cover; object-position: center 35%; }
.cta-band::before { content: ""; position: absolute; inset: 0; z-index: -1; background: linear-gradient(90deg, rgba(10, 19, 17, .95) 0%, rgba(10, 19, 17, .8) 45%, rgba(10, 19, 17, .35) 100%); }
.cta-band .eyebrow { color: var(--green); }
.cta-inner h2 { max-width: 12em; margin-top: 16px; font-size: clamp(2.1rem, 4.6vw, 3.6rem); line-height: 1.05; letter-spacing: -.04em; }
.cta-inner > p:not(.eyebrow) { max-width: 32em; margin-top: 16px; font-size: 1.1rem; color: rgba(255, 255, 255, .75); }
.cta-inner .btn-row { margin-top: 32px; }

/* 404 */
.error-hero { display: grid; align-items: center; min-height: 100vh; min-height: 100svh; padding-bottom: clamp(64px, 8vw, 120px); }
.error-hero .hero-bg { -webkit-mask-image: radial-gradient(60% 60% at 50% 45%, #000 20%, transparent 80%); mask-image: radial-gradient(60% 60% at 50% 45%, #000 20%, transparent 80%); }
.error-inner { display: flex; flex-direction: column; align-items: center; text-align: center; }
.error-inner .eyebrow { color: var(--green); }
.error-cube { width: 128px; height: auto; margin-bottom: 30px; overflow: visible; }
.error-cube .f { fill: rgba(255, 255, 255, .05); stroke: var(--green); stroke-width: .55; stroke-linejoin: round; }
.error-cube .f-missing { fill: none; stroke: rgba(255, 255, 255, .4); stroke-width: .45; stroke-dasharray: 1.1 .9; }
.error-cube .f-float { fill: rgba(5, 193, 135, .28); animation: float 3.4s ease-in-out infinite; }
@keyframes float { 0%, 100% { transform: translateY(-6px); } 50% { transform: translateY(-9.5px); } }
.error-title { margin-top: 14px; font-size: clamp(2.4rem, 5.4vw, 4.4rem); letter-spacing: -.045em; }
.error-inner .page-lead { margin-inline: auto; }
.error-inner .btn-row { justify-content: center; margin-top: 32px; }

/* ---------- Footer ---------- */
.site-footer { padding-top: clamp(64px, 8vw, 100px); background: var(--ink); color: rgba(255, 255, 255, .68); font-size: .95rem; }
.footer-top { display: grid; grid-template-columns: minmax(0, 1.25fr) minmax(0, 3fr) minmax(0, 1.2fr); gap: 48px; }
.footer-brand p { max-width: 26em; margin-top: 20px; line-height: 1.6; }
.footer-brand .footer-owner { margin-top: 14px; font-family: var(--font-mono); font-size: .74rem; letter-spacing: .14em; text-transform: uppercase; color: var(--green); }
.footer-nav { display: grid; grid-template-columns: repeat(3, minmax(0, 1fr)); gap: 32px; }
.footer-title { display: flex; align-items: center; gap: 10px; margin-bottom: 14px; font-weight: 650; color: #fff; }
.footer-title .cube-ico { width: 22px; color: rgba(255, 255, 255, .7); }
.footer-title a:hover { color: var(--green); }
.footer-col li, .footer-contact li { padding: 5px 0; line-height: 1.4; }
.footer-col span { color: rgba(255, 255, 255, .5); }
.footer-col a, .footer-contact a { transition: color .2s var(--ease); }
.footer-col a { color: #fff; }
.footer-col a:hover, .footer-contact a:hover { color: var(--green); }
.footer-contact a { display: inline-flex; align-items: flex-start; gap: 10px; }
.footer-contact .icon { width: 18px; height: 18px; margin-top: 1px; color: var(--green); }
.footer-links { margin-top: 16px; padding-top: 16px; border-top: 1px solid var(--line-dark); }
.footer-cookies { padding: 0; border: 0; background: none; color: inherit; font: inherit; text-align: left; cursor: pointer; transition: color .2s var(--ease); }
.footer-cookies:hover { color: var(--green); }
.footer-espa { display: flex; justify-content: center; margin-top: 56px; padding: 10px 24px; border-radius: var(--radius); background: #fff; }
.footer-espa picture { display: block; width: 100%; max-width: 620px; }
.footer-espa img { width: 100%; }
.footer-bottom {
  display: flex; align-items: center; justify-content: space-between; gap: 16px;
  margin-top: 32px; padding-block: 24px calc(24px + env(safe-area-inset-bottom));
  border-top: 1px solid var(--line-dark); font-size: .86rem;
}
.footer-bottom-end { display: flex; flex-wrap: wrap; align-items: center; gap: 12px 28px; }
.footer-credit a { color: var(--green); transition: color .2s var(--ease); }
.footer-credit a:hover { color: var(--green-hover); }
.to-top { display: inline-flex; align-items: center; gap: 8px; transition: color .2s var(--ease); }
.to-top:hover { color: var(--green); }
.to-top .icon { width: 16px; height: 16px; }

/* Mobile action bar */
.actionbar { display: none; }

/* ---------- Reveal on scroll ---------- */
.js .reveal { opacity: 0; transform: translateY(24px); transition: opacity .9s var(--ease-out), transform .9s var(--ease-out); transition-delay: calc(var(--i, 0) * 90ms); }
.js .reveal.is-in { opacity: 1; transform: none; }
.js .svc-card.reveal.is-in:hover { transition-delay: 0s; }

/* ---------- Progressive scroll-driven effects ---------- */
@media (prefers-reduced-motion: no-preference) {
  @supports (animation-timeline: scroll()) {
    .read-progress { animation: progress linear both; animation-timeline: scroll(root); }
  }
  @supports (animation-timeline: view()) {
    /* Exploded-view drawing: the cube opens up as it scrolls out of view. */
    .hero-cube { view-timeline-name: --cube; }
    .face--top { animation: explode-top linear both; animation-timeline: --cube; animation-range: cover 55% cover 100%; }
    .face--left { animation: explode-left linear both; animation-timeline: --cube; animation-range: cover 55% cover 100%; }
    .face--right { animation: explode-right linear both; animation-timeline: --cube; animation-range: cover 55% cover 100%; }
    .manifesto-text span {
      animation: word-in linear both;
      animation-timeline: --motto;
      animation-range: cover calc(18% + var(--i) * 2.6%) cover calc(28% + var(--i) * 2.6%);
    }
    .cta-bg img { animation: parallax linear both; animation-timeline: view(); animation-range: cover; }
  }
}
@keyframes explode-top { to { translate: 0 -26px; } }
@keyframes explode-left { to { translate: -24px 9.9px; } }
@keyframes explode-right { to { translate: 24px 9.9px; } }
@keyframes progress { to { transform: scaleX(1); } }
@keyframes word-in { from { opacity: .16; } }
@keyframes parallax { from { transform: translateY(-7%) scale(1.14); } to { transform: translateY(7%) scale(1.14); } }

::view-transition-old(root), ::view-transition-new(root) { animation-duration: .32s; animation-timing-function: var(--ease); }
::view-transition-group(svc-title) { animation-duration: .5s; animation-timing-function: var(--ease-out); }

/* ---------- Responsive ---------- */
@media (max-width: 1180px) {
  .btn--lg { padding: 0 1.2em; }
  .header-phone span { display: none; }
  .header-phone { width: 40px; padding: 0; justify-content: center; }
  .footer-top { grid-template-columns: 1fr 1fr; }
  .footer-nav { grid-column: 1 / -1; grid-row: 2; }
}

@media (max-width: 1023px) {
  :root { --header-h: 68px; }
  .nav, .header-cta { display: none; }
  .menu-toggle { display: inline-grid; }
  .header-phone { background: rgba(255, 255, 255, .08); width: 44px; height: 44px; }

  .hero-grid { grid-template-columns: 1fr; gap: 12px; }
  .hero-title { font-size: clamp(2.3rem, 9.2vw, 4.4rem); }
  .hero-cube { max-width: 560px; }
  .cube-label, .cube-leaders { display: none; }
  .cube-legend { display: flex; }
  .hero-bg { background-position: center, 0 0, 40px 16.5px; }

  .bento { grid-template-columns: 1fr; grid-template-areas: "e" "m" "k"; }
  .manifesto-grid { grid-template-columns: 1fr; }
  .energy-scale { max-width: 460px; }
  .about-grid, .contact-grid, .page-hero-grid { grid-template-columns: 1fr; }
  .about-media { max-width: 720px; }
  .values { grid-template-columns: repeat(2, minmax(0, 1fr)); }
  .value:nth-child(3) { padding-left: 0; border-left: 0; }
  .value:nth-child(n + 3) { border-top: 1px solid var(--line); }
  .steps { grid-template-columns: repeat(2, minmax(0, 1fr)); row-gap: 44px; }
  .steps::before, .steps::after { display: none; }
  .js .steps .step-node { transition-delay: calc(.2s + var(--i, 0) * .15s); }
  .section-head--split { grid-template-columns: 1fr; }
  .contact-form-wrap { position: static; }

  .page-hero-media { max-width: 640px; }
  .facts-grid { grid-template-columns: repeat(2, minmax(0, 1fr)); }
  .fact:nth-child(3) { border-left: 0; }
  .fact:nth-child(n + 3) { border-top: 1px solid var(--line); }
  .page-body { grid-template-columns: 1fr; }
  .page-aside { position: static; }
  .toc { display: none; }
  .aside-card { max-width: 560px; }
  .card-grid { grid-template-columns: repeat(2, minmax(0, 1fr)); }
  .cat-intro-grid, .office-grid { grid-template-columns: 1fr; }
  .engineer-card { position: static; max-width: 560px; }
  .cat-links--three { grid-template-columns: 1fr; }
  .page-hero-art .hero-cube { max-width: 440px; }
}

@media (max-width: 767px) {
  body { font-size: 1rem; }
  .header-phone { display: none; }
  .header-espa { margin-right: 2px; padding: 3px 5px; }
  .header-espa img { width: 133px; }
  .brand-mark { width: 36px; }
  .brand-name { font-size: 1.3rem; }

  .hero-lead { margin-top: 22px; }
  .hero-actions { margin-top: 28px; }
  .hero-actions .btn { flex: 1 1 100%; }
  .hero-creds { flex-direction: column; gap: 10px; margin-top: 30px; }
  .hero-bar .hero-geo, .hero-bar a[href^="tel"] { display: none; }
  .page-hero .btn-row .btn { flex: 1 1 100%; }
  .hero-bar-inner { gap: 16px; min-height: 58px; }

  .ticker li { padding: 13px 18px; font-size: .9rem; }
  .energy-scale { display: none; }

  .svc-card--energeiaka, .svc-card--kataskeues { grid-template-columns: 1fr; }
  .svc-card .svc-media { aspect-ratio: 16 / 9; }

  .values { grid-template-columns: 1fr; }
  .value, .value + .value { padding: 28px 0 4px; border-left: 0; }
  .value + .value { border-top: 1px solid var(--line); }
  .about-badge { left: 12px; bottom: 12px; }

  .steps { grid-template-columns: 1fr; row-gap: 36px; padding-left: 4px; }
  .steps::before, .steps::after { display: block; left: 11px; right: auto; top: 12px; bottom: 12px; width: 1px; height: auto; }
  .steps::after { transform: scaleY(0); transform-origin: top; }
  .steps.is-in::after { transform: scaleY(1); }
  .step { padding: 0 0 0 46px; }
  .step-node { top: 1px; }

  .form-grid { grid-template-columns: 1fr; }
  .map { height: 240px; }

  .facts-grid { grid-template-columns: 1fr; }
  .fact + .fact { border-left: 0; border-top: 1px solid var(--line); }
  .fact { display: grid; grid-template-columns: 42px 1fr; column-gap: 16px; row-gap: 2px; padding: 18px 20px; }
  .fact-ico { grid-row: span 2; margin: 0; }
  .benefits, .related-grid { grid-template-columns: 1fr; }
  .callout, .signature { flex-direction: column; gap: 14px; }
  .prose ul:has(> li > strong) > li { padding: 16px 16px 16px 54px; }
  .prose ul:has(> li > strong) > li::before { left: 16px; top: 19px; }
  .prose ol > li { padding: 16px 16px 16px 60px; }
  .prose ol > li::before { left: 14px; top: 15px; }
  .prose .cols > ul { grid-template-columns: 1fr; }
  .prose .groups { columns: 1; }
  .card-grid, .cat-links { grid-template-columns: 1fr; }
  .page-hero-art .hero-cube { max-width: 340px; }

  .cta-band::before { background: linear-gradient(180deg, rgba(10, 19, 17, .8), rgba(10, 19, 17, .92)); }
  .cta-inner .btn { flex: 1 1 100%; }

  .footer-top { grid-template-columns: 1fr; gap: 36px; }
  .footer-nav { grid-row: auto; grid-template-columns: 1fr; gap: 24px; }
  .footer-bottom { flex-direction: column; align-items: flex-start; }
  .footer-espa { padding: 10px 12px; }

  .actionbar {
    position: fixed; left: 12px; right: 12px; bottom: calc(12px + env(safe-area-inset-bottom)); z-index: 40;
    display: grid; grid-template-columns: 1fr 1.35fr; gap: 8px; padding: 8px;
    border-radius: 16px; background: rgba(10, 19, 17, .9);
    -webkit-backdrop-filter: blur(14px); backdrop-filter: blur(14px);
    box-shadow: 0 18px 40px -12px rgba(0, 0, 0, .5);
    transform: translateY(calc(100% + 28px));
    transition: transform .45s var(--ease-out);
  }
  .actionbar.is-visible { transform: none; }
  .actionbar-btn {
    display: flex; align-items: center; justify-content: center; gap: 8px;
    height: 48px; border-radius: 10px; background: rgba(255, 255, 255, .08); color: #fff; font-weight: 600;
  }
  .actionbar-btn .icon { width: 18px; height: 18px; }
  .actionbar-btn--primary { background: var(--green); color: var(--ink); }
  .site-footer { padding-bottom: 84px; }
}

@media (max-width: 359px) {
  .header-inner { gap: 12px; }
  .header-espa { margin-right: 0; padding: 3px 4px; }
}

@media (max-width: 400px) {
  .brand-sub { display: none; }
  .hero-title { font-size: clamp(2rem, 9.4vw, 2.6rem); }
}

/* ---------- Reduced motion ---------- */
@media (prefers-reduced-motion: reduce) {
  html, html.is-ready { scroll-behavior: auto; }
  *, *::before, *::after {
    animation-duration: .01ms !important;
    animation-iteration-count: 1 !important;
    transition-duration: .01ms !important;
    transition-delay: 0s !important;
  }
  .draw { stroke-dasharray: none; }
  .ticker-track { animation: none; }
  .js .reveal, .js .steps .step { opacity: 1; transform: none; }
  @view-transition { navigation: none; }
}
