/* ---------- Einstiegs-Slider mit KI-Filmen (aus dem RoluControl-Bau übertragen, Look ServusRobo) ----------
   Folien liegen per Grid übereinander. Kurz vor Filmende blendet der nächste Film über (1,2 s), beide laufen; die abtretende
   Folie (.geht) bleibt sichtbar darunter. Glut in den letzten 2 s (.ist-schluss) und am Endbild. Mit einer Folie: einmal
   abspielen, Endbild hält, Glut pulsiert. Reiter erst ab zwei Folien.
   Aufbau: bis 999 px gestapelt (Film oben: Quadrat bis 760 px, sonst 16:9; Text darunter). Ab 1000 px liegt der Film als
   Panel rechts (ab --film-links), der Text steht links auf Schwarz – der Robo steht im Film links der Mitte, so landet er
   mittig im Bild und das Rack rechts; die Naht zum Schwarz verläuft über einen kurzen Verlauf. */
.film{--ease:cubic-bezier(.2,.7,.2,1);--ease-io:cubic-bezier(.45,0,.2,1);--textbreite:clamp(300px,26vw,400px);--film-links:calc(max(0px,50% - var(--max) / 2) + var(--rand) + var(--textbreite) + 24px);position:relative;isolation:isolate;overflow:clip;color:#fff;background:var(--grund);display:grid;grid-template-columns:minmax(0,1fr);grid-template-rows:auto auto}
.film__slide{--film-p:56%;--film-dx:0px;--glut-x:77%;--glut-y:52%;grid-area:1/1/2/2;position:relative;display:grid;grid-template-rows:auto auto;align-items:start;opacity:0;visibility:hidden;transition:opacity 1200ms var(--ease-io),visibility 0s linear 1200ms}
.film__slide.ist-aktiv{opacity:1;visibility:visible;z-index:1;transition:opacity 1200ms var(--ease-io),visibility 0s}
.film__slide.geht{opacity:1;visibility:visible;transition:none}
.film__medien{position:relative;width:100%;aspect-ratio:1;overflow:hidden;container-type:size;background:#111}
.film__medien::after{content:"";position:absolute;inset:0;pointer-events:none;background:linear-gradient(180deg,rgba(0,0,0,.72) 0,rgba(0,0,0,.4) 12%,rgba(0,0,0,.12) 24%,rgba(0,0,0,0) 34%),linear-gradient(0deg,var(--grund) 0,rgba(0,0,0,.6) 12%,rgba(0,0,0,.2) 24%,rgba(0,0,0,0) 36%)}
.film__bild,.film__bild img,.film__video{position:absolute;inset:0;width:100%;height:100%}
.film__bild img,.film__video{object-fit:cover;object-position:calc(var(--film-p,50%) + var(--film-k,0) * var(--film-dx,0px)) 50%}
.film__video{opacity:0;transition:opacity 400ms var(--ease)}
.film__bild--ende{opacity:0;transition:opacity 600ms var(--ease)}
.film__slide.laeuft .film__video{opacity:1}
.film__slide.ist-ende .film__bild--ende{opacity:1}
.film__slide.ist-ende .film__video{opacity:0;transition-delay:600ms}
.film__slide.ist-ende .film__bild--ende img{animation:film-halten 9s linear both}
/* Start- und Endbild sauber trennen (02.11.2026): am Ende ist das Startbild weg (liegt nur noch unter dem deckenden Film); beim Neustart einer Folie wechseln End- und Startbild ohne Überblendung, weil die Folie dann noch unsichtbar ist */
.film__slide.ist-ende .film__bild--start{opacity:0}
.film__slide:not(.ist-ende) .film__bild--ende,.film__slide:not(.ist-ende) .film__bild--start{transition:none}
@keyframes film-halten{from{transform:scale(1)}to{transform:scale(1.035)}}
/* Glut in Bildkoordinaten des per object-fit: cover beschnittenen 16:9-Bilds (Server-LEDs), pulsiert ruhig */
.film__glut{--bw:max(100cqw,100cqh * 16 / 9);--bh:max(100cqh,100cqw * 9 / 16);--bl:calc(var(--pos-x,.5) * (100cqw - var(--bw)) + var(--film-k,0) * var(--film-dx,0px));--bo:calc(var(--pos-y,.5) * (100cqh - var(--bh)));position:absolute;left:var(--bl);top:var(--bo);width:var(--bw);height:var(--bh);transform-origin:calc(50cqw - var(--bl)) calc(50cqh - var(--bo));opacity:0;pointer-events:none;mix-blend-mode:screen;background:radial-gradient(circle at var(--glut-x) var(--glut-y),rgba(90,168,255,.62) 0,rgba(59,139,224,.22) 5%,rgba(59,139,224,0) 16%);transition:opacity 900ms var(--ease)}
.film__slide.ist-schluss .film__glut{opacity:1;animation:film-glut 3.6s var(--ease-io) 900ms infinite alternate}
.film__slide.ist-ende .film__glut{opacity:1;animation:film-glut 3.6s var(--ease-io) 900ms infinite alternate,film-halten 9s linear both}
.film.glut-aus .film__glut,.film.glut-aus .film__bild--ende img{animation-play-state:paused}
@keyframes film-glut{from{opacity:.5}to{opacity:1}}
.film__schleier{display:none}
.film .rahmen{width:100%} /* Grid-Item mit margin:auto würde sonst nur so breit wie sein Inhalt */
.film__innen{padding-block:22px 28px}
.film__text{max-width:560px}
.film .dachzeile{font-family:var(--inter);font-size:13px;letter-spacing:.2em;text-transform:uppercase;color:var(--akzent);margin-bottom:16px}
.film .film__titel{font-family:var(--urb);color:#fff;font-size:clamp(34px,1rem + 2.4vw,54px);font-weight:600;line-height:1.06;letter-spacing:-.02em;text-wrap:balance}
.film .lead{margin-top:20px;max-width:44ch;font-size:18px;color:rgba(255,255,255,.86)}
.film .knopfreihe{display:flex;gap:12px;flex-wrap:wrap;align-items:center;margin-top:clamp(26px,3vw,36px)}
.film :focus-visible{outline-color:#fff}
.js .film__slide .film__text>*{transition:opacity 600ms var(--ease),transform 600ms var(--ease)}
.js .film__slide:not(.ist-aktiv) .film__text>*{opacity:0;transform:translateY(14px)}
.js .film__slide.geht .film__text>*{transform:translateY(-10px);transition-duration:300ms;transition-delay:0s}
.js .film__slide.ist-aktiv .film__text>*{transition-delay:200ms}
.js .film__slide.ist-aktiv .film__text>:nth-child(2){transition-delay:260ms}
.js .film__slide.ist-aktiv .film__text>:nth-child(3){transition-delay:320ms}
.js .film__slide.ist-aktiv .film__text>:nth-child(4){transition-delay:380ms}
/* Leiste: Reiter mit Fortschritt (ab zwei Folien), KI-Hinweis, Pause */
.film__leiste{grid-area:2/1/3/2;z-index:2;display:flex;align-items:center;gap:16px;padding-block:0 22px}
.film__reiter{display:flex;gap:clamp(6px,1vw,14px);flex-wrap:wrap}
.film__reiter[data-einzeln]{display:none}
.film__reiterknopf{position:relative;display:inline-flex;align-items:center;gap:8px;min-height:44px;padding:10px 14px 12px;border:0;border-radius:12px;background:rgba(255,255,255,.06);color:rgba(255,255,255,.72);font:600 14px/1 var(--urb);overflow:hidden;cursor:pointer;transition:background-color .25s var(--ease),color .2s}
.film__reiterknopf:hover{background:rgba(255,255,255,.12);color:#fff}
.film__reiterknopf[aria-selected="true"]{background:rgba(255,255,255,.14);color:#fff}
.film__nr{font-size:11px;font-weight:700;color:rgba(255,255,255,.55)}
.film__reiterknopf[aria-selected="true"] .film__nr{color:var(--akzent)}
.film__fortschritt{position:absolute;left:0;right:0;bottom:0;height:2px;background:var(--akzent);transform:scaleX(var(--fortschritt,0));transform-origin:left}
.film__reiterknopf:not([aria-selected="true"]) .film__fortschritt{--fortschritt:0}
.film__ki{margin-left:auto;padding:5px 10px;border-radius:999px;background:rgba(255,255,255,.12);font-size:12px;font-weight:500;color:rgba(255,255,255,.86);white-space:nowrap}
.film__pause{display:grid;place-items:center;width:44px;height:44px;flex:none;border-radius:50%;border:1.5px solid rgba(255,255,255,.35);background:rgba(0,0,0,.35);color:#fff;cursor:pointer;transition:background-color .2s,border-color .2s}
.film__pause:hover{background:rgba(255,255,255,.12);border-color:#fff}
.film__pause svg{width:16px;height:16px}
.film__zeichen-start,.film__pause[aria-pressed="true"] .film__zeichen-pause{display:none}
.film__pause[aria-pressed="true"] .film__zeichen-start{display:block;margin-left:2px}
/* Kennzahlen-Band und Wortzug unter dem Film */
.zahlenband{background:var(--grund);padding-top:6px}
.zahlenband .rahmen{display:flex;flex-direction:column;align-items:flex-start;gap:14px;padding-top:26px;padding-bottom:8px}
.zahlenband .zahlen{flex-wrap:wrap;row-gap:18px}
.zahlenband h2{font-family:var(--urb);font-weight:700;font-size:20px;margin:0}
.wortzugband{position:relative;overflow:hidden;background:var(--grund);height:clamp(70px,15.4vw,230px)}
.wortzugband .held__wortzug{bottom:-18px}
/* Tablet: 16:9 oben, Text darunter; die Kopfzeile liegt über dem Film (dunkler Verlauf oben) */
@media (min-width:761px){
  .film__medien{aspect-ratio:16/9}
  .film__glut{--pos-x:.5}
  .zahlenband .rahmen{flex-direction:row;align-items:center;gap:40px}
}
@media (max-width:760px){.film__glut{--pos-x:.5}}
/* Desktop ab 1000 px: Film als Panel rechts, Text links auf Schwarz */
@media (min-width:1000px){
  .film{grid-template-rows:minmax(0,1fr) auto;min-height:clamp(560px,min(56vw,100svh - 40px),940px)}
  .film__slide{grid-area:1/1/3/2;grid-template-rows:none;align-items:center}
  .film{--film-k:1;--ueberhang:240px}
  .film__medien{position:absolute;inset:0 0 0 calc(var(--film-links) - var(--ueberhang));width:auto;aspect-ratio:auto;z-index:-2}
  /* Zoom beim Einblenden auf Bild und Video, nicht auf das beschnittene Panel: ein skaliertes Element mit overflow:hidden bekommt halbtransparente Kantenpixel, durch die der Film unter dem Verlauf durchscheint (feine Linie) */
  .film__slide .film__medien>.film__bild,.film__slide .film__medien>.film__video{transform:scale(1.04);transform-origin:50% 50%;transition:transform 2400ms cubic-bezier(.22,.61,.36,1),opacity 400ms var(--ease)}
  /* Übergang Film → Standbild (Fix 02.11.2026): die Zoom-Regel oben setzt „transition“ neu und hat damit die 600-ms-Verzögerung des Videos und die 600-ms-Einblendung des Endbilds überschrieben – das Startbild schien kurz durch (Geisterbild). */
  .film__slide .film__medien>.film__bild--ende{transition:transform 2400ms cubic-bezier(.22,.61,.36,1),opacity 600ms var(--ease)}
  .film__slide.ist-ende .film__medien>.film__video{transition:transform 2400ms cubic-bezier(.22,.61,.36,1),opacity 400ms var(--ease) 600ms}
  .film__slide.ist-aktiv .film__medien>.film__bild,.film__slide.ist-aktiv .film__medien>.film__video,.film__slide.geht .film__medien>.film__bild,.film__slide.geht .film__medien>.film__video{transform:none}
  .film__medien{background:var(--grund)}
  .film__medien::after{inset:-2px}
  .film__medien::after{background:linear-gradient(90deg,var(--grund) 0,rgba(0,0,0,.98) 8%,rgba(0,0,0,.92) 14%,rgba(0,0,0,.8) 20%,rgba(0,0,0,.6) 26%,rgba(0,0,0,.38) 32%,rgba(0,0,0,.18) 38%,rgba(0,0,0,.05) 44%,rgba(0,0,0,0) 50%),linear-gradient(180deg,var(--grund) 0,rgba(0,0,0,.65) 6%,rgba(0,0,0,.25) 12%,rgba(0,0,0,0) 20%),linear-gradient(0deg,var(--grund) 0,rgba(0,0,0,.65) 6%,rgba(0,0,0,.25) 12%,rgba(0,0,0,0) 20%)}
  .film__innen{padding-block:clamp(130px,14vw,180px) clamp(96px,9vw,132px)}
  .film__text{max-width:var(--textbreite)}
  .film__leiste{padding-bottom:clamp(20px,2.4vw,32px)}
  .film .lead{font-size:19px}
}

/* Handy-Leiste (29.10.2026): Reiter als waagrecht scrollbare Reihe statt untereinander; Zahlen als 2×2-Raster */
@media (max-width:760px){
  .film__leiste{display:grid;grid-template-columns:minmax(0,1fr) auto auto;gap:12px 10px;align-items:center}
  .film__reiter{grid-column:1/-1;flex-wrap:nowrap;overflow-x:auto;scrollbar-width:none;-webkit-overflow-scrolling:touch;margin:0 calc(-1 * var(--rand));padding:0 var(--rand) 4px;scroll-padding-inline:var(--rand)}
  .film__reiter::-webkit-scrollbar{display:none}
  .film__reiterknopf{flex:none;white-space:nowrap}
  .film__ki{margin-left:0;justify-self:start}
  .film__pause{justify-self:end}
  .zahlenband .zahlen{display:grid;grid-template-columns:minmax(0,1fr) minmax(0,1fr);gap:18px 20px}
}

/* Zahlenband Tablet (29.10.2026): Überschrift darüber, vier Werte in einer Reihe */
@media (min-width:761px) and (max-width:1099px){.zahlenband .rahmen{flex-direction:column;align-items:flex-start;gap:16px}.zahlenband .zahlen{display:grid;grid-template-columns:repeat(4,minmax(0,1fr));gap:20px;width:100%}}

/* Handy: Text springt nicht (02.11.2026) – die gestapelten Folien sind so hoch wie die längste; ohne diese Regel verteilt der Browser den Rest über das Filmbild und kürzere Texte rutschen beim Wechsel um bis zu 18 px nach unten */
@media (max-width:999px){.film__slide{grid-template-rows:auto minmax(0,1fr);align-content:start}}
