/* ============================================================
   dgtlm8.com: stylesheet

   Structure: tokens, base, motion utilities, fixed chrome (grain,
   cursor, nav, menu), components (buttons, sections, bento, cases,
   pop-up, blog, reader, footer), responsive, reduced motion,
   MVP switches (last).

   Conventions
   - Colours, shadows, easing and z-indexes are custom properties in
     :root. Light is the default; dark overrides the semantic tokens.
   - Text colours (--fg, --dim, --faint) meet WCAG AA (4.5:1) on the
     page backgrounds. Check contrast again when changing them.
   - Scroll/pointer effects are driven by script.js and only set
     transform/opacity/filter; layout never depends on them.
   - Anything that must be inert when closed (menu, accordion panels)
     uses visibility:hidden, so it also leaves the focus order and the
     accessibility tree.
   ============================================================ */

/* ============================================================
   tokens: light first, dark via prefers-color-scheme
   ============================================================ */
:root{
  /* brand constants */
  --indigo:#4338a8;
  --violet:#562eff;
  --mint:#31ff98;
  --lav:#d5d2ff;
  --ink:#060619;

  /* semantic — LIGHT */
  --bg:#f5f4fb;
  --bg-2:#eceafa;
  --surface:#ffffff;
  --fg:#060619;
  --dim:rgba(6,6,25,.72);
  --faint:rgba(6,6,25,.58);
  --line:rgba(6,6,25,.13);
  --line-2:rgba(6,6,25,.08);
  --accent:#562eff;          /* readable accent (text) */
  --accent-2:#4338a8;
  --on-accent:#ffffff;
  --signal:#31ff98;          /* mint: fills + marks only */
  --glass:rgba(255,255,255,.72);
  --shadow-s:0 2px 10px -4px rgba(6,6,25,.14);
  --shadow-m:0 18px 44px -22px rgba(6,6,25,.34);
  --shadow-l:0 40px 90px -30px rgba(6,6,25,.30);
  --grain:.038;
  --orb-1:rgba(86,46,255,.30);
  --orb-2:rgba(67,56,168,.24);
  --orb-3:rgba(49,255,152,.34);
  --dots:rgba(6,6,25,.13);
  --invert:#060619;          /* the "flip" surface on hover */
  --on-invert:#f1efff;

  --font-d:'Space Grotesk',system-ui,-apple-system,'Segoe UI',sans-serif;
  --font-m:'Space Mono',ui-monospace,'SFMono-Regular',Menlo,monospace;
  --pad:clamp(20px,5vw,72px);
  --max:1560px;
  --ease:cubic-bezier(.22,1,.36,1);
  --ease-io:cubic-bezier(.76,0,.24,1);

  /* stacking order, lowest to highest */
  --z-grain:150;
  --z-menu:270;
  --z-nav:280;
  --z-burger:290;
  --z-pop:300;
  --z-reader:310;
  --z-cursor:320;
}
@media (prefers-color-scheme: dark){
  :root{
    --bg:#060619;
    --bg-2:#0d0d2b;
    --surface:#101031;
    --fg:#f1efff;
    --dim:rgba(213,210,255,.78);
    --faint:rgba(213,210,255,.60);
    --line:rgba(213,210,255,.13);
    --line-2:rgba(213,210,255,.07);
    --accent:#31ff98;
    --accent-2:#a99bff;
    --on-accent:#060619;
    --glass:rgba(13,13,43,.66);
    --shadow-s:0 2px 10px -4px rgba(0,0,0,.6);
    --shadow-m:0 18px 44px -22px rgba(0,0,0,.8);
    --shadow-l:0 40px 90px -30px rgba(0,0,0,.85);
    --grain:.055;
    --orb-1:rgba(86,46,255,.55);
    --orb-2:rgba(67,56,168,.62);
    --orb-3:rgba(49,255,152,.26);
    --dots:rgba(213,210,255,.11);
    --invert:#d5d2ff;
    --on-invert:#060619;
  }
}

/* ============================================================
   base
   ============================================================ */
*,*::before,*::after{box-sizing:border-box;margin:0;padding:0}
html{-webkit-text-size-adjust:100%}
html.menu-open,html.reader-open{overflow:hidden}
@media (prefers-reduced-motion:no-preference){
  html:not(.smooth){scroll-behavior:smooth}
}
body{
  background:var(--bg);
  color:var(--fg);
  font:400 1.02rem/1.65 var(--font-d);
  -webkit-font-smoothing:antialiased;
  overflow-x:hidden;
}
::selection{background:var(--signal);color:var(--ink)}
img{max-width:100%;display:block}
a{color:inherit;text-decoration:none}
ul{list-style:none}
button{font:inherit;color:inherit;background:none;border:0;cursor:pointer}
:focus-visible{outline:2px solid var(--accent);outline-offset:3px}

.wrap{max-width:var(--max);margin-inline:auto;padding-inline:var(--pad)}
section{position:relative;padding-block:clamp(96px,15vh,180px)}

html.smooth .sw{position:fixed;top:0;left:0;width:100%;will-change:transform}

/* ============================================================
   motion utilities
   ============================================================ */
[data-reveal]{opacity:0;transform:translateY(46px) scale(.985);filter:blur(6px);
  transition:opacity 1s var(--ease) var(--d,0s),transform 1.1s var(--ease) var(--d,0s),filter .9s var(--ease) var(--d,0s)}
[data-reveal].in-view{opacity:1;transform:none;filter:none}

.mask{display:block;overflow:hidden;padding-bottom:.04em}
.mask>span{display:block}
.hero .mask>span{transform:translateY(115%) rotate(3deg);transform-origin:left top;
  transition:transform 1.15s var(--ease) calc(.4s + var(--d,0s))}
body.ready .hero .mask>span{transform:none}

/* scroll-driven elements get their values from JS */
[data-sa]{will-change:transform,opacity,filter}

/* the vowel device */
.vw{
  font-weight:inherit;font-style:normal;
  display:inline-block;max-width:0;opacity:0;
  transform:translateY(-.45em);
  color:var(--accent);white-space:nowrap;
  transition:
    max-width .6s var(--ease) var(--vd,0s),
    opacity .35s linear var(--vd,0s),
    transform .6s var(--ease) var(--vd,0s),
    color .8s linear calc(var(--vd,0s) + 1.4s);
}
.vw-in .vw{max-width:1.7em;opacity:1;transform:none;color:inherit}
.vw-stay.vw-in .vw{color:var(--accent)}

/* ============================================================
   fixed chrome
   ============================================================ */
#grain{position:fixed;inset:0;z-index:var(--z-grain);pointer-events:none;opacity:var(--grain);
  background:url("data:image/svg+xml,%3Csvg xmlns='http://www.w3.org/2000/svg' width='260' height='260'%3E%3Cfilter id='n'%3E%3CfeTurbulence type='fractalNoise' baseFrequency='0.85' numOctaves='2' stitchTiles='stitch'/%3E%3C/filter%3E%3Crect width='100%25' height='100%25' filter='url(%23n)' opacity='0.55'/%3E%3C/svg%3E")}

#cursor{position:fixed;top:0;left:0;z-index:var(--z-cursor);pointer-events:none;display:none}
/* position comes from script.js as translate3d(x,y,0), so moving it never triggers layout */
#cursor .c-dot{position:fixed;left:0;top:0;width:6px;height:6px;border-radius:50%;
  background:var(--accent);will-change:transform}
#cursor .c-ring{position:fixed;left:0;top:0;width:38px;height:38px;border-radius:50%;
  border:1.5px solid color-mix(in srgb,var(--fg) 38%,transparent);will-change:transform;
  transition:width .35s var(--ease),height .35s var(--ease),border-color .3s,background-color .3s}
#cursor.is-hover .c-ring{width:64px;height:64px;border-color:var(--accent);
  background:color-mix(in srgb,var(--accent) 10%,transparent)}

/* ============================================================
   floating pill nav
   ============================================================ */
.navbar{position:fixed;top:0;left:0;right:0;z-index:var(--z-nav);
  display:flex;justify-content:center;
  padding:clamp(14px,2.4vh,26px) var(--pad);
  pointer-events:none}
.nav{
  pointer-events:auto;
  display:flex;align-items:center;gap:clamp(.9rem,2.2vw,2rem);
  padding:.5rem .5rem .5rem 1.4rem;
  border-radius:999px;
  background:var(--glass);
  -webkit-backdrop-filter:blur(20px) saturate(150%);
  backdrop-filter:blur(20px) saturate(150%);
  border:1px solid var(--line);
  box-shadow:var(--shadow-s);
  transition:box-shadow .5s var(--ease),transform .42s var(--ease),
             background .45s,border-color .45s,padding .45s var(--ease);
  will-change:transform}
.navbar.scrolled .nav{box-shadow:var(--shadow-m);padding-left:1.15rem}
.navbar.hidden .nav{transform:translateY(calc(-100% - 30px))}
.logo{display:flex;align-items:baseline;font:700 1.32rem/1 var(--font-d);letter-spacing:-.02em}
.logo .lg-m8{background:var(--violet);color:#fff;padding:.1em .26em .08em;margin-left:.12em;
  clip-path:polygon(0 0,100% 0,100% 100%,30% 100%,0 66%);
  transition:background .4s,color .4s,transform .5s var(--ease)}
.logo:hover .lg-m8{background:var(--signal);color:var(--ink);transform:translateY(-2px)}
.nav-links{display:flex;gap:clamp(1rem,2vw,1.9rem);align-items:center}
.nav-link{font:500 .92rem/1 var(--font-d);color:var(--dim);
  position:relative;padding-block:6px;transition:color .3s}
.nav-link::after{content:'';position:absolute;left:0;bottom:0;width:100%;height:1px;
  background:currentColor;transform:scaleX(0);transform-origin:right;
  transition:transform .5s var(--ease)}
.nav-link:hover{color:var(--fg)}
.nav-link:hover::after{transform:scaleX(1);transform-origin:left}
.nav-cta{padding:.78rem 1.4rem;font-size:.88rem}
.burger{display:none;width:42px;height:42px;position:relative;z-index:var(--z-burger);border-radius:50%}
.burger span{position:absolute;left:9px;width:24px;height:2px;background:var(--fg);
  transition:transform .45s var(--ease),top .45s var(--ease),background .3s}
.burger span:nth-child(1){top:16px}
.burger span:nth-child(2){top:24px}
html.menu-open .burger span:nth-child(1){top:20px;transform:rotate(45deg)}
html.menu-open .burger span:nth-child(2){top:20px;transform:rotate(-45deg)}
html.menu-open .burger span{background:var(--ink)}
html.menu-open .nav{background:transparent;border-color:transparent;box-shadow:none}
html.menu-open .logo{color:var(--ink)}
html.menu-open .logo .lg-m8{background:var(--ink);color:var(--lav)}

/* menu overlay */
#menu{position:fixed;inset:0;z-index:var(--z-menu);background:var(--violet);color:var(--ink);
  transform:translateY(-102%);
  /* visibility flips after the slide-out, so the closed menu is out of the focus order */
  visibility:hidden;transition:transform .8s var(--ease-io),visibility 0s linear .8s;
  display:flex;flex-direction:column;justify-content:center;padding:100px var(--pad) 40px}
html.menu-open #menu{transform:none;visibility:visible;transition:transform .8s var(--ease-io),visibility 0s}
/* the default accent is violet, which vanishes on the violet overlay */
#menu :focus-visible{outline-color:var(--ink)}
.m-link{display:block;font:700 clamp(2.6rem,9.5vw,6rem)/1.12 var(--font-d);
  letter-spacing:-.03em;color:var(--ink);width:max-content;max-width:100%}
.m-link .mask>span{transform:translateY(115%);transition:transform .7s var(--ease) calc(.25s + var(--md,0s))}
html.menu-open .m-link .mask>span{transform:none}
.m-link:hover{color:#fff}
.m-foot{margin-top:clamp(2rem,6vh,4rem);display:flex;flex-wrap:wrap;gap:1.6rem;
  font:400 .85rem/1 var(--font-m);letter-spacing:.08em;text-transform:uppercase;color:#fff}  /* white: 6.5:1 on violet, ink only reaches 3:1 */
.m-foot a:hover{color:var(--mint)}

/* ============================================================
   buttons
   ============================================================ */
.btn{position:relative;display:inline-flex;align-items:center;gap:.65rem;
  padding:1.05rem 1.95rem;border-radius:999px;white-space:nowrap;
  font:500 .95rem/1 var(--font-d);
  transition:background .35s,color .35s,border-color .35s,box-shadow .4s;will-change:transform}
.btn-solid{background:var(--violet);color:#fff;box-shadow:0 10px 30px -12px rgba(86,46,255,.7)}
.btn-solid:hover{background:var(--signal);color:var(--ink);box-shadow:0 14px 34px -12px rgba(49,255,152,.6)}
.btn-ghost{border:1px solid var(--line);color:var(--fg)}
.btn-ghost:hover{border-color:var(--accent);color:var(--accent)}
.btn .arr{transition:transform .4s var(--ease)}
.btn:hover .arr{transform:translateX(5px)}

/* ============================================================
   section head
   ============================================================ */
.sec-head{display:flex;flex-wrap:wrap;align-items:flex-end;justify-content:space-between;
  gap:1.6rem;margin-bottom:clamp(3rem,7vh,5.5rem)}
.sec-title{font:700 clamp(2.4rem,5.6vw,4.6rem)/1.04 var(--font-d);letter-spacing:-.025em}
.sec-note{font:400 .78rem/1.6 var(--font-m);letter-spacing:.06em;color:var(--dim);max-width:26ch}

/* ============================================================
   hero
   ============================================================ */
.hero{min-height:100vh;min-height:100svh;display:flex;align-items:flex-end;padding-block:0;overflow:hidden;
  /* eigene Farbwerte: der Neon-Hero ist immer dunkel, unabhängig vom Seitenmodus */
  --fg:#f2f0ff;--dim:rgba(213,210,255,.70);
  --line:rgba(213,210,255,.18);--accent:#31ff98;
  --faint:rgba(213,210,255,.62);
  background:#06040f;color:var(--fg)}
/* Verlauf nach unten, damit die Sektion darunter sauber anschließt */
.hero::after{content:'';position:absolute;left:0;right:0;bottom:0;height:26vh;z-index:0;
  background:linear-gradient(180deg,transparent,rgba(6,4,15,.55) 55%,var(--bg));
  pointer-events:none}
.hero .hero-inner,.hero .hero-scroll{position:relative;z-index:2}
.hero-bg{position:absolute;inset:0;overflow:hidden}
/* scanlines: 1px every 3px over the canvas (cheaper here than in the draw loop) */
html.has-grid .hero-bg::after{content:'';position:absolute;inset:0;pointer-events:none;
  background:repeating-linear-gradient(to bottom,rgba(0,0,0,.10) 0 1px,transparent 1px 3px)}
#grid{position:absolute;inset:0;width:100%;height:100%;display:block;
  opacity:0;transition:opacity 1.2s var(--ease) .2s;cursor:crosshair}
body.ready #grid{opacity:1}
html.has-grid .orb{display:none}
.orb{position:absolute;border-radius:50%;filter:blur(100px);will-change:transform}
.o1{width:52vw;height:52vw;left:-14%;top:-16%;background:radial-gradient(circle,var(--orb-2),transparent 65%);animation:drift1 22s ease-in-out infinite alternate}
.o2{width:38vw;height:38vw;right:-10%;bottom:-22%;background:radial-gradient(circle,var(--orb-1),transparent 65%);animation:drift2 27s ease-in-out infinite alternate}
.o3{width:20vw;height:20vw;right:20%;top:26%;background:radial-gradient(circle,var(--orb-3),transparent 60%);animation:drift3 31s ease-in-out infinite alternate}
@keyframes drift1{to{transform:translate(9%,7%) scale(1.08)}}
@keyframes drift2{to{transform:translate(-8%,-9%) scale(1.12)}}
@keyframes drift3{to{transform:translate(-14%,10%)}}
.hero-inner{position:relative;z-index:1;width:100%;max-width:var(--max);margin-inline:auto;
  padding:150px var(--pad) clamp(3rem,7vh,5.5rem);transform-origin:left bottom}
.hero-title{font:700 clamp(2.55rem,8.6vw,8.4rem)/0.99 var(--font-d);
  letter-spacing:-.035em;color:var(--fg)}

.hero-scroll{position:absolute;right:calc(var(--pad) - 6px);bottom:2rem;z-index:1;
  display:flex;flex-direction:column;align-items:center;gap:.8rem;
  font:400 .72rem/1 var(--font-m);letter-spacing:.3em;text-transform:uppercase;color:var(--faint);
  writing-mode:vertical-rl}
.hero-scroll i{width:1px;height:52px;background:var(--line);position:relative;overflow:hidden}
.hero-scroll i::after{content:'';position:absolute;left:0;top:-40%;width:100%;height:40%;
  background:var(--accent);animation:scrollcue 1.8s var(--ease) infinite}
@keyframes scrollcue{to{top:110%}}

/* ============================================================
   ticker
   ============================================================ */
.ticker{border-block:1px solid var(--line);padding-block:16px;overflow:hidden;background:var(--bg)}
.ticker-skew{will-change:transform}
.ticker-track{display:flex;width:max-content;animation:tick 30s linear infinite}
.t-group{display:flex;flex-shrink:0}
.t-group span{padding-inline:1.7rem;font:400 .8rem/1 var(--font-m);
  letter-spacing:.18em;text-transform:uppercase;color:var(--dim);white-space:nowrap}
.t-group i{color:var(--accent);font-style:normal}
@keyframes tick{to{transform:translateX(-50%)}}
.ticker:hover .ticker-track{animation-play-state:paused}

/* ============================================================
   statement
   ============================================================ */
.statement .wrap{max-width:1200px}
.statement-txt{margin-top:0;
  font:500 clamp(1.55rem,3.4vw,3.05rem)/1.32 var(--font-d);letter-spacing:-.015em}
.statement-txt .w{opacity:.16;filter:blur(2px);transition:opacity .35s linear,filter .35s linear}
.statement-txt .w.on{opacity:1;filter:none}

/* ============================================================
   gründer
   ============================================================ */
.founder{background:var(--bg-2);border-block:1px solid var(--line-2)}
.founder-grid{display:grid;gap:clamp(2rem,4vw,4.5rem);align-items:center}
@media(min-width:900px){.founder-grid{grid-template-columns:minmax(0,42%) 1fr}}
.founder-media{position:relative;isolation:isolate}
.founder-media img{width:100%;height:auto;display:block;
  background:var(--ink);box-shadow:var(--shadow-l);
  clip-path:polygon(0 0,100% 0,100% 100%,64px 100%,0 calc(100% - 64px))}
/* schmaler Signalstreifen als Kontrapunkt zum dunklen Porträt */
.founder-media::after{content:'';position:absolute;z-index:-1;
  left:14px;top:14px;right:-14px;bottom:-14px;
  background:linear-gradient(135deg,var(--indigo),var(--violet) 55%,var(--signal) 170%);
  opacity:.22;
  clip-path:polygon(0 0,100% 0,100% 100%,64px 100%,0 calc(100% - 64px))}
.founder-name{font:700 clamp(2rem,4.4vw,3.4rem)/1.05 var(--font-d);letter-spacing:-.03em}
.founder-role{font:400 .78rem/1 var(--font-m);letter-spacing:.2em;text-transform:uppercase;
  color:var(--accent);margin-top:.9rem}
.founder-text{margin-top:clamp(1.6rem,3vh,2.2rem);display:flex;flex-direction:column;gap:1.05rem}
.founder-text p{color:var(--dim);font-size:1.02rem;line-height:1.7;max-width:56ch}
.founder-text strong{color:var(--fg);font-weight:500}
.founder-facts{display:flex;flex-wrap:wrap;gap:.6rem;margin-top:clamp(1.6rem,3vh,2.2rem)}
.founder-facts span{font:400 .74rem/1 var(--font-m);letter-spacing:.14em;text-transform:uppercase;
  color:var(--dim);border:1px solid var(--line);border-radius:999px;padding:.68rem 1.1rem;
  transition:border-color .4s,color .4s,transform .5s var(--ease)}
.founder-facts span:hover{border-color:var(--accent);color:var(--accent);transform:translateY(-3px)}

/* ============================================================
   leistungen — bento grid
   ============================================================ */
.services{background:var(--bg-2);border-block:1px solid var(--line-2)}
.bento{display:grid;gap:clamp(.9rem,1.4vw,1.4rem)}
@media(min-width:1000px){
  .bento{grid-template-columns:repeat(6,1fr)}
  .bento-item{grid-column:span var(--span,3)}
}
@media(min-width:640px) and (max-width:999px){
  .bento{grid-template-columns:repeat(2,1fr)}
  .bento-item.wide{grid-column:span 2}
}
.bento-item{position:relative;isolation:isolate;overflow:hidden;
  display:flex;flex-direction:column;gap:1.3rem;
  border:1px solid var(--line);border-radius:26px;background:var(--surface);
  padding:clamp(1.5rem,2.3vw,2.2rem);box-shadow:var(--shadow-s);
  transition:border-color .45s,box-shadow .55s var(--ease),transform .55s var(--ease)}
.bento-item::before{content:'';position:absolute;inset:0;z-index:-1;background:var(--g);
  opacity:0;transition:opacity .6s var(--ease)}
.bento-item::after{content:'';position:absolute;left:0;right:0;top:0;height:2px;
  background:var(--g);transform:scaleX(0);transform-origin:left;
  transition:transform .7s var(--ease)}
@media(hover:hover){
  .bento-item:hover{border-color:transparent;box-shadow:var(--shadow-l);transform:translateY(-4px)}
  .bento-item:hover::before{opacity:.07}
  .bento-item:hover::after{transform:scaleX(1)}
}
.bi-head{display:flex;align-items:center;gap:.85rem}
.bi-ico{display:grid;place-items:center;width:38px;height:38px;flex:0 0 auto;
  color:var(--on-accent);background:var(--accent);
  clip-path:polygon(0 0,100% 0,100% 100%,28% 100%,0 66%);
  transition:transform .5s var(--ease),background-color .4s}
.bi-ico .ico{width:20px;height:20px}
.bento-item:hover .bi-ico{transform:translateY(-3px) rotate(-4deg)}
.bi-title{font:700 clamp(1.35rem,2.1vw,1.85rem)/1.12 var(--font-d);letter-spacing:-.02em}

/* sub-service accordion */
.sub-list{margin-top:.4rem;border-top:1px solid var(--line-2)}
@media(min-width:1000px){
  .bento-item.wide .sub-list{display:grid;grid-template-columns:1fr 1fr;
    column-gap:clamp(1.6rem,2.6vw,3rem)}
}
.sub-item{border-bottom:1px solid var(--line-2)}
.sub-btn{display:flex;width:100%;align-items:flex-start;gap:.7rem;text-align:left;
  padding:.72rem 0;font:500 .93rem/1.45 var(--font-d);color:var(--fg);
  transition:color .3s}
.sub-btn:hover{color:var(--accent)}
.sub-ico{position:relative;flex:0 0 14px;height:1.45em;margin-top:0}
.sub-ico::before,.sub-ico::after{content:'';position:absolute;left:1px;top:50%;
  width:12px;height:1.6px;border-radius:2px;background:var(--accent);
  transition:transform .45s var(--ease),opacity .35s}
.sub-ico::after{transform:translateY(-50%) rotate(90deg)}
.sub-ico::before{transform:translateY(-50%)}
.sub-item.open .sub-ico::after{transform:translateY(-50%) rotate(0deg);opacity:0}
.sub-label{flex:1}
.badge-new{display:inline-block;vertical-align:middle;margin-left:.45rem;
  font:700 .58rem/1 var(--font-m);letter-spacing:.14em;
  background:var(--signal);color:var(--ink);
  padding:.32em .5em .28em;border-radius:4px;
  clip-path:polygon(0 0,100% 0,100% 100%,22% 100%,0 62%);
  animation:newpulse 3.4s var(--ease) infinite}
@keyframes newpulse{0%,72%,100%{transform:translateY(0)}80%{transform:translateY(-2px)}}
.sub-panel{display:grid;grid-template-rows:0fr;visibility:hidden;
  transition:grid-template-rows .5s var(--ease),visibility 0s linear .5s}
.sub-item.open .sub-panel{grid-template-rows:1fr;visibility:visible;
  transition:grid-template-rows .5s var(--ease),visibility 0s}
.sub-panel>div{overflow:hidden}
.sub-panel p{font-size:.85rem;line-height:1.6;color:var(--dim);
  padding:0 0 .85rem 1.4rem;opacity:0;transform:translateY(-4px);
  transition:opacity .4s var(--ease) .08s,transform .4s var(--ease) .08s}
.sub-item.open .sub-panel p{opacity:1;transform:none}

/* ============================================================
   work
   ============================================================ */
.case{display:grid;gap:clamp(1.7rem,4vw,4.5rem);align-items:center;
  margin-bottom:clamp(5rem,11vh,9.5rem)}
.case:last-of-type{margin-bottom:0}
@media(min-width:900px){
  .case{grid-template-columns:7fr 5fr}
  .case.rev .case-tile{order:2}
}
.case-tile{position:relative;display:block;aspect-ratio:16/11;overflow:hidden;
  background:var(--bg-2);box-shadow:var(--shadow-m);
  clip-path:polygon(0 0,100% 0,100% 100%,58px 100%,0 calc(100% - 58px))}
.tile-par{position:absolute;inset:-14% 0;will-change:transform}
.tile-bg{position:absolute;inset:0;will-change:transform;transform-origin:center}
.tile-veil{position:absolute;inset:0;z-index:1;
  background:linear-gradient(180deg,transparent 45%,rgba(6,6,25,.3));
  opacity:0;transition:opacity .6s var(--ease)}
.case-tile:hover .tile-veil{opacity:1}
.case-meta{font:400 .78rem/1 var(--font-m);letter-spacing:.18em;text-transform:uppercase;
  color:var(--accent);margin-bottom:1.1rem}
.case-info h3{font:700 clamp(1.7rem,3vw,2.5rem)/1.08 var(--font-d);letter-spacing:-.02em;
  margin-bottom:1rem}
.case-info p{color:var(--dim);max-width:44ch;margin-bottom:1.6rem}
.tlink{display:inline-flex;align-items:center;gap:.55rem;
  font:500 .92rem/1 var(--font-d);color:var(--fg);position:relative;padding-bottom:5px}
.tlink::after{content:'';position:absolute;left:0;bottom:0;height:1px;width:100%;
  background:var(--accent);transform:scaleX(0);transform-origin:right;
  transition:transform .5s var(--ease)}
.tlink:hover{color:var(--accent)}
.tlink:hover::after{transform:scaleX(1);transform-origin:left}
.tlink .arr{transition:transform .4s var(--ease)}
.tlink:hover .arr{transform:translateX(5px)}

/* ============================================================
   voices / references
   ============================================================ */
.voices{padding-top:0}
.quote{max-width:980px;position:relative}
.quote blockquote{font:500 clamp(1.5rem,3.1vw,2.6rem)/1.34 var(--font-d);letter-spacing:-.015em}
.quote blockquote em{font-style:normal;color:var(--accent)}
.quote cite{display:block;margin-top:1.6rem;font:400 .8rem/1.5 var(--font-m);
  letter-spacing:.14em;text-transform:uppercase;color:var(--dim)}
.voice-card{display:block;border:1px solid var(--line);border-radius:28px;
  padding:clamp(1.8rem,3.4vw,3rem);background:var(--surface);box-shadow:var(--shadow-s);
  transition:transform .6s var(--ease),box-shadow .6s var(--ease),border-color .4s}
.voice-card:hover{transform:translateY(-7px);box-shadow:var(--shadow-l);border-color:var(--accent)}
.clients{margin-top:clamp(4rem,9vh,6.5rem);border-block:1px solid var(--line);
  padding-block:1.4rem;overflow:hidden}
.clients-track{display:flex;width:max-content;animation:tick 35s linear infinite reverse}
.clients-track .t-group span{font:700 1.05rem/1 var(--font-d);letter-spacing:.1em;
  color:var(--faint);padding-inline:2.2rem;text-transform:uppercase;
  transition:color .35s}
.clients-track .t-group span:hover{color:var(--accent)}

/* ============================================================
   hover detail pop-up
   ============================================================ */
#pop{position:fixed;left:0;top:0;z-index:var(--z-pop);width:340px;pointer-events:none;
  display:none;opacity:0;
  background:var(--surface);border:1px solid var(--line);
  box-shadow:var(--shadow-l);
  clip-path:polygon(0 0,100% 0,100% 100%,44px 100%,0 calc(100% - 44px));
  padding:.75rem .75rem 1.2rem;
  transform:translate3d(0,0,0) scale(.88) rotate(-2.5deg);
  transform-origin:top left;
  transition:opacity .32s var(--ease),transform .5s var(--ease)}
#pop.show{opacity:1;transform:translate3d(0,0,0) scale(1) rotate(0deg)}
.pop-media{position:relative;aspect-ratio:16/9;overflow:hidden;border-radius:16px 16px 4px 4px;
  display:flex;align-items:flex-end;padding:.85rem}
.pop-media::after{content:'';position:absolute;inset:0;
  background:radial-gradient(110% 80% at 80% 12%,rgba(255,255,255,.22),transparent 58%)}
.pop-logo{position:relative;z-index:2;width:46px;height:46px;display:grid;place-items:center;
  background:rgba(255,255,255,.94);color:var(--ink);
  font:700 .95rem/1 var(--font-d);letter-spacing:-.02em;
  clip-path:polygon(0 0,100% 0,100% 100%,26% 100%,0 68%)}
.pop-body{padding:1rem .6rem 0 .6rem}
.pop-eyebrow{display:flex;align-items:center;gap:.5rem;font:400 .68rem/1 var(--font-m);
  letter-spacing:.2em;text-transform:uppercase;color:var(--accent)}
.pop-eyebrow::before{content:'';width:6px;height:6px;border-radius:50%;background:var(--signal)}
.pop-title{font:700 1.32rem/1.15 var(--font-d);letter-spacing:-.02em;margin:.7rem 0 .45rem}
.pop-txt{font-size:.88rem;line-height:1.55;color:var(--dim)}
.pop-foot{display:flex;gap:.5rem;flex-wrap:wrap;margin-top:.95rem}
.pop-chip{font:400 .66rem/1 var(--font-m);letter-spacing:.12em;text-transform:uppercase;
  color:var(--dim);border:1px solid var(--line);border-radius:999px;padding:.42rem .7rem}
@media(min-width:1024px) and (pointer:fine){#pop{display:block}}

/* ============================================================
   blog cards
   ============================================================ */
.blog-grid{display:grid;gap:1.4rem;perspective:1400px}
@media(min-width:820px){.blog-grid{grid-template-columns:repeat(3,1fr)}
  .post.feat{grid-column:span 2}}
.post{border:1px solid var(--line);border-radius:24px;background:var(--surface);
  box-shadow:var(--shadow-s);overflow:hidden;
  transition:transform .55s var(--ease),border-color .4s,box-shadow .5s var(--ease),opacity .4s}
.post[data-sa="tilt"]{opacity:0}
@media(hover:hover){
  .post:hover{transform:translateY(-10px);border-color:var(--accent);box-shadow:var(--shadow-l)}
}
.post.is-opening{transform:scale(1.03)!important;opacity:0!important;transition:transform .5s var(--ease),opacity .35s}
.post-open{display:flex;flex-direction:column;width:100%;height:100%;text-align:left;gap:0}
.post-thumb{position:relative;display:block;aspect-ratio:16/9;overflow:hidden}
.post.feat .post-thumb{aspect-ratio:16/7}
.post-body{display:flex;flex-direction:column;gap:.85rem;flex-grow:1;
  padding:clamp(1.4rem,2.2vw,1.9rem)}
.post-meta{display:flex;flex-wrap:wrap;align-items:center;gap:.5rem .7rem;
  font:400 .7rem/1 var(--font-m);letter-spacing:.13em;text-transform:uppercase;color:var(--faint)}
.post-cat{color:var(--accent)}
.post-read::before{content:'·';margin-right:.6rem;color:var(--faint)}
.post-title{font:700 clamp(1.25rem,1.9vw,1.6rem)/1.2 var(--font-d);letter-spacing:-.02em}
.post.feat .post-title{font-size:clamp(1.5rem,2.4vw,2.05rem)}
.post-ex{font-size:.93rem;line-height:1.55;color:var(--dim);flex-grow:1}
.post-link{display:inline-flex;align-items:center;gap:.5rem;margin-top:.3rem;
  font:400 .8rem/1 var(--font-m);letter-spacing:.1em;color:var(--fg);transition:color .3s}
.post .arr{transition:transform .4s var(--ease)}
.post:hover .arr{transform:translateX(6px)}
.post:hover .post-link{color:var(--accent)}
.blog-store{display:none}

/* ============================================================
   blog reader — 30 / 70
   ============================================================ */
.reader{position:fixed;inset:0;z-index:var(--z-reader);display:none}
.reader.mounted{display:block}
.reader-backdrop{position:absolute;inset:0;background:color-mix(in srgb,var(--ink) 62%,transparent);
  -webkit-backdrop-filter:blur(10px);backdrop-filter:blur(10px);
  opacity:0;transition:opacity .5s var(--ease)}
html.reader-open .reader-backdrop{opacity:1}
.reader-shell{position:absolute;inset:clamp(10px,2.2vh,30px);
  display:grid;grid-template-columns:30% 70%;
  background:var(--bg);border:1px solid var(--line);border-radius:clamp(18px,2vw,30px);
  overflow:hidden;box-shadow:var(--shadow-l);
  opacity:0;transform:translate3d(var(--ox,0),var(--oy,0),0) scale(.82);
  transition:opacity .4s var(--ease),transform .66s var(--ease)}
html.reader-open .reader-shell{opacity:1;transform:none}

.reader-close{position:absolute;top:clamp(.9rem,1.6vw,1.4rem);right:clamp(.9rem,1.6vw,1.4rem);
  z-index:3;width:44px;height:44px;border-radius:50%;
  background:var(--surface);border:1px solid var(--line);box-shadow:var(--shadow-s);
  transition:transform .45s var(--ease),border-color .35s,background .35s}
.reader-close span{position:absolute;left:13px;top:21px;width:18px;height:1.7px;border-radius:2px;
  background:var(--fg);transition:background .3s}
.reader-close span:nth-child(1){transform:rotate(45deg)}
.reader-close span:nth-child(2){transform:rotate(-45deg)}
.reader-close:hover{transform:rotate(90deg);border-color:var(--accent)}

/* left: index */
.reader-list{border-right:1px solid var(--line);background:var(--bg-2);
  overflow-y:auto;overscroll-behavior:contain;
  padding:clamp(1.4rem,2.2vw,2.2rem) clamp(1rem,1.6vw,1.5rem)}
.rl-head{font:400 .7rem/1 var(--font-m);letter-spacing:.24em;text-transform:uppercase;
  color:var(--faint);margin-bottom:1.2rem;padding-inline:.5rem}
.rl-item{display:flex;flex-direction:column;gap:.42rem;width:100%;text-align:left;
  padding:.95rem .85rem;border-radius:14px;position:relative;
  transition:background .35s,transform .45s var(--ease)}
.rl-item::before{content:'';position:absolute;left:0;top:14%;bottom:14%;width:2px;border-radius:2px;
  background:var(--accent);transform:scaleY(0);transform-origin:center;
  transition:transform .45s var(--ease)}
.rl-item:hover{background:color-mix(in srgb,var(--fg) 5%,transparent)}
.rl-item.active{background:var(--surface);box-shadow:var(--shadow-s)}
.rl-item.active::before{transform:scaleY(1)}
.rl-cat{display:flex;align-items:center;gap:.5rem;
  font:400 .64rem/1 var(--font-m);letter-spacing:.16em;text-transform:uppercase;color:var(--accent)}
.rl-title{font:700 .98rem/1.28 var(--font-d);letter-spacing:-.01em;color:var(--fg)}
.rl-date{font:400 .68rem/1 var(--font-m);letter-spacing:.08em;color:var(--faint)}

/* right: article */
.reader-main{overflow-y:auto;overscroll-behavior:contain;
  padding:clamp(2rem,4vw,4.5rem) clamp(1.4rem,4vw,5rem) clamp(3rem,6vh,6rem);
  transition:opacity .28s var(--ease),transform .28s var(--ease)}
.reader-main.swapping{opacity:0;transform:translateY(16px)}
.reader-main:focus{outline:none}
.bp-full{max-width:74ch;margin-inline:auto}
.bp-meta{display:flex;flex-wrap:wrap;align-items:center;gap:.55rem .8rem;
  font:400 .72rem/1 var(--font-m);letter-spacing:.16em;text-transform:uppercase;color:var(--faint)}
.bp-title{font:700 clamp(1.9rem,3.6vw,3.1rem)/1.08 var(--font-d);letter-spacing:-.03em;
  margin:1.1rem 0 0}
.bp-hero{position:relative;aspect-ratio:16/7;border-radius:20px;overflow:hidden;
  margin:clamp(1.8rem,3vh,2.6rem) 0;box-shadow:var(--shadow-m)}
.bp-text p{margin-bottom:1.15rem;font-size:1.02rem;line-height:1.75;color:var(--dim)}
.bp-text p.lead{font-size:clamp(1.1rem,1.5vw,1.28rem);line-height:1.6;color:var(--fg);
  margin-bottom:1.6rem}
.bp-text h3{font:700 clamp(1.2rem,1.9vw,1.5rem)/1.2 var(--font-d);letter-spacing:-.02em;
  color:var(--fg);margin:2.2rem 0 .9rem}
.bp-text ul{margin:0 0 1.4rem;display:flex;flex-direction:column;gap:.7rem}
.bp-text li{position:relative;padding-left:1.5rem;font-size:.98rem;line-height:1.65;color:var(--dim)}
.bp-text li::before{content:'';position:absolute;left:0;top:.62em;width:7px;height:7px;
  background:var(--accent);clip-path:polygon(0 0,100% 0,100% 100%,26% 100%,0 66%)}
.bp-text li strong{color:var(--fg);font-weight:500}
.bp-text code{font:400 .88em/1 var(--font-m);background:var(--bg-2);
  border:1px solid var(--line);border-radius:5px;padding:.18em .4em}
.bp-foot{margin-top:clamp(2.4rem,5vh,3.6rem);padding-top:2rem;border-top:1px solid var(--line);
  display:flex;flex-wrap:wrap;gap:1.4rem;align-items:center;justify-content:space-between}
.bp-foot p{font-size:.95rem;color:var(--dim);max-width:34ch}

@media(max-width:899px){
  .reader-shell{grid-template-columns:1fr;grid-template-rows:auto 1fr}
  .reader-list{border-right:0;border-bottom:1px solid var(--line);
    overflow-x:auto;overflow-y:hidden;padding:1rem .9rem;max-height:none}
  .rl-head{display:none}
  .reader-list ul{display:flex;gap:.6rem;width:max-content}
  .rl-item{width:62vw;max-width:270px;background:var(--surface);border:1px solid var(--line)}
  .rl-title{font-size:.92rem}
  .reader-close{top:auto;bottom:1rem;right:1rem;box-shadow:var(--shadow-m)}
}

/* ============================================================
   footer
   ============================================================ */
.footer{border-top:1px solid var(--line);padding-top:clamp(96px,15vh,180px);background:var(--bg-2)}
.footer-cta{font:700 clamp(3rem,11vw,10.5rem)/0.98 var(--font-d);
  letter-spacing:-.04em;color:var(--fg)}
.footer-mail{display:inline-block;margin-top:clamp(2rem,5vh,3.2rem);
  font:500 clamp(1.3rem,2.6vw,2rem)/1.2 var(--font-d);color:var(--fg);
  border-bottom:1px solid var(--line);padding-bottom:6px;transition:color .35s,border-color .35s}
.footer-mail:hover{color:var(--accent);border-color:var(--accent)}
.footer-grid{display:grid;gap:2.4rem;margin-top:clamp(4.5rem,10vh,7rem)}
@media(min-width:800px){.footer-grid{grid-template-columns:1.8fr 1fr 1fr}}
.f-col h3{font:400 .72rem/1 var(--font-m);letter-spacing:.22em;text-transform:uppercase;
  color:var(--faint);margin-bottom:1.2rem}
.f-col a{display:block;padding-block:.35rem;color:var(--fg);font-size:.95rem;
  width:max-content;transition:color .3s,transform .4s var(--ease)}
.f-col a:hover{color:var(--accent);transform:translateX(6px)}
.f-brand p{color:var(--dim);font-size:.95rem;max-width:30ch;margin-top:1.2rem}
.footer-base{display:flex;flex-wrap:wrap;gap:1rem;justify-content:space-between;align-items:center;
  margin-block:clamp(3.5rem,8vh,5.5rem) 0;padding-block:1.6rem;
  border-top:1px solid var(--line);
  font:400 .74rem/1.6 var(--font-m);letter-spacing:.08em;color:var(--dim)}
#toTop{font:inherit;letter-spacing:inherit;color:var(--fg);display:inline-flex;gap:.5rem;align-items:center}
#toTop:hover{color:var(--accent)}

/* ============================================================
   responsive
   ============================================================ */
@media(max-width:900px){
  .nav-links{display:none}
  .burger{display:block}
  .nav{width:100%;justify-content:space-between;padding:.45rem .45rem .45rem 1.2rem}
}
@media(max-width:899px){
  .hero-scroll{display:none}
}

/* ============================================================
   reduced motion
   ============================================================ */
@media (prefers-reduced-motion:reduce){
  *,*::before,*::after{animation-duration:.001s!important;animation-iteration-count:1!important;
    transition-duration:.001s!important;transition-delay:0s!important}
  [data-reveal],.hero .mask>span,.m-link .mask>span{opacity:1!important;transform:none!important;filter:none!important}
  .vw{max-width:1.7em!important;opacity:1!important;transform:none!important}
  .statement-txt .w{opacity:1!important;filter:none!important}
  .ticker-track,.clients-track{animation:none!important}
  #cursor,#pop{display:none!important}
  .reader-shell{transform:none!important}
  .badge-new{animation:none!important}
  [data-sa],.post[data-sa="tilt"]{transform:none!important;opacity:1!important;filter:none!important}
}
/* ============================================================
   MVP — vorerst ausgeblendet
   Zum Reaktivieren einzelne Selektoren aus dieser Regel entfernen.
   ============================================================ */
#work, #blog, #gruender, .voices .quote, .bento-item.is-hidden, .f-social,
.m-foot a[href="#"],
.nav-link[href="#work"], .nav-link[href="#blog"],
.m-link[href="#work"], .m-link[href="#blog"],
.f-col a[href="#work"], .f-col a[href="#blog"]{display:none!important}

