/* berz.media Studio Remote – Design wie RideControl / Studio Monitor */
*{box-sizing:border-box}
html,body{margin:0;height:100%}
body{font-family:"Inter","Segoe UI",Arial,sans-serif;color:#fff;-webkit-font-smoothing:antialiased;-webkit-tap-highlight-color:transparent;
 background:radial-gradient(circle at 18% -8%,rgba(40,52,160,.14),transparent 40%),linear-gradient(150deg,#00011f 0%,#000214 45%,#000006 100%) fixed;overflow:hidden}
[hidden]{display:none!important}
.lockup{display:flex;align-items:center;gap:16px}
.lockup .b{height:30px}.lockup .d{height:26px}
.lockup .x{display:block;flex:none;width:1px;height:30px;background:rgba(255,255,255,.22)}

/* ---------- Anmeldung (wie RideControl) ---------- */
.login-bg{position:fixed;inset:-12%;background:#00011f;overflow:hidden;z-index:0}
.login-bg:after{content:"";position:absolute;inset:0;background:radial-gradient(circle at 22% 30%,rgba(52,68,190,.30),transparent 32%),radial-gradient(circle at 74% 48%,rgba(110,58,170,.14),transparent 30%),radial-gradient(circle at 84% 14%,rgba(241,135,0,.07),transparent 24%);filter:blur(40px)}
.login-bg i{position:absolute;width:720px;height:720px;border:1px solid rgba(255,255,255,.035);border-radius:50%;left:5%;top:8%;animation:ring 34s linear infinite}
.login-bg i:nth-child(2){width:930px;height:930px;left:auto;right:-10%;top:12%;animation-duration:44s}
.login-bg i:nth-child(3){width:520px;height:520px;left:48%;top:60%;animation-direction:reverse;animation-duration:28s}
@keyframes ring{to{transform:rotate(360deg)}}
body.in .login-bg{display:none}
.login-view{position:fixed;inset:0;display:grid;place-items:center;padding:24px;z-index:2}
.login-card{width:min(520px,92vw);padding:52px 54px 46px;border-radius:32px;background:linear-gradient(160deg,rgba(14,15,26,.92),rgba(6,7,14,.9));border:1px solid rgba(255,255,255,.13);box-shadow:0 20px 50px rgba(0,1,22,.28);backdrop-filter:blur(28px);-webkit-backdrop-filter:blur(28px)}
.login-card .lockup{justify-content:center;margin-bottom:24px}
.login-card .lockup .b{height:44px}.login-card .lockup .d{height:38px}.login-card .lockup .x{height:44px}
.login-product{text-align:center;font-size:40px;font-weight:800;letter-spacing:-.045em;margin-bottom:34px}
.access-field{display:block;margin-bottom:12px}
.access-field span{display:block;color:#aeb3c3;font-size:11px;font-weight:800;letter-spacing:.14em;text-transform:uppercase;margin-bottom:9px}
.access-field input{width:100%;border:1px solid rgba(255,255,255,.13);background:#03041a;color:#fff;border-radius:14px;font-size:25px;text-align:center;letter-spacing:.38em;padding:18px;outline:none;font-family:inherit;transition:.18s}
#keyInput{font-size:14px;letter-spacing:.02em;font-family:Consolas,monospace}
.access-field input:focus{border-color:rgba(155,77,241,.78);box-shadow:0 0 0 4px rgba(155,77,241,.12)}
.login-btn{width:100%;border:0;border-radius:14px;padding:15px;background:#4a1ee0;color:#fff;font:inherit;font-weight:700;font-size:16px;cursor:pointer}
.form-error{min-height:20px;margin-top:12px;text-align:center;color:#ff7f8e;font-size:13px}
.login-card.shake{animation:shake .4s}
@keyframes shake{20%,60%{transform:translateX(-8px)}40%,80%{transform:translateX(8px)}}
.login-version{position:fixed;right:22px;bottom:16px;z-index:3;font-size:13px;font-weight:600;color:rgba(255,255,255,.45)}

/* ---------- Pult ---------- */
#appView{position:fixed;inset:0;display:flex;flex-direction:column;z-index:2}
.top{display:flex;align-items:center;gap:16px;padding:22px 30px;flex:none}
.sp{flex:1}
.pill{display:flex;align-items:center;gap:9px;padding:8px 15px;border-radius:999px;background:rgba(10,12,40,.8);border:1px solid rgba(255,255,255,.1);font-size:14px;font-weight:600;color:rgba(255,255,255,.8);white-space:nowrap}
.pill i{width:9px;height:9px;border-radius:50%;background:#ff6a5c;box-shadow:0 0 10px #ff6a5c}
.pill.ok i{background:#43bf51;box-shadow:0 0 10px #43bf51}
.lo{background:none;border:1px solid rgba(255,255,255,.1);color:rgba(255,255,255,.55);border-radius:999px;padding:8px 15px;font:inherit;font-size:14px;font-weight:600;cursor:pointer}
/* ---------- MIDI Mapping ---------- */
.lo.midi{color:rgba(255,255,255,.8)}
.lo.act{background:#4a1ee0;border-color:#4a1ee0;color:#fff}
.mapbar{display:flex;align-items:center;gap:12px;margin:0 30px 10px;padding:12px 16px;border-radius:14px;background:rgba(74,30,224,.16);border:1px solid rgba(124,92,255,.45);flex:none}
.mapbar .mt{flex:1;font-size:14px;font-weight:600;color:rgba(255,255,255,.88)}
.mapbar .done{background:#4a1ee0;border-color:#4a1ee0;color:#fff}
body.mapmode .strip>.key,body.mapmode .keys .key:not(.free),body.mapmode .fader:not(.na){position:relative;cursor:pointer;outline:2px dashed rgba(124,92,255,.55);outline-offset:3px}
body.mapmode .cap{cursor:pointer}
body.mapmode .learning{outline:3px solid #f18700!important;animation:learnp 1s ease-in-out infinite}
@keyframes learnp{50%{outline-color:rgba(241,135,0,.35)}}
.mbadge{position:absolute;left:50%;bottom:-2px;transform:translate(-50%,50%);z-index:6;display:inline-flex;align-items:center;gap:6px;white-space:nowrap;
 padding:3px 9px;border-radius:999px;background:#0a0d16;border:1px solid rgba(124,92,255,.6);font-size:11px;font-weight:700;letter-spacing:.02em;color:rgba(255,255,255,.65);text-transform:none}
.fader .mbadge{bottom:auto;top:-4px;transform:translate(-50%,-50%)}
.key .mbadge{bottom:auto;top:5px;transform:translateX(-50%);max-width:calc(100% - 8px);overflow:hidden}
.lo.midi .s{display:none}

body.mapmode .strip>.key{overflow:visible}
.strip>.key .mbadge{top:auto;bottom:-2px;transform:translate(-50%,50%)}
.mbadge.set{background:#4a1ee0;border-color:#4a1ee0;color:#fff}
.mbadge .mx{font-style:normal;opacity:.75;cursor:pointer;padding:0 2px}
.mbadge .mx:hover{opacity:1}
.deskwrap{flex:1;min-height:0;overflow:auto;display:flex;justify-content:center;align-items:flex-start;padding:6px 30px 30px}
.desk{--sw:170px;display:flex;height:100%;min-height:520px;border-radius:22px;overflow:hidden;flex:none;
 background:linear-gradient(180deg,#232836 0%,#171b25 100%);border:1px solid rgba(255,255,255,.08);box-shadow:0 30px 70px rgba(0,0,0,.55),inset 0 1px 0 rgba(255,255,255,.07)}
.desk.off .strip,.desk.off .keys{opacity:.35;pointer-events:none;filter:grayscale(.6)}
.strip{width:var(--sw);display:flex;flex-direction:column;align-items:center;gap:18px;padding:14px 12px 22px;border-right:1px solid rgba(0,0,0,.35);box-shadow:1px 0 0 rgba(255,255,255,.04)}
.strip:last-child{border-right:0}
.scr{width:100%;background:#0a0d16;border-radius:9px;border:1px solid #000;box-shadow:inset 0 0 0 1px rgba(255,255,255,.04),inset 0 10px 30px rgba(0,0,0,.6);padding:12px 10px;display:flex;flex-direction:column;gap:9px}
.tile{white-space:nowrap;overflow:hidden;text-overflow:ellipsis;border-radius:6px;padding:8px 4px;text-align:center;font-size:11px;font-weight:700;letter-spacing:.06em;text-transform:uppercase;background:#1b2130;color:rgba(255,255,255,.5)}
.tile.red{background:#e00000;color:#fff}
.name{font-size:19px;font-weight:850;letter-spacing:-.03em;text-align:center;text-transform:uppercase;white-space:nowrap;overflow:hidden;text-overflow:ellipsis}
.db{min-height:1.4em;font-size:13px;color:rgba(255,255,255,.6);text-align:center;font-variant-numeric:tabular-nums}
.fader{position:relative;width:110px;flex:1;min-height:200px;touch-action:none}
.fader .slot{position:absolute;left:58%;top:6px;bottom:6px;width:6px;margin-left:-3px;border-radius:3px;background:#05070c;box-shadow:inset 0 1px 2px #000}
.fader .zero{position:absolute;left:58%;width:30px;margin-left:-15px;height:2px;background:rgba(255,255,255,.45);transform:translateY(-50%)}
.fader .sc{position:absolute;left:0;top:0;bottom:0;width:30px;font-size:10px;color:rgba(255,255,255,.4);text-align:right;pointer-events:none}
.fader .sc span{position:absolute;right:0;transform:translateY(-50%)}
.cap{position:absolute;left:58%;width:54px;height:36px;margin-left:-27px;border-radius:5px;transform:translateY(-50%);cursor:grab;touch-action:none;
 background:linear-gradient(180deg,#3c4250 0%,#22262f 48%,#1a1d24 52%,#2b303b 100%);box-shadow:0 6px 12px rgba(0,0,0,.6),inset 0 1px 0 rgba(255,255,255,.15)}
.cap:after{content:"";position:absolute;left:6px;right:6px;top:50%;height:2px;margin-top:-1px;background:#fff;opacity:.85}
.cap.drag{cursor:grabbing;box-shadow:0 8px 18px rgba(0,0,0,.7),0 0 0 2px rgba(155,77,241,.5),inset 0 1px 0 rgba(255,255,255,.15)}
.fader.na .cap{display:none}
.strip.away .fader,.strip.away .key{opacity:.35;pointer-events:none}
.strip.msync .fader>:not(.ghost){opacity:.38}
.fader .ghost{position:absolute;left:58%;width:62px;margin-left:-31px;height:4px;border-radius:2px;background:#f18700;
 box-shadow:0 0 6px rgba(241,135,0,.8);transform:translateY(-50%);pointer-events:none;z-index:2}
.fader .ghost[hidden]{display:none}
.strip.msync .tile{background:rgba(241,135,0,.18);color:#f18700}
.key{border-radius:9px;display:flex;align-items:center;justify-content:center;text-align:center;padding:4px;font-weight:800;letter-spacing:.04em;color:rgba(255,255,255,.6);text-transform:uppercase;overflow:hidden;
 background:linear-gradient(180deg,#3a404d,#2a2f3a);border:1px solid rgba(0,0,0,.5);box-shadow:0 5px 0 #11141b,0 8px 14px rgba(0,0,0,.45),inset 0 1px 0 rgba(255,255,255,.12);cursor:pointer;user-select:none;-webkit-user-select:none;touch-action:manipulation;transition:transform .06s}
.strip .key{width:110px;height:58px;font-size:16px;flex:none}
.key.on{color:#fff;--k1:#ff2a2a;--k2:#c80000;--k3:#6d0000;--kg:rgba(255,30,30,.55);background:linear-gradient(180deg,var(--k1),var(--k2));box-shadow:0 5px 0 var(--k3),0 0 26px var(--kg),inset 0 1px 0 rgba(255,255,255,.35)}
.key.c-orange.on{--k1:#ffa23a;--k2:#e07800;--k3:#7a4100;--kg:rgba(241,135,0,.6)}
.key.c-blau.on{--k1:#4b8dff;--k2:#1f5fe0;--k3:#0d2f75;--kg:rgba(46,123,255,.6)}
.key.c-gruen.on{--k1:#4fd45f;--k2:#2e9e3b;--k3:#14501b;--kg:rgba(67,191,81,.55)}
.key.c-weiss.on{--k1:#ffffff;--k2:#d9dde6;--k3:#7d8494;--kg:rgba(255,255,255,.45);color:#111}
.key.free{color:rgba(255,255,255,.18);background:linear-gradient(180deg,#2c313c,#23272f);box-shadow:0 5px 0 #11141b,0 8px 14px rgba(0,0,0,.35),inset 0 1px 0 rgba(255,255,255,.06);cursor:default}
.key.free:active{transform:none}
.keys{width:124px;padding:18px 16px 27px;display:grid;grid-template-columns:1fr;grid-auto-rows:1fr;gap:16px;flex:none}
.keys .key{font-size:13px;min-height:56px;word-break:break-word}
/* ---------- rechte Spalte: mAirList + Audio ---------- */
.lside{width:340px;flex:none;height:100%;min-height:520px;display:flex;flex-direction:column;justify-content:flex-end;gap:16px}
.apanel{flex:none;display:flex;flex-direction:column;gap:14px;padding:16px 18px 18px;border-radius:22px;
 background:linear-gradient(180deg,#171c2a 0%,#0d1019 100%);border:1px solid rgba(255,255,255,.08);box-shadow:0 30px 70px rgba(0,0,0,.55),inset 0 1px 0 rgba(255,255,255,.06)}
.ahead{display:flex;justify-content:space-between;align-items:center;font-size:16px;font-weight:800;letter-spacing:-.01em;color:#fff;padding:0 2px}
.ahead span:first-child{display:flex;align-items:center;gap:9px}
.ahead span:first-child:before{content:"";width:9px;height:9px;border-radius:50%;background:rgba(255,255,255,.25)}
.apanel.live .ahead span:first-child:before{background:#43bf51;box-shadow:0 0 10px #43bf51}
.apanel.wait .ahead span:first-child:before{background:#f18700;box-shadow:0 0 10px #f18700;animation:learnp 1s ease-in-out infinite}
.apanel.bad .ahead span:first-child:before{background:#ff6a5c;box-shadow:0 0 10px #ff6a5c}
.ast{font-size:13px;font-weight:700;color:rgba(255,255,255,.55)}
.apanel.live .ast{color:#43bf51}
.meters{display:flex;flex-direction:column;gap:9px;padding:12px 12px 8px;border-radius:14px;background:#0a0d16;border:1px solid rgba(255,255,255,.06)}
.mrow{display:flex;align-items:center;gap:12px}
.mrow b{width:46px;font-size:12px;font-weight:800;letter-spacing:.04em;text-transform:uppercase;color:rgba(255,255,255,.6)}
.mbars{flex:1;display:flex;flex-direction:column;gap:3px}
.mbars i{position:relative;display:block;height:7px;border-radius:4px;overflow:hidden;
 background:linear-gradient(90deg,rgba(67,191,81,.16) 0 75%,rgba(241,194,0,.16) 75% 87.5%,rgba(255,74,74,.18) 87.5%)}
.mbars s{position:absolute;inset:0;width:100%;clip-path:inset(0 100% 0 0);
 background:linear-gradient(90deg,#43bf51 0 75%,#f1c200 75% 87.5%,#ff4a4a 87.5%)}
.mbars u{position:absolute;top:0;bottom:0;width:2px;left:0;background:#fff;opacity:0}
.mscale{position:relative;height:11px;margin-left:58px;font-size:9px;font-weight:700;color:rgba(255,255,255,.35);font-variant-numeric:tabular-nums}
.mscale span{position:absolute;top:0;transform:translateX(-50%)}
.mscale span:nth-child(1){left:0;transform:none}.mscale span:nth-child(2){left:25%}.mscale span:nth-child(3){left:50%}
.mscale span:nth-child(4){left:75%}.mscale span:nth-child(5){left:87.5%}.mscale span:nth-child(6){left:100%;transform:translateX(-100%)}
.adev{display:grid;grid-template-columns:1fr 1fr;gap:10px}
.adev label{display:flex;flex-direction:column;gap:5px;min-width:0;font-size:11px;font-weight:800;letter-spacing:.04em;text-transform:uppercase;color:rgba(255,255,255,.5)}
.adev select{width:100%;min-width:0;background:#0a0d16;color:#fff;border:1px solid rgba(255,255,255,.12);border-radius:10px;padding:8px 9px;font:inherit;font-size:13px;font-weight:600;text-transform:none;letter-spacing:0}
.afoot{display:flex;align-items:center;gap:12px}
.amsg{flex:1;font-size:12.5px;font-weight:600;color:rgba(255,255,255,.6);line-height:1.35}
.aconn{flex:none;border:0;border-radius:12px;padding:12px 22px;font:inherit;font-size:14px;font-weight:800;letter-spacing:.02em;cursor:pointer;color:#fff;background:#4a1ee0;box-shadow:0 8px 24px rgba(74,30,224,.35)}
.apanel.on .aconn{background:#262c3d;box-shadow:none;color:rgba(255,255,255,.85)}
/* ---------- Sendeablauf (mAirList) ---------- */
.deskwrap.withrun{gap:24px}
.run{flex:1 1 420px;min-width:380px;height:100%;min-height:520px;display:flex;flex-direction:column;gap:14px;padding:18px;border-radius:22px;overflow:hidden;
 background:linear-gradient(180deg,#171c2a 0%,#0d1019 100%);border:1px solid rgba(255,255,255,.08);box-shadow:0 30px 70px rgba(0,0,0,.55),inset 0 1px 0 rgba(255,255,255,.06)}
.runhead{display:flex;justify-content:space-between;align-items:center;font-size:16px;font-weight:800;letter-spacing:-.01em;color:#fff;padding:0 2px}
.runhead span:first-child{display:flex;align-items:center;gap:9px}
.runhead span:first-child:before{content:"";width:9px;height:9px;border-radius:50%;background:#43bf51;box-shadow:0 0 10px #43bf51}
.run.offline .runhead span:first-child:before{background:#ff6a5c;box-shadow:0 0 10px #ff6a5c}
.clock{font-variant-numeric:tabular-nums;font-size:22px;color:#fff;font-weight:800;letter-spacing:-.02em}
.runoff{flex:1;display:flex;flex-direction:column;align-items:center;justify-content:center;gap:12px;text-align:center;font-size:20px;font-weight:800;color:rgba(255,255,255,.75);
 border-radius:16px;background:#0a0d16;border:1px dashed rgba(255,255,255,.12)}
.runoff:before{content:"";width:16px;height:16px;border-radius:50%;background:#ff3b3b;box-shadow:0 0 18px #ff3b3b}
.runbody{flex:1;min-height:0;display:flex;flex-direction:column;gap:14px}
#runNow{display:flex;flex-direction:column;gap:10px;flex:none}
.runidle{padding:18px;border-radius:14px;background:#0a0d16;color:rgba(255,255,255,.45);text-align:center}
.nowc{--tc:#9b4df1;position:relative;background:linear-gradient(135deg,rgba(255,255,255,.045),rgba(255,255,255,0) 60%),#0a0d16;border:1px solid rgba(255,255,255,.07);border-left:4px solid var(--tc);
 border-radius:14px;padding:12px 16px 14px;display:flex;flex-direction:column;gap:3px;transition:border-color .2s,box-shadow .2s}
.rtop{display:flex;justify-content:space-between;align-items:center;margin-bottom:4px}
.badge{font-size:11px;font-weight:800;letter-spacing:.08em;text-transform:uppercase;color:var(--tc);background:color-mix(in srgb,var(--tc) 16%,transparent);padding:3px 8px;border-radius:999px}
.rtop .el{font-size:13px;color:rgba(255,255,255,.6);font-variant-numeric:tabular-nums}
.ra{font-size:14px;color:rgba(255,255,255,.62);white-space:nowrap;overflow:hidden;text-overflow:ellipsis}
.rt{font-size:21px;font-weight:850;letter-spacing:-.02em;white-space:nowrap;overflow:hidden;text-overflow:ellipsis}
.nowc .bar{position:relative;height:7px;border-radius:4px;background:#1b2130;margin-top:10px}
.nowc .bar i{position:absolute;left:0;top:0;bottom:0;border-radius:4px;background:linear-gradient(90deg,color-mix(in srgb,var(--tc) 55%,#000),var(--tc));box-shadow:0 0 12px color-mix(in srgb,var(--tc) 50%,transparent)}
.nowc .bar b{position:absolute;top:-5px;bottom:-5px;width:3px;margin-left:-1.5px;background:#ffc20e;border-radius:2px;box-shadow:0 0 8px #ffc20e}
.nowc.warn{border-color:rgba(224,0,0,.8);border-left-color:#ff3b3b;box-shadow:0 0 22px rgba(224,0,0,.3)}
/* große Zahlen über dem Fenster */
.run{position:relative}
.big{position:absolute;inset:0;z-index:5;display:none;flex-direction:column;align-items:center;justify-content:center;gap:0;pointer-events:none;
 background:radial-gradient(ellipse at center,rgba(5,7,14,.82) 0%,rgba(5,7,14,.55) 55%,rgba(5,7,14,.25) 100%)}
.big.show{display:flex}
.bt{font-size:150px;line-height:1;font-weight:900;letter-spacing:-.05em;font-variant-numeric:tabular-nums}
.big.two .bt{font-size:120px}
.bt.eof{color:#ff3b3b;text-shadow:0 0 40px rgba(255,40,40,.7),0 4px 18px rgba(0,0,0,.8)}
.bt.eof.last{animation:blink 1s steps(2,start) infinite}
.bt.ramp{color:#ffc20e;text-shadow:0 0 40px rgba(255,194,14,.6),0 4px 18px rgba(0,0,0,.8)}
.big.two .bt.ramp.wait{font-size:84px;opacity:.9}
@keyframes blink{to{visibility:hidden}}
/* nächste Titel */
.runnext{flex:1;min-height:0;overflow:auto;display:flex;flex-direction:column;gap:7px;padding-right:2px}
.nx{--tc:#9b4df1;display:grid;grid-template-columns:80px 1fr auto;gap:10px;align-items:center;padding:9px 12px 9px 10px;border-radius:12px;
 background:rgba(255,255,255,.035);border:1px solid rgba(255,255,255,.05);border-left:3px solid var(--tc)}
.nx.first{background:linear-gradient(90deg,color-mix(in srgb,var(--tc) 14%,transparent),rgba(255,255,255,.03));border-color:color-mix(in srgb,var(--tc) 40%,transparent);border-left-color:var(--tc)}
.nl{display:flex;flex-direction:column;gap:3px}
.nx .st{font-size:15px;font-weight:800;color:#fff;font-variant-numeric:tabular-nums}
.ty{font-size:10px;font-weight:800;letter-spacing:.03em;text-transform:uppercase;color:var(--tc);white-space:nowrap;overflow:hidden;text-overflow:ellipsis}
.nx .nt{min-width:0}.nx .ra{font-size:12px}.nx .rt{font-size:15px;font-weight:750}
.nx .nd{display:flex;flex-direction:column;align-items:flex-end;gap:3px;font-variant-numeric:tabular-nums}
.nx .len{font-size:14px;color:rgba(255,255,255,.8);font-weight:700}
.nx .rp{font-size:11px;font-weight:800;color:#000;background:#ffc20e;border-radius:5px;padding:1px 6px}
.runfoot{position:relative;z-index:6;display:flex;justify-content:flex-end;min-height:30px;flex:none}
.mode{font-size:13px;font-weight:900;letter-spacing:.14em;padding:7px 14px;border-radius:9px;color:#fff;display:flex;align-items:center;gap:8px}
.mode:before{content:"";width:9px;height:9px;border-radius:50%;background:#fff}
.mode.assist{background:#2e9e3b;box-shadow:0 0 18px rgba(67,191,81,.45)}
.mode.auto{background:#e00000;box-shadow:0 0 18px rgba(255,30,30,.5);animation:modeblink 1s steps(2,start) infinite}
@keyframes modeblink{50%{background:#5a0000;box-shadow:none}}
.t-music{--tc:#9b4df1}.t-jingle{--tc:#2e9bff}.t-info{--tc:#25c2a0}.t-ad{--tc:#f18700}.t-voice{--tc:#ff4fa3}.t-other{--tc:#8a93a6}
.empty{padding:40px;color:rgba(255,255,255,.55);text-align:center;align-self:center}

/* ---------- Bewegung: Tasten, ON, Audio ---------- */
.key{transition:background .18s ease,box-shadow .22s ease,color .18s ease,transform .08s ease}
.key:active{transform:translateY(2px) scale(.97)}
.cap{transition:top .12s ease-out}
.cap.drag{transition:none}
.tile{transition:background .25s ease,color .25s ease}
.fader .ghost{animation:ghostp 1.6s ease-in-out infinite}
@keyframes ghostp{50%{box-shadow:0 0 14px rgba(241,135,0,1);opacity:.75}}
.aconn{transition:background .2s ease,box-shadow .2s ease,transform .08s ease}
.aconn:active{transform:scale(.96)}
.aconn.busy{display:flex;align-items:center;gap:9px}
.aconn.busy:before{content:"";width:13px;height:13px;border-radius:50%;border:2px solid rgba(255,255,255,.3);border-top-color:#fff;animation:spin .8s linear infinite}
@keyframes spin{to{transform:rotate(360deg)}}
.meters{transition:opacity .3s ease,border-color .3s ease}
.apanel:not(.live) .meters{opacity:.55}
.apanel.live .meters{border-color:rgba(67,191,81,.28)}
.apanel{transition:border-color .3s ease}
.apanel.live{border-color:rgba(67,191,81,.3)}
#appView,.guest{animation:fadein .35s ease both}
.desk,.lside,.run{animation:rise .45s cubic-bezier(.2,.8,.2,1) both}
.desk{animation-delay:.05s}.run{animation-delay:.12s}.lside{animation-delay:.18s}
@keyframes fadein{from{opacity:0}}
@keyframes rise{from{opacity:0;transform:translateY(14px)}}

/* ---------- Meldungen oben rechts ---------- */
.toasts{position:fixed;top:84px;right:24px;z-index:40;display:flex;flex-direction:column;gap:10px;align-items:flex-end;pointer-events:none}
.toast{display:flex;align-items:center;gap:10px;padding:12px 18px;border-radius:14px;background:rgba(18,21,34,.96);border:1px solid rgba(255,255,255,.12);
 box-shadow:0 14px 34px rgba(0,0,0,.5);font-size:14px;font-weight:700;color:#fff;transform:translateX(24px);opacity:0;transition:transform .3s cubic-bezier(.2,.8,.2,1),opacity .3s ease}
.toast:before{content:"";width:9px;height:9px;border-radius:50%;background:#8a93a6;flex:none}
.toast.ok:before{background:#43bf51;box-shadow:0 0 10px #43bf51}
.toast.warn:before{background:#f18700;box-shadow:0 0 10px #f18700}
.toast.in{transform:none;opacity:1}
.toast.out{transform:translateX(24px);opacity:0}

/* ---------- Fenster nach der Anmeldung ---------- */
.modal{position:fixed;inset:0;z-index:30;display:grid;place-items:center;padding:20px;background:rgba(0,1,20,.62);backdrop-filter:blur(6px);opacity:0;transition:opacity .22s ease}
.modal.in{opacity:1}
.mcard{width:min(460px,100%);padding:30px 30px 26px;border-radius:26px;background:linear-gradient(160deg,#151a28,#0b0e17);border:1px solid rgba(255,255,255,.12);
 box-shadow:0 30px 80px rgba(0,0,0,.6);transform:translateY(12px) scale(.98);transition:transform .3s cubic-bezier(.2,.8,.2,1)}
.modal.in .mcard{transform:none}
.steps{display:flex;gap:6px;justify-content:center;margin-bottom:20px}
.steps i{width:26px;height:4px;border-radius:2px;background:rgba(255,255,255,.14);transition:background .3s ease}
.steps i.on{background:#7c5cff}
.mstep h2,.gstep h1{margin:0 0 8px;font-size:26px;font-weight:800;letter-spacing:-.03em;text-align:center}
.mlead{margin:0 0 20px;text-align:center;color:rgba(255,255,255,.62);font-size:15px;line-height:1.45}
.minput{width:100%;border:1px solid rgba(255,255,255,.14);background:#03041a;color:#fff;border-radius:14px;font:inherit;font-size:20px;font-weight:600;text-align:center;padding:15px;outline:none}
.minput:focus{border-color:rgba(155,77,241,.78);box-shadow:0 0 0 4px rgba(155,77,241,.12)}
.merr{min-height:20px;margin-top:8px;text-align:center;color:#ff7f8e;font-size:13px}
.mbtns{display:flex;gap:10px;justify-content:flex-end;margin-top:14px}
.mbtns.two{justify-content:center}.mbtns.two .mbtn{flex:1}
.mbtn{border:1px solid rgba(255,255,255,.14);background:rgba(255,255,255,.06);color:#fff;border-radius:13px;padding:13px 20px;font:inherit;font-size:15px;font-weight:700;cursor:pointer;
 transition:background .18s ease,transform .08s ease,box-shadow .2s ease,opacity .2s ease}
.mbtn:hover{background:rgba(255,255,255,.1)}
.mbtn:active{transform:scale(.97)}
.mbtn:disabled{opacity:.35;cursor:default;transform:none}
.mbtn.pri{background:#4a1ee0;border-color:#4a1ee0;box-shadow:0 8px 24px rgba(74,30,224,.35)}
.mbtn.pri:hover{background:#5a2ff0}
.mbtn.red{background:rgba(255,59,59,.14);border-color:rgba(255,59,59,.45);color:#ff8a80}
.mbtn.act{background:#f18700;border-color:#f18700;color:#fff}
.mbtn.wide{width:100%;margin-top:6px}
.mbtn.ping{box-shadow:0 0 0 4px rgba(67,191,81,.35);border-color:#43bf51}
.mtest{display:flex;flex-direction:column;gap:10px;padding:16px;border-radius:16px;background:#0a0d16;border:1px solid rgba(255,255,255,.06)}
.mtest label,.gsel{display:flex;flex-direction:column;gap:5px;font-size:11px;font-weight:800;letter-spacing:.06em;text-transform:uppercase;color:rgba(255,255,255,.5)}
.mtest select,.gsel select{width:100%;background:#03041a;color:#fff;border:1px solid rgba(255,255,255,.12);border-radius:10px;padding:10px;font:inherit;font-size:14px;font-weight:600;text-transform:none;letter-spacing:0}
.mtest .mbars,.gmic .mbars{flex:none}
.mbars.mbig{gap:5px}.mbars.mbig i{height:12px;border-radius:6px}
.mok{min-height:20px;font-size:14px;font-weight:700;color:rgba(255,255,255,.55);text-align:center;transition:color .3s ease}
.mok.yes{color:#43bf51}
.mstep.enter,.gstep.enter{animation:stepin .35s cubic-bezier(.2,.8,.2,1)}
@keyframes stepin{from{opacity:0;transform:translateX(18px)}}

/* ---------- Gast ---------- */
body.isguest{overflow:auto}
.guest{position:fixed;inset:0;z-index:2;overflow:auto;display:flex;flex-direction:column;align-items:center;padding:28px 18px 40px;
 background:radial-gradient(circle at 50% -10%,rgba(52,68,190,.28),transparent 45%),linear-gradient(160deg,#00011f,#000006)}
.gtop{width:min(440px,100%);margin:4px 0 28px;display:flex;align-items:center;justify-content:space-between}.gtop .lockup .b{height:30px}
.gcard{width:min(440px,100%);padding:30px 24px 28px;border-radius:28px;background:linear-gradient(160deg,rgba(21,26,40,.94),rgba(11,14,23,.94));border:1px solid rgba(255,255,255,.12);box-shadow:0 30px 80px rgba(0,0,0,.55)}
.gstep h1{font-size:30px}
.gicon{display:grid;place-items:center;width:84px;height:84px;margin:0 auto 18px;border-radius:50%;background:rgba(124,92,255,.14);color:#a993ff}
.gicon svg{width:44px;height:44px}
.gmic{display:flex;flex-direction:column;gap:12px}
.gmic .mbars{padding:12px;border-radius:14px;background:#0a0d16}
.mbtn.go{display:block;width:100%;padding:22px;border:0;border-radius:18px;font-size:22px;font-weight:800;background:linear-gradient(180deg,#43bf51,#2e9e3b);
 box-shadow:0 10px 30px rgba(67,191,81,.35),inset 0 1px 0 rgba(255,255,255,.3)}
.mbtn.go:disabled{background:#262c3d;box-shadow:none}
.gwait{margin-top:16px;padding:12px 14px;border-radius:12px;background:rgba(241,135,0,.12);color:#f8b25c;font-size:14px;font-weight:600;text-align:center;line-height:1.4}
.gring{position:relative;width:110px;height:110px;margin:4px auto 18px;border-radius:50%;display:grid;place-items:center;background:rgba(255,255,255,.04)}
.gring span{width:46px;height:46px;border-radius:50%;background:#f18700;box-shadow:0 0 24px rgba(241,135,0,.7);transition:background .3s ease,box-shadow .3s ease}
.gring:before,.gring:after{content:"";position:absolute;inset:0;border-radius:50%;border:2px solid currentColor;opacity:0;color:#f18700}
.gring.wait:before{border-color:rgba(241,135,0,.25);border-top-color:#f18700;opacity:1;animation:spin 1s linear infinite}
.gring.live span{background:#43bf51;box-shadow:0 0 30px rgba(67,191,81,.8)}
.gring.live:before,.gring.live:after{color:#43bf51;animation:pulse 2.2s ease-out infinite}
.gring.live:after{animation-delay:1.1s}
.gring.bad span{background:#ff4a4a;box-shadow:0 0 24px rgba(255,74,74,.7)}
@keyframes pulse{from{opacity:.7;transform:scale(.55)}to{opacity:0;transform:scale(1.1)}}
.gmeters{display:flex;flex-direction:column;gap:10px;padding:14px;border-radius:16px;background:#0a0d16;border:1px solid rgba(255,255,255,.06);margin-bottom:6px}

@media (max-width:700px){
 .deskwrap.withrun{flex-direction:column;align-items:stretch;gap:12px}.run{width:auto;height:auto;min-height:0;margin:0 auto;max-width:520px;width:100%}.lside{order:3;width:100%;max-width:520px;height:auto;min-height:0;margin:0 auto}.run{flex:none;min-width:0}.runnext{max-height:none}.bt{font-size:120px}.big.two .bt{font-size:96px}.big.two .bt.ramp.wait{font-size:68px}
 .top{padding:14px 16px;gap:8px}.lockup .b{height:20px}.lockup .d{height:17px}.lockup{gap:10px}.lockup .x{height:22px}
 .pill span{display:none}.pill{padding:8px 11px}.lo{padding:7px 11px;font-size:12px}
 .lo.midi .l{display:none}.lo.midi .s{display:inline}.mapbar{margin:0 8px 8px;flex-wrap:wrap;gap:8px}.mapbar .mt{flex-basis:100%;font-size:13px}
.deskwrap{padding:4px 8px 12px;justify-content:flex-start}.desk{--sw:112px;height:100%;min-height:480px;margin:0 auto}
 .strip{padding:8px 6px 16px;gap:14px}.name{font-size:13px}.tile{font-size:8.5px;padding:6px 2px}.db{font-size:11px}
 .fader{width:84px}.fader .sc{width:22px;font-size:8px}.cap{width:44px;margin-left:-22px}.fader .ghost{width:52px;margin-left:-26px}.strip .key{width:88px;height:52px;font-size:14px}
 .keys{width:118px;padding:10px 10px 20px;gap:14px}.keys .key{font-size:12px;min-height:48px}
 .login-card{padding:40px 26px 30px}.login-card .lockup .b{height:30px}.login-card .lockup .d{height:26px}.login-card .lockup .x{height:30px}.login-product{font-size:32px}
}
@media (min-width:701px) and (max-width:1560px){.lside{width:300px}.deskwrap{padding-left:20px;padding-right:20px}.deskwrap.withrun{gap:18px}.run{min-width:340px}}
@media (max-width:480px){.lo.midi{display:none}}
@media (max-width:700px){.toasts{top:70px;right:12px;left:12px;align-items:stretch}.mcard{padding:24px 18px 20px}.mbtns{flex-direction:column-reverse}.mbtns.two{flex-direction:row}}
@media (max-width:420px){.top{gap:6px}.lo{padding:7px 9px}.lockup .b{height:17px}.lockup .d{height:14px}.lockup .x{height:18px}.lockup{gap:8px}}
@media (prefers-reduced-motion:reduce){*{animation:none!important;transition:none!important}}
/* ab 2.4: Internet weg, Studio offline, Gast beim Co-Moderator */
.netbar{position:fixed;left:50%;top:18px;transform:translateX(-50%);z-index:60;display:flex;align-items:center;gap:11px;padding:12px 20px;border-radius:999px;background:rgba(60,14,10,.96);border:1px solid rgba(255,106,92,.45);color:#ffd0c9;font-size:15px;font-weight:700;box-shadow:0 10px 30px rgba(0,0,0,.4);animation:fadein .3s ease both;max-width:calc(100vw - 24px)}
.netbar .spin{width:14px;height:14px;flex:none;border-radius:50%;border:2px solid rgba(255,208,201,.3);border-top-color:#ffd0c9;animation:spin .8s linear infinite}
.offline-box{margin-top:6px;padding:18px 16px;border-radius:16px;background:rgba(255,106,92,.1);border:1px solid rgba(255,106,92,.3);text-align:center}
.offline-box b{display:flex;align-items:center;justify-content:center;gap:10px;font-size:22px;color:#fff;letter-spacing:-.01em}
.offline-box b:before{content:"";width:11px;height:11px;border-radius:50%;background:#ff6a5c;box-shadow:0 0 12px #ff6a5c}
.offline-box span{display:block;margin-top:8px;color:rgba(255,255,255,.62);font-size:14px;line-height:1.45}
.aguest{display:flex;flex-direction:column;gap:6px;margin:10px 2px 0;padding:9px 12px;border-radius:11px;background:rgba(255,255,255,.04);border:1px solid rgba(255,255,255,.08);font-size:13px;font-weight:600;color:rgba(255,255,255,.7)}
.aguest span{display:flex;align-items:center;gap:9px}
.aguest span:before{content:"";width:8px;height:8px;border-radius:50%;flex:none;background:#f18700}
.aguest span.live:before{background:#43bf51;box-shadow:0 0 8px #43bf51}
.aguest b{color:#fff}
.gwait.off{background:rgba(255,106,92,.12);color:#ffb3a8}
