/* ===== block 0 (head) ===== */

:root{--bg:#021a13;--line:#00c7a3;--text:#cdece4;--canvas-ratio:1200/680}
*{box-sizing:border-box;margin:0;padding:0}
html,body{min-height:100%}
body{background:#000;color:#fff;font-family:'DM Sans',sans-serif;overflow:hidden}
body.unlocked{overflow-x:hidden;overflow-y:auto}

/* ═══ HERO SYSTEM (PRODUCTION READY) ═══ */
.hero{
  position:fixed;
  inset:0;
  z-index:50;
  background:var(--bg);
  pointer-events:auto;

  opacity:1;
  transform:translateZ(0);
  backface-visibility:hidden;
  -webkit-font-smoothing:antialiased;

  will-change:opacity, transform;

  transition:
    opacity 1.25s cubic-bezier(.16,1,.3,1),
    transform 1.25s cubic-bezier(.16,1,.3,1);
}

.hero.done{
  opacity:0;
  transform:scale(1.02);
  pointer-events:none;
}

/* ═══ CANVAS ═══ */
#heroCanvas{
  position:absolute;
  inset:0;
  width:100%;
  height:100%;
  display:block;
}

/* ═══ CAMERA CORE ═══ */
.hero-cam{
  position:absolute;
  z-index:10;
  left:50%;
  top:42%;
  transform:translate3d(-50%,-50%,0);

  will-change:transform, opacity;
  backface-visibility:hidden;
}

.hero-cam svg{
  width:clamp(120px,18vw,240px);
  height:auto;
  display:block;
}

/* ═══ STRUCTURE MAST ═══ */
.hero-mast-static{
  position:absolute;
  left:50%;
  bottom:0;
  width:2px;

  background:linear-gradient(
    to top,
    rgba(200,210,205,.28),
    rgba(200,210,205,.10)
  );

  transform:translateX(-50%);
  z-index:9;
  pointer-events:none;
}

.hero-mast{
  position:absolute;
  left:50%;
  width:2px;

  background:rgba(200,210,205,.42);

  transform:translateX(-50%);
  bottom:50%;
  height:0;
  opacity:0;

  pointer-events:none;
}

/* ═══ TYPOGRAPHY CORE ═══ */
.hero-headline{
  position:absolute;
  z-index:10;
  left:50%;
  bottom:12vh;
  transform:translate3d(-50%,0,0);

  text-align:center;
  pointer-events:none;

  will-change:opacity, transform;
}

.hero-headline h1{
  font-family:'DM Sans',sans-serif;
  font-weight:600;
  line-height:1.2;

  color:rgba(205,236,228,.6);
  margin-bottom:10px;

  width:clamp(240px,28vw,380px);

  display:flex;
  flex-direction:column;
  align-items:stretch;
}

/* line system */
.hero-headline .hl-somera,
.hero-headline .hl-x,
.hero-headline .hl-terra{
  display:flex;
  justify-content:space-between;
  width:100%;
}

.hero-headline .hl-somera{
  font-size:clamp(14px,2.2vw,28px);
}

.hero-headline .hl-x{
  font-size:clamp(8px,.85vw,11px);
  opacity:.55;
  font-weight:500;
  line-height:1.4;
  margin:6px 0;
}

.hero-headline .hl-terra{
  font-size:clamp(14px,2.2vw,28px);
}

/* ═══ SCROLL HINT ═══ */
.scroll-hint{
  position:absolute;
  bottom:4vh;
  left:50%;
  transform:translate3d(-50%,0,0);

  z-index:12;
  pointer-events:none;

  animation:hP 2s ease-in-out infinite;

  will-change:opacity, transform;

  transition:
    opacity .9s cubic-bezier(.16,1,.3,1),
    transform .9s cubic-bezier(.16,1,.3,1);
}

/* smooth exit */
.hero.done .scroll-hint{
  opacity:0;
  transform:translate3d(-50%,16px,0);
}

/* animation */
@keyframes hP{
  0%,100%{opacity:.2;transform:translate3d(-50%,0,0)}
  50%{opacity:.45;transform:translate3d(-50%,6px,0)}
}

/* ═══ LOGO SYSTEM (STABLE UI LAYER) ═══ */
.logo-top{
  position:fixed;
  top:10px;
  left:50%;
  transform:translate3d(-50%,0,0);

  z-index:100;

  opacity:0;
  pointer-events:none;

  will-change:opacity, transform;

  transition:
    opacity .85s cubic-bezier(.16,1,.3,1),
    transform .85s cubic-bezier(.16,1,.3,1);
}

.logo-top.show{
  opacity:.38;
  pointer-events:auto;
}

.logo-top:hover{
  opacity:.65;
  transform:translate3d(-50%,0,0) scale(1.03);
}

/* soft scroll state (no layout disruption) */
body.scrolling .logo-top{
  opacity:.28;
}
/* Main */
.main-content{
  position:relative;
  z-index:5;
}

.canvas-stage{
  position:relative;
  width:100%;
  aspect-ratio:var(--canvas-ratio);
  z-index:1;
}

#terra_canvas{
  width:100%;
  height:100%;
  display:block;
}

.gothic-title{
  position:absolute;
  top:50%;
  left:50%;
  transform:translate(-50%,-50%);
  width:100%;
  text-align:center;
  z-index:2;
  pointer-events:none;
  user-select:none;
  font-family:"UnifrakturCook",serif;
  font-weight:700;
  font-size:clamp(38px,11vw,160px);
  letter-spacing:.04em;
  opacity:.14;
  color:rgba(2,26,19,.75)!important;
  transition:opacity .3s,filter .3s;
  background:linear-gradient(90deg,rgba(255,255,255,0) 0%,rgba(255,255,255,.18) 50%,rgba(255,255,255,0) 100%);
  -webkit-background-clip:text;
  -webkit-text-fill-color:transparent;
  background-clip:text;
}

/* ═══ TREE ═══ */
.tree-section{
  position:relative;
  z-index:10;
  transition:opacity 1.2s;

  /* Soft "field-out" lighting rising from the partner-network boundary upward.
     Brightness peaks just above the seam (so it visually feeds into the roots area
     without creating a hard horizontal line) and fades to transparent around the
     FIELD INTELLIGENCE row of the tree, leaving the upper tree untouched. */
  background:linear-gradient(
    to bottom,
    transparent 0%,
    transparent 30%,
    rgba(0,199,163,0.022) 48%,
    rgba(0,199,163,0.06) 70%,
    rgba(0,199,163,0.11) 90%,
    rgba(0,199,163,0.085) 100%
  );
}

/* Container: definiert die vertikale Achse zwischen Krone und Roots */
.tree-wrap{
  width:100%;
  display:flex;
  justify-content:center;

  /* Pulled further up so the tree starts right where the (now shifted-up) crown ends,
     preserving the original crown → stem proportions. */
  margin-top:-16vw;
  padding:0 1rem 0;

  position:relative;
  align-items:stretch;
}

/* → STRICH: durchgehende vertikale Achse (Krone → Root-Knotenbereich) */
.tree-stem{
  position:absolute;
  left:50%;

  top:-10vw;
  bottom:0;

  width:1px;
  transform:translateX(-50%) scaleY(0);
  transform-origin:top center;
  z-index:0;
  pointer-events:none;

  background:linear-gradient(
    to bottom,
    rgba(0,199,163,.05),
    rgba(0,199,163,.18) 25%,
    rgba(0,199,163,.30) 70%,
    rgba(0,199,163,.35)
  );

  /* Stem "draws" from top → bottom once the tree-wrap enters the viewport. */
  transition:transform 1.6s cubic-bezier(.22,.61,.36,1) .15s;
}

.tree-wrap.revealed .tree-stem{
  transform:translateX(-50%) scaleY(1);
}

.tree{
  position:relative;
  width:clamp(200px,28vw,360px);
  display:flex;
  flex-direction:column;
  align-items:center;
  z-index:1;

  margin:0;
  padding-bottom:0;
}

/* Items */
.tree details{
  text-align:center;
  border-left:1px solid var(--line);
  border-right:1px solid var(--line);
  padding:4px 8px;
  margin-bottom:7px;
  border-radius:5px;
  background:transparent;
  width:100%;

  /* Scroll-reveal base state – each item starts lifted + faded, waits for IntersectionObserver */
  opacity:0;
  transform:translateY(26px);
  filter:blur(1px);
  --reveal-delay:0ms;

  transition:
    opacity .85s cubic-bezier(.22,.61,.36,1) var(--reveal-delay),
    transform .85s cubic-bezier(.22,.61,.36,1) var(--reveal-delay),
    filter .85s cubic-bezier(.22,.61,.36,1) var(--reveal-delay),
    border-color .35s cubic-bezier(.16,1,.3,1),
    max-width .55s cubic-bezier(.16,1,.3,1),
    padding .4s cubic-bezier(.16,1,.3,1),
    background-color .35s ease;
}

.tree details.revealed{
  opacity:1;
  transform:translateY(0);
  filter:blur(0);
}

.tree .details-body{
  overflow:hidden;
  opacity:1;
  will-change:height,opacity;
  contain:layout paint;
  transform:translateZ(0);
  transition:
    height .45s cubic-bezier(.22,.61,.36,1),
    opacity .4s cubic-bezier(.22,.61,.36,1);
}

.tree details:nth-child(1){max-width:38%}
.tree details:nth-child(2){max-width:39%}
.tree details:nth-child(3){max-width:40%}
.tree details:nth-child(4){max-width:41%}
.tree details:nth-child(5){max-width:42%}
.tree details:nth-child(6){max-width:43%}
.tree details:nth-child(7){max-width:44%}
.tree details:nth-child(8){max-width:45%}
.tree details:nth-child(9){max-width:47%}

.tree details:hover,
.tree details[open]{
  border-color:#89f3dd;
}

.tree details[open]{
  max-width:72%!important;
  padding:6px 14px;
  background:rgba(0,199,163,.04);
}

/* Text */
.tree summary{
  cursor:pointer;
  list-style:none;

  font-size:clamp(10px,1.1vw,14px);
  font-weight:500;
  color:rgba(205,236,228,.8);

  display:flex;
  flex-direction:column;
  align-items:center;
  gap:2px;
  justify-content:center;

  transition:color .3s,text-shadow .3s;
}

.tree summary::-webkit-details-marker{display:none}

.tree summary::after{
  content:"";
  display:inline-block;

  width:5px;
  height:5px;

  border-right:1px solid var(--line);
  border-bottom:1px solid var(--line);

  transform:rotate(45deg);
  transition:transform .25s;
  margin-top:2px;
  opacity:.6;
}

.tree details[open] summary::after{
  transform:rotate(-135deg);
}

.tree details[open] summary{
  color:#fff!important;
  text-shadow:0 0 20px rgba(0,199,163,.7),
              0 0 40px rgba(0,199,163,.3);
}

.tree details[open] p,
.tree details[open] ul,
.tree details[open] li{
  opacity:1!important;
  color:#e8fff6!important;
  text-shadow:0 0 6px rgba(0,199,163,.15);
}

.tree p,
.tree ul{
  margin:7px 0 2px;

  font-size:clamp(9px,.85vw,12px);
  line-height:1.5;

  color:rgba(205,236,228,.65);
  opacity:.9;

  text-align:center;
  padding:0 4px;

  transition:color .3s,opacity .3s;
}

.tree ul{
  padding-left:0;
  list-style:none;
  text-align:center;
}

.tree ul li::before{
  content:"· ";
  color:var(--line);
  opacity:.5;
}
/* ═══ ROOTS ═══ */
.roots-section{
  position:relative;
  overflow:visible;
  background:linear-gradient(to bottom,var(--bg) 0%,#021710 15%,#01130d 50%,#010e09 100%);
  padding-bottom:80px;
  transform: translateY(-1.2vw);
}

#rootCanvas{
  position:absolute;
  inset:0;
  width:100%;
  height:100%;
  z-index:1;
}

.roots-fade-top{
  position:absolute;
  top:0;
  left:0;
  right:0;
  height:50px;
  background:linear-gradient(to bottom,var(--bg),transparent);
  z-index:5;
  pointer-events:none;
}

.roots-title{
  position:absolute;
  top:50%;
  left:50%;
  transform:translate(-50%,-50%);
  width:100%;
  text-align:center;
  z-index:0;
  pointer-events:none;
  user-select:none;
  font-family:"UnifrakturCook",serif;
  font-weight:500;
  font-size:clamp(38px,11vw,160px);
  letter-spacing:.04em;
  opacity:.30;
  color:rgba(2,26,19,.75);
  background:linear-gradient(90deg,rgba(255,255,255,0) 0%,rgba(255,255,255,.18) 50%,rgba(255,255,255,0) 100%);
  -webkit-background-clip:text;
  -webkit-text-fill-color:transparent;
  background-clip:text;
  filter:drop-shadow(0 0 12px #00c7a3);
}

#rootNodes{
  position:absolute;
  inset:0;
  z-index:10;
}

.rnode{
  position:absolute;
  z-index:10;
  transform:translate(-50%,-50%);
  cursor:pointer;
  text-align:center;
  opacity:0;
  transition:opacity 1s;
}

.rnode.show{opacity:1}

.rnode-dot{display:none}

.rnode-name{
  font-size:clamp(11px,1.2vw,16px);
  font-weight:500;
  color:var(--text);
  opacity:.7;
  white-space:nowrap;
  transition:opacity .3s;
}

.rnode:hover .rnode-name{opacity:.85}

.rnode-arrow{
  display:block;
  width:5px;
  height:5px;
  border-right:1px solid var(--line);
  border-bottom:1px solid var(--line);
  transform:rotate(45deg);
  margin:3px auto 0;
  opacity:.35;
  transition:transform .3s,opacity .3s;
}

.rnode.open .rnode-arrow{
  transform:rotate(-135deg);
  opacity:.55;
}

.rnode-info{
  max-width:clamp(180px,20vw,280px);
  margin:6px auto 0;
  font-size:clamp(8px,.75vw,11px);
  line-height:1.55;
  color:var(--text);
  opacity:0;
  max-height:0;
  overflow:hidden;
  transition:opacity .4s ease,transform .4s cubic-bezier(.16,1,.3,1);
  text-align:left;
  pointer-events:none;
}

/* When a partner is opened we detach its .rnode-info from the transformed .rnode parent
   (which would otherwise become its containing block for position:fixed) and append it to <body>,
   adding .popup so it is displayed as a centered modal that works on desktop and mobile alike. */
.rnode-info.popup{
  position:fixed;
  left:50%;
  top:50%;
  transform:translate(-50%,-50%) scale(1);
  width:min(360px,90vw);
  max-width:none;
  max-height:min(70vh,560px);
  overflow-y:auto;
  z-index:9998;
  opacity:1;
  background:rgba(1,14,9,.97);
  border:1px solid rgba(0,199,163,.28);
  box-shadow:0 18px 60px rgba(0,0,0,.55),0 0 0 1px rgba(0,199,163,.08);
  padding:18px 20px 16px;
  border-radius:6px;
  pointer-events:auto;
  font-size:clamp(11px,1vw,13px);
  line-height:1.55;
  color:var(--text);
  text-align:left;
  animation:rnodePopupIn .32s cubic-bezier(.16,1,.3,1);
}

@keyframes rnodePopupIn{
  from{opacity:0;transform:translate(-50%,-46%) scale(.96)}
  to{opacity:1;transform:translate(-50%,-50%) scale(1)}
}

.rnode-info .role-label{
  display:block;
  color:rgba(0,199,163,.95);
  font-weight:500;
  letter-spacing:2px;
  font-size:.78em;
  margin:10px 0 4px;
  text-transform:uppercase;
}

.rnode-info a{
  color:rgba(0,199,163,.8);
  text-decoration:none;
  border-bottom:1px solid rgba(0,199,163,.3);
  transition:color .2s,border-color .2s;
}

.rnode-info a:hover{
  color:rgba(120,255,220,1);
  border-color:rgba(120,255,220,.6);
}

body.rnode-popup-open::after{
  content:"";
  position:fixed;
  inset:0;
  background:rgba(0,0,0,.55);
  backdrop-filter:blur(4px);
  -webkit-backdrop-filter:blur(4px);
  z-index:9990;
  opacity:1;
  animation:rnodeBackdropIn .3s ease;
}

@keyframes rnodeBackdropIn{
  from{opacity:0}
  to{opacity:1}
}

.rnode .rnode-info input,
.rnode .rnode-info textarea,
.rnode .rnode-info button{
  pointer-events:auto;
}

.rnode-country{
  font-size:.78em;
  letter-spacing:2px;
  color:rgba(140,240,215,.75);
  opacity:1;
  margin-bottom:4px;
  font-weight:500;
  text-transform:uppercase;
}

.footer{
  text-align:center;
  padding:2rem 1rem 1.5rem;
  display:flex;
  justify-content:center;
  gap:clamp(12px,2.5vw,28px);
  flex-wrap:wrap;
  background:#010a07;
}

.footer a{
  color:rgba(0,199,163,.3);
  font-size:clamp(9px,.7vw,11px);
  text-decoration:none;
  letter-spacing:2px;
  font-weight:500;
  transition:color .3s;
}

.footer a:hover{
  color:rgba(0,199,163,.55);
}
/* ═══ MOBILE ═══ */
@media(max-width:640px){
  .canvas-stage{aspect-ratio:1200/680}
  .tree{width:clamp(180px,58vw,280px)}
  .tree-wrap{margin-top:-14vw}
  .tree summary{font-size:clamp(10px,3.2vw,14px)}
  .tree p,.tree ul{font-size:clamp(8px,2.5vw,11px)}
  .tree details[open]{max-width:85%!important}
  .hero-cam{top:38%}
  .hero-headline{bottom:16vh}
  .hero-headline h1{width:clamp(200px,62vw,300px)}
  .hero-headline h1 .hl-somera,.hero-headline h1 .hl-terra{font-size:clamp(13px,5vw,20px)}
  .hero-headline h1 .hl-x{font-size:clamp(7px,2vw,9px)}
}
@media(max-width:400px){
  .tree{width:clamp(160px,62vw,240px)}
  .tree details{padding:4px 6px;margin-bottom:6px}
}

@media(max-width:640px){
  .rnode-info.popup{
    width:min(340px,92vw);
    padding:16px 16px 14px;
    font-size:12px;
  }
}

/* ===== block 1 (head) ===== */

.hero-options{
  position:absolute;
  z-index:12;
  left:50%;
  top:50%;
  transform:translate3d(-50%,calc(-50% + 12px),0);

  display:flex;
  gap:clamp(12px,1.6vw,22px);
  align-items:stretch;
  justify-content:center;

  opacity:0;
  pointer-events:none;

  will-change:opacity, transform;

  transition:
    opacity 1.1s cubic-bezier(.16,1,.3,1) .2s,
    transform 1.1s cubic-bezier(.16,1,.3,1) .2s;
}

.hero-options.ready{
  opacity:1;
  transform:translate3d(-50%,-50%,0);
  pointer-events:auto;
}

.hero.done .hero-options{
  opacity:0;
  transform:translate3d(-50%,calc(-50% - 8px),0);
  pointer-events:none;
  transition:
    opacity .6s cubic-bezier(.16,1,.3,1),
    transform .6s cubic-bezier(.16,1,.3,1);
}

.hero-opt{
  position:relative;
  display:inline-flex;
  flex-direction:column;
  align-items:center;
  justify-content:center;
  gap:0;

  min-width:clamp(130px,14vw,170px);
  padding:clamp(14px,1.5vw,18px) clamp(20px,2.4vw,32px);

  font-family:'DM Sans',sans-serif;
  text-decoration:none;
  color:rgba(205,236,228,.78);

  background:rgba(2,26,19,.35);
  border:1px solid rgba(180,195,188,.22);
  border-radius:3px;
  backdrop-filter:blur(2px);
  -webkit-backdrop-filter:blur(2px);

  cursor:pointer;
  user-select:none;

  transition:
    border-color .45s cubic-bezier(.16,1,.3,1),
    background-color .45s cubic-bezier(.16,1,.3,1),
    color .35s cubic-bezier(.16,1,.3,1),
    transform .45s cubic-bezier(.16,1,.3,1),
    box-shadow .45s cubic-bezier(.16,1,.3,1);
}

.hero-opt::before{
  content:"";
  position:absolute;
  left:14%;
  right:14%;
  top:0;
  height:1px;
  background:linear-gradient(90deg,
    transparent 0%,
    rgba(0,199,163,.0) 15%,
    rgba(0,199,163,.55) 50%,
    rgba(0,199,163,.0) 85%,
    transparent 100%);
  opacity:0;
  transition:opacity .45s cubic-bezier(.16,1,.3,1);
}

.hero-opt:hover{
  border-color:rgba(0,199,163,.55);
  background:rgba(0,199,163,.06);
  color:#e8fff6;
  transform:translateY(-1px);
  box-shadow:
    0 12px 32px rgba(0,0,0,.35),
    0 0 0 1px rgba(0,199,163,.10);
}

.hero-opt:hover::before{ opacity:1; }

.hero-opt-label{
  font-size:clamp(10px,.92vw,12px);
  font-weight:500;
  letter-spacing:.32em;
  line-height:1;
  text-transform:uppercase;
  white-space:nowrap;
}

.hero-opt-sub{
  font-size:clamp(7.5px,.62vw,9px);
  font-weight:400;
  letter-spacing:.22em;
  opacity:.55;
  text-transform:uppercase;
  white-space:nowrap;
}

.hero-opt-dot{
  position:absolute;
  top:6px;
  right:8px;
  width:5px;
  height:5px;
  border-radius:50%;
  background:rgba(0,199,163,.55);
  box-shadow:0 0 8px rgba(0,199,163,.6);
  animation:hOptPulse 2.4s ease-in-out infinite;
}

.hero-opt[data-variant="alt"] .hero-opt-dot{
  background:rgba(180,195,188,.5);
  box-shadow:none;
  animation:none;
}

@keyframes hOptPulse{
  0%,100%{opacity:.35;transform:scale(1)}
  50%{opacity:.85;transform:scale(1.25)}
}

/* Dezente Legal-Leiste unten im Hero (Impressum/Datenschutz = DE-Pflicht). */
.hero-legal{
  position:absolute;
  z-index:12;
  left:50%;
  bottom:18px;
  transform:translateX(-50%);
  display:flex;
  gap:18px;
  pointer-events:auto;
}
.hero-legal a{
  font-family:'DM Sans',sans-serif;
  font-size:10px;
  letter-spacing:.18em;
  text-transform:uppercase;
  color:rgba(180,195,188,.3);
  text-decoration:none;
  transition:color .25s;
}
.hero-legal a:hover{ color:rgba(180,195,188,.6); }
.hero.burst .hero-legal{ opacity:0; pointer-events:none; transition:opacity .4s; }

/* ═══ SCROLL HINT — entfernt: Animation startet ausschließlich
   per Klick auf CORTEX LIVE oder SOMERA HP. Bleibt im DOM für
   Rückwärts-Kompatibilität, ist aber permanent unsichtbar. */
.scroll-hint{ display:none; }

/* ═══ CORTEX BURST ═══
   Konvergenz-Animation (im Canvas) — keine CSS-Ringe mehr. Sterne
   strömen zum Zentrum, dazu kurze Synapsen-Linien zwischen Paaren,
   am Ende ein heller Kern-Glow als Signal-Übergang. Implementiert
   in drawHero() via cortexP. */
.hero.burst{
  transition: opacity 1.4s cubic-bezier(.16,1,.3,1);
}
.hero.burst.fadeout{
  opacity:0;
  pointer-events:none;
}

/* ═══ CORTEX RESULT OVERLAY ═══
   In-Page Vollbild-Panel mit Fazit + Ereignissen + Erklärungen.
   Wird vom CORTEX-Burst geöffnet, schließt zurück zum Hero. */
.cortex-result{
  position:fixed;
  inset:0;
  z-index:200;
  /* Transluzent — das lebende Cortex-Mesh im Hero-Canvas scheint durch.
     Leichter Blur + Scrim halten Text trotzdem gut lesbar. */
  background:radial-gradient(ellipse at center,
    rgba(2,26,19,0.26) 0%,
    rgba(1,14,9,0.56) 100%);
  backdrop-filter:blur(0.5px);
  -webkit-backdrop-filter:blur(0.5px);
  color:rgba(205,236,228,.92);
  font-family:'DM Sans',sans-serif;
  opacity:0;
  pointer-events:none;
  transform:translateZ(0) scale(.98);
  transition:
    opacity .9s cubic-bezier(.16,1,.3,1),
    transform .9s cubic-bezier(.16,1,.3,1);
  display:flex;
  flex-direction:column;
  align-items:center;
  justify-content:center;
  padding:clamp(18px,4vh,48px) clamp(16px,5vw,80px);
  overflow-y:auto;
}
.cortex-result.show{
  opacity:1;
  pointer-events:auto;
  transform:translateZ(0) scale(1);
}
.cortex-result .cr-inner{
  width:100%;
  max-width:680px;
  display:flex;
  flex-direction:column;
  align-items:center;
  gap:clamp(12px,2vh,22px);
}

/* ═══ LAYOUT — professionelle Abstände ═══ */
/* Persönliche Hero-Aussage — der primäre Fokus. */
.cortex-result .cr-personal-text{
  font-size:clamp(15px,1.7vw,21px);
  font-weight:500;
  line-height:1.5;
  letter-spacing:.004em;
  text-align:center;
  color:#eafff8;
  max-width:700px;
  margin:0 auto;
  text-wrap:balance;
}
.cortex-result .cr-personal-text strong{
  color:#7fffd8;
  font-weight:600;
}
/* Dynamik-Zeile — Dauer + Tendenz + „täglich lohnt sich". */
.cortex-result .cr-dynamics{
  font-size:clamp(13px,1.25vw,16px);
  line-height:1.55;
  text-align:center;
  color:rgba(205,236,228,.6);
  max-width:600px;
  margin:0 auto;
  text-wrap:balance;
}
.cortex-result .cr-dynamics strong{
  color:rgba(127,255,216,.85);
  font-weight:600;
}
/* Korrelations-Zeile — aktuelles Kopplungs-Verhalten der Quellen. */
.cortex-result .cr-correlation{
  font-size:clamp(13px,1.25vw,16px);
  line-height:1.55;
  text-align:center;
  color:rgba(205,236,228,.6);
  max-width:600px;
  margin:0 auto;
  text-wrap:balance;
}
.cortex-result .cr-correlation strong{
  color:rgba(127,255,216,.85);
  font-weight:600;
}
.cortex-result .cr-dyn-nudge{
  display:block;
  margin-top:6px;
  font-size:.86em;
  color:rgba(0,199,163,.7);
}
/* Ampel — zentriert im Content-Flow, Glow-Anker oben, Text darunter */
.cortex-result .cr-ampel{
  display:flex;
  flex-direction:column;
  align-items:center;
  gap:2px;
  margin:clamp(6px,1.2vh,14px) auto;
  text-align:center;
}
.cortex-result .cr-ampel-glow-anchor{
  display:block;
  width:1px; height:1px;
  margin-bottom:18px;
}
.cortex-result .cr-ampel-label{
  font-size:clamp(13px,1.4vw,17px);
  font-weight:500;
  letter-spacing:.14em;
  text-transform:uppercase;
  color:var(--ampel-color);
  text-shadow:0 0 18px var(--ampel-color), 0 0 40px color-mix(in srgb, var(--ampel-color) 40%, transparent);
}
.cortex-result .cr-ampel-state{
  font-size:clamp(10px,1vw,12px);
  font-weight:500;
  letter-spacing:.08em;
  text-transform:uppercase;
  color:rgba(205,236,228,.55);
}
.cortex-result .cr-ampel-trend{
  margin-top:4px;
  display:inline-flex;
  align-items:center;
  gap:5px;
  font-family:"SF Mono","Menlo",monospace;
  font-size:10px;
  letter-spacing:.16em;
  text-transform:uppercase;
  color:rgba(205,236,228,.5);
}
.cortex-result .cr-ampel-trend .arr{
  color:var(--ampel-color);
  font-size:12px;
  line-height:1;
}
/* Interaktiver Quellenname im Fazit — klickt zur Erklärung + Quelle. */
.cortex-result .cr-inline-src{
  color:#7fffd8;
  font-weight:500;
  cursor:pointer;
  text-decoration:none;
  border-bottom:1px dashed rgba(127,255,216,.55);
  transition:border-color .2s,color .2s;
}
.cortex-result .cr-inline-src:hover{
  border-bottom-style:solid;
  color:#a8ffe6;
}
/* Lead-in „Ein möglicher Grund für die Müdigkeit:" — eigene, ruhige Zeile */
.cortex-result .cr-personal-text .cr-lead-in{
  display:block;
  font-size:.62em;
  font-weight:600;
  letter-spacing:.04em;
  color:rgba(205,236,228,.55);
  margin-bottom:.55em;
}
/* Kombinations-/Konvergenz-Aussage — das Herzstück, dezent akzentuiert. */
.cortex-result .cr-combo{
  font-size:clamp(14px,1.45vw,18px);
  line-height:1.55;
  text-align:center;
  color:rgba(232,255,246,.9);
  max-width:640px;
  margin:0 auto;
  padding-top:clamp(4px,1.4vh,12px);
  border-top:1px solid rgba(0,199,163,.14);
  text-wrap:balance;
}
.cortex-result .cr-combo strong{ color:#a8ffe6; font-weight:600; }
.cortex-result .cr-combo-tag{
  display:block;
  font-family:"SF Mono","Menlo",monospace;
  font-size:10px;
  letter-spacing:.30em;
  text-transform:uppercase;
  color:rgba(0,199,163,.65);
  margin-bottom:10px;
}
/* Interpretations-Satz — sekundär, ruhig. */
.cortex-result .cr-interpret{
  font-size:clamp(14px,1.4vw,18px);
  line-height:1.55;
  text-align:center;
  color:rgba(205,236,228,.62);
  max-width:600px;
  margin:0 auto;
  text-wrap:balance;
}
/* Quellen inline, dezent — kein Rahmen, nur Punkte. */
.cortex-result .cr-sources-inline{
  display:flex;
  flex-wrap:wrap;
  justify-content:center;
  gap:8px 20px;
  font-size:clamp(12px,1.1vw,14px);
  color:rgba(205,236,228,.75);
}
.cortex-result .cr-sources-inline .cr-src{
  transition:opacity .2s ease;
}
.cortex-result .cr-sources-inline .cr-src:hover{ opacity:.65; }
/* „Effekte und Quellen" — als Link gestaltet (nicht als Pille). */
.cortex-result .cr-toggle{
  display:inline-flex;
  align-items:center;
  gap:8px;
  background:rgba(127,255,216,0.06);
  border:1px solid rgba(127,255,216,0.25);
  border-radius:8px;
  color:#7fffd8;
  font-family:'DM Sans',sans-serif;
  font-size:clamp(13px,1.3vw,16px);
  font-weight:600;
  letter-spacing:.02em;
  padding:clamp(8px,1.2vh,12px) clamp(16px,2vw,24px);
  cursor:pointer;
  transition:all .2s ease;
}
.cortex-result .cr-toggle:hover{
  background:rgba(127,255,216,0.10);
  border-color:rgba(127,255,216,0.45);
  color:#a8ffe6;
}
.cortex-result .cr-toggle .chev{ opacity:.75; font-size:.9em; }

/* ═══ POP-UP „Effekte und Quellen" ═══ */
.cortex-result .cr-popup{
  position:fixed;
  inset:0;
  z-index:60;
  display:flex;
  align-items:center;
  justify-content:center;
  padding:clamp(16px,4vh,40px) clamp(16px,4vw,40px);
  background:rgba(1,10,7,.62);
  backdrop-filter:blur(5px);
  -webkit-backdrop-filter:blur(5px);
  opacity:0;
  pointer-events:none;
  transition:opacity .3s ease;
}
.cortex-result .cr-popup.open{ opacity:1; pointer-events:auto; }
.cortex-result .cr-popup-card{
  position:relative;
  width:min(640px,94vw);
  max-height:84vh;
  overflow-y:auto;
  background:#04211a;
  border:1px solid rgba(0,199,163,.22);
  border-radius:14px;
  box-shadow:0 24px 70px rgba(0,0,0,.6), 0 0 0 1px rgba(0,199,163,.06);
  padding:clamp(22px,3.4vh,34px) clamp(20px,3.6vw,36px);
  display:flex;
  flex-direction:column;
  gap:clamp(16px,2.4vh,24px);
  transform:translateY(12px) scale(.99);
  transition:transform .38s cubic-bezier(.16,1,.3,1);
}
.cortex-result .cr-popup.open .cr-popup-card{ transform:translateY(0) scale(1); }
.cortex-result .cr-popup-title{
  font-family:"SF Mono","Menlo",monospace;
  font-size:10px;
  letter-spacing:.30em;
  text-transform:uppercase;
  color:rgba(0,199,163,.7);
  text-align:center;
}
.cortex-result .cr-popup-close{
  position:absolute;
  top:12px;
  right:14px;
  width:32px;
  height:32px;
  border-radius:50%;
  background:transparent;
  border:1px solid rgba(180,195,188,.22);
  color:rgba(205,236,228,.7);
  font-size:17px;
  cursor:pointer;
  display:flex;
  align-items:center;
  justify-content:center;
  transition:all .2s ease;
}
.cortex-result .cr-popup-close:hover{
  border-color:rgba(0,199,163,.5);
  color:#e8fff6;
  background:rgba(0,199,163,.06);
}
/* Aufklappbarer Detailbereich. */
.cortex-result .cr-details{
  width:100%;
  max-height:0;
  overflow:hidden;
  opacity:0;
  display:flex;
  flex-direction:column;
  gap:clamp(16px,2.4vh,26px);
  transition:max-height .55s cubic-bezier(.22,.61,.36,1),
             opacity .45s ease,
             margin .45s ease;
}
.cortex-result .cr-details.open{
  max-height:1400px;
  opacity:1;
  margin-top:4px;
}
/* σ-Legende — der Lernfaktor, nur im Detailbereich. */
.cortex-result .cr-explain .row .cr-live{
  margin-top:6px;
  font-size:clamp(11px,1.05vw,13px);
  line-height:1.45;
  color:#cfd6e4;
  opacity:.85;
  font-style:italic;
}
.cortex-result .cr-corr-block{
  margin-top:clamp(14px,2vh,22px);
  padding:clamp(12px,1.5vh,18px) clamp(14px,1.6vw,20px);
  background:rgba(255,255,255,0.03);
  border:1px solid rgba(255,255,255,0.08);
  border-radius:10px;
}
.cortex-result .cr-corr-title{
  font-size:clamp(11px,1.1vw,13px);
  font-weight:500;
  letter-spacing:.08em;
  text-transform:uppercase;
  color:#9fb0c8;
  margin-bottom:10px;
}
.cortex-result .cr-corr-row{
  display:flex;
  flex-direction:column;
  gap:2px;
  padding:8px 0;
  border-bottom:1px solid rgba(255,255,255,0.06);
}
.cortex-result .cr-corr-row:last-child{ border-bottom:0; }
.cortex-result .cr-corr-pair{
  font-size:clamp(12px,1.15vw,14px);
  color:#e7ecf5;
}
.cortex-result .cr-corr-pair strong{ color:#fff; font-weight:600; }
.cortex-result .cr-corr-meta{
  font-size:clamp(10px,1vw,12px);
  color:#8fa0b9;
  letter-spacing:.02em;
}
.cortex-result .cr-corr-toggle{
  margin-top:10px;
  background:transparent;
  border:1px solid rgba(255,255,255,0.15);
  color:#cfd6e4;
  padding:7px 14px;
  font-size:clamp(11px,1.05vw,13px);
  border-radius:6px;
  cursor:pointer;
  transition:all .15s ease;
}
.cortex-result .cr-corr-toggle:hover{
  background:rgba(255,255,255,0.06);
  border-color:rgba(255,255,255,0.25);
}
.cortex-result .cr-sigma-note{
  font-family:"SF Mono","Menlo",monospace;
  font-size:10px;
  line-height:1.5;
  letter-spacing:.04em;
  color:rgba(205,236,228,.4);
  text-align:center;
  margin:0;
  padding-top:4px;
}
.cortex-result .cr-kicker{
  font-family:"SF Mono","Menlo",monospace;
  font-size:10px;
  letter-spacing:.32em;
  text-transform:uppercase;
  color:rgba(0,199,163,.7);
  text-align:center;
  margin-top:clamp(18px,3.5vh,40px);
  margin-bottom:2px;
}
.cortex-result .cr-head{
  font-size:clamp(20px,2.4vw,32px);
  font-weight:600;
  line-height:1.25;
  text-align:center;
  color:#e8fff6;
  letter-spacing:.01em;
}
.cortex-result .cr-sub{
  font-size:clamp(14px,1.3vw,17px);
  line-height:1.5;
  text-align:center;
  color:rgba(205,236,228,.7);
  max-width:680px;
  margin:0 auto;
}
.cortex-result .cr-fazit{
  background:rgba(0,199,163,.045);
  border:1px solid rgba(0,199,163,.18);
  border-radius:6px;
  padding:clamp(14px,2vh,22px) clamp(16px,2.6vw,28px);
  font-size:clamp(14px,1.35vw,18px);
  line-height:1.55;
}
.cortex-result .cr-fazit p{ margin:0; }
.cortex-result .cr-fazit p + p{
  margin-top:10px;
  padding-top:10px;
  border-top:1px solid rgba(0,199,163,.12);
}
.cortex-result .cr-lead{
  color:rgba(205,236,228,.5);
  font-family:"SF Mono","Menlo",monospace;
  font-size:.78em;
  letter-spacing:.18em;
  text-transform:uppercase;
  margin-right:6px;
}
.cortex-result .cr-src{
  display:inline-flex;
  align-items:center;
  gap:6px;
  margin:0 4px;
  white-space:nowrap;
}
.cortex-result .cr-src .dot{
  width:7px;height:7px;border-radius:50%;
  background:var(--swatch,rgba(180,195,188,.4));
  box-shadow:0 0 8px var(--swatch,transparent);
  flex-shrink:0;
}
.cortex-result .cr-src em{
  font-style:normal;
  font-size:.82em;
  color:var(--swatch, rgba(205,236,228,.6));
  opacity:.9;
}

/* Events-Chip-Reihe */
.cortex-result .cr-events{
  display:flex;
  flex-wrap:wrap;
  justify-content:center;
  gap:8px 14px;
  font-family:"SF Mono","Menlo",monospace;
  font-size:11px;
  letter-spacing:.14em;
  text-transform:uppercase;
}
.cortex-result .cr-chip{
  padding:7px 11px;
  border:1px solid rgba(180,195,188,.22);
  border-radius:3px;
  color:rgba(205,236,228,.65);
  background:rgba(2,26,19,.4);
}
.cortex-result .cr-chip strong{
  color:#e8fff6;
  font-weight:600;
}

/* Erklärungs-Liste — kompakte, farbcodierte Reihen */
.cortex-result .cr-explain{
  display:flex;
  flex-direction:column;
  gap:9px;
}
.cortex-result .cr-explain .row{
  display:grid;
  grid-template-columns:10px 1fr auto;
  align-items:start;
  gap:12px;
  font-size:clamp(12px,1.05vw,14px);
  line-height:1.5;
  color:rgba(205,236,228,.82);
  padding:7px 0;
  border-bottom:1px solid rgba(180,195,188,.07);
}
.cortex-result .cr-explain .row:last-child{ border-bottom:0; }
.cortex-result .cr-explain .row{
  border-radius:6px;
  transition:background-color .4s ease;
}
.cortex-result .cr-explain .row.flash{
  animation:crRowFlash 1.6s ease;
}
@keyframes crRowFlash{
  0%,100%{ background:transparent; }
  18%    { background:rgba(0,199,163,.14); }
}
.cortex-result .cr-explain .row .dot{
  width:8px;height:8px;border-radius:50%;
  background:var(--swatch,rgba(180,195,188,.4));
  box-shadow:0 0 6px var(--swatch,transparent);
  margin-top:5px;
}
.cortex-result .cr-explain .row strong{
  color:#e8fff6;
  font-weight:600;
  margin-right:4px;
}
.cortex-result .cr-explain .row .z{
  font-family:"SF Mono","Menlo",monospace;
  font-size:10px;
  letter-spacing:.12em;
  color:rgba(205,236,228,.45);
  white-space:nowrap;
}
/* Quellen-Link pro Erklärung */
.cortex-result .cr-ref{
  display:inline-block;
  margin-top:3px;
  font-family:"SF Mono","Menlo",monospace;
  font-size:10px;
  letter-spacing:.06em;
  color:rgba(0,199,163,.72);
  text-decoration:none;
  border-bottom:1px solid rgba(0,199,163,.25);
  transition:color .2s,border-color .2s;
  white-space:nowrap;
}
.cortex-result .cr-ref:hover{
  color:#7fffd8;
  border-color:rgba(127,255,216,.6);
}

/* ═══ PERSÖNLICHE ZEILE (reagiert auf die Abstimmung) ═══
   Steht prominent oben — validiert das Gefühl des Nutzers und
   verknüpft es mit der aktuellen Datenlage. */
.cortex-result .cr-personal{
  font-size:clamp(15px,1.55vw,21px);
  line-height:1.55;
  text-align:center;
  color:#e8fff6;
  background:linear-gradient(180deg,
    rgba(0,199,163,.09) 0%,
    rgba(0,199,163,.04) 100%);
  border:1px solid rgba(0,199,163,.22);
  border-radius:10px;
  padding:clamp(16px,2.4vh,26px) clamp(20px,3.2vw,36px);
  max-width:720px;
  margin:0 auto;
}
.cortex-result .cr-personal strong{ color:#7fffd8; font-weight:600; }
.cortex-result .cr-personal .pm{
  display:block;
  font-family:"SF Mono","Menlo",monospace;
  font-size:10px;
  letter-spacing:.28em;
  text-transform:uppercase;
  color:rgba(0,199,163,.6);
  margin-bottom:10px;
}

/* Footer mit Quelle und Close */
.cortex-result .cr-extend{
  margin-top:clamp(10px,1.5vh,16px);
  display:flex;
  flex-direction:column;
  align-items:center;
  gap:clamp(8px,1.2vh,12px);
  width:100%;
  max-width:720px;
  margin-left:auto;
  margin-right:auto;
}
.cortex-result .cr-extend-title{
  font-size:clamp(11px,1.1vw,13px);
  font-weight:500;
  letter-spacing:.07em;
  text-transform:uppercase;
  color:#9fb0c8;
  text-align:center;
}
.cortex-result .cr-extend-pills{
  display:flex;
  flex-wrap:wrap;
  justify-content:center;
  gap:8px;
  width:100%;
}
.cortex-result .cr-extend-pill{
  padding:6px 12px;
  border-radius:20px;
  border:1.5px solid rgba(255,255,255,0.12);
  background:rgba(255,255,255,0.03);
  color:#b0bfd4;
  font-size:clamp(11px,1.05vw,13px);
  cursor:pointer;
  transition:all .15s ease;
  white-space:nowrap;
}
.cortex-result .cr-extend-pill:hover{
  border-color:rgba(255,255,255,0.25);
  background:rgba(255,255,255,0.07);
  color:#e7ecf5;
}
.cortex-result .cr-extend-pill:active{
  transform:scale(.94);
  transition:transform .08s ease;
}
.cortex-result .cr-extend-pill.active{
  border-color:var(--mood, #5e9bff);
  background:color-mix(in srgb, var(--mood, #5e9bff) 15%, transparent);
  color:#fff;
  font-weight:600;
}
.cortex-result .cr-extend-note{
  width:100%;
  box-sizing:border-box;
  background:rgba(255,255,255,0.04);
  border:1px solid rgba(255,255,255,0.1);
  border-radius:8px;
  color:#cfd6e4;
  font-family:inherit;
  font-size:clamp(12px,1.1vw,14px);
  padding:10px 12px;
  resize:vertical;
  min-height:64px;
  max-height:240px;
  outline:none;
  transition:border-color .15s ease;
  text-align:left;
}
.cortex-result .cr-note-warn{
  font-size:clamp(10px,1vw,12px);
  color:#f0c060;
  margin-top:-4px;
  align-self:flex-start;
  width:100%;
  text-align:left;
}
.cortex-result .cr-extend-note:focus{
  border-color:rgba(255,255,255,0.25);
}
.cortex-result .cr-extend-note::placeholder{ color:rgba(255,255,255,0.25); }
.cortex-result .cr-learn-more{
  display:inline-flex;
  align-items:center;
  gap:4px;
  font-size:clamp(11px,1.05vw,13px);
  color:#7fa8d4;
  text-decoration:none;
  opacity:.8;
  transition:opacity .15s ease;
  margin-top:6px;
  text-align:center;
}
.cortex-result .cr-learn-more:hover{ opacity:1; color:#a8d4f0; }
.cortex-result .cr-extend-note-trigger{
  border-style:dashed;
  color:#9fb0c8;
}
.cortex-result .cr-extend-note-trigger:hover{
  color:#cfd6e4;
}

/* Note Popup */
.cortex-result .cr-note-popup{
  position:fixed;
  inset:0;
  background:rgba(0,8,5,0.78);
  backdrop-filter:blur(8px);
  -webkit-backdrop-filter:blur(8px);
  display:flex;
  align-items:center;
  justify-content:center;
  z-index:1000;
  padding:clamp(16px,3vw,32px);
}
.cortex-result .cr-note-popup[hidden]{ display:none; }
.cortex-result .cr-note-popup-card{
  width:min(540px, 100%);
  background:rgba(8,28,22,0.96);
  border:1px solid rgba(127,255,216,0.15);
  border-radius:14px;
  padding:clamp(20px,3vh,28px);
  display:flex;
  flex-direction:column;
  gap:14px;
  position:relative;
  box-shadow:0 8px 40px rgba(0,0,0,0.5);
}
.cortex-result .cr-note-popup-close{
  position:absolute;
  top:10px;
  right:14px;
  background:transparent;
  border:0;
  color:#9fb0c8;
  font-size:24px;
  line-height:1;
  cursor:pointer;
  padding:4px 8px;
}
.cortex-result .cr-note-popup-close:hover{ color:#fff; }
.cortex-result .cr-note-popup-title{
  font-size:clamp(14px,1.4vw,17px);
  font-weight:600;
  color:#e7ecf5;
  text-align:center;
  letter-spacing:.02em;
}
.cortex-result .cr-note-popup .cr-extend-note{
  min-height:120px;
  max-height:300px;
}
.cortex-result .cr-note-save{
  align-self:center;
  background:rgba(127,255,216,0.12);
  border:1px solid rgba(127,255,216,0.35);
  color:#a8f0d4;
  padding:8px 22px;
  border-radius:7px;
  cursor:pointer;
  font-size:clamp(12px,1.1vw,14px);
  font-weight:600;
  letter-spacing:.04em;
  transition:all .15s ease;
}
.cortex-result .cr-note-save:hover{
  background:rgba(127,255,216,0.2);
  border-color:rgba(127,255,216,0.55);
  color:#fff;
}
.cortex-result .cr-geo{
  margin-top:clamp(10px,1.6vh,16px);
  display:flex;
  flex-direction:column;
  align-items:center;
  gap:8px;
  padding:clamp(10px,1.3vh,14px) clamp(14px,1.6vw,18px);
  background:rgba(255,255,255,0.025);
  border:1px solid rgba(255,255,255,0.07);
  border-radius:8px;
  font-size:clamp(11px,1.05vw,13px);
  color:#9fb0c8;
  width:100%;
  box-sizing:border-box;
  text-align:center;
}
.cortex-result .cr-geo[data-state="done"]{
  border-color:rgba(127,255,216,0.25);
  background:rgba(127,255,216,0.04);
  color:#a8d9c2;
}
.cortex-result .cr-geo[data-state="denied"]{
  opacity:.7;
}
.cortex-result .cr-geo-text{ flex:0 1 auto; }
.cortex-result .cr-geo-btn{
  flex:0 0 auto;
  background:transparent;
  border:1px solid rgba(255,255,255,0.18);
  color:#cfd6e4;
  padding:6px 12px;
  font-size:inherit;
  border-radius:6px;
  cursor:pointer;
  transition:all .15s ease;
}
.cortex-result .cr-geo-btn:hover{
  background:rgba(255,255,255,0.06);
  border-color:rgba(255,255,255,0.3);
}
.cortex-result .cr-geo[data-state="done"] .cr-geo-btn,
.cortex-result .cr-geo[data-state="denied"] .cr-geo-btn{ display:none; }
.cortex-result .cr-foot{
  display:flex;
  flex-direction:column;
  align-items:center;
  gap:6px;
  padding-top:clamp(8px,1.2vh,14px);
  text-align:center;
}
.cortex-result .cr-foot-toggle{
  font-family:"SF Mono","Menlo",monospace;
  font-size:10px;
  letter-spacing:.20em;
  text-transform:uppercase;
  color:rgba(205,236,228,.45);
  background:none; border:none;
  cursor:pointer;
  padding:4px 8px;
  transition:color .2s;
}
.cortex-result .cr-foot-toggle:hover{ color:rgba(205,236,228,.7); }
.cortex-result .cr-about{
  max-width:520px;
  font-size:clamp(10px,1vw,12px);
  line-height:1.55;
  color:rgba(205,236,228,.4);
  display:none;
}
.cortex-result .cr-about.open{ display:block; }
.cortex-result .cr-close{
  position:absolute;
  top:clamp(14px,3vh,24px);
  right:clamp(14px,3vw,28px);
  background:transparent;
  border:1px solid rgba(180,195,188,.22);
  color:rgba(205,236,228,.7);
  font-size:18px;
  width:36px;height:36px;
  border-radius:50%;
  cursor:pointer;
  transition:all .25s cubic-bezier(.16,1,.3,1);
  display:flex;
  align-items:center;
  justify-content:center;
  line-height:1;
}
.cortex-result .cr-close:hover{
  border-color:rgba(0,199,163,.5);
  color:#e8fff6;
  background:rgba(0,199,163,.06);
}
.cortex-result .cr-lang{
  /* Oben ausgeblendet — lebt jetzt inline im Footer-Bereich */
  display:none;
}
/* Inline-Variante im Template */
.cortex-result .cr-lang-inline{
  height:30px;
  padding:0 12px;
  border:1px solid rgba(180,195,188,.22);
  border-radius:15px;
  background:transparent;
  color:rgba(205,236,228,.7);
  font-family:"SF Mono","Menlo",monospace;
  font-size:11px;
  letter-spacing:.10em;
  cursor:pointer;
  transition:all .25s cubic-bezier(.16,1,.3,1);
  display:inline-flex;
  align-items:center;
  gap:5px;
}
.cortex-result .cr-lang-inline:hover{
  border-color:rgba(0,199,163,.5);
  background:rgba(0,199,163,.06);
}
.cortex-result .cr-lang-inline span{ opacity:.4; transition:opacity .2s,color .2s; }
.cortex-result .cr-lang-inline span.on{ opacity:1; color:#e8fff6; }
.cortex-result .cr-lang-inline .sep{ opacity:.3; }
.cortex-result .cr-lang:hover{
  border-color:rgba(0,199,163,.5);
  background:rgba(0,199,163,.06);
}
.cortex-result .cr-lang span{ opacity:.4; transition:opacity .2s,color .2s; }
.cortex-result .cr-lang span.on{ opacity:1; color:#e8fff6; }
.cortex-result .cr-lang .sep{ opacity:.3; }
.cortex-result .cr-loading,
.cortex-result .cr-error{
  text-align:center;
  font-family:"SF Mono","Menlo",monospace;
  font-size:11px;
  letter-spacing:.22em;
  text-transform:uppercase;
  color:rgba(205,236,228,.4);
  padding:60px 0;
}
.cortex-result .cr-error{ color:#ff8c42; }

/* ═══ VOTE-STAGE (Stimmungs-Abstimmung) ═══ */
.cortex-result .cr-vote-q{
  font-size:clamp(20px,2.5vw,31px);
  font-weight:600;
  line-height:1.4;
  text-align:center;
  color:#eafff8;
  max-width:620px;
  margin:0 auto;
  text-wrap:balance;
}
.cortex-result .cr-vote-grid{
  display:grid;
  grid-template-columns:repeat(4, minmax(0,1fr));
  gap:clamp(7px,1vw,12px);
  width:100%;
}
.cortex-result .cr-mood{
  position:relative;
  cursor:pointer;
  appearance:none;
  background:rgba(2,26,19,.5);
  border:1.5px solid var(--mood, rgba(180,195,188,.3));
  color:var(--mood, #cdece4);
  border-radius:12px;
  /* Dot oben hat genug Atem-Raum über dem Label */
  padding:36px 10px 18px;
  font-family:inherit;
  font-size:clamp(13px,1.2vw,16px);
  font-weight:600;
  letter-spacing:.03em;
  text-align:center;
  backdrop-filter:blur(6px);
  transition:transform .2s ease,border-color .25s ease,background-color .25s ease;
}
.cortex-result .cr-mood::before{
  content:"";
  position:absolute;
  top:15px; left:50%; transform:translateX(-50%);
  width:8px; height:8px;
  border-radius:50%;
  background:var(--mood, rgba(180,195,188,.5));
  box-shadow:0 0 12px var(--mood, transparent);
}
.cortex-result .cr-mood .ml{
  display:block;
  font-size:clamp(12px,1.1vw,14px);
  font-weight:500;
  letter-spacing:.02em;
  color:var(--mood, #cdece4);
}
.cortex-result .cr-mood .ms{
  display:block;
  margin-top:5px;
  font-size:9px;
  letter-spacing:.15em;
  color:rgba(205,236,228,.45);
  text-transform:uppercase;
  font-weight:500;
}
.cortex-result .cr-mood:hover{
  transform:translateY(-2px);
  background:rgba(2,26,19,.7);
}
.cortex-result .cr-mood:active{
  transform:scale(.96);
  transition:transform .08s ease;
  background:color-mix(in srgb, var(--mood, #00c7a3) 14%, rgba(2,26,19,.7));
}
@keyframes crMoodPulse{
  0%   { box-shadow:0 0 0 0   color-mix(in srgb, var(--mood, #00c7a3) 55%, transparent); }
  70%  { box-shadow:0 0 0 14px color-mix(in srgb, var(--mood, #00c7a3) 0%,  transparent); }
  100% { box-shadow:0 0 0 0   color-mix(in srgb, var(--mood, #00c7a3) 0%,  transparent); }
}
.cortex-result .cr-mood.is-tapped{
  animation:crMoodPulse .55s ease-out;
}
.cortex-result .cr-vote-hint{
  font-family:"SF Mono","Menlo",monospace;
  font-size:10px;
  letter-spacing:.2em;
  text-transform:uppercase;
  color:rgba(205,236,228,.4);
  text-align:center;
}
.cortex-result .cr-privacy-hint{
  font-size:10px;
  line-height:1.5;
  color:rgba(205,236,228,.35);
  text-align:center;
  margin:12px 0 0;
  padding:0 8px;
}
.cortex-result .cr-privacy-hint a{
  color:rgba(0,199,163,.5);
  text-decoration:underline;
  text-underline-offset:2px;
}
.cortex-result .cr-privacy-hint a:hover{
  color:rgba(0,199,163,.8);
}
@media(max-width:640px){
  .cortex-result .cr-vote-grid{ grid-template-columns:repeat(2,1fr); gap:8px; }
}

/* ═══ LOGO SYSTEM (STABLE UI LAYER) ═══ */
.logo-top{
  position:fixed;
  top:10px;
  left:50%;
  transform:translate3d(-50%,0,0);

  z-index:100;

  opacity:0;
  pointer-events:none;

  will-change:opacity, transform;

  transition:
    opacity .85s cubic-bezier(.16,1,.3,1),
    transform .85s cubic-bezier(.16,1,.3,1);
}

.logo-top.show{
  opacity:.38;
  pointer-events:auto;
}

.logo-top:hover{
  opacity:.65;
  transform:translate3d(-50%,0,0) scale(1.03);
}

/* soft scroll state (no layout disruption) */
body.scrolling .logo-top{
  opacity:.28;
}
/* Main */
.main-content{
  position:relative;
  z-index:5;
}

.canvas-stage{
  position:relative;
  width:100%;
  aspect-ratio:var(--canvas-ratio);
  z-index:1;
}

#terra_canvas{
  width:100%;
  height:100%;
  display:block;
}

.gothic-title{
  position:absolute;
  top:50%;
  left:50%;
  transform:translate(-50%,-50%);
  width:100%;
  text-align:center;
  z-index:2;
  pointer-events:none;
  user-select:none;
  font-family:"UnifrakturCook",serif;
  font-weight:700;
  font-size:clamp(38px,11vw,160px);
  letter-spacing:.04em;
  opacity:.14;
  color:rgba(2,26,19,.75)!important;
  transition:opacity .3s,filter .3s;
  background:linear-gradient(90deg,rgba(255,255,255,0) 0%,rgba(255,255,255,.18) 50%,rgba(255,255,255,0) 100%);
  -webkit-background-clip:text;
  -webkit-text-fill-color:transparent;
  background-clip:text;
}

/* ═══ TREE ═══ */
.tree-section{
  position:relative;
  z-index:10;
  transition:opacity 1.2s;

  background:linear-gradient(
    to bottom,
    transparent 0%,
    transparent 30%,
    rgba(0,199,163,0.022) 48%,
    rgba(0,199,163,0.06) 70%,
    rgba(0,199,163,0.11) 90%,
    rgba(0,199,163,0.085) 100%
  );
}

.tree-wrap{
  width:100%;
  display:flex;
  justify-content:center;
  margin-top:-16vw;
  padding:0 1rem 0;
  position:relative;
  align-items:stretch;
}

.tree-stem{
  position:absolute;
  left:50%;
  top:-10vw;
  bottom:0;
  width:1px;
  transform:translateX(-50%) scaleY(0);
  transform-origin:top center;
  z-index:0;
  pointer-events:none;
  background:linear-gradient(
    to bottom,
    rgba(0,199,163,.05),
    rgba(0,199,163,.18) 25%,
    rgba(0,199,163,.30) 70%,
    rgba(0,199,163,.35)
  );
  transition:transform 1.6s cubic-bezier(.22,.61,.36,1) .15s;
}

.tree-wrap.revealed .tree-stem{
  transform:translateX(-50%) scaleY(1);
}

.tree{
  position:relative;
  width:clamp(200px,28vw,360px);
  display:flex;
  flex-direction:column;
  align-items:center;
  z-index:1;
  margin:0;
  padding-bottom:0;
}

.tree details{
  text-align:center;
  border-left:1px solid var(--line);
  border-right:1px solid var(--line);
  padding:4px 8px;
  margin-bottom:7px;
  border-radius:5px;
  background:transparent;
  width:100%;

  opacity:0;
  transform:translateY(26px);
  filter:blur(1px);
  --reveal-delay:0ms;

  transition:
    opacity .85s cubic-bezier(.22,.61,.36,1) var(--reveal-delay),
    transform .85s cubic-bezier(.22,.61,.36,1) var(--reveal-delay),
    filter .85s cubic-bezier(.22,.61,.36,1) var(--reveal-delay),
    border-color .35s cubic-bezier(.16,1,.3,1),
    max-width .55s cubic-bezier(.16,1,.3,1),
    padding .4s cubic-bezier(.16,1,.3,1),
    background-color .35s ease;
}

.tree details.revealed{
  opacity:1;
  transform:translateY(0);
  filter:blur(0);
}

.tree .details-body{
  overflow:hidden;
  opacity:1;
  will-change:height,opacity;
  contain:layout paint;
  transform:translateZ(0);
  transition:
    height .45s cubic-bezier(.22,.61,.36,1),
    opacity .4s cubic-bezier(.22,.61,.36,1);
}

.tree details:nth-child(1){max-width:38%}
.tree details:nth-child(2){max-width:39%}
.tree details:nth-child(3){max-width:40%}
.tree details:nth-child(4){max-width:41%}
.tree details:nth-child(5){max-width:42%}
.tree details:nth-child(6){max-width:43%}
.tree details:nth-child(7){max-width:44%}
.tree details:nth-child(8){max-width:45%}
.tree details:nth-child(9){max-width:47%}

.tree details:hover,
.tree details[open]{ border-color:#89f3dd; }

.tree details[open]{
  max-width:72%!important;
  padding:6px 14px;
  background:rgba(0,199,163,.04);
}

.tree summary{
  cursor:pointer;
  list-style:none;
  font-size:clamp(10px,1.1vw,14px);
  font-weight:500;
  color:rgba(205,236,228,.8);
  display:flex;
  flex-direction:column;
  align-items:center;
  gap:2px;
  justify-content:center;
  transition:color .3s,text-shadow .3s;
}

.tree summary::-webkit-details-marker{display:none}

.tree summary::after{
  content:"";
  display:inline-block;
  width:5px;
  height:5px;
  border-right:1px solid var(--line);
  border-bottom:1px solid var(--line);
  transform:rotate(45deg);
  transition:transform .25s;
  margin-top:2px;
  opacity:.6;
}

.tree details[open] summary::after{ transform:rotate(-135deg); }

.tree details[open] summary{
  color:#fff!important;
  text-shadow:0 0 20px rgba(0,199,163,.7),
              0 0 40px rgba(0,199,163,.3);
}

.tree details[open] p,
.tree details[open] ul,
.tree details[open] li{
  opacity:1!important;
  color:#e8fff6!important;
  text-shadow:0 0 6px rgba(0,199,163,.15);
}

.tree p,
.tree ul{
  margin:7px 0 2px;
  font-size:clamp(9px,.85vw,12px);
  line-height:1.5;
  color:rgba(205,236,228,.65);
  opacity:.9;
  text-align:center;
  padding:0 4px;
  transition:color .3s,opacity .3s;
}

.tree ul{
  padding-left:0;
  list-style:none;
  text-align:center;
}

.tree ul li::before{
  content:"· ";
  color:var(--line);
  opacity:.5;
}

/* ═══ ROOTS ═══ */
.roots-section{
  position:relative;
  overflow:visible;
  background:linear-gradient(to bottom,var(--bg) 0%,#021710 15%,#01130d 50%,#010e09 100%);
  padding-bottom:80px;
  transform: translateY(-1.2vw);
}

#rootCanvas{
  position:absolute;
  inset:0;
  width:100%;
  height:100%;
  z-index:1;
}

.roots-fade-top{
  position:absolute;
  top:0;
  left:0;
  right:0;
  height:50px;
  background:linear-gradient(to bottom,var(--bg),transparent);
  z-index:5;
  pointer-events:none;
}

.roots-title{
  position:absolute;
  top:50%;
  left:50%;
  transform:translate(-50%,-50%);
  width:100%;
  text-align:center;
  z-index:0;
  pointer-events:none;
  user-select:none;
  font-family:"UnifrakturCook",serif;
  font-weight:500;
  font-size:clamp(38px,11vw,160px);
  letter-spacing:.04em;
  opacity:.30;
  color:rgba(2,26,19,.75);
  background:linear-gradient(90deg,rgba(255,255,255,0) 0%,rgba(255,255,255,.18) 50%,rgba(255,255,255,0) 100%);
  -webkit-background-clip:text;
  -webkit-text-fill-color:transparent;
  background-clip:text;
  filter:drop-shadow(0 0 12px #00c7a3);
}

#rootNodes{
  position:absolute;
  inset:0;
  z-index:10;
}

.rnode{
  position:absolute;
  z-index:10;
  transform:translate(-50%,-50%);
  cursor:pointer;
  text-align:center;
  opacity:0;
  transition:opacity 1s;
}

.rnode.show{opacity:1}

.rnode-dot{display:none}

.rnode-name{
  font-size:clamp(11px,1.2vw,16px);
  font-weight:500;
  color:var(--text);
  opacity:.7;
  white-space:nowrap;
  transition:opacity .3s;
}

.rnode:hover .rnode-name{opacity:.85}

.rnode-arrow{
  display:block;
  width:5px;
  height:5px;
  border-right:1px solid var(--line);
  border-bottom:1px solid var(--line);
  transform:rotate(45deg);
  margin:3px auto 0;
  opacity:.35;
  transition:transform .3s,opacity .3s;
}

.rnode.open .rnode-arrow{
  transform:rotate(-135deg);
  opacity:.55;
}

.rnode-info{
  max-width:clamp(180px,20vw,280px);
  margin:6px auto 0;
  font-size:clamp(8px,.75vw,11px);
  line-height:1.55;
  color:var(--text);
  opacity:0;
  max-height:0;
  overflow:hidden;
  transition:opacity .4s ease,transform .4s cubic-bezier(.16,1,.3,1);
  text-align:left;
  pointer-events:none;
}

.rnode-info.popup{
  position:fixed;
  left:50%;
  top:50%;
  transform:translate(-50%,-50%) scale(1);
  width:min(360px,90vw);
  max-width:none;
  max-height:min(70vh,560px);
  overflow-y:auto;
  z-index:9998;
  opacity:1;
  background:rgba(1,14,9,.97);
  border:1px solid rgba(0,199,163,.28);
  box-shadow:0 18px 60px rgba(0,0,0,.55),0 0 0 1px rgba(0,199,163,.08);
  padding:18px 20px 16px;
  border-radius:6px;
  pointer-events:auto;
  font-size:clamp(11px,1vw,13px);
  line-height:1.55;
  color:var(--text);
  text-align:left;
  animation:rnodePopupIn .32s cubic-bezier(.16,1,.3,1);
}

@keyframes rnodePopupIn{
  from{opacity:0;transform:translate(-50%,-46%) scale(.96)}
  to{opacity:1;transform:translate(-50%,-50%) scale(1)}
}

.rnode-info .role-label{
  display:block;
  color:rgba(0,199,163,.95);
  font-weight:500;
  letter-spacing:2px;
  font-size:.78em;
  margin:10px 0 4px;
  text-transform:uppercase;
}

.rnode-info a{
  color:rgba(0,199,163,.8);
  text-decoration:none;
  border-bottom:1px solid rgba(0,199,163,.3);
  transition:color .2s,border-color .2s;
}

.rnode-info a:hover{
  color:rgba(120,255,220,1);
  border-color:rgba(120,255,220,.6);
}

body.rnode-popup-open::after{
  content:"";
  position:fixed;
  inset:0;
  background:rgba(0,0,0,.55);
  backdrop-filter:blur(4px);
  -webkit-backdrop-filter:blur(4px);
  z-index:9990;
  opacity:1;
  animation:rnodeBackdropIn .3s ease;
}

@keyframes rnodeBackdropIn{
  from{opacity:0}
  to{opacity:1}
}

.rnode .rnode-info input,
.rnode .rnode-info textarea,
.rnode .rnode-info button{
  pointer-events:auto;
}

.rnode-country{
  font-size:.78em;
  letter-spacing:2px;
  color:rgba(140,240,215,.75);
  opacity:1;
  margin-bottom:4px;
  font-weight:500;
  text-transform:uppercase;
}

.footer{
  text-align:center;
  padding:2rem 1rem 1.5rem;
  display:flex;
  justify-content:center;
  gap:clamp(12px,2.5vw,28px);
  flex-wrap:wrap;
  background:#010a07;
}

.footer a{
  color:rgba(0,199,163,.3);
  font-size:clamp(9px,.7vw,11px);
  text-decoration:none;
  letter-spacing:2px;
  font-weight:500;
  transition:color .3s;
}

.footer a:hover{
  color:rgba(0,199,163,.55);
}

/* ═══ MOBILE ═══ */
@media(max-width:640px){
  .canvas-stage{aspect-ratio:1200/680}
  .tree{width:clamp(180px,58vw,280px)}
  .tree-wrap{margin-top:-14vw}
  .tree summary{font-size:clamp(10px,3.2vw,14px)}
  .tree p,.tree ul{font-size:clamp(8px,2.5vw,11px)}
  .tree details[open]{max-width:85%!important}
  .hero-cam{top:36%}
  .hero-headline{bottom:22vh}
  .hero-headline h1{width:clamp(200px,62vw,300px)}
  .hero-headline h1 .hl-somera,.hero-headline h1 .hl-terra{font-size:clamp(13px,5vw,20px)}
  .hero-headline h1 .hl-x{font-size:clamp(7px,2vw,9px)}
  .hero-options{
    flex-direction:column;
    gap:10px;
  }
  .hero-opt{ min-width:clamp(200px,72vw,280px); }
}
@media(max-width:400px){
  .tree{width:clamp(160px,62vw,240px)}
  .tree details{padding:4px 6px;margin-bottom:6px}
}

@media(max-width:640px){
  .rnode-info.popup{
    width:min(340px,92vw);
    padding:16px 16px 14px;
    font-size:12px;
  }
}

/* Fusion: Startbildschirm = CORTEX/SOMERA-Wahl. Homepage-Hero-Elemente
   bleiben verborgen, bis SOMERA gewählt wird. */
.hero.choosing .hero-cam,
.hero.choosing .hero-mast-static,
.hero.choosing .hero-mast,
.hero.choosing .hero-word,
.hero.choosing .hero-headline{ opacity:0 !important; pointer-events:none; }


/* ===== block 2 id="ts-ext" ===== */

/* ===== Equal-width stem menu (override progressive nth-child widths) ===== */
.tree details.act{max-width:clamp(120px,15vw,180px)!important;width:100%!important}
.tree details.act[open]{max-width:clamp(120px,15vw,180px)!important;padding:4px 8px!important;background:transparent!important}
.tree details.act .details-body,.tree details.act > div{display:none!important}
.tree details.act summary{cursor:pointer}

/* ===== Generic SOMERA overlay ===== */
.ts-ov{position:fixed;inset:0;z-index:10000;display:none;background:#021a13;
  opacity:0;transition:opacity .45s cubic-bezier(.16,1,.3,1)}
.ts-ov.show{display:block;opacity:1}
.ts-ov-close{position:fixed;top:18px;right:22px;z-index:10010;width:38px;height:38px;
  border:1px solid rgba(0,199,163,.35);background:rgba(2,26,19,.7);color:#89f3dd;
  font-size:20px;line-height:36px;text-align:center;cursor:pointer;border-radius:6px;
  font-family:'DM Sans',sans-serif;transition:border-color .25s,color .25s}
.ts-ov-close:hover{border-color:#89f3dd;color:#fff}
.ts-ov-lang{position:fixed;top:20px;left:22px;z-index:10010;display:flex;gap:8px;
  font-family:ui-monospace,Menlo,monospace;font-size:11px;letter-spacing:2px}
.ts-ov-lang span{cursor:pointer;color:rgba(205,236,228,.5);padding:4px 8px;
  border:1px solid rgba(0,199,163,.18);border-radius:4px;transition:color .2s,border-color .2s}
.ts-ov-lang span.on{color:#fff;border-color:#89f3dd}
.ts-ov iframe{position:absolute;inset:0;width:100%;height:100%;border:0;display:block}
.ts-ov-scroll{position:absolute;inset:0;overflow-y:auto;-webkit-overflow-scrolling:touch}

/* ===== ORDER form ===== */
.order-wrap{max-width:560px;margin:0 auto;padding:74px 22px 60px;color:#cdece4;font-family:'DM Sans',sans-serif}
.order-wrap h2{font-size:22px;font-weight:600;letter-spacing:.5px;margin-bottom:6px;color:#fff}
.order-kick{font-family:ui-monospace,Menlo,monospace;font-size:10px;letter-spacing:3px;
  text-transform:uppercase;color:rgba(0,199,163,.7);margin-bottom:16px}
.order-price{font-family:ui-monospace,Menlo,monospace;font-size:13px;color:#89f3dd;
  border:1px solid rgba(0,199,163,.25);border-radius:6px;padding:12px 14px;margin:14px 0 22px;background:rgba(0,199,163,.04)}
.order-grid{display:grid;grid-template-columns:1fr 1fr;gap:12px}
.order-field{display:flex;flex-direction:column;gap:5px;margin-bottom:12px}
.order-field.full{grid-column:1/-1}
.order-field label{font-size:10px;letter-spacing:1.6px;text-transform:uppercase;color:rgba(205,236,228,.55);font-family:ui-monospace,Menlo,monospace}
.order-field input,.order-field textarea,.order-field select{background:rgba(0,199,163,.04);
  border:1px solid rgba(0,199,163,.2);border-radius:5px;padding:10px 12px;color:#e9f5f0;
  font-family:inherit;font-size:13px;outline:none;transition:border-color .2s}
.order-field input:focus,.order-field textarea:focus,.order-field select:focus{border-color:#89f3dd}
.order-field textarea{resize:vertical;min-height:74px}
.order-btn{width:100%;margin-top:8px;background:rgba(0,199,163,.12);border:1px solid rgba(0,199,163,.32);
  border-radius:5px;padding:13px;color:#fff;font-weight:500;font-size:12px;letter-spacing:3px;
  cursor:pointer;font-family:inherit;transition:background .25s,border-color .25s}
.order-btn:hover{background:rgba(0,199,163,.2);border-color:#89f3dd}
.order-btn:disabled{opacity:.5;cursor:default}
.order-status{margin-top:14px;font-size:12px;min-height:16px;color:#89f3dd;text-align:center}
.order-done{text-align:center;padding:60px 20px;color:#cdece4}
.order-done .ok{font-size:40px;color:#89f3dd;margin-bottom:14px}
@media(max-width:560px){.order-grid{grid-template-columns:1fr}}

/* ===== ABOUT technical drawing ===== */
.about-scene{position:relative;max-width:920px;margin:0 auto;padding:80px 20px 80px}
.about-scene::before{content:"";position:absolute;top:0;bottom:0;left:50%;width:1px;
  background:linear-gradient(to bottom,transparent,rgba(0,199,163,.5) 8%,rgba(0,199,163,.5) 92%,transparent);transform:translateX(-.5px)}
.about-head{text-align:center;margin-bottom:42px}
.about-head .t{font-size:20px;font-weight:600;color:#fff;letter-spacing:1px}
.about-head .s{font-family:ui-monospace,Menlo,monospace;font-size:10px;letter-spacing:3px;
  text-transform:uppercase;color:rgba(0,199,163,.7);margin-top:8px}
.ab-row{position:relative;display:flex;align-items:flex-start;margin:0 0 34px;min-height:40px}
.ab-row .ab-card{width:calc(50% - 46px);background:rgba(2,26,19,.5);border:1px solid rgba(0,199,163,.18);
  border-radius:7px;padding:16px 18px}
.ab-row .ab-lead{position:absolute;top:26px;height:1px;background:rgba(0,199,163,.4)}
.ab-row .ab-dot{position:absolute;top:23px;left:50%;width:7px;height:7px;border-radius:50%;
  background:#00c7a3;transform:translateX(-50%);box-shadow:0 0 10px rgba(0,199,163,.7)}
.ab-left{justify-content:flex-start}
.ab-left .ab-lead{left:calc(50% - 46px);width:46px}
.ab-right{justify-content:flex-end}
.ab-right .ab-lead{right:calc(50% - 46px);width:46px}
.ab-title{font-family:ui-monospace,Menlo,monospace;font-size:11px;letter-spacing:2.5px;
  text-transform:uppercase;color:#89f3dd;margin-bottom:10px}
.ab-body{font-size:12.5px;line-height:1.6;color:rgba(205,236,228,.82)}
.ab-body p{margin:0 0 8px}
.ab-body ul{margin:6px 0 8px;padding-left:0;list-style:none}
.ab-body li{padding-left:14px;position:relative;margin:3px 0}
.ab-body li::before{content:"·";position:absolute;left:2px;color:rgba(0,199,163,.6)}
.ab-body strong{color:#e8fff6}
@media(max-width:680px){
  .about-scene::before{left:18px}
  .ab-row .ab-card{width:calc(100% - 44px)}
  .ab-left,.ab-right{justify-content:flex-end}
  .ab-left .ab-lead,.ab-right .ab-lead{left:18px;right:auto;width:26px}
  .ab-row .ab-dot{left:18px}
}

/* ===== block 3 id="ts-landing" ===== */

#heroOptions{display:none!important}
.hero:not(.done) .scroll-hint{display:block!important;opacity:.45!important}
.hero.done .scroll-hint{display:none!important}

/* ===== block 4 id="ts-tweaks" ===== */

/* --- Slim, equal-width stem; no chevrons; hover gets bolder --- */
.tree{ width:clamp(200px,28vw,360px)!important; }
.tree details.act,.tree details.act[open]{
  width:128px!important; max-width:128px!important; margin:0 auto 13px!important;
  padding:4px 6px!important; box-sizing:border-box!important;
}
.tree details.act summary{
  white-space:nowrap; text-align:center;
  font-size:clamp(10px,1.1vw,14px)!important; letter-spacing:.3px;
  transition:font-weight .22s ease,color .22s ease,text-shadow .22s ease;
}
.tree details.act summary::after,
.tree details.act[open] summary::after{ content:none!important; display:none!important; }
.tree details.act:hover summary,
.tree details.act:focus-within summary{
  font-weight:600!important; color:#fff!important;
  text-shadow:0 0 16px rgba(0,199,163,.55); letter-spacing:.9px;
}

/* --- Cinematic, organic overlay open --- */
.ts-ov{ transform:scale(1.015);
  transition:opacity .6s cubic-bezier(.16,1,.3,1),transform .6s cubic-bezier(.16,1,.3,1)!important; }
.ts-ov.show{ transform:none; }
.ts-ov .ts-ov-scroll,.ts-ov iframe{ opacity:0; transition:opacity .7s ease .18s; }
.ts-ov.show .ts-ov-scroll,.ts-ov.show iframe{ opacity:1; }
.ts-ov-close,.ts-ov-lang{ opacity:0; transition:opacity .55s ease .4s; }
.ts-ov.show .ts-ov-close,.ts-ov.show .ts-ov-lang{ opacity:1; }

/* --- PARTS morph: stem fades, crown moves to centre --- */
body.parts-zoom .tree-section{ opacity:0; transform:translateY(16px);
  transition:opacity .5s ease,transform .6s cubic-bezier(.16,1,.3,1); pointer-events:none; }
body.parts-zoom .roots-section{ opacity:0; transition:opacity .5s ease; pointer-events:none; }
/* crown zoom is rendered in-canvas (crisp + soft); see drawNet */
body.parts-zoom #gothicTitle{ opacity:0!important; transition:opacity .5s ease; }

/* ===== block 5 id="ts-tweaks2" ===== */

/* ABOUT inline: cards flank the trunk, rest of the one-pager dims */
.about-inline{
  position:absolute; top:50%; left:0; right:0; transform:translateY(-50%);
  display:flex; justify-content:center; align-items:center;
  gap:clamp(150px,17vw,250px); z-index:40; pointer-events:none;
  opacity:0; transition:opacity .55s cubic-bezier(.16,1,.3,1);
}
body.about-open .about-inline{ opacity:1; pointer-events:auto; }
.about-inline .ai-col{ width:clamp(210px,23vw,300px); display:flex; flex-direction:column; gap:13px; }
.ai-card{ position:relative; background:rgba(2,26,19,.78); border:1px solid rgba(0,199,163,.22);
  border-radius:8px; padding:13px 15px;
  transform:translateY(8px); transition:transform .5s cubic-bezier(.16,1,.3,1); }
body.about-open .ai-card{ transform:none; }
.ai-title{ font-family:ui-monospace,Menlo,monospace; font-size:10px; letter-spacing:2.4px;
  text-transform:uppercase; color:#89f3dd; margin-bottom:8px; }
.ai-body{ font-size:11px; line-height:1.55; color:rgba(205,236,228,.82); }
.ai-body p{ margin:0 0 6px; } .ai-body ul{ margin:5px 0; padding:0; list-style:none; }
.ai-body li{ position:relative; padding-left:13px; margin:2px 0; }
.ai-body li::before{ content:"\00b7"; position:absolute; left:2px; color:rgba(0,199,163,.6); }
.ai-body strong{ color:#e8fff6; }
/* connector line + dot toward the trunk */
.ai-col.left .ai-card::after,.ai-col.right .ai-card::before{
  content:""; position:absolute; top:22px; width:clamp(40px,5vw,80px); height:1px;
  background:rgba(0,199,163,.4); }
.ai-col.left .ai-card::after{ right:-1px; transform:translateX(100%); }
.ai-col.right .ai-card::before{ left:-1px; transform:translateX(-100%); }
.ai-col.left .ai-card .ai-dot,.ai-col.right .ai-card .ai-dot{
  content:""; position:absolute; top:19px; width:6px; height:6px; border-radius:50%;
  background:#00c7a3; box-shadow:0 0 9px rgba(0,199,163,.7); }
.ai-col.left .ai-card .ai-dot{ right:calc(-1px - clamp(40px,5vw,80px)); transform:translateX(100%); }
.ai-col.right .ai-card .ai-dot{ left:calc(-1px - clamp(40px,5vw,80px)); transform:translateX(-100%); }
/* dim the rest of the one-pager while ABOUT is open */
body.about-open .canvas-stage{ opacity:.16; transition:opacity .55s ease; }
body.about-open .roots-section{ opacity:.12; transition:opacity .55s ease; }
body.about-open .tree details.act:not([data-act="about"]) summary{ opacity:.45; }
@media(max-width:760px){
  .about-inline{ position:fixed; inset:0; transform:none; flex-direction:column;
    gap:14px; padding:70px 16px; overflow-y:auto; background:rgba(2,18,13,.92); }
  .about-inline .ai-col{ width:100%; }
  .ai-col.left .ai-card::after,.ai-col.right .ai-card::before,
  .ai-col.left .ai-card .ai-dot,.ai-col.right .ai-card .ai-dot{ display:none; }
}

/* ===== block 6 id="ts-slidebg" ===== */
.ts-ov#ovParts{background:rgba(0,0,0,.35)!important;transition:opacity 1.5s cubic-bezier(.16,1,.3,1)!important}#partsFrame{background:transparent!important}body.parts-zoom #treeSection{opacity:0!important;pointer-events:none!important;transition:opacity .6s ease!important}body.parts-zoom .roots-section{opacity:0!important;transition:opacity .6s ease!important}
/* ===== block 7 id="ts-sunrise" ===== */

/* Starts fully black and lifts to nothing over 3 s. The curve is slow off the floor, quickest
   through the middle and eases out at the top — a sunrise, not a linear dimmer. */
#sunrise{
  position:fixed; inset:0; z-index:160; pointer-events:none;
  background:#000; opacity:1;
  transition:opacity var(--sunrise-dur,3s) cubic-bezier(.55,0,.45,1);
  will-change:opacity;
}
#sunrise.up{ opacity:0; }
/* No build-up of any kind underneath: the stem is drawn and the menu rows are present from the
   first paint. Both carried scroll-reveal transitions (1.6 s stem draw, 0.85 s staggered row
   fade) that would still have been visible through the second half of the sunrise. */
.tree-stem{ transition:none!important; }
.tree-wrap .tree-stem{ transform:translateX(-50%) scaleY(1)!important; }
.tree details{ opacity:1!important; transform:none!important; filter:none!important;
  transition:border-color .35s cubic-bezier(.16,1,.3,1),max-width .55s cubic-bezier(.16,1,.3,1),
             padding .4s cubic-bezier(.16,1,.3,1),background-color .35s ease!important; }
@media (prefers-reduced-motion: reduce){
  #sunrise{ transition:opacity .35s linear; }
}

/* ===== block 8 id="ts-watermark" ===== */

/* updTitle() writes the watermark's opacity every frame, so the stylesheet's own opacity:.14
   would only flash the finished name for one paint before the first frame runs, and the CSS
   transition would only lag the per-frame value. Hence 0 and transition:none. */
.gothic-title{opacity:0;transition:none;will-change:opacity,filter}

