/* =========================================================
   SeaSide Works — Premium Interaction & Visual Layer
   21 AUG 2026
   ========================================================= */

:root {
  --ease-out-expo: cubic-bezier(.16,1,.3,1);
  --ease-out-quart: cubic-bezier(.25,1,.5,1);
  --premium-line: rgba(255,255,255,.11);
  --paper: #f3efe6;
  --paper-2: #ebe5da;
  --ink: #06141c;
  --mx: 50%;
  --my: 50%;
}

html { background: #030c11; }

body {
  position: relative;
  isolation: isolate;
  font-optical-sizing: auto;
  text-rendering: optimizeLegibility;
  -webkit-font-smoothing: antialiased;
  -moz-osx-font-smoothing: grayscale;
  background:
    radial-gradient(circle at 78% -5%, rgba(120,216,242,.11), transparent 34rem),
    radial-gradient(circle at 12% 28%, rgba(0,154,224,.055), transparent 38rem),
    linear-gradient(180deg, #06141c 0%, #031016 38%, #020a0f 100%);
}

body::before {
  content: "";
  position: fixed;
  inset: -18vh -12vw;
  z-index: -3;
  pointer-events: none;
  opacity: .78;
  background:
    radial-gradient(circle at var(--cursor-x, 76%) var(--cursor-y, 18%), rgba(120,216,242,.08), transparent 18rem),
    radial-gradient(circle at 84% 34%, rgba(2,51,130,.10), transparent 26rem),
    radial-gradient(circle at 20% 78%, rgba(255,112,71,.035), transparent 22rem);
  transform: translate3d(0,0,0);
}

body::after {
  content: "";
  position: fixed;
  inset: 0;
  z-index: 200;
  pointer-events: none;
  opacity: .036;
  mix-blend-mode: soft-light;
  background-image: url("data:image/svg+xml,%3Csvg viewBox='0 0 180 180' xmlns='http://www.w3.org/2000/svg'%3E%3Cfilter id='n'%3E%3CfeTurbulence type='fractalNoise' baseFrequency='.82' numOctaves='3' stitchTiles='stitch'/%3E%3C/filter%3E%3Crect width='100%25' height='100%25' filter='url(%23n)' opacity='.82'/%3E%3C/svg%3E");
  background-size: 170px 170px;
}

main { position: relative; z-index: 1; }

/* -------------------------
   Typography — restore intended type
   ------------------------- */

body,
button,
input,
textarea {
  font-family: "Manrope", Inter, system-ui, -apple-system, BlinkMacSystemFont, "Segoe UI", sans-serif;
}

.wordmark,
h1,h2,h3,
.area-card__copy h3,
.service-panel h3,
.gallery-card h3,
.project-card h3,
.project-card h2,
.process-list b,
.signal-card strong,
.outcome-grid h3,
.example-grid h3,
.modal__dialog h2 {
  font-family: "Bricolage Grotesque", "Arial Narrow", Arial, sans-serif;
  font-optical-sizing: auto;
}

.hero h1,
.subhero h1,
.project-hero h1 {
  font-weight: 680;
  line-height: .93;
  letter-spacing: -.056em;
  text-wrap: balance;
}

.section-head h2,
.section>div>h2,
.final-cta h2,
.footer-cta h2 {
  font-weight: 660;
  line-height: .98;
  letter-spacing: -.045em;
  text-wrap: balance;
}

p { text-wrap: pretty; }

.lead,
.lead-sm,
.section-head>p,
.service-row p,
.outcome-grid p,
.example-grid p,
.process-list p,
.faq-list p {
  letter-spacing: -.012em;
}

/* -------------------------
   Header — glass + motion
   ------------------------- */

.site-header {
  height: 78px;
  background: linear-gradient(180deg, rgba(4,15,21,.90), rgba(4,15,21,.68));
  border-bottom-color: rgba(255,255,255,.075);
  box-shadow: 0 1px 0 rgba(255,255,255,.02);
  backdrop-filter: blur(22px) saturate(140%);
  -webkit-backdrop-filter: blur(22px) saturate(140%);
  transition:
    height .45s var(--ease-out-expo),
    background-color .45s ease,
    box-shadow .45s ease,
    transform .45s var(--ease-out-expo);
}

.site-header.is-scrolled {
  height: 68px;
  background: rgba(3,13,18,.88);
  box-shadow: 0 14px 40px rgba(0,0,0,.20);
}

.wordmark {
  font-weight: 700;
  letter-spacing: -.055em;
  transition: transform .45s var(--ease-out-expo), opacity .3s ease;
}
.wordmark:hover { transform: translateY(-1px) scale(1.015); }

.main-nav>a:not(.nav-cta) {
  position: relative;
  padding: 9px 0;
  transition: color .25s ease, opacity .25s ease;
}
.main-nav>a:not(.nav-cta)::after {
  content: "";
  position: absolute;
  left: 0;
  right: 0;
  bottom: 2px;
  height: 1px;
  background: var(--works);
  transform: scaleX(0);
  transform-origin: right center;
  transition: transform .42s var(--ease-out-expo);
}
.main-nav>a:not(.nav-cta):hover::after {
  transform: scaleX(1);
  transform-origin: left center;
}

.nav-cta,
.button {
  position: relative;
  overflow: hidden;
  isolation: isolate;
  box-shadow: 0 10px 28px rgba(120,216,242,.10);
  transition:
    transform .42s var(--ease-out-expo),
    box-shadow .42s ease,
    background-color .3s ease,
    border-color .3s ease;
}
.nav-cta::before,
.button::before {
  content: "";
  position: absolute;
  inset: -1px;
  z-index: -1;
  background: linear-gradient(110deg, transparent 22%, rgba(255,255,255,.42) 44%, transparent 66%);
  transform: translateX(-125%);
  transition: transform .78s var(--ease-out-expo);
}
.nav-cta:hover::before,
.button:hover::before { transform: translateX(125%); }
.nav-cta:hover,
.button:hover {
  transform: translate3d(var(--mag-x,0), calc(var(--mag-y,0) - 3px), 0);
  box-shadow: 0 18px 44px rgba(120,216,242,.18);
}
.button--ghost { box-shadow: none; }

/* -------------------------
   Global sections & editorial rhythm
   ------------------------- */

.section {
  position: relative;
  padding-block: clamp(96px, 10.5vw, 168px);
}

.section:not(.section--light)::before {
  content: "";
  position: absolute;
  top: 0;
  left: 0;
  width: min(100%, 420px);
  height: 1px;
  opacity: .45;
  background: linear-gradient(90deg, rgba(120,216,242,.38), transparent);
}

.section-head {
  margin-bottom: clamp(52px, 6vw, 82px);
}

.section-head h2 {
  max-width: 950px;
}

.eyebrow {
  display: inline-flex;
  align-items: center;
  gap: 10px;
  width: fit-content;
  letter-spacing: .17em;
}
.eyebrow::before {
  content: "";
  width: 23px;
  height: 1px;
  background: currentColor;
  opacity: .9;
}

/* Turn full-width paper bands into editorial floating panels */
.section--light {
  width: min(var(--max), calc(100% - 2 * var(--gutter)));
  max-width: var(--max);
  margin: clamp(40px, 6vw, 92px) auto;
  padding: clamp(70px, 8vw, 120px) clamp(28px, 5vw, 74px);
  overflow: hidden;
  border: 1px solid rgba(255,255,255,.09);
  border-radius: clamp(28px, 3vw, 48px);
  background:
    radial-gradient(circle at 92% 6%, rgba(120,216,242,.18), transparent 23rem),
    linear-gradient(145deg, #f5f1e9 0%, #eee9df 70%, #e8e1d5 100%);
  box-shadow:
    0 45px 120px rgba(0,0,0,.28),
    inset 0 1px 0 rgba(255,255,255,.75);
}
.section--light::before {
  content: "";
  position: absolute;
  inset: 0;
  pointer-events: none;
  opacity: .42;
  background:
    linear-gradient(90deg, rgba(6,20,28,.025) 1px, transparent 1px),
    linear-gradient(rgba(6,20,28,.025) 1px, transparent 1px);
  background-size: 64px 64px;
  mask-image: linear-gradient(90deg, transparent, #000 22%, #000 78%, transparent);
}
.section--light > * { position: relative; z-index: 1; }

/* -------------------------
   Hero — home
   ------------------------- */

.hero {
  position: relative;
  min-height: max(760px, calc(100svh - 78px));
  padding-top: clamp(70px, 8vw, 130px);
  padding-bottom: clamp(86px, 9vw, 150px);
}
.hero::before {
  content: "";
  position: absolute;
  z-index: -1;
  top: 6%;
  left: 47%;
  width: min(52vw, 780px);
  aspect-ratio: 1;
  border: 1px solid rgba(255,255,255,.045);
  border-radius: 50%;
  box-shadow: 0 0 0 85px rgba(255,255,255,.015), 0 0 0 170px rgba(255,255,255,.008);
  transform: translate3d(var(--hero-parallax-x,0), var(--hero-parallax-y,0),0);
  transition: transform 1.2s var(--ease-out-expo);
}
.hero__copy { position: relative; z-index: 2; }
.hero h1 {
  max-width: 970px;
  font-size: clamp(56px, 7.1vw, 110px);
}
.hero h1 em {
  color: transparent;
  background: linear-gradient(105deg, var(--studio) 0%, var(--works) 28%, #8fb6ff 57%, var(--systems) 100%);
  -webkit-background-clip: text;
  background-clip: text;
  filter: saturate(1.05);
}
.hero__visual {
  isolation: isolate;
  border-radius: 40px;
  border-color: rgba(255,255,255,.17);
  box-shadow:
    0 50px 120px rgba(0,0,0,.38),
    0 0 0 1px rgba(255,255,255,.025) inset;
  transform-style: preserve-3d;
  transform: perspective(1100px) rotateX(var(--rx,0deg)) rotateY(var(--ry,0deg)) translateY(var(--float,0));
  transition: transform .52s var(--ease-out-expo), box-shadow .45s ease;
}
.hero__visual::before {
  content: "";
  position: absolute;
  inset: 0;
  z-index: 1;
  pointer-events: none;
  background: radial-gradient(circle at var(--mx,65%) var(--my,28%), rgba(120,216,242,.19), transparent 34%);
  mix-blend-mode: screen;
}
.hero__visual:hover {
  box-shadow:
    0 62px 150px rgba(0,0,0,.45),
    0 0 0 1px rgba(120,216,242,.17) inset;
}
.hero__visual video { transform: scale(1.02); }

/* -------------------------
   Area subheroes — turn the empty right card into media
   ------------------------- */

.subhero {
  position: relative;
  padding-top: clamp(76px, 9vw, 138px);
  padding-bottom: clamp(78px, 9vw, 140px);
}
.subhero::before {
  content: "";
  position: absolute;
  z-index: -1;
  top: 2%;
  right: -12%;
  width: min(65vw, 940px);
  aspect-ratio: 1;
  border-radius: 50%;
  filter: blur(2px);
  opacity: .85;
  background: radial-gradient(circle, color-mix(in srgb, var(--area-accent, var(--works)) 12%, transparent), transparent 67%);
}
.area-studio { --area-accent: var(--studio); }
.area-business { --area-accent: #2d67c7; }
.area-systems { --area-accent: var(--systems); }

.subhero__grid {
  align-items: center;
}
.subhero__grid h1 {
  max-width: 900px;
  font-size: clamp(54px, 6.5vw, 96px);
}

.signal-card {
  position: relative;
  isolation: isolate;
  min-height: clamp(460px, 34vw, 590px);
  padding: 30px;
  overflow: hidden;
  border-radius: 40px;
  border-color: rgba(255,255,255,.16);
  background-color: #081c25;
  background-position: center;
  background-size: cover;
  box-shadow: 0 46px 120px rgba(0,0,0,.36);
  transform-style: preserve-3d;
  transform: perspective(1150px) rotateX(var(--rx,0deg)) rotateY(var(--ry,0deg));
  transition: transform .55s var(--ease-out-expo), box-shadow .5s ease, border-color .4s ease;
}
.area-studio .signal-card { background-image: url('/assets/media/01_startseite/02_seaside_studio-1600.webp'); }
.area-business .signal-card { background-image: url('/assets/media/01_startseite/03_seaside_business-1600.webp'); }
.area-systems .signal-card { background-image: url('/assets/media/01_startseite/04_seaside_systems-1600.webp'); }
.signal-card::before {
  content: "";
  position: absolute;
  inset: 0;
  z-index: -1;
  background:
    linear-gradient(180deg, rgba(3,12,17,.10) 0%, rgba(3,12,17,.16) 34%, rgba(3,12,17,.92) 100%),
    radial-gradient(circle at var(--mx,70%) var(--my,24%), color-mix(in srgb, var(--area-accent) 20%, transparent), transparent 35%);
}
.signal-card::after {
  content: "";
  position: absolute;
  inset: 13px;
  z-index: -1;
  border: 1px solid color-mix(in srgb, var(--area-accent) 42%, transparent);
  border-radius: 30px;
  opacity: .55;
  pointer-events: none;
}
.signal-card > span {
  font-size: clamp(60px, 6vw, 94px);
  color: rgba(255,255,255,.76);
  opacity: .25;
  text-shadow: 0 2px 24px rgba(0,0,0,.35);
  transform: translateZ(26px);
}
.signal-card p,
.signal-card strong {
  position: relative;
  z-index: 2;
  text-shadow: 0 2px 24px rgba(0,0,0,.55);
  transform: translateZ(32px);
}
.signal-card p { color: color-mix(in srgb, var(--area-accent) 82%, white); }
.signal-card strong { max-width: 410px; font-size: clamp(30px, 3.2vw, 45px); }
.signal-card:hover {
  border-color: color-mix(in srgb, var(--area-accent) 48%, rgba(255,255,255,.25));
  box-shadow: 0 65px 155px rgba(0,0,0,.46);
}

/* -------------------------
   Cards — shared depth & pointer glow
   ------------------------- */

.area-card,
.project-card,
.service-panel,
.principle-grid article,
.outcome-grid article,
.example-grid article,
.gallery-card,
.area-mini,
.topic-grid article,
.offer-grid article {
  position: relative;
  isolation: isolate;
  transform-style: preserve-3d;
  transform: perspective(1200px) rotateX(var(--rx,0deg)) rotateY(var(--ry,0deg)) translateY(var(--lift,0));
  transition:
    transform .52s var(--ease-out-expo),
    border-color .4s ease,
    box-shadow .5s ease,
    background-color .4s ease;
}

.area-card::after,
.service-panel::after,
.principle-grid article::after,
.outcome-grid article::after,
.example-grid article::after,
.gallery-card::after,
.area-mini::after,
.topic-grid article::after,
.offer-grid article::after {
  content: "";
  position: absolute;
  inset: 0;
  z-index: -1;
  pointer-events: none;
  border-radius: inherit;
  opacity: 0;
  background: radial-gradient(circle at var(--mx,50%) var(--my,50%), rgba(120,216,242,.16), transparent 34%);
  transition: opacity .35s ease;
}

.area-card:hover,
.service-panel:hover,
.principle-grid article:hover,
.outcome-grid article:hover,
.example-grid article:hover,
.gallery-card:hover,
.area-mini:hover,
.topic-grid article:hover,
.offer-grid article:hover {
  --lift: -7px;
  border-color: rgba(255,255,255,.19);
  box-shadow: 0 36px 80px rgba(0,0,0,.20);
}
.area-card:hover::after,
.service-panel:hover::after,
.principle-grid article:hover::after,
.outcome-grid article:hover::after,
.example-grid article:hover::after,
.gallery-card:hover::after,
.area-mini:hover::after,
.topic-grid article:hover::after,
.offer-grid article:hover::after { opacity: 1; }

.area-card__media,
.project-card__media,
.gallery-card__media {
  overflow: hidden;
}
.area-card__media img,
.project-card__media img,
.gallery-card__media img {
  transition: transform .95s var(--ease-out-expo), filter .55s ease;
}
.area-card:hover .area-card__media img,
.project-card:hover .project-card__media img,
.gallery-card:hover .gallery-card__media img {
  transform: scale(1.035);
  filter: saturate(1.04) contrast(1.02);
}

/* home area cards */
.area-card {
  min-height: 100%;
  box-shadow: 0 24px 70px rgba(0,0,0,.18);
}
.area-card__media { padding: 10px; }
.area-card__media img { border-radius: 22px; }
.area-card__copy { position: relative; z-index: 2; }
.area-card__copy h3 { font-size: clamp(31px, 3.2vw, 48px); }

/* portfolio cards */
.project-card {
  box-shadow: 0 22px 65px rgba(7,23,31,.12);
  transition: transform .55s var(--ease-out-expo), box-shadow .55s ease;
}
.project-card:hover {
  transform: translateY(-8px);
  box-shadow: 0 36px 90px rgba(7,23,31,.20);
}
.project-card__copy {
  position: relative;
  overflow: hidden;
}
.project-card__copy::before {
  content: "";
  position: absolute;
  left: 30px;
  bottom: 21px;
  width: 34px;
  height: 1px;
  background: var(--dark);
  transform: scaleX(0);
  transform-origin: left;
  transition: transform .45s var(--ease-out-expo);
}
.project-card:hover .project-card__copy::before { transform: scaleX(1); }

/* outcomes */
.outcome-grid article,
.example-grid article {
  overflow: hidden;
  min-height: 245px;
  padding: clamp(27px, 3vw, 38px);
  border-radius: 28px;
  background: linear-gradient(145deg, rgba(255,255,255,.045), rgba(255,255,255,.016));
  box-shadow: inset 0 1px 0 rgba(255,255,255,.035);
}
.outcome-grid article::before,
.example-grid article::before {
  content: "";
  position: absolute;
  top: 0;
  left: 28px;
  right: 28px;
  height: 2px;
  opacity: .72;
  background: linear-gradient(90deg, var(--area-accent, var(--works)), transparent);
  transform: scaleX(.28);
  transform-origin: left;
  transition: transform .55s var(--ease-out-expo);
}
.outcome-grid article:hover::before,
.example-grid article:hover::before { transform: scaleX(1); }
.outcome-grid h3,
.example-grid h3 { font-size: clamp(27px, 2.5vw, 37px); line-height: 1.03; }

/* -------------------------
   Service list — editorial, interactive instead of flat rows
   ------------------------- */

.section--light .section-head { margin-bottom: clamp(42px, 5vw, 65px); }
.service-list {
  counter-reset: services;
  border-top: 1px solid rgba(6,20,28,.14);
}
.service-row {
  counter-increment: services;
  position: relative;
  display: grid;
  grid-template-columns: minmax(0,1fr) auto;
  gap: clamp(28px, 6vw, 90px);
  align-items: center;
  min-height: 190px;
  padding: 34px clamp(0px, 1vw, 14px) 34px clamp(58px, 6vw, 98px);
  border-bottom: 1px solid rgba(6,20,28,.14);
  transition: background-color .42s ease, padding .45s var(--ease-out-expo), transform .45s var(--ease-out-expo);
}
.service-row::before {
  content: counter(services, decimal-leading-zero);
  position: absolute;
  left: 0;
  top: 39px;
  color: color-mix(in srgb, var(--area-accent, #3a758b) 76%, var(--ink));
  font: 750 13px/1 "Manrope", sans-serif;
  letter-spacing: .1em;
}
.service-row::after {
  content: "";
  position: absolute;
  left: 0;
  top: 0;
  bottom: 0;
  width: 3px;
  background: var(--area-accent, var(--works));
  transform: scaleY(0);
  transform-origin: center;
  transition: transform .45s var(--ease-out-expo);
}
.service-row:hover {
  padding-left: clamp(66px, 6.5vw, 110px);
  background: rgba(255,255,255,.38);
}
.service-row:hover::after { transform: scaleY(1); }
.service-row .eyebrow {
  margin-bottom: 12px;
  color: #506b76;
  font-size: 10px;
}
.service-row h3 {
  margin: 0 0 11px;
  font: 660 clamp(30px, 3.1vw, 45px)/1.02 "Bricolage Grotesque", sans-serif;
  letter-spacing: -.042em;
}
.service-row p:not(.eyebrow) {
  max-width: 780px;
  margin: 0;
  color: #52636a;
  font-size: clamp(15px, 1.14vw, 18px);
  line-height: 1.65;
}
.tech-button {
  min-width: 178px;
  border: 1px solid rgba(6,20,28,.18);
  background: rgba(255,255,255,.22);
  box-shadow: inset 0 1px 0 rgba(255,255,255,.55);
  transition: transform .42s var(--ease-out-expo), background-color .3s ease, border-color .3s ease, box-shadow .3s ease;
}
.tech-button:hover {
  transform: translate(3px,-3px);
  border-color: rgba(6,20,28,.28);
  background: var(--ink);
  color: var(--paper);
  box-shadow: 0 14px 32px rgba(6,20,28,.16);
}

/* -------------------------
   Process — progress line + active steps
   ------------------------- */

.section--split { align-items: start; }
.section--split > div:first-child {
  position: sticky;
  top: 120px;
}
.process-list {
  position: relative;
  counter-reset: none;
}
.process-list::before,
.process-list::after {
  content: "";
  position: absolute;
  left: 34px;
  top: 22px;
  bottom: 22px;
  width: 1px;
  background: rgba(255,255,255,.09);
}
.process-list::after {
  background: linear-gradient(180deg, var(--works), var(--systems));
  transform: scaleY(var(--process-progress, 0));
  transform-origin: top;
  transition: transform .6s var(--ease-out-expo);
}
.process-list li {
  position: relative;
  z-index: 1;
  padding: 34px 0;
  opacity: .52;
  transform: translateX(0);
  transition: opacity .55s ease, transform .55s var(--ease-out-expo), border-color .35s ease;
}
.process-list li > span {
  display: grid;
  place-items: center;
  width: 44px;
  height: 44px;
  margin-left: 12px;
  border: 1px solid rgba(255,255,255,.16);
  border-radius: 50%;
  background: #06141c;
  font-size: 12px;
  box-shadow: 0 0 0 8px #041017;
  transition: background-color .35s ease, color .35s ease, border-color .35s ease, transform .45s var(--ease-out-expo);
}
.process-list li.is-active {
  opacity: 1;
  transform: translateX(7px);
}
.process-list li.is-active > span {
  background: var(--works);
  color: var(--ink);
  border-color: var(--works);
  transform: scale(1.05);
}
.process-list b { font-size: clamp(24px, 2vw, 30px); }
.process-list h3 { font-size: clamp(20px, 1.8vw, 27px); }

.section--light .process-list::before { background: rgba(6,20,28,.12); }
.section--light .process-list li > span { background: var(--paper); box-shadow: 0 0 0 8px var(--paper); color: var(--ink); border-color: rgba(6,20,28,.14); }
.section--light .process-list li.is-active > span { background: var(--ink); color: var(--paper); }

/* -------------------------
   Principles
   ------------------------- */

.principle-grid article {
  min-height: 330px;
  padding: 32px;
  background: linear-gradient(145deg, rgba(255,255,255,.04), rgba(255,255,255,.018));
  overflow: hidden;
}
.principle-grid article::before {
  content: "";
  position: absolute;
  width: 160px;
  aspect-ratio: 1;
  right: -80px;
  top: -80px;
  border: 1px solid rgba(120,216,242,.13);
  border-radius: 50%;
  transition: transform .75s var(--ease-out-expo);
}
.principle-grid article:hover::before { transform: scale(1.35); }
.principle-grid h3 { margin-top: 68px; font-size: clamp(30px, 2.9vw, 42px); }

/* -------------------------
   Examples / gallery / project pages
   ------------------------- */

.example-grid { grid-template-columns: repeat(2, minmax(0,1fr)); }
.example-grid article { min-height: 300px; display: flex; flex-direction: column; justify-content: flex-end; }
.example-grid article>span { position: absolute; top: 28px; left: 28px; }

.gallery-card {
  overflow: hidden;
  box-shadow: 0 24px 70px rgba(0,0,0,.18);
}
.gallery-card__copy { position: relative; z-index: 2; }
.gallery-card:hover { --lift: -6px; }

.project-preview {
  position: relative;
  overflow: hidden;
  border-radius: 34px;
  border: 1px solid rgba(255,255,255,.12);
  box-shadow: 0 50px 120px rgba(0,0,0,.32);
}
.project-preview::after {
  content: "";
  position: absolute;
  inset: 0;
  pointer-events: none;
  box-shadow: inset 0 0 0 1px rgba(255,255,255,.04);
  border-radius: inherit;
}

/* -------------------------
   FAQ
   ------------------------- */

.faq-list { border-top: 1px solid rgba(6,20,28,.15); }
.faq-list details {
  border-bottom: 1px solid rgba(6,20,28,.15);
  transition: background-color .35s ease;
}
.faq-list details:hover { background: rgba(255,255,255,.23); }
.faq-list details[open] { background: rgba(255,255,255,.34); }
.faq-list summary {
  padding: 28px 12px;
  font: 650 clamp(21px,2.1vw,29px)/1.2 "Bricolage Grotesque", sans-serif;
  letter-spacing: -.03em;
}
.faq-list summary span {
  display: grid;
  place-items: center;
  width: 38px;
  height: 38px;
  border: 1px solid rgba(6,20,28,.15);
  border-radius: 50%;
  transition: transform .45s var(--ease-out-expo), background-color .3s ease, color .3s ease;
}
.faq-list details[open] summary span { transform: rotate(45deg); background: var(--ink); color: var(--paper); }
.faq-list details>div { padding: 0 12px 30px; }

/* -------------------------
   CTA — bigger, less generic
   ------------------------- */

.final-cta {
  position: relative;
  overflow: hidden;
  max-width: min(1180px, calc(100% - 2*var(--gutter))) !important;
  margin-top: clamp(40px,6vw,90px);
  margin-bottom: clamp(70px,7vw,110px);
  padding: clamp(74px,8vw,116px) clamp(24px,6vw,90px);
  border: 1px solid rgba(255,255,255,.11);
  border-radius: clamp(28px,3vw,46px);
  background:
    radial-gradient(circle at 50% -15%, rgba(120,216,242,.17), transparent 45%),
    linear-gradient(145deg, rgba(255,255,255,.038), rgba(255,255,255,.013));
  box-shadow: 0 48px 120px rgba(0,0,0,.25), inset 0 1px 0 rgba(255,255,255,.04);
}
.final-cta::before,
.final-cta::after {
  content: "";
  position: absolute;
  border: 1px solid rgba(120,216,242,.10);
  border-radius: 50%;
  pointer-events: none;
}
.final-cta::before { width: 360px; aspect-ratio:1; left:-220px; top:-170px; }
.final-cta::after { width: 480px; aspect-ratio:1; right:-310px; bottom:-290px; }
.final-cta h2 { position: relative; z-index:1; font-size: clamp(48px,6vw,88px); }
.final-cta p,.final-cta a { position: relative; z-index:1; }

/* -------------------------
   Modal
   ------------------------- */

.modal__backdrop {
  background: rgba(1,8,12,.68);
  backdrop-filter: blur(14px);
  -webkit-backdrop-filter: blur(14px);
}
.modal__dialog {
  border: 1px solid rgba(255,255,255,.13);
  border-radius: 34px;
  background:
    radial-gradient(circle at 88% 8%, rgba(120,216,242,.15), transparent 18rem),
    #0a1c25;
  box-shadow: 0 50px 160px rgba(0,0,0,.55);
  animation: modalIn .48s var(--ease-out-expo) both;
}
.modal__dialog li {
  border: 1px solid rgba(255,255,255,.08);
  border-radius: 16px;
  background: rgba(255,255,255,.025);
}
@keyframes modalIn { from { opacity:0; transform: translateY(24px) scale(.975); } to { opacity:1; transform:none; } }

/* -------------------------
   Reveal system
   ------------------------- */

.js .premium-reveal {
  opacity: 0;
  filter: blur(7px);
  transform: translateY(34px);
  transition:
    opacity .85s ease,
    transform .9s var(--ease-out-expo),
    filter .75s ease;
  transition-delay: var(--reveal-delay,0ms);
}
.js .premium-reveal.is-visible {
  opacity: 1;
  filter: blur(0);
  transform: translate3d(0,0,0);
}

/* -------------------------
   Fine pointer aura
   ------------------------- */

.pointer-aura {
  position: fixed;
  z-index: 150;
  width: 170px;
  aspect-ratio: 1;
  left: 0;
  top: 0;
  border-radius: 50%;
  pointer-events: none;
  opacity: 0;
  background: radial-gradient(circle, rgba(120,216,242,.09), transparent 67%);
  transform: translate(-50%,-50%);
  transition: opacity .25s ease;
  mix-blend-mode: screen;
}
.pointer-aura.is-visible { opacity: 1; }

/* -------------------------
   Responsive
   ------------------------- */

@media (max-width: 1180px) {
  .subhero__grid { grid-template-columns: minmax(0,1fr) minmax(320px,.78fr); }
  .signal-card { min-height: 450px; }
  .section--split > div:first-child { position: static; }
}

@media (max-width: 900px) {
  .section--light {
    width: calc(100% - 2 * clamp(14px,3vw,24px));
    border-radius: 30px;
  }
  .subhero__grid { grid-template-columns: 1fr; }
  .signal-card { min-height: min(68vw,560px); }
  .service-row { grid-template-columns: 1fr; min-height: 0; }
  .tech-button { width: fit-content; }
  .example-grid { grid-template-columns: 1fr; }
  .process-list::before,.process-list::after { left: 29px; }
  .process-list li { grid-template-columns: 60px 1fr; }
  .process-list li > span { margin-left: 7px; }
}

@media (max-width: 720px) {
  body::after { opacity: .025; }
  .site-header { height: 70px; }
  .hero { min-height: auto; padding-top: 72px; }
  .hero::before { display:none; }
  .hero h1 { font-size: clamp(48px,14vw,74px); letter-spacing: -.05em; }
  .subhero__grid h1 { font-size: clamp(46px,12vw,70px); letter-spacing: -.05em; }
  .signal-card { min-height: 420px; border-radius: 30px; }
  .section { padding-block: 82px; }
  .section--light { margin-block: 28px; padding: 60px 22px; }
  .service-row { padding-left: 50px; padding-right: 0; }
  .service-row:hover { padding-left: 50px; }
  .service-row::before { top: 40px; font-size: 11px; }
  .process-list li.is-active { transform:none; }
  .final-cta { border-radius: 30px; padding: 70px 22px; }
  .pointer-aura { display:none; }
}

@media (hover:none) {
  .area-card,
  .service-panel,
  .principle-grid article,
  .outcome-grid article,
  .example-grid article,
  .gallery-card,
  .signal-card,
  .hero__visual { transform:none !important; }
}

@media (prefers-reduced-motion: reduce) {
  *,*::before,*::after { scroll-behavior:auto !important; animation-duration:.001ms !important; animation-iteration-count:1 !important; transition-duration:.001ms !important; }
  .js .premium-reveal { opacity:1; filter:none; transform:none; }
  .pointer-aura { display:none; }
}

/* top-edge scroll progress — tiny but gives the whole site a crafted feel */
.site-header::after {
  content: "";
  position: absolute;
  left: 0;
  right: 0;
  bottom: -1px;
  height: 1px;
  background: linear-gradient(90deg, var(--area-accent, var(--works)), color-mix(in srgb, var(--area-accent, var(--works)) 45%, white));
  transform: scaleX(var(--page-progress,0));
  transform-origin: left center;
  box-shadow: 0 0 14px color-mix(in srgb, var(--area-accent, var(--works)) 45%, transparent);
}

.text-link {
  position: relative;
  border-bottom: 0;
  padding-bottom: 5px;
}
.text-link::after {
  content: "";
  position: absolute;
  left: 0;
  right: 0;
  bottom: 0;
  height: 1px;
  background: currentColor;
  transform-origin: right center;
  transition: transform .4s var(--ease-out-expo);
}
.text-link:hover::after {
  transform: scaleX(.35);
  transform-origin: left center;
}

.service-panel > span {
  transition: transform .65s var(--ease-out-expo), opacity .4s ease;
}
.service-panel:hover > span {
  transform: translate(5px,-4px) scale(1.04);
  opacity: .20;
}

/* tighter editorial transitions — remove the dead zones visible in the first checkpoint */
main > .section:not(.section--light) + .section:not(.section--light) {
  padding-top: clamp(68px, 7vw, 110px);
}
main > .section:not(.section--light):has(+ .section--light) {
  padding-bottom: clamp(70px, 7vw, 108px);
}
main > .section--light {
  margin-top: 0;
}
main > .section--light + .section {
  padding-top: clamp(76px, 7.5vw, 118px);
}

/* sane fallback when webfonts are blocked during preview */
:root {
  --display: "Bricolage Grotesque", "Helvetica Neue", Arial, sans-serif;
  --body: "Manrope", Inter, system-ui, -apple-system, BlinkMacSystemFont, "Segoe UI", sans-serif;
}
.hero h1,.subhero h1,.project-hero h1,
.section-head h2,.section>div>h2,.final-cta h2,.footer-cta h2,
.area-card__copy h3,.service-panel h3,.gallery-card h3,.project-card h3,.project-card h2,
.process-list b,.signal-card strong,.outcome-grid h3,.example-grid h3,.modal__dialog h2,.service-row h3,.faq-list summary {
  font-family: var(--display);
}
