/* ep-ki-welt · Bühne. Eine Welt statt Folien: das Diorama füllt den Bildschirm, die Kamera fährt per transform,
   Texte liegen als große Lato-Zeilen darüber. E&P-Farben: Blau für Flächen, Gelb als Akzent, Magenta nur für Live. */
:root{
  --ink:#ffffff;
  --ink-soft:rgba(255,255,255,.82);
  --night:#06111c;
  --blue:#0084d4;
  --navy:#0d2f4a;
  --sun:#f8c62f;
  --magenta:#d1157a;
  --go:#3ccf86;
  --wait:#f2b648;
  --stop:#ff6b5e;
  --glass:rgba(6,17,28,.66);
  --font:"Lato","Helvetica Neue",Arial,sans-serif;
  --move:1.8s;
  color-scheme:dark;
}
@media (prefers-reduced-motion: reduce){ :root{ --move:.01s } }

*{box-sizing:border-box}
[hidden]{display:none!important}
html,body{height:100%;margin:0}
body{background:var(--night);color:var(--ink);font-family:var(--font);overflow:hidden;-webkit-font-smoothing:antialiased}
button{font:inherit}

/* Welt und Kamera */
#stage{position:fixed;inset:0;overflow:hidden;background:var(--night)}
#world{position:absolute;left:0;top:0;transform-origin:0 0;will-change:transform;transition:transform var(--move) cubic-bezier(.65,.02,.25,1)}
.world-img{position:absolute;inset:0;width:100%;height:100%;display:block;transition:opacity 2.2s ease}
#img-day{opacity:0}
body.day #img-day{opacity:1}
#labels .label{position:absolute;transform:translate(-50%,-100%);padding:.35em .8em;border-radius:999px;background:var(--sun);color:#10202e;font-weight:900;font-size:64px;letter-spacing:.02em;white-space:nowrap;opacity:0;transition:opacity .8s ease;box-shadow:0 10px 40px rgba(0,0,0,.45)}
#labels .label::after{content:"";position:absolute;left:50%;top:100%;transform:translateX(-50%);border:22px solid transparent;border-top-color:var(--sun)}
#labels .label.on{opacity:1}

/* Detailszene */
#plate{position:absolute;inset:0;opacity:0;pointer-events:none;transition:opacity .9s ease}
#plate img{width:100%;height:100%;object-fit:cover;transform:scale(1.08);transition:transform 9s ease-out}
#plate.on{opacity:1}
#plate.on img{transform:scale(1)}
#shade{position:absolute;inset:0;pointer-events:none;background:
  linear-gradient(90deg,rgba(4,10,18,.62) 0%,rgba(4,10,18,0) 48%),
  linear-gradient(0deg,rgba(4,10,18,.55) 0%,rgba(4,10,18,0) 42%);opacity:.95}
body.text-right #shade{background:
  linear-gradient(270deg,rgba(4,10,18,.62) 0%,rgba(4,10,18,0) 48%),
  linear-gradient(0deg,rgba(4,10,18,.55) 0%,rgba(4,10,18,0) 42%)}

#ki-badge{position:fixed;right:max(14px,env(safe-area-inset-right));bottom:max(12px,env(safe-area-inset-bottom));padding:.28rem .6rem;border-radius:6px;background:rgba(0,0,0,.55);color:rgba(255,255,255,.85);font-size:.72rem;font-weight:700;letter-spacing:.08em;text-transform:uppercase;z-index:6}

/* Texte */
#tx{position:fixed;z-index:5;max-width:min(64rem,88vw);padding:0 max(4vw,20px);pointer-events:none;transition:opacity .6s ease, transform .6s ease}
#tx.hide{opacity:0;transform:translateY(12px)}
#tx.pos-bl{left:0;bottom:9vh}
#tx.pos-tl{left:0;top:8vh}
#tx.pos-tr{right:0;top:8vh;text-align:right}
#tx.pos-br{right:0;bottom:9vh;text-align:right}
#tx.pos-c{left:50%;top:50%;transform:translate(-50%,-50%);text-align:center}
#tx.pos-c.hide{transform:translate(-50%,-46%)}
#tx .lead{margin:0 0 .6rem;font-size:clamp(.95rem,1.6vw,1.45rem);font-weight:900;letter-spacing:.14em;text-transform:uppercase;color:var(--sun);text-shadow:0 2px 12px rgba(0,0,0,.6)}
#tx .big{margin:0;font-size:clamp(2.3rem,6.4vw,6.2rem);line-height:1.02;font-weight:900;letter-spacing:-.01em;text-wrap:balance;text-shadow:0 4px 30px rgba(0,0,0,.55)}
#tx .small{margin:1.1rem 0 0;max-width:46rem;font-size:clamp(1rem,1.75vw,1.6rem);line-height:1.45;font-weight:400;color:var(--ink-soft);text-shadow:0 2px 16px rgba(0,0,0,.7)}
#tx.pos-tr .small,#tx.pos-br .small{margin-left:auto}
#tx .small:empty,#tx .lead:empty{display:none}
#tx .reveal{display:inline-block;margin-top:1.1rem;padding:.5rem 1rem;border-radius:12px;background:var(--glass);font-size:clamp(1.05rem,1.9vw,1.75rem);font-weight:700;color:#fff;border-left:8px solid var(--go)}
#tx .reveal.c-y{border-left-color:var(--wait)}
#tx .reveal.c-r{border-left-color:var(--stop)}
/* Neben Ergebnis oder Ideenwand bleibt der Text links und etwas kleiner */
body.board-on #tx{max-width:min(60rem,56vw)}
body.board-on #tx .big{font-size:clamp(2rem,4.8vw,4.8rem)}

/* Ergebnisse und Quiz */
#board{position:fixed;z-index:5;right:max(3vw,16px);top:50%;transform:translateY(-50%);width:min(34rem,40vw);padding:1.3rem 1.4rem;border-radius:18px;background:var(--glass);backdrop-filter:blur(6px);-webkit-backdrop-filter:blur(6px);box-shadow:0 20px 60px rgba(0,0,0,.45)}
.board-title{margin:0 0 .9rem;font-size:.85rem;font-weight:900;letter-spacing:.14em;text-transform:uppercase;color:var(--sun)}
.bars{list-style:none;margin:0;padding:0;display:grid;gap:.75rem}
.bar{display:grid;gap:.35rem}
.bar-top{display:flex;justify-content:space-between;align-items:baseline;gap:1rem;font-size:clamp(1rem,1.6vw,1.45rem);font-weight:700}
.bar-top .pct{font-variant-numeric:tabular-nums;font-weight:900}
.bar-track{height:clamp(14px,1.6vw,22px);border-radius:999px;background:rgba(255,255,255,.14);overflow:hidden}
.bar-fill{height:100%;width:0;border-radius:inherit;background:var(--blue);transition:width .6s ease}
.bar.c-g .bar-fill{background:var(--go)}
.bar.c-y .bar-fill{background:var(--wait)}
.bar.c-r .bar-fill{background:var(--stop)}
.bar.dim{opacity:.38}
.bar.win .bar-top{color:#fff}
.bar.win .bar-top::after{content:"✓";margin-left:.4rem;color:var(--go)}
.bar button{all:unset;cursor:pointer}
.board-foot{margin:.9rem 0 0;font-size:.95rem;color:var(--ink-soft)}
.board-foot:empty{display:none}
.self-pick{display:grid;gap:.6rem}
.self-pick button{padding:.8rem 1rem;border-radius:12px;border:2px solid rgba(255,255,255,.35);background:rgba(255,255,255,.08);color:#fff;font-size:1.15rem;font-weight:700;text-align:left;cursor:pointer}
.self-pick button:hover{border-color:var(--sun)}

/* Ideenwand */
#wall{position:fixed;z-index:5;right:max(3vw,16px);top:7vh;bottom:9vh;width:min(46rem,52vw);overflow:hidden;display:flex;flex-direction:column;justify-content:flex-start}
.ideas{list-style:none;margin:0;padding:0;display:grid;grid-template-columns:repeat(2,minmax(0,1fr));gap:.7rem;align-content:start}
.ideas li{padding:.85rem 1rem;border-radius:14px;background:rgba(255,255,255,.93);color:#10202e;font-size:clamp(.95rem,1.25vw,1.2rem);line-height:1.35;font-weight:700;box-shadow:0 10px 30px rgba(0,0,0,.35);animation:pop .5s ease both;cursor:default;overflow-wrap:anywhere}
.ideas li small{display:block;margin-top:.35rem;font-size:.75em;font-weight:900;letter-spacing:.06em;text-transform:uppercase;color:#0b6aa8}
.ideas li:nth-child(3n+2){background:rgba(255,246,214,.95)}
.wall-empty{margin:0;padding:1rem 1.2rem;border-radius:14px;background:var(--glass);color:var(--ink-soft);font-size:1.1rem}
@keyframes pop{from{opacity:0;transform:translateY(10px) scale(.97)}to{opacity:1;transform:none}}
@media (prefers-reduced-motion: reduce){.ideas li{animation:none}}

/* Mitmachen */
#join{position:fixed;z-index:6;right:max(2vw,14px);bottom:max(5vh,46px);display:flex;align-items:center;gap:1rem;padding:.8rem 1rem .8rem .8rem;border-radius:18px;background:rgba(255,255,255,.96);color:#10202e;box-shadow:0 16px 50px rgba(0,0,0,.45)}
#join img{width:clamp(96px,10vw,150px);height:auto;display:block;border-radius:8px}
.join-lead{margin:0;font-size:.8rem;font-weight:900;letter-spacing:.12em;text-transform:uppercase;color:#0b6aa8}
.join-url{margin:.25rem 0 0;font-size:clamp(1rem,1.4vw,1.35rem);font-weight:900}
.join-count{margin:.3rem 0 0;font-size:.95rem;font-weight:700;color:#3a4b5a}
.join-count:empty{display:none}
body.board-on #join{bottom:auto;top:max(3vh,14px)}
body.board-on.join-on #board{top:auto;bottom:max(10vh,74px);transform:none}
body.wall-on #join{top:auto;right:auto;left:max(4vw,20px);bottom:max(10vh,74px)}

/* Steuerung, Live-Punkt, Notizen */
#controls{position:fixed;z-index:7;left:50%;bottom:max(12px,env(safe-area-inset-bottom));transform:translateX(-50%);display:flex;align-items:center;gap:.6rem;padding:.3rem .45rem;border-radius:999px;background:rgba(0,0,0,.5);transition:opacity .4s ease}
#controls button{width:44px;height:44px;border-radius:50%;border:0;background:rgba(255,255,255,.14);color:#fff;font-size:1.6rem;line-height:1;cursor:pointer}
#controls button:hover{background:rgba(255,255,255,.28)}
#controls button:disabled{opacity:.3;cursor:default}
#pos{min-width:4.5rem;text-align:center;font-size:.85rem;font-weight:700;font-variant-numeric:tabular-nums;color:var(--ink-soft)}
body.stage-mode.idle #controls{opacity:0}
body.stage-mode.idle{cursor:none}
#live-dot{position:fixed;z-index:7;left:max(14px,env(safe-area-inset-left));bottom:max(14px,env(safe-area-inset-bottom));padding:.25rem .6rem;border-radius:999px;background:rgba(0,0,0,.55);font-size:.72rem;font-weight:900;letter-spacing:.1em}
#live-dot.on::before{content:"";display:inline-block;width:.55rem;height:.55rem;margin-right:.4rem;border-radius:50%;background:var(--magenta);box-shadow:0 0 10px var(--magenta)}
#live-dot.off::before{content:"";display:inline-block;width:.55rem;height:.55rem;margin-right:.4rem;border-radius:50%;background:#888}
#notes{position:fixed;z-index:9;left:max(2vw,14px);top:max(2vh,14px);width:min(36rem,92vw);max-height:70vh;overflow:auto;padding:1rem 1.2rem;border-radius:14px;background:rgba(0,0,0,.86);font-size:1.05rem;line-height:1.5}
#notes b{color:var(--sun)}
#black{position:fixed;inset:0;z-index:10;background:#000}
:focus-visible{outline:3px solid var(--sun);outline-offset:3px}

/* Schmale Bildschirme (Selbstklicken am Handy) */
@media (max-width:820px){
  #tx,body.board-on #tx{max-width:100%;padding:0 18px}
  #ki-badge{bottom:auto;top:max(8px,env(safe-area-inset-top));right:max(10px,env(safe-area-inset-right));font-size:.62rem}
  #tx.pos-tl,#tx.pos-tr{top:6vh}
  #tx.pos-bl,#tx.pos-br{bottom:84px}
  #shade{background:linear-gradient(0deg,rgba(4,10,18,.78) 0%,rgba(4,10,18,0) 60%),linear-gradient(180deg,rgba(4,10,18,.55) 0%,rgba(4,10,18,0) 35%)}
  #board{left:16px;right:16px;width:auto;top:auto;bottom:84px;transform:none;padding:1rem}
  #wall{left:16px;right:16px;width:auto;top:auto;bottom:84px;max-height:45vh}
  .ideas{grid-template-columns:1fr}
  #join{left:16px;right:16px;top:auto;bottom:auto;top:max(12px,env(safe-area-inset-top))}
  body.board-on #join{display:none}
  body.board-on #tx.pos-tl,body.board-on #tx.pos-tr{top:4vh}
  body.board-on #tx .small{display:none}
}
