/* GENERATED by tools/css-bundle.mjs from tokens.css, base.css, layout.css, components.css, animations.css. Do not edit. */

/* --- tokens.css --- */
/* ══════════════════════════════════════════════
   HANK! — Design Tokens
   Corporate Design System
   ══════════════════════════════════════════════ */

:root {

  /* ── Colors: Ink (Dark) ────────────────────── */
  --ink:          #0A0A08;
  --ink-mid:      #141412;
  --ink-soft:     #1E1E1A;
  --ink-muted:    #2A2A26;

  /* ── Colors: Paper (Light) ─────────────────── */
  --paper:        #E8E4DC;
  --paper-warm:   #D4CFC5;
  --paper-cool:   #F5F2ED;

  /* ── Colors: Accent (Terrakotta) ───────────── */
  --accent:       #D06030;
  --accent-light: #E07A4D;
  --accent-dark:  #1A1210;
  --accent-glow:  rgba(196, 87, 42, 0.12);

  /* ── Colors: Muted ─────────────────────────── */
  --muted:        #908A7F;
  --muted-light:  #A8A398;
  --muted-lighter:#C0BCB2;

  /* ── Colors: Semantic ──────────────────────── */
  --success:      #3D6555;
  --error:        #C4572A;
  --warning:      #B8923A;

  /* ── Colors: Dividers ──────────────────────── */
  --divider-dark:  rgba(255, 255, 255, 0.06);
  --divider-light: rgba(10, 10, 8, 0.08);

  /* ── Typography: Families ──────────────────── */
  --font-display: 'Syne', system-ui, sans-serif;
  --font-body:    'Inter', -apple-system, sans-serif;
  --font-mono:    'JetBrains Mono', monospace;

  /* ── Typography: Scale (5 Stufen) ──────────── */
  --text-sm:   0.875rem;                        /* 14px — Meta, Labels, Eyebrows, Nav, Footer */
  --text-base: 1.125rem;                        /* 18px — Body, Buttons, Inputs */
  --text-lg:   clamp(1.75rem, 3.5vw, 2.75rem); /* 28–44px — Section Headings H2/H3 */
  --text-xl:   clamp(2.5rem, 5.5vw, 4.5rem);   /* 40–72px — Stat Numbers, Subheads */
  --text-2xl:  clamp(3.5rem, 9vw, 8.5rem);     /* 56–136px — Hero Title, Statements */

  /* ── Typography: Marquee ─────────────────────
     Kein eigener Token — Marquee nutzt --text-lg.
     Wenn visuell groesser noetig: inline clamp().
     ─────────────────────────────────────────── */

  /* ── Typography: Weights ───────────────────── */
  --weight-light:      300;
  --weight-regular:    400;
  --weight-medium:     500;
  --weight-semibold:   600;
  --weight-bold:       700;
  --weight-extrabold:  800;

  /* ── Typography: Line Heights ──────────────── */
  --leading-tight:    1.1;
  --leading-snug:     1.3;
  --leading-normal:   1.7;
  --leading-relaxed:  1.85;

  /* ── Typography: Letter Spacing ────────────── */
  --tracking-tight:   -0.02em;
  --tracking-normal:  0;
  --tracking-wide:    0.2em;
  --tracking-wider:   0.3em;

  /* ── Spacing (8px Grid) ────────────────────── */
  --space-1:  0.25rem;   /*  4px */
  --space-2:  0.5rem;    /*  8px */
  --space-3:  0.75rem;   /* 12px */
  --space-4:  1rem;      /* 16px */
  --space-6:  1.5rem;    /* 24px */
  --space-8:  2rem;      /* 32px */
  --space-12: 3rem;      /* 48px */
  --space-16: 4rem;      /* 64px */
  --space-20: 5rem;      /* 80px */
  --space-24: 6rem;      /* 96px */

  /* ── Layout ────────────────────────────────── */
  --max-width: 1200px;
  --max-text:  680px;
  --max-wide:  960px;
  --pad:       clamp(1.5rem, 5vw, 6rem);

  /* ── Effects: Transitions ──────────────────── */
  --ease:          cubic-bezier(0.4, 0, 0.2, 1);
  --ease-out:      cubic-bezier(0.19, 1, 0.22, 1);
  --duration-fast: 150ms;
  --duration-base: 300ms;
  --duration-slow: 600ms;

  /* ── Effects: Shadows ──────────────────────── */
  --shadow-subtle:   0 1px 2px rgba(10, 10, 8, 0.08);
  --shadow-elevated: 0 8px 32px rgba(10, 10, 8, 0.12);
  --shadow-floating: 0 16px 64px rgba(10, 10, 8, 0.16);

  /* ── Effects: Border Radius ────────────────── */
  --radius-none: 0;
  --radius-sm:   2px;
  --radius-md:   4px;
}

/* --- base.css --- */
/* Self-hosted variable fonts — DSGVO compliant. One file per family; weight
   ranges match the previously declared static weights so rendering is unchanged. */
@font-face { font-family: 'Syne'; font-style: normal; font-weight: 500 800; font-display: swap; src: url(../fonts/syne-var.woff2) format('woff2') }
@font-face { font-family: 'Inter'; font-style: normal; font-weight: 400 600; font-display: swap; src: url(../fonts/inter-var.woff2) format('woff2') }
@font-face { font-family: 'JetBrains Mono'; font-style: normal; font-weight: 400 500; font-display: swap; src: url(../fonts/jbmono-var.woff2) format('woff2') }

*,
*::before,
*::after {
  margin: 0;
  padding: 0;
  box-sizing: border-box;
}

html {
  font-size: 100%;
  -webkit-font-smoothing: antialiased;
  -moz-osx-font-smoothing: grayscale;
  overflow-x: hidden;

  /* German hyphenation, global (needs lang="de" on <html>).
     6 3 3 = min word length 6, min 3 chars before / after the break —
     Duden-safe, prevents "Ha-us"-style breaks. Max 2 hyphenated lines in a row. */
  hyphens: auto;
  -webkit-hyphens: auto;
  hyphenate-limit-chars: 6 3 3;
  hyphenate-limit-lines: 2;
  overflow-wrap: break-word;
  word-break: normal;
}

body {
  font-family: var(--font-body);
  font-size: var(--text-base);
  line-height: 1.7;
  color: var(--paper);
  background: var(--ink);
  overflow-x: hidden;
}

::selection {
  background: var(--accent);
  color: var(--paper);
}

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

/* Balanced line breaks — prevents orphans and ugly wrapping.
   Headings never auto-hyphenate: breaks are authored with &shy; in the markup. */
h1, h2, h3, h4,
.statement-heading,
.quote-inner blockquote,
.quote-partner,
.quote-sub {
  text-wrap: balance;
  hyphens: manual;
  -webkit-hyphens: manual;
}

/* Long unbreakable tokens (URLs, mail addresses, code) move as a whole */
code,
a[href^="http"],
a[href^="mailto"],
a[href^="tel"] {
  overflow-wrap: anywhere;
  hyphens: manual;
}

/* Noise overlay */
body::before {
  content: '';
  position: fixed;
  inset: 0;
  z-index: 9998;
  pointer-events: none;
  opacity: 0.025;
  background-image: url("data:image/svg+xml,%3Csvg viewBox='0 0 256 256' xmlns='http://www.w3.org/2000/svg'%3E%3Cfilter id='n'%3E%3CfeTurbulence type='fractalNoise' baseFrequency='0.85' numOctaves='4' stitchTiles='stitch'/%3E%3C/filter%3E%3Crect width='100%25' height='100%25' filter='url(%23n)'/%3E%3C/svg%3E");
  background-repeat: repeat;
  background-size: 200px 200px;
}

/* Skip link */
.skip-link {
  position: absolute;
  top: -100%;
  left: var(--space-4);
  padding: var(--space-2) var(--space-4);
  background: var(--accent);
  color: var(--paper);
  font-size: var(--text-sm);
  z-index: 10000;
}

.skip-link:focus {
  top: var(--space-2);
  outline: 2px solid var(--paper);
  outline-offset: 2px;
}

/* Focus visible */
:focus-visible {
  outline: 2px solid var(--accent);
  outline-offset: 3px;
}

.pn--accent :focus-visible {
  outline-color: var(--paper);
}

/* Screen reader only */
.sr-only {
  position: absolute;
  width: 1px;
  height: 1px;
  padding: 0;
  margin: -1px;
  overflow: hidden;
  clip: rect(0, 0, 0, 0);
  white-space: nowrap;
  border: 0;
}

/* Eyebrow utility */
.eyebrow {
  font-family: var(--font-mono);
  font-size: var(--text-sm);
  font-weight: 500;
  letter-spacing: var(--tracking-wider);
  text-transform: uppercase;
  color: var(--muted);
  margin-bottom: var(--space-8);
}

.eyebrow--accent { color: var(--accent); }

/* Accent utility */
.accent {
  color: var(--accent);
}

/* --- layout.css --- */
/* ══════════════════════════════════════════════
   HANK! — Layout
   ══════════════════════════════════════════════ */

/* ── Panels ──────────────────────────────────── */
.pn {
  min-height: 100vh;
  scroll-snap-align: start;
  display: flex;
  align-items: center;
  justify-content: center;
  padding: var(--pad);
  position: relative;
}

.pn--col {
  flex-direction: column;
  justify-content: center;
}

.pn--light {
  background: var(--paper-cool);
  color: var(--ink);
}

/* Accessible contrast on light backgrounds (4.5:1 minimum) */
.pn--light .eyebrow {
  color: #716E69;
}

.pn--accent {
  background: var(--accent);
  color: var(--paper);
}

.pn--start { align-items: flex-start; }
.pn--services { min-height: auto; padding: clamp(5rem, 12vw, 10rem) var(--pad); scroll-snap-align: start; }
.pn--refs { min-height: auto; padding: clamp(5rem, 12vw, 10rem) var(--pad); scroll-snap-align: start; }
.pn--process { align-items: flex-start; padding-top: clamp(5rem, 12vw, 10rem); padding-bottom: clamp(5rem, 12vw, 10rem); }

/* ── Hero ────────────────────────────────────── */
.hero-logo {
  height: 70vh;
  width: auto;
  max-width: 70vw;
  margin-bottom: var(--space-8);
}

.hero-tag {
  font-family: var(--font-mono);
  font-size: var(--text-sm);
  letter-spacing: 0.3em;
  text-transform: uppercase;
  color: var(--muted-light);
  min-height: 1.5em;
}

.hero-tag .tag-cursor {
  display: inline-block;
  width: 2px;
  height: 1em;
  background: var(--muted-light);
  margin-left: 2px;
  vertical-align: text-bottom;
  animation: blink 0.6s step-end infinite;
}

@keyframes blink {
  50% { opacity: 0; }
}

.hero-tag .tag-selected {
  background: var(--accent);
  color: var(--paper);
}

.hero-indicator {
  position: absolute;
  bottom: 2.5rem;
  left: 50%;
  transform: translateX(-50%);
  display: flex;
  flex-direction: column;
  align-items: center;
  gap: 0.5rem;
}

.hero-indicator span {
  font-family: var(--font-mono);
  font-size: var(--text-sm);
  letter-spacing: var(--tracking-wide);
  text-transform: uppercase;
  color: var(--muted);
}

.hero-line {
  width: 1px;
  height: 48px;
  background: linear-gradient(to bottom, var(--accent), transparent);
}

/* ── Statement ───────────────────────────────── */
.statement-heading {
  font-family: var(--font-display);
  font-size: var(--text-2xl);
  font-weight: 700;
  line-height: 1.4;
  letter-spacing: var(--tracking-tight);
  width: 70vw;
}

/* ── Diagnose ────────────────────────────────── */
.diagnose-wrap {
  width: 94vw;
}

.diagnose-eyebrow {
  font-family: var(--font-mono);
  font-size: var(--text-base);
  font-weight: 500;
  letter-spacing: 0.3em;
  text-transform: uppercase;
  color: var(--muted);
  margin-bottom: var(--space-12);
}

.diagnose-grid {
  display: grid;
  grid-template-columns: repeat(3, 1fr);
  gap: 1px;
  background: var(--ink-soft);
}

.diagnose-card {
  background: var(--ink-mid);
  padding: clamp(2rem, 3vw, 3rem);
  min-height: 70vh;
  display: flex;
  flex-direction: column;
  justify-content: center;
  position: relative;
  overflow: hidden;
  transition: background var(--duration-base);
}

.diagnose-card::before {
  content: '';
  position: absolute;
  top: 0;
  left: 0;
  right: 0;
  height: 2px;
  background: var(--accent);
  transform: scaleX(0);
  transform-origin: left;
  transition: transform var(--duration-base) var(--ease-out);
}

.diagnose-card:hover {
  background: var(--ink-soft);
}

.diagnose-card:hover::before {
  transform: scaleX(1);
}

.diagnose-card:hover .diagnose-number {
  color: var(--accent);
}

.diagnose-number {
  font-family: var(--font-display);
  font-size: var(--text-xl);
  color: var(--ink-muted);
  margin-bottom: var(--space-6);
  transition: color var(--duration-base);
}

.diagnose-card h3 {
  font-family: var(--font-display);
  font-size: var(--text-lg);
  font-weight: 700;
  letter-spacing: var(--tracking-tight);
  line-height: 1.15;
  margin-bottom: var(--space-4);
}

.diagnose-card p {
  font-size: var(--text-base);
  color: var(--muted-light);
  line-height: 1.7;
}

/* ── Marquee ─────────────────────────────────── */
.marquee-wrap {
  scroll-snap-align: none;
  min-height: auto;
  padding: 2.5rem 0;
  border-top: 1px solid var(--divider-dark);
  border-bottom: 1px solid var(--divider-dark);
  overflow: hidden;
  display: flex;
  align-items: center;
}

.marquee {
  display: flex;
  flex-wrap: nowrap;
  will-change: transform;
}

.marquee span {
  font-family: var(--font-display);
  font-weight: 700;
  font-size: var(--text-lg);
  color: var(--muted);
  padding: 0 3rem;
  flex-shrink: 0;
  text-transform: uppercase;
  letter-spacing: 0.05em;
}

.marquee em {
  font-style: normal;
  font-weight: 800;
  color: var(--paper);
}

/* ── Services ────────────────────────────────── */
.services-inner {
  width: 70vw;
  margin: 0 auto;
  text-align: center;
}

.services-heading {
  font-family: var(--font-display);
  font-size: var(--text-xl);
  font-weight: 700;
  line-height: 1.1;
  margin-bottom: var(--space-8);
}

.services-core {
  border: 1px solid var(--ink-muted);
  padding: clamp(2.5rem, 4vw, 4rem);
  text-align: left;
  position: relative;
  margin-bottom: var(--space-12);
}

.services-core::after {
  content: '';
  position: absolute;
  bottom: calc(-1 * var(--space-12));
  left: 50%;
  width: 1px;
  height: var(--space-12);
  background: var(--divider-dark);
}

.services-core h3 {
  font-family: var(--font-display);
  font-size: var(--text-xl);
  font-weight: 700;
  margin-bottom: var(--space-4);
}

/* Body copy only — the eyebrow keeps its own size (--text-sm) */
.services-core p:not(.eyebrow) {
  font-size: var(--text-base);
  color: #716E69;
  line-height: 1.7;
  max-width: var(--max-text);
}

.services-tag {
  display: inline-block;
  font-family: var(--font-mono);
  font-size: var(--text-sm);
  font-weight: 500;
  letter-spacing: var(--tracking-wider);
  text-transform: uppercase;
  color: var(--accent);
  margin-top: var(--space-6);
}

/* Three columns of --text-base copy need more room than the 70vw column:
   the grid breaks out to 90vw (same measure as the diagnose cards). */
.services-branches {
  display: grid;
  grid-template-columns: repeat(3, 1fr);
  gap: 1px;
  margin-inline: -10vw;
}

.services-branch {
  background: var(--paper-cool);
  padding: clamp(2rem, 3vw, 3rem) var(--space-6);
  text-align: left;
  border-bottom: 2px solid transparent;
  transition: border-color var(--duration-base);
}

.services-branch:hover {
  border-bottom-color: var(--accent);
}

.services-branch h4 {
  font-family: var(--font-display);
  font-size: var(--text-lg);
  font-weight: 700;
  line-height: 1.15;
  margin-bottom: var(--space-4);
}

.services-branch p:not(.eyebrow) {
  font-size: var(--text-base);
  color: #716E69;
  line-height: 1.7;
  max-width: var(--max-text);
}

/* ── Quote ───────────────────────────────────── */
.quote-inner {
  width: 70vw;
  margin: 0 auto;
}

.quote-inner blockquote {
  font-family: var(--font-display);
  font-size: var(--text-xl);
  font-weight: 700;
  line-height: 1.2;
}

.quote-word {
  display: inline;
  transition: color var(--duration-base);
  color: var(--paper);
}

.quote-word.dark {
  color: var(--ink);
}

/* Partner stays light even when other words scroll dark */
.quote-word.partner.dark {
  color: var(--paper);
}

.quote-partner {
  font-family: var(--font-display);
  font-size: var(--text-2xl);
  font-weight: 700;
  line-height: 1.2;
  margin-top: var(--space-8);
}

.quote-sub {
  font-family: var(--font-display);
  font-size: var(--text-lg);
  font-weight: 600;
  margin-top: var(--space-3);
  line-height: 1.4;
}

/* ── Process ─────────────────────────────────── */
.process-inner {
  width: 70vw;
  margin: 0 auto;
}

.process-inner h2 {
  font-family: var(--font-display);
  font-size: var(--text-xl);
  font-weight: 700;
  line-height: 1.1;
  margin-bottom: var(--space-6);
}

.process-intro {
  font-size: var(--text-base);
  color: var(--muted-light);
  line-height: 1.7;
  max-width: var(--max-text);
  margin-bottom: var(--space-12);
}

.process-step {
  display: grid;
  grid-template-columns: 1fr 1fr;
  gap: var(--space-8);
  padding: var(--space-12) 0;
  border-bottom: 1px solid var(--divider-dark);
  align-items: center;
}

.process-step:nth-of-type(2) { margin-left: 5vw; }
.process-step:nth-of-type(3) { margin-left: 10vw; }
.process-step:nth-of-type(4) { margin-left: 15vw; }

.process-number {
  font-family: var(--font-display);
  font-size: var(--text-2xl);
  font-weight: 700;
  color: var(--ink-muted);
  transition: color var(--duration-base);
}

.process-step:hover .process-number {
  color: var(--accent);
}

.process-step h3 {
  font-family: var(--font-display);
  font-size: var(--text-lg);
  font-weight: 700;
  margin-bottom: var(--space-3);
}

.process-step p {
  font-size: var(--text-base);
  color: var(--muted-light);
  line-height: 1.7;
}

/* ── References (voices + client list) ─────── */
.refs-inner {
  width: 70vw;
  margin: 0 auto;
}

.refs-heading {
  font-family: var(--font-display);
  font-size: var(--text-xl);
  font-weight: 700;
  line-height: 1.1;
  margin-bottom: var(--space-4);
}

/* One sentence per line; each sentence balances on its own when it has to wrap */
.refs-heading span {
  display: block;
}

.refs-sub {
  font-size: var(--text-base);
  color: #716E69;
  line-height: 1.7;
  max-width: var(--max-text);
  margin-bottom: var(--space-12);
}

.refs-voices,
.refs-clients {
  list-style: none;
}

.refs-voice {
  padding: var(--space-12) 0;
  border-top: 1px solid var(--divider-light);
}

.refs-voice:last-child {
  border-bottom: 1px solid var(--divider-light);
}

.refs-voice blockquote p {
  hyphens: manual; /* customer quotes: no auto-hyphenation */
  -webkit-hyphens: manual;
  font-family: var(--font-display);
  font-size: var(--text-lg);
  font-weight: 600;
  line-height: 1.3;
  text-wrap: balance;
}

.refs-voice figcaption,
.refs-group-label {
  font-family: var(--font-mono);
  font-size: var(--text-sm);
  font-weight: 500;
  text-transform: uppercase;
  letter-spacing: var(--tracking-wide);
  color: #716E69;
}

.refs-voice figcaption {
  margin-top: var(--space-6);
  hyphens: manual; /* names move as whole words */
  -webkit-hyphens: manual;
}

.refs-clients-heading {
  margin-top: var(--space-16);
}

.refs-groups {
  display: grid;
  grid-template-columns: repeat(2, minmax(0, 1fr));
  gap: var(--space-12) var(--space-16);
  align-items: start;
}

.refs-group-label {
  padding-bottom: var(--space-4);
  border-bottom: 1px solid var(--ink);
}

/* Company names never hyphenate — whole words wrap */
.refs-clients {
  hyphens: manual;
  -webkit-hyphens: manual;
}

.refs-clients li {
  font-family: var(--font-display);
  font-size: var(--text-base);
  font-weight: 600;
  line-height: 1.3;
  padding: var(--space-3) 0;
  border-bottom: 1px solid var(--divider-light);
}

.refs-outro {
  margin-top: var(--space-16);
  max-width: var(--max-text);
}

.refs-outro p {
  font-size: var(--text-base);
  color: #716E69;
  line-height: 1.7;
  hyphens: manual;
  -webkit-hyphens: manual;
}

.refs-outro p + p {
  margin-top: var(--space-2);
  color: var(--ink);
}

.refs-outro-link {
  font-weight: 600;
  text-decoration: underline;
  text-decoration-color: var(--accent);
  text-decoration-thickness: 2px;
  text-underline-offset: 4px;
  transition: color var(--duration-base);
}

.refs-outro-link:hover {
  color: var(--accent);
}

/* ── Contact ─────────────────────────────────── */
.contact-inner {
  width: 85vw;
  margin: 0 auto;
  text-align: center;
}

.contact-inner h2 {
  font-family: var(--font-display);
  font-size: var(--text-2xl);
  font-weight: 700;
  line-height: 1.1;
  margin-bottom: var(--space-6);
}

.contact-inner p {
  font-size: var(--text-base);
  color: var(--muted-light);
  line-height: 1.7;
  margin-bottom: var(--space-12);
}

.contact-links {
  display: flex;
  flex-direction: column;
  align-items: center;
  gap: var(--space-6);
}

.contact-link {
  font-family: var(--font-mono);
  font-size: var(--text-base);
  color: var(--paper);
  border-bottom: 1px solid var(--muted);
  padding-bottom: var(--space-1);
  transition: color var(--duration-base), border-color var(--duration-base);
}

.contact-link:hover {
  color: var(--accent);
  border-bottom-color: var(--accent);
}

/* ── Footer ──────────────────────────────────── */
footer {
  border-top: 1px solid var(--divider-dark);
  padding: var(--space-8) var(--pad);
  display: flex;
  flex-direction: column;
  align-items: center;
  gap: var(--space-6);
}

.footer-nav {
  display: flex;
  gap: var(--space-8);
  align-items: center;
}

.footer-nav span {
  font-size: var(--text-sm);
  color: #797979;
}

.footer-brand {
  display: flex;
  align-items: center;
}

.footer-logo {
  width: 180px;
  height: auto;
  filter: invert(1) brightness(0.9);
}

footer a {
  font-size: var(--text-sm);
  color: var(--muted);
  transition: color var(--duration-base);
}

footer a:hover {
  color: var(--paper);
}

/* ── Progress Bar ────────────────────────────── */
.progress-bar {
  position: fixed;
  top: 0;
  left: 0;
  height: 2px;
  background: var(--accent);
  z-index: 101;
  width: 0;
}

/* ── Custom Cursor ───────────────────────────── */
.cursor {
  position: fixed;
  width: 18px;
  height: 18px;
  margin-left: -9px;
  margin-top: -9px;
  border: 1.5px solid var(--paper);
  border-radius: 50%;
  pointer-events: none;
  z-index: 9999;
  will-change: transform;
  transition: width 0.2s, height 0.2s, background 0.2s, border-color 0.2s, margin 0.2s;
  mix-blend-mode: difference;
}

.cursor.hover {
  width: 56px;
  height: 56px;
  margin-left: -28px;
  margin-top: -28px;
  background: var(--divider-dark);
  border-color: var(--accent);
}

@media (pointer: coarse) {
  .cursor {
    display: none;
  }
}

/* ══════════════════════════════════════════════
   Responsive
   ══════════════════════════════════════════════ */

/* Above mobile the services copy runs at 40+ characters per line and needs no
   auto-hyphenation; Chrome ignores hyphenate-limit-chars there ("Fra-ge", "war-um"). */
@media (min-width: 601px) {
  .services-core p:not(.eyebrow),
  .services-branch p:not(.eyebrow) {
    hyphens: manual;
    -webkit-hyphens: manual;
  }
}

/* Below 1200px three columns of --text-base copy get too narrow: stack the
   branches inside the 70vw column, aligned with the core box copy. */
@media (max-width: 1200px) {
  .services-branches {
    grid-template-columns: 1fr;
    margin-inline: 0;
  }

  .services-branch {
    padding-inline: clamp(2.5rem, 4vw, 4rem);
  }
}

@media (max-width: 900px) {
  .diagnose-grid {
    grid-template-columns: 1fr;
  }

  .diagnose-card {
    min-height: auto;
  }

  .process-step {
    grid-template-columns: 1fr;
    margin-left: 0 !important;
  }

  .refs-groups {
    grid-template-columns: 1fr;
  }

  .pn {
    padding: var(--space-12) var(--pad);
  }
}

@media (max-width: 600px) {
  /* Scale down large type for mobile */
  :root {
    --text-2xl: clamp(2.25rem, 8vw, 3.5rem);
    --text-xl: clamp(1.75rem, 5vw, 2.5rem);
  }

  .hero-logo {
    height: 45vh;
    max-width: 95vw;
  }

  /* Narrow screens: less inset, longer lines */
  .services-core,
  .services-branch {
    padding-inline: var(--space-6);
  }

  .diagnose-wrap,
  .services-inner,
  .process-inner {
    width: 100%;
  }

  .statement-heading,
  .quote-inner,
  .refs-inner,
  .contact-inner {
    width: 100%;
  }

  .hero-tag {
    text-align: center;
    width: 100%;
  }
}

/* --- components.css --- */
/* Home button for legal subpages */
.home-btn {
  position: fixed;
  top: var(--space-6);
  right: var(--space-6);
  z-index: 100;
  display: flex;
  align-items: center;
  gap: var(--space-3);
  padding: var(--space-3) var(--space-4);
  background: var(--ink-mid);
  border: 1px solid var(--accent);
  border-radius: var(--radius-md);
  color: var(--accent);
  font-family: var(--font-mono);
  font-size: var(--text-sm);
  letter-spacing: 0.1em;
  text-transform: uppercase;
  text-decoration: none;
  transition: color var(--duration-base), border-color var(--duration-base), background var(--duration-base);
}

.home-btn:hover {
  color: var(--paper);
  border-color: var(--paper);
  background: var(--accent);
}

.home-btn svg {
  flex-shrink: 0;
}

.home-btn-label {
  display: inline;
}

@media (max-width: 600px) {
  .home-btn-label {
    display: none;
  }
  .home-btn {
    padding: var(--space-3);
  }
}

.page-content {
  max-width: var(--max-text);
  margin: 0 auto;
  padding: clamp(3rem, 8vw, 6rem) var(--pad);
}

.page-content h1 {
  font-family: var(--font-display);
  font-size: var(--text-lg);
  font-weight: 700;
  line-height: 1.4;
  margin-bottom: var(--space-8);
}

.page-intro {
  font-size: var(--text-base);
  color: var(--muted);
  font-style: italic;
  margin-bottom: var(--space-8);
}

.page-content h2 {
  font-family: var(--font-display);
  font-size: var(--text-base);
  font-weight: 600;
  line-height: 1.4;
  margin-top: var(--space-8);
  margin-bottom: var(--space-4);
}

.page-content h3 {
  font-family: var(--font-display);
  font-size: var(--text-base);
  font-weight: 600;
  margin-top: var(--space-6);
  margin-bottom: var(--space-3);
}

.page-content p {
  color: var(--muted-light);
  line-height: 1.7;
  margin-bottom: var(--space-4);
}

.page-content ul,
.page-content ol {
  color: var(--muted-light);
  line-height: 1.7;
  margin-bottom: var(--space-4);
  padding-left: var(--space-6);
}

.page-content a {
  color: var(--accent);
  border-bottom: 1px solid transparent;
  transition: border-color var(--duration-base);
}

.page-content a:hover {
  border-bottom-color: var(--accent);
}

/* --- animations.css --- */
/* Scroll-snap on desktop */
body {
  scroll-snap-type: y proximity;
}

/* Logo stroke-draw — JS controls timing */
.hero-logo .draw {
  fill: none;
  stroke: var(--paper);
  stroke-width: 2.5;
  stroke-dasharray: 6000;
  stroke-dashoffset: 6000;
}

.hero-logo .fill {
  fill: var(--paper);
  stroke: none;
  opacity: 0;
}

/* Hero entrance */
@keyframes pulse {
  0%, 100% { opacity: 0.2; }
  50%      { opacity: 0.8; }
}

.hero-tag { opacity: 0; }
.hero-indicator { opacity: 0; }
.hero-line { animation: pulse 2s ease-in-out infinite; }

/* Marquee */
@keyframes marquee-scroll {
  from { transform: translateX(0); }
  to   { transform: translateX(-50%); }
}

.marquee {
  animation: marquee-scroll 28s linear infinite;
}

/* has-js animation states */
.has-js .statement-heading .word {
  display: inline-block;
  opacity: 0;
  transition: opacity 0.4s, transform 0.4s var(--ease-out);
}
.has-js .statement-heading .word.visible { opacity: 1; }
.has-js .statement-heading .word.dim { color: var(--muted); }
.has-js .statement-heading .word.accent { color: var(--accent); font-weight: 800; }

.has-js .diagnose-card {
  opacity: 0;
  transform: translateY(80px) scale(0.95);
  transition: opacity 0.8s, transform 0.8s var(--ease-out), background var(--duration-base);
}
.has-js .diagnose-card.visible {
  opacity: 1;
  transform: translateY(0) scale(1);
}

.has-js .services-heading {
  opacity: 0;
  transform: scale(0.9);
  transition: opacity 0.8s, transform 0.8s var(--ease-out);
}
.has-js .services-heading.visible {
  opacity: 1;
  transform: scale(1);
}

.has-js .services-core {
  opacity: 0;
  transform: translateX(-60px);
  transition: opacity 0.8s var(--ease-out), transform 0.8s var(--ease-out);
}
.has-js .services-core.visible {
  opacity: 1;
  transform: translateX(0);
}

.has-js .services-branch {
  opacity: 0;
  transform: translateY(40px);
  transition: opacity 0.7s var(--ease-out), transform 0.7s var(--ease-out), border-color var(--duration-base);
}
.has-js .services-branch.visible {
  opacity: 1;
  transform: translateY(0);
}

.has-js .process-intro {
  opacity: 0;
  transition: opacity 0.8s 0.2s;
}
.has-js .process-intro.visible { opacity: 1; }

.has-js .process-step {
  opacity: 0;
  transform: translateX(-60px);
  transition: opacity 0.7s, transform 0.7s var(--ease-out);
}
.has-js .process-step.visible {
  opacity: 1;
  transform: translateX(0);
}

/* References — quotes and client groups settle in from below, staggered via data-stagger */
.has-js .refs-voice,
.has-js .refs-group,
.has-js .refs-outro {
  opacity: 0;
  transform: translateY(30px);
  transition: opacity 0.7s, transform 0.7s var(--ease-out);
}
.has-js .refs-voice.visible,
.has-js .refs-group.visible,
.has-js .refs-outro.visible {
  opacity: 1;
  transform: translateY(0);
}

.has-js .contact-inner h2 {
  opacity: 0;
  transform: translateY(30px);
  transition: opacity 0.8s var(--ease-out), transform 0.8s var(--ease-out);
}
.has-js .contact-inner.visible h2 {
  opacity: 1;
  transform: translateY(0);
}

.has-js .contact-inner p {
  opacity: 0;
  transition: opacity 0.8s 0.3s;
}
.has-js .contact-inner.visible p { opacity: 1; }

.has-js .contact-link {
  opacity: 0;
  transform: translateY(20px);
  transition: color var(--duration-base), border-color var(--duration-base), opacity 0.8s 0.5s, transform 0.8s 0.5s;
}
.has-js .contact-inner.visible .contact-link {
  opacity: 1;
  transform: translateY(0);
}

/* Reduced motion */
@media (prefers-reduced-motion: reduce) {
  body { scroll-snap-type: none; }
  .hero-logo .draw { stroke-dashoffset: 0; }
  .hero-logo .fill { opacity: 1; }
  .hero-tag, .hero-indicator { opacity: 1; transform: none; }
  .marquee { animation: none; }
  .has-js .statement-heading .word,
  .has-js .diagnose-card,
  .has-js .services-heading,
  .has-js .services-core,
  .has-js .services-branch,
  .has-js .process-intro,
  .has-js .process-step,
  .has-js .refs-voice,
  .has-js .refs-group,
  .has-js .refs-outro,
  .has-js .contact-inner h2,
  .has-js .contact-inner p,
  .has-js .contact-link {
    opacity: 1;
    transform: none;
    clip-path: none;
    transition: none;
  }
}
