:root{
  --bg:#07080a;
  --bg2:#0d0f13;
  --line:rgba(255,255,255,.10);
  --line2:rgba(255,255,255,.18);
  --txt:#e9eaec;
  --dim:#9a9ea6;
  --accent:#DD514A;
  --gold:#d8b26a;
  --panel:rgba(14,16,20,.82);
}
*{box-sizing:border-box;-webkit-tap-highlight-color:transparent}
html,body{margin:0;padding:0;height:100%;background:var(--bg);color:var(--txt);
  font-family:"Inter","Helvetica Neue",Helvetica,Arial,"Segoe UI",sans-serif;
  -webkit-font-smoothing:antialiased;overflow:hidden}
#app{position:fixed;inset:0;display:flex;flex-direction:column}

/* ---------- Topbar ---------- */
#topbar{position:relative;z-index:6;display:flex;align-items:flex-end;justify-content:space-between;
  gap:20px;padding:20px 28px 16px;border-bottom:1px solid var(--line);
  background:linear-gradient(180deg,rgba(10,11,14,.95),rgba(10,11,14,.55));pointer-events:none}
.brand{display:flex;align-items:center;gap:12px}
.brand-mark{width:10px;height:28px;border-radius:2px;
  background:linear-gradient(180deg,var(--accent),#7d2a26);box-shadow:0 0 18px rgba(221,81,74,.45)}
.brand-text{display:flex;flex-direction:column;line-height:1.25}
.brand-text strong{font-size:15px;font-weight:600;letter-spacing:.14em;text-transform:uppercase}
.brand-text em{font-style:normal;font-size:11px;color:var(--dim);letter-spacing:.14em;text-transform:uppercase}
.headline{text-align:right;margin-left:auto}
.headline h1{margin:0;font-size:17px;font-weight:500;letter-spacing:.02em}
.headline p{margin:3px 0 0;font-size:12px;color:var(--dim)}

/* ---------- Stage ---------- */
#stage{position:relative;flex:1 1 auto;min-height:0;
  background:
    radial-gradient(120% 90% at 50% 8%,rgba(221,81,74,.08),transparent 62%),
    radial-gradient(90% 70% at 50% 100%,rgba(216,178,106,.06),transparent 60%),
    var(--bg)}
#scene{display:block;width:100%;height:100%;touch-action:none;cursor:grab}
#scene.dragging{cursor:grabbing}
#labels{position:absolute;inset:0;pointer-events:none;z-index:3}
.lbl{position:absolute;transform:translate(0,-50%);display:flex;align-items:center;gap:8px;
  padding:5px 11px 5px 8px;border:1px solid var(--line2);border-radius:999px;
  background:rgba(10,11,14,.78);backdrop-filter:blur(6px);
  font-size:11.5px;letter-spacing:.03em;white-space:nowrap;
  opacity:0;transition:opacity .25s ease}
.lbl.show{opacity:1}
.lbl i{width:8px;height:8px;border-radius:50%;flex:0 0 auto}
.lbl b{font-weight:500}
#tooltip{position:absolute;z-index:5;max-width:260px;padding:10px 13px;border-radius:12px;
  border:1px solid var(--line2);background:rgba(13,15,19,.94);backdrop-filter:blur(8px);
  box-shadow:0 14px 40px rgba(0,0,0,.6);pointer-events:none;transform:translate(-50%,-115%);
  transition:opacity .16s ease}
#tooltip .t-name{display:block;font-size:12.5px;font-weight:600;letter-spacing:.04em;margin-bottom:4px}
#tooltip .t-desc{display:block;font-size:11.5px;line-height:1.5;color:var(--dim)}
.hidden{opacity:0 !important;visibility:hidden}
#hint{position:absolute;left:50%;bottom:14px;transform:translateX(-50%);z-index:4;
  font-size:11px;color:#71757c;letter-spacing:.05em;pointer-events:none;text-align:center;
  transition:opacity .5s ease}
#loading{position:absolute;inset:0;display:flex;align-items:center;justify-content:center;
  font-size:12px;letter-spacing:.18em;text-transform:uppercase;color:#5d6168;z-index:2;
  transition:opacity .5s ease}
#noGl{position:absolute;inset:0;z-index:7;display:flex;flex-direction:column;justify-content:center;
  padding:28px;max-width:620px;margin:0 auto;background:var(--bg)}
#noGl h2{font-size:18px;font-weight:500;margin:0 0 10px}
#noGl p{color:var(--dim);font-size:13px;line-height:1.6;margin:0 0 16px}
#noGl ol{margin:0;padding-left:20px;color:var(--txt);font-size:13px;line-height:1.9}
#noGl ol span{color:var(--dim)}

/* ---------- Legend ---------- */
#legend{position:absolute;top:96px;right:28px;z-index:5;width:250px;padding:14px 14px 8px;
  border:1px solid var(--line);border-radius:14px;background:var(--panel);backdrop-filter:blur(10px)}
.legend-head{font-size:10px;letter-spacing:.2em;text-transform:uppercase;color:#7d8189;margin-bottom:8px}
#legendList{list-style:none;margin:0;padding:0}
#legendList li{display:flex;gap:10px;align-items:flex-start;padding:7px 8px;margin:0 -8px;
  border-radius:9px;cursor:default;transition:background .18s ease}
#legendList li:hover,#legendList li.active{background:rgba(255,255,255,.055)}
#legendList li i{width:9px;height:9px;border-radius:50%;margin-top:5px;flex:0 0 auto;
  box-shadow:0 0 0 1px rgba(255,255,255,.18) inset}
#legendList li b{display:block;font-size:12px;font-weight:500;letter-spacing:.02em}
#legendList li small{display:block;font-size:11px;color:var(--dim);line-height:1.45;margin-top:2px}

/* ---------- Panel ---------- */
#panel{position:relative;z-index:6;display:flex;align-items:center;gap:26px;flex-wrap:wrap;
  padding:14px 28px;border-top:1px solid var(--line);background:rgba(10,11,14,.9)}
#panel .row{display:flex;align-items:center;gap:12px}
#panel label{font-size:10px;letter-spacing:.16em;text-transform:uppercase;color:#7d8189}
.types{gap:8px}
button{font:inherit;color:var(--txt);background:rgba(255,255,255,.045);
  border:1px solid var(--line2);border-radius:999px;padding:9px 16px;cursor:pointer;
  font-size:12px;letter-spacing:.04em;transition:background .18s,border-color .18s,color .18s}
button:hover{background:rgba(255,255,255,.1)}
button.sel{background:rgba(221,81,74,.16);border-color:rgba(221,81,74,.75);color:#fff}
button.tgl.on{background:rgba(221,81,74,.16);border-color:rgba(221,81,74,.75);color:#fff}
.buttons{gap:8px;flex-wrap:wrap}
input[type=range]{-webkit-appearance:none;appearance:none;width:190px;height:22px;background:none;cursor:pointer}
input[type=range]::-webkit-slider-runnable-track{height:3px;border-radius:2px;
  background:linear-gradient(90deg,var(--accent),rgba(255,255,255,.18))}
input[type=range]::-webkit-slider-thumb{-webkit-appearance:none;width:18px;height:18px;border-radius:50%;
  background:#f2f3f4;border:none;margin-top:-7.5px;box-shadow:0 2px 8px rgba(0,0,0,.6)}
input[type=range]::-moz-range-track{height:3px;border-radius:2px;background:rgba(255,255,255,.18)}
input[type=range]::-moz-range-thumb{width:18px;height:18px;border:none;border-radius:50%;background:#f2f3f4}
input[type=range]:disabled{opacity:.35;cursor:not-allowed}

#foot{position:relative;z-index:6;padding:11px 28px 14px;font-size:10.5px;letter-spacing:.14em;
  text-transform:uppercase;color:#5f636a;border-top:1px solid rgba(255,255,255,.05);
  background:#07080a;text-align:center}

/* ---------- Mobile ---------- */
@media (max-width:860px){
  #topbar{padding:14px 16px 12px;align-items:center}
  .headline h1{font-size:14px}
  .headline p{display:none}
  .brand-text strong{font-size:13px}
  #legend{position:relative;top:auto;right:auto;width:auto;margin:0;border:none;border-radius:0;
    border-top:1px solid var(--line);background:rgba(10,11,14,.95);backdrop-filter:none;
    padding:8px 16px 4px;order:3;max-height:20vh;overflow-y:auto;-webkit-overflow-scrolling:touch}
  #legendList li{padding:6px 8px}
  #legendList li small{font-size:10.5px;line-height:1.4}
  .legend-head{margin-bottom:4px}
  #panel{gap:9px;padding:10px 16px;flex-direction:column;align-items:stretch;order:2}
  #panel .row{justify-content:space-between}
  #panel .types{display:grid;grid-template-columns:repeat(3,1fr);gap:8px}
  #panel .types button{padding:11px 4px;font-size:11.5px;text-align:center;width:100%}
  #panel .buttons{display:grid;grid-template-columns:1fr 1fr;gap:8px}
  #panel .buttons button{padding:11px 8px;width:100%}
  #btnReset{grid-column:1 / -1}
  input[type=range]{flex:1 1 auto;width:auto;height:34px}
  input[type=range]::-webkit-slider-thumb{width:24px;height:24px;margin-top:-10.5px}
  #hint{font-size:10px;bottom:8px;padding:0 16px}
  #foot{padding:10px 16px 14px;order:4;font-size:9.5px}
  #app{flex-direction:column}
  #stage{flex:1 1 auto;min-height:48vh;order:1}
  .lbl{font-size:10.5px;padding:4px 9px 4px 7px}
}
@media (max-width:860px) and (orientation:landscape){
  /* Querformat ist sehr flach: Bedienleiste einzeilig, sonst bleibt fuer die 3D-Buehne nichts uebrig */
  #legend{display:none}
  #foot{display:none}
  #hint{display:none}
  #topbar{padding:8px 14px 8px}
  .brand-text em{display:none}
  #stage{min-height:0}
  #panel{flex-direction:row;flex-wrap:wrap;align-items:center;gap:8px;padding:8px 14px}
  #panel .row{flex:1 1 auto}
  #panel .types{display:grid;grid-template-columns:repeat(3,1fr);min-width:220px;flex:1 1 220px}
  #panel .buttons{display:grid;grid-template-columns:repeat(4,1fr);min-width:330px;flex:2 1 330px}
  #panel .buttons button,#panel .types button{padding:8px 3px;font-size:10px;white-space:nowrap;letter-spacing:.02em}
  #panel .row:nth-child(2){flex:1 1 140px;gap:8px}
  #panel label{font-size:9px}
}

/* ---------- Sprachumschalter (Erweiterung v2) ---------- */
#langsw{flex:0 0 auto;align-self:flex-end;margin-bottom:1px;z-index:8;display:flex;gap:0;
  border:1px solid var(--line2);border-radius:999px;overflow:hidden;
  background:var(--panel);backdrop-filter:blur(10px);pointer-events:auto}
#langsw button{border:none;border-radius:0;background:none;padding:4px 11px 5px;
  font-size:10.5px;letter-spacing:.14em;color:#8b8f97;transition:background .18s,color .18s}
#langsw button + button{border-left:1px solid var(--line)}
#langsw button:hover{background:rgba(255,255,255,.07);color:var(--txt)}
#langsw button.on{background:rgba(221,81,74,.18);color:#fff}

/* ---------- Intro-Veil + Vignette (Erweiterung v2) ---------- */
#veil{position:absolute;inset:0;z-index:9;background:#07080a;pointer-events:none}
#vignette{position:absolute;inset:0;z-index:2;pointer-events:none;opacity:.6;
  background:
    radial-gradient(118% 92% at 50% 50%,rgba(0,0,0,0) 46%,rgba(0,0,0,.42) 78%,rgba(0,0,0,.76) 100%);
  transition:opacity .4s ease}
#labels{z-index:3}

@media (max-width:860px){
  #topbar{padding:14px 14px 12px;gap:10px}
  #langsw{margin-left:2px;margin-bottom:0;align-self:center}
  #langsw button{padding:6px 8px;font-size:9.5px;letter-spacing:.1em}
  .brand{gap:9px}
  .brand-mark{height:24px;width:8px}
  .brand-text strong{font-size:12px;letter-spacing:.1em}
  .brand-text em{font-size:9px;letter-spacing:.08em;white-space:nowrap}
  .headline{min-width:0}
  .headline h1{font-size:12.5px;white-space:nowrap}
  /* 2x2 Raster fuer die vier Schalter */
  #btnReset{grid-column:auto}
  #vignette{opacity:.42}
}
