/* ===================================================
   TECTELIN — Extras decorativos
   (switch día/noche, flip-card, radar, título neón)

   Cargar DESPUÉS de tectelin-custom.css y
   tectelin-effects.css en el <head>:

   <link rel="stylesheet" href="assets/css/tectelin-custom.css" />
   <link rel="stylesheet" href="assets/css/tectelin-effects.css" />
   <link rel="stylesheet" href="assets/css/tectelin-extras.css" />

   Todo con prefijo tct- en clases/keyframes propios.
   100% aditivo, no reemplaza nada existente.
   =================================================== */


/* =========================================================
   1) SWITCH DÍA / NOCHE  →  toggle real de modo oscuro
   Se conecta con las variables [data-theme] que ya tenés
   en tectelin-custom.css.

   HTML sugerido (ponelo en el header, junto al nav-cta):

   <label class="tct-toggle-theme" title="Cambiar tema">
     <input type="checkbox" id="themeToggle">
     <span class="slider round">
       <div class="sun-moon">
         <span class="moon-dot moon-dot-1"></span>
         <span class="moon-dot moon-dot-2"></span>
         <span class="moon-dot moon-dot-3"></span>
         <span class="light-ray light-ray-1"></span>
         <span class="light-ray light-ray-2"></span>
         <span class="light-ray light-ray-3"></span>
       </div>
       <span class="cloud cloud-light cloud-1"></span>
       <span class="cloud cloud-dark cloud-2"></span>
       <span class="cloud cloud-light cloud-3"></span>
       <span class="mini-stars">
         <span class="mini-star mini-star-1"></span>
         <span class="mini-star mini-star-2"></span>
         <span class="mini-star mini-star-3"></span>
         <span class="mini-star mini-star-4"></span>
       </span>
     </span>
   </label>

   JS sugerido (persistir preferencia):

   <script>
     const themeToggle = document.getElementById('themeToggle');
     const saved = localStorage.getItem('tectelin-theme');
     if (saved) {
       document.documentElement.setAttribute('data-theme', saved);
       themeToggle.checked = saved === 'dark';
     }
     themeToggle.addEventListener('change', () => {
       const theme = themeToggle.checked ? 'dark' : 'light';
       document.documentElement.setAttribute('data-theme', theme);
       localStorage.setItem('tectelin-theme', theme);
     });
   </script>
   ========================================================= */

.tct-toggle-theme{ position:relative; display:inline-block; width:60px; height:34px; flex-shrink:0; }
.tct-toggle-theme input{ opacity:0; width:0; height:0; position:absolute; }

.tct-toggle-theme .slider{
  position:absolute; cursor:pointer; inset:0;
  background-color:#2196f3;
  transition:.4s;
  z-index:0;
  overflow:hidden;
}
.tct-toggle-theme .slider.round{ border-radius:34px; }
.tct-toggle-theme .slider.round .sun-moon{ border-radius:50%; }

.tct-toggle-theme .sun-moon{
  position:absolute; height:26px; width:26px; left:4px; bottom:4px;
  background-color:#ffda3d;
  transition:.4s;
}
.tct-toggle-theme input:checked + .slider{ background-color:#0b0b0f; }
.tct-toggle-theme input:focus + .slider{ box-shadow:0 0 1px #2196f3; }
.tct-toggle-theme input:checked + .slider .sun-moon{
  transform:translateX(26px);
  background-color:#fff;
  animation:tct-rotate-center .6s ease-in-out both;
}

.tct-toggle-theme .moon-dot{
  position:absolute; opacity:0; transition:.4s;
  background:#9aa0a6; border-radius:50%; z-index:4;
}
.tct-toggle-theme input:checked + .slider .sun-moon .moon-dot{ opacity:1; }
.tct-toggle-theme .moon-dot-1{ left:10px; top:3px; width:6px; height:6px; }
.tct-toggle-theme .moon-dot-2{ left:2px; top:10px; width:10px; height:10px; }
.tct-toggle-theme .moon-dot-3{ left:16px; top:18px; width:3px; height:3px; }

.tct-toggle-theme .light-ray{
  position:absolute; border-radius:50%; background:#fff; opacity:.12; z-index:-1;
}
.tct-toggle-theme .light-ray-1{ left:-8px; top:-8px; width:43px; height:43px; }
.tct-toggle-theme .light-ray-2{ left:-14px; top:-14px; width:55px; height:55px; }
.tct-toggle-theme .light-ray-3{ left:-18px; top:-18px; width:60px; height:60px; }

.tct-toggle-theme .cloud{ position:absolute; height:6px; border-radius:6px; }
.tct-toggle-theme .cloud-light{ background:#eee; animation:tct-cloud-move 6s infinite; }
.tct-toggle-theme .cloud-dark{ background:#ccc; animation:tct-cloud-move 6s infinite; animation-delay:1s; }
.tct-toggle-theme .cloud-1{ left:30px; top:15px; width:40px; }
.tct-toggle-theme .cloud-2{ left:44px; top:22px; width:20px; }
.tct-toggle-theme .cloud-3{ left:18px; top:27px; width:30px; }
@keyframes tct-cloud-move{
  0%{ transform:translateX(0); }
  40%{ transform:translateX(4px); }
  80%{ transform:translateX(-4px); }
  100%{ transform:translateX(0); }
}
/* las nubes se ocultan de noche */
.tct-toggle-theme input:checked + .slider .cloud{ opacity:0; transition:.4s; }

.tct-toggle-theme .mini-stars{
  position:absolute; inset:0;
  transform:translateY(-32px); opacity:0; transition:.4s;
}
.tct-toggle-theme input:checked + .slider .mini-stars{ transform:translateY(0); opacity:1; }
.tct-toggle-theme .mini-star{
  position:absolute; background:#fff; border-radius:50%; transition:.4s;
  animation:tct-star-twinkle 2s infinite;
}
.tct-toggle-theme .mini-star-1{ width:4px; height:4px; top:2px; left:3px; animation-delay:.3s; }
.tct-toggle-theme .mini-star-2{ width:2px; height:2px; top:16px; left:3px; }
.tct-toggle-theme .mini-star-3{ width:3px; height:3px; top:20px; left:10px; animation-delay:.6s; }
.tct-toggle-theme .mini-star-4{ width:3.5px; height:3.5px; top:0; left:18px; animation-delay:1.3s; }
@keyframes tct-star-twinkle{
  0%{ transform:scale(1); }
  40%{ transform:scale(1.2); }
  80%{ transform:scale(.8); }
  100%{ transform:scale(1); }
}
@keyframes tct-rotate-center{
  0%{ transform:translateX(26px) rotate(0); }
  100%{ transform:translateX(26px) rotate(360deg); }
}


/* =========================================================
   2) FLIP CARD  →  ideal para "por qué elegirnos"
   HTML sugerido (repetir por cada beneficio):

   <div class="tct-flip-card">
     <div class="tct-flip-card-inner">
       <div class="tct-flip-card-front">
         <h3 class="flip-title">48h</h3>
         <p>Instalación</p>
       </div>
       <div class="tct-flip-card-back">
         <p>Tu conexión queda instalada y funcionando en menos de 48 horas desde que contratás.</p>
       </div>
     </div>
   </div>
   ========================================================= */

.tct-flip-card{
  background-color:transparent;
  width:100%;
  max-width:140px;
  height:170px;
  perspective:1000px;
  font-family:inherit;
}
.tct-flip-card .flip-title{
  font-family:'Sora',sans-serif;
  font-size:1.25em;
  font-weight:800;
  text-align:center;
  margin:0 0 4px;
}
.tct-flip-card-inner{
  position:relative;
  width:100%; height:100%;
  text-align:center;
  transition:transform .8s;
  transform-style:preserve-3d;
}
.tct-flip-card:hover .tct-flip-card-inner{ transform:rotateY(180deg); }

.tct-flip-card-front, .tct-flip-card-back{
  box-shadow:0 8px 14px rgba(0,0,0,.12);
  position:absolute; inset:0;
  display:flex; flex-direction:column;
  align-items:center; justify-content:center;
  gap:4px; padding:16px;
  backface-visibility:hidden;
  border:1px solid var(--border, #EDE2E0);
  border-radius:18px;
}
.tct-flip-card-front{
  background:var(--paper, #fff);
  color:var(--ink, #211714);
}
.tct-flip-card-back{
  background:linear-gradient(165deg, var(--primary, #E1261C) 0%, var(--primary-dark, #A11810) 100%);
  color:#fff;
  border-color:var(--primary-dark, #A11810);
  font-size:12px;
  line-height:1.45;
  transform:rotateY(180deg);
}


/* =========================================================
   3) RADAR  →  panel decorativo para "verificando ubicación"
   Podés ponerlo en Cobertura, al lado o en vez del mapa.

   HTML sugerido:

   <div class="tct-radar" style="--tct-radar-accent:#8b5cf6;">
     <div class="tct-radar-center"></div>
   </div>

   Para que hable el rojo de marca en vez de violeta,
   cambiá el style a: --tct-radar-accent: var(--primary);
   ========================================================= */

.tct-radar{
  position:relative;
  width:100%; height:100%;
  min-height:260px;
  background-color:#09090b;
  background-image:
    linear-gradient(rgba(139,92,246,.1) .1em, transparent .1em),
    linear-gradient(90deg, rgba(139,92,246,.1) .1em, transparent .1em);
  background-size:3em 3em;
  overflow:hidden;
  border-radius:20px;
}
.tct-radar::before{
  content:"";
  position:absolute;
  top:50%; left:50%;
  width:150%; height:150%;
  transform:translate(-50%,-50%);
  background:repeating-radial-gradient(circle, transparent 0, transparent 2.9em, rgba(139,92,246,.2) 3em);
  z-index:1;
}
.tct-radar::after{
  content:"";
  position:absolute;
  top:50%; left:50%;
  width:40em; height:40em;
  margin-top:-20em; margin-left:-20em;
  border-radius:50%;
  background:conic-gradient(from 0deg, transparent 75%, var(--tct-radar-accent, #8b5cf6) 100%);
  animation:tct-radar-spin 4s linear infinite;
  z-index:2;
}
.tct-radar-center{
  position:absolute; top:50%; left:50%;
  width:1em; height:1em;
  transform:translate(-50%,-50%);
  background-color:var(--tct-radar-accent, #a78bfa);
  border-radius:50%;
  z-index:3;
  animation:tct-pulse-dot 2s ease-in-out infinite;
}
@keyframes tct-radar-spin{
  from{ transform:rotate(0deg); }
  to{ transform:rotate(360deg); }
}
@keyframes tct-pulse-dot{
  0%, 100%{ box-shadow:0 0 .8em .2em rgba(139,92,246,.6); }
  50%{ box-shadow:0 0 2em .5em rgba(139,92,246,1); }
}

/* =========================================================
   3b) RADAR COMO FONDO DE SECCIÓN COMPLETA
   Esto es lo que va en Cobertura: el radar detrás de TODO
   el contenido de la sección, no como panel aparte.

   Uso: agregá la clase directo a la sección:

   <section class="section radar-field" id="cobertura">
     <div class="wrap story"> ...tu contenido normal... </div>
   </section>

   No hace falta tocar nada más del HTML: el color de texto
   ya queda en blanco/gris claro para que se lea sobre el
   fondo oscuro, y usa el rojo de marca en el barrido.
   ========================================================= */

.radar-field{
  position:relative;
  overflow:hidden;
  background-color:#0c0708;
  background-image:
    linear-gradient(rgba(225,38,28,.08) .1em, transparent .1em),
    linear-gradient(90deg, rgba(225,38,28,.08) .1em, transparent .1em);
  background-size:3em 3em;
  color:#EDE0DE;
}
.radar-field::before{
  content:"";
  position:absolute;
  top:50%; left:50%;
  width:220%; height:220%;
  transform:translate(-50%,-50%);
  background:repeating-radial-gradient(circle, transparent 0, transparent 2.6em, rgba(225,38,28,.14) 2.9em);
  z-index:0;
  pointer-events:none;
}
.radar-field::after{
  content:"";
  position:absolute;
  top:50%; left:50%;
  width:70em; height:70em;
  margin-top:-35em; margin-left:-35em;
  border-radius:50%;
  background:conic-gradient(from 0deg, transparent 80%, rgba(225,38,28,.55) 100%);
  animation:tct-radar-spin 7s linear infinite;
  z-index:0;
  pointer-events:none;
}
.radar-field > .wrap{ position:relative; z-index:2; }
.radar-field h1, .radar-field h2, .radar-field h3{ color:#fff; }
.radar-field p{ color:#C9BCB9; }
.radar-field .tag{ color:var(--primary-light, #FF6B5B); }
.radar-field .btn-ghost{ color:#fff; border-color:rgba(255,255,255,.35); }
.radar-field .btn-ghost:hover{ border-color:var(--primary); color:var(--primary-light, #FF6B5B); }
.radar-field .hero-stats div b{ color:#fff; }
.radar-field .hero-stats div span{ color:#C9BCB9; }
@media (prefers-reduced-motion: reduce){
  .radar-field::after{ animation:none; }
}


/* =========================================================
   4) TÍTULO NEÓN "TECTELIN"
   El rojo del efecto (#f00) coincide con tu --primary,
   así que queda coherente con la marca tal cual.

   HTML sugerido (por ejemplo, arriba del todo del hero,
   o como intro de página completa):

   <div class="tct-neon-title">
     <div class="bg-glow"></div>
     <div class="bg-noise"></div>
     <div class="dust-layer"></div>
     <div class="doodle-layer">
       <span class="doodle spark d1" style="top:20%;left:15%;"></span>
       <span class="doodle scratch d2" style="top:70%;left:80%;"></span>
       <span class="doodle dot d3" style="top:30%;left:85%;"></span>
       <span class="doodle spark d4" style="top:80%;left:20%;"></span>
       <span class="doodle scratch d5" style="top:15%;left:60%;"></span>
       <span class="doodle dot d6" style="top:60%;left:10%;"></span>
     </div>
     <div class="title-stage">
       <div class="neon-line top-line"><div class="neon-line-inner"></div></div>
       <h2 class="main-title">
         <span class="letter" data-char="T" style="--x:-40px;--y:-30px;--r:-12deg;--d:0s;">T</span>
         <span class="letter" data-char="E" style="--x:30px;--y:20px;--r:8deg;--d:.05s;">E</span>
         <span class="letter" data-char="C" style="--x:-20px;--y:35px;--r:-6deg;--d:.1s;">C</span>
         <span class="letter" data-char="T" style="--x:25px;--y:-25px;--r:10deg;--d:.15s;">T</span>
         <span class="letter" data-char="E" style="--x:-35px;--y:15px;--r:-9deg;--d:.2s;">E</span>
         <span class="letter" data-char="L" style="--x:15px;--y:-30px;--r:7deg;--d:.25s;">L</span>
         <span class="letter" data-char="I" style="--x:-25px;--y:20px;--r:-4deg;--d:.3s;">I</span>
         <span class="letter" data-char="N" style="--x:30px;--y:-15px;--r:12deg;--d:.35s;">N</span>
       </h2>
       <div class="neon-line bottom-line"><div class="neon-line-inner"></div></div>
       <p class="caption">Fibra óptica · Viacha, Bolivia</p>
     </div>
   </div>

   Agregá .is-compact a .tct-neon-title si lo metés dentro
   de una tarjeta chica en vez de a pantalla completa.
   ========================================================= */

.tct-neon-title{
  --reset-time:10s;
  position:relative;
  width:100%; height:100%;
  min-height:22rem;
  background-color:#080000;
  display:flex; align-items:center; justify-content:center;
  overflow:hidden;
  font-family:"Garamond","Times New Roman",Times,serif;
  user-select:none;
  box-sizing:border-box;
}
.tct-neon-title .bg-glow, .tct-neon-title .bg-noise, .tct-neon-title .dust-layer,
.tct-neon-title .doodle-layer, .tct-neon-title .doodle, .tct-neon-title .title-stage,
.tct-neon-title .neon-line, .tct-neon-title .neon-line-inner, .tct-neon-title .main-title,
.tct-neon-title .sub-title, .tct-neon-title .letter, .tct-neon-title .caption{ box-sizing:border-box; }

.tct-neon-title .bg-glow{
  position:absolute; top:50%; left:50%;
  width:32rem; height:32rem;
  background:radial-gradient(circle, rgba(180,0,0,.18) 0%, transparent 62%);
  transform:translate(-50%,-50%);
  animation:tct-glow-breathing 6s ease-in-out infinite alternate;
  pointer-events:none; z-index:1;
}
.tct-neon-title .bg-noise{
  position:absolute; inset:0;
  background-image:radial-gradient(rgba(255,0,0,.1) 1px, transparent 1px),
    radial-gradient(rgba(255,0,0,.05) 1px, transparent 1px);
  background-size:20px 20px, 15px 15px;
  background-position:0 0, 7.5px 7.5px;
  opacity:.3; z-index:2; pointer-events:none;
  animation:tct-noise-jitter .4s infinite;
}
.tct-neon-title::after{
  content:""; position:absolute; inset:0;
  background:radial-gradient(circle at center, transparent 40%, #000 100%);
  pointer-events:none; z-index:20;
}
.tct-neon-title .dust-layer{ position:absolute; inset:0; z-index:3; pointer-events:none; }
.tct-neon-title .dust-layer::before{
  content:""; position:absolute; width:2px; height:2px; background:transparent;
  box-shadow:3rem 4rem 1px rgba(255,0,0,.6), 9rem 16rem 1px rgba(255,0,0,.4),
    18rem 7rem 1px rgba(255,0,0,.8), 25rem 14rem 1px rgba(255,0,0,.5);
  animation:tct-dust-drift 20s linear infinite;
}

.tct-neon-title .title-stage{
  position:relative; z-index:10;
  display:flex; flex-direction:column; align-items:center;
  transform:scale(.78);
  transition:transform .5s cubic-bezier(.2,.8,.2,1);
}
.tct-neon-title:hover .title-stage{ transform:scale(.82); }
.tct-neon-title.is-compact .title-stage{ transform:scale(.5); }
.tct-neon-title.is-compact:hover .title-stage{ transform:scale(.54); }

.tct-neon-title .main-title, .tct-neon-title .sub-title{
  display:flex; justify-content:center; align-items:baseline;
  margin:0; padding:0; text-transform:uppercase; color:transparent; line-height:.9;
}
.tct-neon-title .main-title{ font-size:clamp(2.8rem,5.5rem,6.5rem); letter-spacing:-.05em; margin-bottom:.1em; }
.tct-neon-title.is-compact .main-title{ font-size:clamp(2rem,4.8rem,5.8rem); }
.tct-neon-title .sub-title{ font-size:clamp(1.3rem,2.8rem,3.2rem); letter-spacing:.2em; margin-bottom:.5em; }
.tct-neon-title.is-compact .sub-title{ font-size:clamp(1rem,2.4rem,2.8rem); }
.tct-neon-title .main-title .letter:first-child, .tct-neon-title .main-title .letter:last-child{ font-size:1.25em; }

.tct-neon-title .letter{
  position:relative; display:inline-block; opacity:0; filter:blur(12px);
  transform:translate(var(--x), var(--y)) rotate(var(--r)) scale(1.5);
  -webkit-text-stroke:2px #f00;
  text-shadow:0 0 5px rgba(255,0,0,.8), 0 0 15px rgba(255,0,0,.6), 0 0 30px rgba(200,0,0,.4);
  animation:tct-letter-intro var(--reset-time) cubic-bezier(.2,.8,.2,1) infinite,
    tct-neon-flicker var(--reset-time) linear infinite;
  animation-delay:var(--d), 0s;
}
.tct-neon-title .letter::before, .tct-neon-title .letter::after{
  content:attr(data-char); position:absolute; top:0; left:0; color:transparent; pointer-events:none;
}
.tct-neon-title .letter::before{
  -webkit-text-stroke:1px rgba(255,50,50,.7);
  transform:translate(2px,-2px) rotate(-1.5deg); z-index:-1;
  animation:tct-sketch-jitter .18s infinite alternate;
}
.tct-neon-title .letter::after{
  -webkit-text-stroke:1px rgba(200,0,0,.5);
  transform:translate(-2px,1px) rotate(1.5deg); z-index:-2;
  animation:tct-sketch-jitter-2 .2s infinite alternate;
}

.tct-neon-title .neon-line{
  position:relative; width:0%; height:2px; background:transparent;
  margin:.5em 0; display:flex; align-items:center; justify-content:center;
  animation:tct-line-reveal var(--reset-time) cubic-bezier(.8,0,.2,1) infinite;
}
.tct-neon-title .neon-line.top-line{ margin-bottom:.8em; }
.tct-neon-title .neon-line.bottom-line{ margin-top:.5em; }
.tct-neon-title .neon-line-inner{
  width:100%; height:100%;
  border-top:1px solid #f00; border-bottom:1px solid #f00;
  box-shadow:0 0 5px #f00, 0 0 10px #f00, 0 0 20px #a00, inset 0 0 2px #f00;
}
.tct-neon-title .neon-line-inner::before{
  content:""; position:absolute; inset:-1px;
  border:1px dashed rgba(255,0,0,.5); transform:rotate(.2deg);
  animation:tct-doodle-jitter .2s infinite alternate;
}

.tct-neon-title .caption{
  font-family:sans-serif; font-size:.6rem; color:#ff3333;
  letter-spacing:.4em; text-transform:uppercase; margin-top:2em;
  opacity:0; text-shadow:0 0 5px #f00;
  animation:tct-caption-fade var(--reset-time) infinite;
}

.tct-neon-title .doodle-layer{ position:absolute; inset:0; z-index:5; pointer-events:none; }
.tct-neon-title .doodle{ position:absolute; opacity:0; animation:tct-doodle-fade-blink 5s infinite; }
.tct-neon-title .doodle.spark{ width:12px; height:12px; }
.tct-neon-title .doodle.spark::before, .tct-neon-title .doodle.spark::after{
  content:""; position:absolute; background:#f00; box-shadow:0 0 8px #f00; border-radius:50%;
}
.tct-neon-title .doodle.spark::before{ width:100%; height:2px; top:5px; left:0; }
.tct-neon-title .doodle.spark::after{ width:2px; height:100%; top:0; left:5px; }
.tct-neon-title .doodle.scratch{
  width:20px; height:2px; background:transparent;
  border-top:2px solid #f00; border-bottom:1px solid #a00;
  transform:rotate(-35deg); box-shadow:0 0 5px #f00;
}
.tct-neon-title .doodle.dot{ width:4px; height:4px; background:#f00; border-radius:50%; box-shadow:0 0 10px #f00; }
.tct-neon-title .d1{ animation-delay:3s; }
.tct-neon-title .d2{ animation-delay:4.2s; }
.tct-neon-title .d3{ animation-delay:3.5s; }
.tct-neon-title .d4{ animation-delay:4.8s; }
.tct-neon-title .d5{ animation-delay:3.9s; }
.tct-neon-title .d6{ animation-delay:5.1s; }
.tct-neon-title:hover .doodle{ animation-duration:2s; box-shadow:0 0 15px #fff, 0 0 30px #f00; }
.tct-neon-title:hover .main-title .letter{
  text-shadow:0 0 10px rgba(255,100,100,.9), 0 0 20px rgba(255,0,0,.8), 0 0 40px rgba(255,0,0,.6);
}

@keyframes tct-letter-intro{
  0%{ opacity:0; filter:blur(12px); transform:translate(var(--x),var(--y)) rotate(var(--r)) scale(1.5); }
  30%, 68%{ opacity:1; filter:blur(0); transform:translate(0,0) rotate(0deg) scale(1); }
  92%, 100%{ opacity:0; filter:blur(12px); transform:translate(var(--x),var(--y)) rotate(var(--r)) scale(1.5); }
}
@keyframes tct-line-reveal{
  0%, 16%{ width:0%; opacity:0; }
  36%, 68%{ width:110%; opacity:1; }
  84%, 100%{ width:0%; opacity:0; }
}
@keyframes tct-caption-fade{
  0%, 36%{ opacity:0; }
  48%, 68%{ opacity:.5; }
  84%, 100%{ opacity:0; }
}
@keyframes tct-glow-breathing{
  0%{ transform:translate(-50%,-50%) scale(1); opacity:.7; }
  100%{ transform:translate(-50%,-50%) scale(1.1); opacity:1; }
}
@keyframes tct-neon-flicker{
  0%, 30%, 62%, 100%{ opacity:1; }
  20%, 64%{ opacity:.35; }
  92%, 100%{ opacity:0; }
}
@keyframes tct-doodle-jitter{
  0%{ transform:translate(0,0) rotate(0deg); }
  50%{ transform:translate(1px,-1px) rotate(.3deg); }
  100%{ transform:translate(-1px,1px) rotate(-.3deg); }
}
@keyframes tct-sketch-jitter{
  0%{ transform:translate(2px,-2px) rotate(-1.5deg); }
  100%{ transform:translate(3px,-1px) rotate(-1deg); }
}
@keyframes tct-sketch-jitter-2{
  0%{ transform:translate(-2px,1px) rotate(1.5deg); }
  100%{ transform:translate(-3px,2px) rotate(1deg); }
}
@keyframes tct-noise-jitter{
  0%{ background-position:0 0, 7.5px 7.5px; }
  50%{ background-position:2px -2px, 5.5px 9.5px; }
  100%{ background-position:-2px 2px, 9.5px 5.5px; }
}
@keyframes tct-dust-drift{
  0%{ transform:translateY(0) translateX(0); }
  100%{ transform:translateY(-12rem) translateX(5rem); }
}
@keyframes tct-doodle-fade-blink{
  0%, 10%, 100%{ opacity:0; transform:scale(.5); }
  5%{ opacity:1; transform:scale(1.2); }
}

@media (max-width:600px){
  .tct-neon-title{ min-height:18rem; }
  .tct-neon-title .title-stage{ transform:scale(.58); }
  .tct-neon-title:hover .title-stage{ transform:scale(.62); }
  .tct-neon-title .dust-layer::before{ display:none; }
}
@media (prefers-reduced-motion: reduce){
  .tct-neon-title *, .tct-toggle-theme *{ animation:none !important; }
}