/* The site's explicit motion choice wins over the OS fallback below. */
.hero-copy h1.crt-title {
  --crt-indent:8vw;
  --crt-cycle:15.1s;
  --crt-phase:-1.1s;
  font-family:"Das Ich Logo",var(--font-geist-sans),sans-serif;
  color:#e6e1d6;
  text-shadow:none;
  mix-blend-mode:normal;
  isolation:isolate;
}
.hero-copy h1.crt-title .crt-text { color:inherit; -webkit-text-stroke:0; margin:0; }
.crt-text, .crt-word { display:block; }
.crt-word { font:inherit; color:inherit; }
.crt-word.crt-outline { margin-left:var(--crt-indent); color:transparent; -webkit-text-stroke:1.3px #d4c2aa; }
.crt-base { position:relative; z-index:1; text-shadow:1px 0 #eb593059,-1px 0 #86bfc45c; animation:crtSync var(--crt-cycle) cubic-bezier(.45,0,.55,1) var(--crt-phase) infinite; }

/* Fixed rectangular clips rasterize once. No changing polygon or filter. */
.hero-copy h1.crt-title .crt-echo {
  position:absolute;
  z-index:2;
  inset:0;
  color:var(--crt-channel);
  pointer-events:none;
  text-shadow:none;
  transform-origin:45% 50%;
}
.hero-copy h1.crt-title .crt-echo-rust {
  --crt-channel:#df4c2b;
  clip-path:inset(7% -8% 57% -8%);
  opacity:.28;
  animation:crtTearRust var(--crt-cycle) cubic-bezier(.45,0,.55,1) var(--crt-phase) infinite,crtRipple .53s steps(1,end) -.23s infinite;
}
.hero-copy h1.crt-title .crt-echo-ash {
  --crt-channel:#adbd8f;
  clip-path:inset(51% -8% 4% -8%);
  opacity:.22;
  animation:crtTearAsh var(--crt-cycle) cubic-bezier(.45,0,.55,1) var(--crt-phase) infinite,crtRipple .71s steps(1,end) -.17s infinite;
}
.crt-echo .crt-word.crt-outline { -webkit-text-stroke:1.5px var(--crt-channel); }
.hero-copy h1.crt-title::before, .hero-copy h1.crt-title::after {
  content:"";
  display:block;
  position:absolute;
  z-index:3;
  pointer-events:none;
}
.hero-copy h1.crt-title::before {
  left:-2%;
  top:9%;
  width:104%;
  height:72%;
  background:url("../assets/effects/signal-grain.webp") repeat;
  opacity:.18;
  animation:crtHiss var(--crt-cycle) cubic-bezier(.45,0,.55,1) var(--crt-phase) infinite,crtGrain .41s steps(1,end) -.09s infinite;
}
.hero-copy h1.crt-title::after {
  left:-3%;
  right:-3%;
  top:35%;
  height:20px;
  background:repeating-linear-gradient(0deg,#afbaa34d 0 1px,transparent 1px 4px,#7a392e66 4px 6px,transparent 6px 10px);
  opacity:.4;
  animation:crtTracking var(--crt-cycle) linear var(--crt-phase) infinite;
}
/* Quiet drift gives way to short, irregular clusters of signal faults. */
@keyframes crtSync {
  0% { transform:translate(0px,0px) skewX(0deg) scaleX(1);  }
  11.8% { transform:translate(2px,0.4px) skewX(0.15deg) scaleX(1); animation-timing-function:steps(1,end); }
  12.4% { transform:translate(-7px,1px) skewX(-4deg) scaleX(0.995); animation-timing-function:steps(1,end); }
  12.85% { transform:translate(10px,-2px) skewX(7deg) scaleX(1.016); animation-timing-function:steps(1,end); }
  13.25% { transform:translate(-11px,2px) skewX(-6deg) scaleX(1); animation-timing-function:steps(1,end); }
  13.6% { transform:translate(7px,-1px) skewX(5deg) scaleX(1.012); animation-timing-function:steps(1,end); }
  14.05% { transform:translate(-4px,1px) skewX(-2deg) scaleX(1); animation-timing-function:steps(1,end); }
  14.65% { transform:translate(0px,0px) skewX(0deg) scaleX(1);  }
  31.4% { transform:translate(-1px,0px) skewX(-0.15deg) scaleX(1);  }
  37.4% { transform:translate(1px,0px) skewX(0.2deg) scaleX(1); animation-timing-function:steps(1,end); }
  37.8% { transform:translate(6px,-1px) skewX(-5deg) scaleX(1.012); animation-timing-function:steps(1,end); }
  38.15% { transform:translate(-9px,1px) skewX(4deg) scaleX(0.99); animation-timing-function:steps(1,end); }
  38.6% { transform:translate(4px,0px) skewX(-2deg) scaleX(1); animation-timing-function:steps(1,end); }
  39.05% { transform:translate(0px,0px) skewX(0deg) scaleX(1);  }
  42.6% { transform:translate(1px,0px) skewX(0.15deg) scaleX(1); animation-timing-function:steps(1,end); }
  43.1% { transform:translate(-8px,2px) skewX(-4deg) scaleX(1); animation-timing-function:steps(1,end); }
  43.5% { transform:translate(9px,-1px) skewX(6deg) scaleX(1.017); animation-timing-function:steps(1,end); }
  44% { transform:translate(-6px,1px) skewX(-3deg) scaleX(1); animation-timing-function:steps(1,end); }
  44.55% { transform:translate(0px,0px) skewX(0deg) scaleX(1);  }
  63.7% { transform:translate(2px,0px) skewX(-0.2deg) scaleX(1);  }
  79.6% { transform:translate(-1px,1px) skewX(0.15deg) scaleX(1); animation-timing-function:steps(1,end); }
  80.4% { transform:translate(-10px,2px) skewX(-6deg) scaleX(0.99); animation-timing-function:steps(1,end); }
  80.85% { transform:translate(11px,-2px) skewX(8deg) scaleX(1.02); animation-timing-function:steps(1,end); }
  81.15% { transform:translate(-6px,1px) skewX(-3deg) scaleX(1); animation-timing-function:steps(1,end); }
  81.65% { transform:translate(8px,-1px) skewX(6deg) scaleX(1.012); animation-timing-function:steps(1,end); }
  82.1% { transform:translate(-12px,1px) skewX(-7deg) scaleX(1); animation-timing-function:steps(1,end); }
  82.65% { transform:translate(5px,0px) skewX(2deg) scaleX(1); animation-timing-function:steps(1,end); }
  83.2% { transform:translate(0px,0px) skewX(0deg) scaleX(1);  }
  100% { transform:translate(0px,0px) skewX(0deg) scaleX(1);  }
}
@keyframes crtTearRust {
  0% { opacity:0.22; transform:translate(-3px,0px) skewX(0deg) scaleX(1);  }
  11.8% { opacity:0.22; transform:translate(2.6px,0.8px) skewX(0.22deg) scaleX(1); animation-timing-function:steps(1,end); }
  12.4% { opacity:0.79; transform:translate(-22.6px,2px) skewX(-6deg) scaleX(0.995); animation-timing-function:steps(1,end); }
  12.85% { opacity:0.85; transform:translate(25px,-4px) skewX(10.5deg) scaleX(1.016); animation-timing-function:steps(1,end); }
  13.25% { opacity:0.87; transform:translate(-33.8px,4px) skewX(-9deg) scaleX(1); animation-timing-function:steps(1,end); }
  13.6% { opacity:0.79; transform:translate(16.6px,-2px) skewX(7.5deg) scaleX(1.012); animation-timing-function:steps(1,end); }
  14.05% { opacity:0.73; transform:translate(-14.2px,2px) skewX(-3deg) scaleX(1); animation-timing-function:steps(1,end); }
  14.65% { opacity:0.22; transform:translate(-3px,0px) skewX(0deg) scaleX(1);  }
  31.4% { opacity:0.22; transform:translate(-5.8px,0px) skewX(-0.22deg) scaleX(1);  }
  37.4% { opacity:0.22; transform:translate(-0.2px,0px) skewX(0.3deg) scaleX(1); animation-timing-function:steps(1,end); }
  37.8% { opacity:0.77; transform:translate(13.8px,-2px) skewX(-7.5deg) scaleX(1.012); animation-timing-function:steps(1,end); }
  38.15% { opacity:0.83; transform:translate(-28.2px,2px) skewX(6deg) scaleX(0.99); animation-timing-function:steps(1,end); }
  38.6% { opacity:0.73; transform:translate(8.2px,0px) skewX(-3deg) scaleX(1); animation-timing-function:steps(1,end); }
  39.05% { opacity:0.22; transform:translate(-3px,0px) skewX(0deg) scaleX(1);  }
  42.6% { opacity:0.22; transform:translate(-0.2px,0px) skewX(0.22deg) scaleX(1); animation-timing-function:steps(1,end); }
  43.1% { opacity:0.81; transform:translate(-25.4px,4px) skewX(-6deg) scaleX(1); animation-timing-function:steps(1,end); }
  43.5% { opacity:0.83; transform:translate(22.2px,-2px) skewX(9deg) scaleX(1.017); animation-timing-function:steps(1,end); }
  44% { opacity:0.77; transform:translate(-19.8px,2px) skewX(-4.5deg) scaleX(1); animation-timing-function:steps(1,end); }
  44.55% { opacity:0.22; transform:translate(-3px,0px) skewX(0deg) scaleX(1);  }
  63.7% { opacity:0.22; transform:translate(2.6px,0px) skewX(-0.3deg) scaleX(1);  }
  79.6% { opacity:0.22; transform:translate(-5.8px,2px) skewX(0.22deg) scaleX(1); animation-timing-function:steps(1,end); }
  80.4% { opacity:0.85; transform:translate(-31px,4px) skewX(-9deg) scaleX(0.99); animation-timing-function:steps(1,end); }
  80.85% { opacity:0.87; transform:translate(27.8px,-4px) skewX(12deg) scaleX(1.02); animation-timing-function:steps(1,end); }
  81.15% { opacity:0.77; transform:translate(-19.8px,2px) skewX(-4.5deg) scaleX(1); animation-timing-function:steps(1,end); }
  81.65% { opacity:0.81; transform:translate(19.4px,-2px) skewX(9deg) scaleX(1.012); animation-timing-function:steps(1,end); }
  82.1% { opacity:0.89; transform:translate(-36.6px,2px) skewX(-10.5deg) scaleX(1); animation-timing-function:steps(1,end); }
  82.65% { opacity:0.75; transform:translate(11px,0px) skewX(3deg) scaleX(1); animation-timing-function:steps(1,end); }
  83.2% { opacity:0.22; transform:translate(-3px,0px) skewX(0deg) scaleX(1);  }
  100% { opacity:0.22; transform:translate(-3px,0px) skewX(0deg) scaleX(1);  }
}
@keyframes crtTearAsh {
  0% { opacity:0.18; transform:translate(4px,0px) skewX(0deg) scaleX(1);  }
  11.8% { opacity:0.18; transform:translate(-1.2px,-0.6px) skewX(-0.21deg) scaleX(1); animation-timing-function:steps(1,end); }
  12.4% { opacity:0.75; transform:translate(22.2px,-1.5px) skewX(5.6deg) scaleX(1); animation-timing-function:steps(1,end); }
  12.85% { opacity:0.82; transform:translate(-22px,3px) skewX(-9.8deg) scaleX(0.98); animation-timing-function:steps(1,end); }
  13.25% { opacity:0.85; transform:translate(32.6px,-3px) skewX(8.4deg) scaleX(1); animation-timing-function:steps(1,end); }
  13.6% { opacity:0.75; transform:translate(-14.2px,1.5px) skewX(-7deg) scaleX(0.99); animation-timing-function:steps(1,end); }
  14.05% { opacity:0.67; transform:translate(14.4px,-1.5px) skewX(2.8deg) scaleX(1); animation-timing-function:steps(1,end); }
  14.65% { opacity:0.18; transform:translate(4px,0px) skewX(0deg) scaleX(1);  }
  31.4% { opacity:0.18; transform:translate(6.6px,0px) skewX(0.21deg) scaleX(1);  }
  37.4% { opacity:0.18; transform:translate(1.4px,0px) skewX(-0.28deg) scaleX(1); animation-timing-function:steps(1,end); }
  37.8% { opacity:0.72; transform:translate(-11.6px,1.5px) skewX(7deg) scaleX(0.99); animation-timing-function:steps(1,end); }
  38.15% { opacity:0.8; transform:translate(27.4px,-1.5px) skewX(-5.6deg) scaleX(1.01); animation-timing-function:steps(1,end); }
  38.6% { opacity:0.67; transform:translate(-6.4px,0px) skewX(2.8deg) scaleX(1); animation-timing-function:steps(1,end); }
  39.05% { opacity:0.18; transform:translate(4px,0px) skewX(0deg) scaleX(1);  }
  42.6% { opacity:0.18; transform:translate(1.4px,0px) skewX(-0.21deg) scaleX(1); animation-timing-function:steps(1,end); }
  43.1% { opacity:0.77; transform:translate(24.8px,-3px) skewX(5.6deg) scaleX(1); animation-timing-function:steps(1,end); }
  43.5% { opacity:0.8; transform:translate(-19.4px,1.5px) skewX(-8.4deg) scaleX(0.98); animation-timing-function:steps(1,end); }
  44% { opacity:0.72; transform:translate(19.6px,-1.5px) skewX(4.2deg) scaleX(1); animation-timing-function:steps(1,end); }
  44.55% { opacity:0.18; transform:translate(4px,0px) skewX(0deg) scaleX(1);  }
  63.7% { opacity:0.18; transform:translate(-1.2px,0px) skewX(0.28deg) scaleX(1);  }
  79.6% { opacity:0.18; transform:translate(6.6px,-1.5px) skewX(-0.21deg) scaleX(1); animation-timing-function:steps(1,end); }
  80.4% { opacity:0.82; transform:translate(30px,-3px) skewX(8.4deg) scaleX(1.01); animation-timing-function:steps(1,end); }
  80.85% { opacity:0.85; transform:translate(-24.6px,3px) skewX(-11.2deg) scaleX(0.98); animation-timing-function:steps(1,end); }
  81.15% { opacity:0.72; transform:translate(19.6px,-1.5px) skewX(4.2deg) scaleX(1); animation-timing-function:steps(1,end); }
  81.65% { opacity:0.77; transform:translate(-16.8px,1.5px) skewX(-8.4deg) scaleX(0.99); animation-timing-function:steps(1,end); }
  82.1% { opacity:0.87; transform:translate(35.2px,-1.5px) skewX(9.8deg) scaleX(1); animation-timing-function:steps(1,end); }
  82.65% { opacity:0.7; transform:translate(-9px,0px) skewX(-2.8deg) scaleX(1); animation-timing-function:steps(1,end); }
  83.2% { opacity:0.18; transform:translate(4px,0px) skewX(0deg) scaleX(1);  }
  100% { opacity:0.18; transform:translate(4px,0px) skewX(0deg) scaleX(1);  }
}
@keyframes crtHiss {
  0% { opacity:0.21; transform:translate(-2px,0px);  }
  11.8% { opacity:0.21; transform:translate(-1.3px,0.6px); animation-timing-function:steps(1,end); }
  12.4% { opacity:0.34; transform:translate(-4.45px,1.5px); animation-timing-function:steps(1,end); }
  12.85% { opacity:0.34; transform:translate(1.5px,-3px); animation-timing-function:steps(1,end); }
  13.25% { opacity:0.34; transform:translate(-5.85px,3px); animation-timing-function:steps(1,end); }
  13.6% { opacity:0.34; transform:translate(0.45px,-1.5px); animation-timing-function:steps(1,end); }
  14.05% { opacity:0.34; transform:translate(-3.4px,1.5px); animation-timing-function:steps(1,end); }
  14.65% { opacity:0.21; transform:translate(-2px,0px);  }
  31.4% { opacity:0.21; transform:translate(-2.35px,0px);  }
  37.4% { opacity:0.21; transform:translate(-1.65px,0px); animation-timing-function:steps(1,end); }
  37.8% { opacity:0.34; transform:translate(0.1px,-1.5px); animation-timing-function:steps(1,end); }
  38.15% { opacity:0.34; transform:translate(-5.15px,1.5px); animation-timing-function:steps(1,end); }
  38.6% { opacity:0.34; transform:translate(-0.6px,0px); animation-timing-function:steps(1,end); }
  39.05% { opacity:0.21; transform:translate(-2px,0px);  }
  42.6% { opacity:0.21; transform:translate(-1.65px,0px); animation-timing-function:steps(1,end); }
  43.1% { opacity:0.34; transform:translate(-4.8px,3px); animation-timing-function:steps(1,end); }
  43.5% { opacity:0.34; transform:translate(1.15px,-1.5px); animation-timing-function:steps(1,end); }
  44% { opacity:0.34; transform:translate(-4.1px,1.5px); animation-timing-function:steps(1,end); }
  44.55% { opacity:0.21; transform:translate(-2px,0px);  }
  63.7% { opacity:0.21; transform:translate(-1.3px,0px);  }
  79.6% { opacity:0.21; transform:translate(-2.35px,1.5px); animation-timing-function:steps(1,end); }
  80.4% { opacity:0.34; transform:translate(-5.5px,3px); animation-timing-function:steps(1,end); }
  80.85% { opacity:0.34; transform:translate(1.85px,-3px); animation-timing-function:steps(1,end); }
  81.15% { opacity:0.34; transform:translate(-4.1px,1.5px); animation-timing-function:steps(1,end); }
  81.65% { opacity:0.34; transform:translate(0.8px,-1.5px); animation-timing-function:steps(1,end); }
  82.1% { opacity:0.34; transform:translate(-6.2px,1.5px); animation-timing-function:steps(1,end); }
  82.65% { opacity:0.34; transform:translate(-0.25px,0px); animation-timing-function:steps(1,end); }
  83.2% { opacity:0.21; transform:translate(-2px,0px);  }
  100% { opacity:0.21; transform:translate(-2px,0px);  }
}
@keyframes crtTracking {
  0% { opacity:0.24; transform:translate(0px,-25px) scaleY(0.5);  }
  11.8% { opacity:0.24; transform:translate(2px,22px) scaleY(1.1); animation-timing-function:steps(1,end); }
  12.4% { opacity:0.62; transform:translate(-7px,-77px) scaleY(1.1); animation-timing-function:steps(1,end); }
  12.85% { opacity:0.62; transform:translate(10px,110px) scaleY(1.1); animation-timing-function:steps(1,end); }
  13.25% { opacity:0.62; transform:translate(-11px,-121px) scaleY(1.1); animation-timing-function:steps(1,end); }
  13.6% { opacity:0.62; transform:translate(7px,77px) scaleY(1.1); animation-timing-function:steps(1,end); }
  14.05% { opacity:0.62; transform:translate(-4px,-44px) scaleY(1.1); animation-timing-function:steps(1,end); }
  14.65% { opacity:0.24; transform:translate(0px,38.67px) scaleY(0.5);  }
  31.4% { opacity:0.24; transform:translate(-1px,48.62px) scaleY(0.5);  }
  37.4% { opacity:0.24; transform:translate(1px,11px) scaleY(1.1); animation-timing-function:steps(1,end); }
  37.8% { opacity:0.62; transform:translate(6px,66px) scaleY(1.1); animation-timing-function:steps(1,end); }
  38.15% { opacity:0.62; transform:translate(-9px,-99px) scaleY(1.1); animation-timing-function:steps(1,end); }
  38.6% { opacity:0.62; transform:translate(4px,44px) scaleY(1.1); animation-timing-function:steps(1,end); }
  39.05% { opacity:0.24; transform:translate(0px,25.8px) scaleY(0.5);  }
  42.6% { opacity:0.24; transform:translate(1px,11px) scaleY(1.1); animation-timing-function:steps(1,end); }
  43.1% { opacity:0.62; transform:translate(-8px,-88px) scaleY(1.1); animation-timing-function:steps(1,end); }
  43.5% { opacity:0.62; transform:translate(9px,99px) scaleY(1.1); animation-timing-function:steps(1,end); }
  44% { opacity:0.62; transform:translate(-6px,-66px) scaleY(1.1); animation-timing-function:steps(1,end); }
  44.55% { opacity:0.24; transform:translate(0px,1.86px) scaleY(0.5);  }
  63.7% { opacity:0.24; transform:translate(2px,-85.67px) scaleY(0.5);  }
  79.6% { opacity:0.24; transform:translate(-1px,-11px) scaleY(1.1); animation-timing-function:steps(1,end); }
  80.4% { opacity:0.62; transform:translate(-10px,-110px) scaleY(1.1); animation-timing-function:steps(1,end); }
  80.85% { opacity:0.62; transform:translate(11px,121px) scaleY(1.1); animation-timing-function:steps(1,end); }
  81.15% { opacity:0.62; transform:translate(-6px,-66px) scaleY(1.1); animation-timing-function:steps(1,end); }
  81.65% { opacity:0.62; transform:translate(8px,88px) scaleY(1.1); animation-timing-function:steps(1,end); }
  82.1% { opacity:0.62; transform:translate(-12px,-132px) scaleY(1.1); animation-timing-function:steps(1,end); }
  82.65% { opacity:0.62; transform:translate(5px,55px) scaleY(1.1); animation-timing-function:steps(1,end); }
  83.2% { opacity:0.24; transform:translate(0px,-94.61px) scaleY(0.5);  }
  100% { opacity:0.24; transform:translate(0px,-25px) scaleY(0.5);  }
}
.site-header .wordmark { position:relative; }
.site-header .wordmark::after {
  content:"DASICH";
  position:absolute;
  inset:0;
  color:#b3b88e;
  clip-path:inset(22% -12% 37% -12%);
  pointer-events:none;
  opacity:.3;
  animation:wordmarkFault 18.7s ease-in-out -4.9s infinite,crtRipple .83s steps(1,end) -.27s infinite;
}
@keyframes wordmarkFault {
  0%,100% { opacity:.25; transform:translateX(-1px); }
  16% { opacity:.3; transform:translateX(1px); animation-timing-function:steps(1,end); }
  16.4% { opacity:.8; transform:translate(6px,1px) skewX(7deg); animation-timing-function:steps(1,end); }
  16.8% { opacity:.65; transform:translate(-5px,-1px) skewX(-9deg); animation-timing-function:steps(1,end); }
  17.3% { opacity:.75; transform:translate(4px,0); animation-timing-function:steps(1,end); }
  17.8% { opacity:.25; transform:translateX(-1px); }
  59% { opacity:.32; transform:translateX(1px); animation-timing-function:steps(1,end); }
  59.5% { opacity:.85; transform:translate(-6px,1px); animation-timing-function:steps(1,end); }
  59.9% { opacity:.6; transform:translate(5px,-1px) skewX(-8deg); animation-timing-function:steps(1,end); }
  60.4% { opacity:.25; transform:translateX(-1px); }
  64.5% { opacity:.3; transform:translateX(1px); animation-timing-function:steps(1,end); }
  65% { opacity:.75; transform:translate(-4px,0); animation-timing-function:steps(1,end); }
  65.5% { opacity:.25; transform:translateX(-1px); }
}
/* Permanent local ripple uses independent translate, so burst transforms still work. */
@keyframes crtRipple {
  0%,100% { translate:-1px 0; }
  19% { translate:1px -.35px; }
  37% { translate:-1.4px .4px; }
  58% { translate:.9px .2px; }
  73% { translate:-.6px -.3px; }
  87% { translate:1.3px 0; }
}
@keyframes crtGrain {
  0%,100% { translate:-3px -2px; }
  17% { translate:2px 3px; }
  36% { translate:-4px 1px; }
  52% { translate:3px -1px; }
  71% { translate:-1px 4px; }
  89% { translate:4px -3px; }
}
@media(max-width:700px) { .hero-copy h1.crt-title { --crt-indent:15%; } }
@media(prefers-reduced-motion:reduce) {
  .experience:not([data-motion="on"]) .crt-base { animation:none; }
  .experience:not([data-motion="on"]) .hero-copy h1.crt-title .crt-echo,
  .experience:not([data-motion="on"]) .hero-copy h1.crt-title::before,
  .experience:not([data-motion="on"]) .hero-copy h1.crt-title::after,
  .experience:not([data-motion="on"]) .site-header .wordmark::after { display:none; animation:none; }
}
