/* Content – dunkle Oberfläche im Stil von Frame.io, Akzent = Markenfarbe (--a) */
:root{--a:#49c8ef;--atx:#06121a;--bg:#0b0d10;--bg1:#111418;--bg2:#171b20;--bg3:#1e232a;--bg4:#262c34;--ln:#232931;--ln2:#2e353f;--tx:#e9edf1;--tx2:#b4bdc7;--mu:#7c8793;
  --ok:#3ecf8e;--warn:#f4a261;--bad:#ef5b6b;--vio:#8e7dff;--r:10px;--sb:248px;--top:56px;color-scheme:dark;
  --font:Inter,ui-sans-serif,-apple-system,BlinkMacSystemFont,"Segoe UI",Roboto,"Helvetica Neue",Arial,sans-serif;--mono:ui-monospace,"SF Mono",SFMono-Regular,Menlo,Consolas,monospace}
*{box-sizing:border-box}
html,body{margin:0;height:100%;background:var(--bg);color:var(--tx);font:14px/1.45 var(--font);-webkit-font-smoothing:antialiased;-webkit-tap-highlight-color:transparent}
body{overflow:hidden}
#app{height:100%}
a{color:var(--a);text-decoration:none}
button{font:inherit;color:inherit}
input,textarea,select{font:inherit;color:var(--tx)}
svg.i{width:18px;height:18px;flex:none;stroke:currentColor;fill:none;stroke-width:1.8;stroke-linecap:round;stroke-linejoin:round}
::selection{background:color-mix(in srgb,var(--a) 40%,transparent)}
::-webkit-scrollbar{width:10px;height:10px}::-webkit-scrollbar-thumb{background:#2a3038;border-radius:10px;border:3px solid transparent;background-clip:padding-box}::-webkit-scrollbar-track{background:transparent}
.leise{color:var(--mu)}.klein{font-size:12px}.mono{font-family:var(--mono)}.ellipse{overflow:hidden;text-overflow:ellipsis;white-space:nowrap}.flex{display:flex;align-items:center;gap:8px}.grow{flex:1;min-width:0}.versteckt{display:none!important}

/* ---------- Knöpfe & Felder ---------- */
.knopf{all:unset;box-sizing:border-box;cursor:pointer;display:inline-flex;align-items:center;justify-content:center;gap:7px;height:34px;padding:0 14px;border-radius:8px;background:var(--a);color:var(--atx);font-weight:600;font-size:13.5px;white-space:nowrap;transition:filter .15s,transform .05s,background .15s;user-select:none}
.knopf:hover{filter:brightness(1.08)}.knopf:active{transform:translateY(1px)}.knopf.voll{width:100%;height:42px;font-size:15px}
.knopf.zweit{background:var(--bg3);color:var(--tx);box-shadow:inset 0 0 0 1px var(--ln2)}.knopf.zweit:hover{background:var(--bg4);filter:none}
.knopf.geist{background:transparent;color:var(--tx2)}.knopf.geist:hover{background:var(--bg3);color:var(--tx);filter:none}
.knopf.gefahr{background:var(--bad);color:#fff}.knopf.ok{background:var(--ok);color:#05140c}
.knopf.klein{height:28px;padding:0 10px;font-size:12.5px;border-radius:7px}
.knopf[disabled]{opacity:.45;pointer-events:none}
.ib{all:unset;box-sizing:border-box;cursor:pointer;width:34px;height:34px;border-radius:8px;display:inline-grid;place-items:center;color:var(--tx2);flex:none;transition:background .12s,color .12s}
.ib:hover{background:var(--bg3);color:var(--tx)}.ib.an{color:var(--a);background:color-mix(in srgb,var(--a) 14%,transparent)}.ib.klein{width:28px;height:28px;border-radius:7px}.ib.klein svg.i{width:16px;height:16px}
.ib[disabled]{opacity:.35;pointer-events:none}
.feld{display:block;margin:0 0 14px}.feld>span{display:block;font-size:12.5px;color:var(--tx2);margin:0 0 6px;font-weight:500}
.feld input,.feld textarea,.feld select,.eingabe{width:100%;height:38px;background:var(--bg1);border:1px solid var(--ln2);border-radius:8px;padding:0 12px;outline:none;transition:border-color .15s,box-shadow .15s}
.feld textarea{height:auto;min-height:80px;padding:10px 12px;resize:vertical}
.feld input:focus,.feld textarea:focus,.feld select:focus,.eingabe:focus{border-color:var(--a);box-shadow:0 0 0 3px color-mix(in srgb,var(--a) 22%,transparent)}
.feld small{display:block;color:var(--mu);font-size:12px;margin-top:5px}
.schalter{display:flex;align-items:center;justify-content:space-between;gap:14px;padding:10px 0;border-top:1px solid var(--ln);cursor:pointer}
.schalter:first-child{border-top:0}.schalter b{display:block;font-weight:500}.schalter small{display:block;color:var(--mu);font-size:12px}
.schalter input{appearance:none;flex:none;width:38px;height:22px;border-radius:22px;background:var(--bg4);position:relative;cursor:pointer;transition:background .15s;margin:0}
.schalter input::after{content:'';position:absolute;left:3px;top:3px;width:16px;height:16px;border-radius:50%;background:#fff;transition:transform .15s}
.schalter input:checked{background:var(--a)}.schalter input:checked::after{transform:translateX(16px)}
.segment{display:inline-flex;background:var(--bg1);border:1px solid var(--ln2);border-radius:9px;padding:3px;gap:2px}
.segment button{all:unset;cursor:pointer;padding:5px 12px;border-radius:6px;font-size:13px;color:var(--tx2)}.segment button.an{background:var(--bg4);color:var(--tx)}
.fehlerbox{background:color-mix(in srgb,var(--bad) 15%,transparent);border:1px solid color-mix(in srgb,var(--bad) 40%,transparent);color:#ffc9cf;padding:10px 12px;border-radius:8px;font-size:13px;margin:0 0 14px}
.hinweisbox{background:var(--bg2);border:1px solid var(--ln);padding:12px 14px;border-radius:9px;font-size:13px;color:var(--tx2)}
.pill{display:inline-flex;align-items:center;gap:6px;height:24px;padding:0 9px;border-radius:12px;font-size:12px;font-weight:500;background:var(--bg3);color:var(--tx2);white-space:nowrap}
.pill i{width:8px;height:8px;border-radius:50%;background:var(--sf,var(--mu));flex:none}
.st-arbeit{--sf:var(--warn)}.st-abnahme{--sf:var(--vio)}.st-aenderungen{--sf:var(--bad)}.st-freigegeben{--sf:var(--ok)}
.avatar{width:26px;height:26px;border-radius:50%;display:inline-grid;place-items:center;font-size:11px;font-weight:700;color:#0b0d10;flex:none;background:var(--af,var(--a));text-transform:uppercase}
.avatar.gr{width:32px;height:32px;font-size:13px}.avatar.kl{width:20px;height:20px;font-size:9px}
.lade{width:18px;height:18px;border-radius:50%;border:2px solid color-mix(in srgb,var(--tx) 20%,transparent);border-top-color:var(--a);animation:dreh .8s linear infinite;flex:none}
@keyframes dreh{to{transform:rotate(360deg)}}

/* ---------- Anmeldeseiten ---------- */
body.auth{overflow:auto;display:flex;flex-direction:column;align-items:center;justify-content:center;min-height:100%;padding:24px 16px;background:radial-gradient(900px 500px at 80% -10%,color-mix(in srgb,var(--a) 16%,transparent),transparent 60%),var(--bg)}
.authkarte{width:100%;max-width:380px;background:var(--bg1);border:1px solid var(--ln);border-radius:16px;padding:30px 28px 24px;box-shadow:0 30px 80px -30px rgba(0,0,0,.7)}
.authkarte h1{font-size:21px;margin:18px 0 6px}.authkarte .leise{margin:0 0 18px}
.wortmarke{font-weight:800;letter-spacing:.08em;text-transform:uppercase;font-size:13px;display:inline-flex;align-items:center;gap:9px}
.wortmarke::before{content:'';width:10px;height:10px;border-radius:3px;background:var(--a);box-shadow:0 0 18px var(--a)}
img.brandlogo{max-height:30px;max-width:180px;display:block}
.authfuss{color:var(--mu);font-size:12px;margin-top:18px}

/* ---------- App-Gerüst ---------- */
.app{display:grid;grid-template-columns:var(--sb) 1fr;height:100%}
.app.vollbild{grid-template-columns:1fr}.app.vollbild .seitenleiste{display:none}
.seitenleiste{background:var(--bg1);border-right:1px solid var(--ln);display:flex;flex-direction:column;min-height:0}
.sl-marke{height:var(--top);display:flex;align-items:center;padding:0 18px;border-bottom:1px solid var(--ln)}
.sl-nav{padding:10px 10px 4px}
.sl-punkt{all:unset;box-sizing:border-box;cursor:pointer;display:flex;align-items:center;gap:10px;width:100%;height:34px;padding:0 10px;border-radius:8px;color:var(--tx2);font-size:13.5px;position:relative}
.sl-punkt:hover{background:var(--bg3);color:var(--tx)}.sl-punkt.an{background:var(--bg3);color:var(--tx)}
.sl-punkt .zahl{margin-left:auto;background:var(--a);color:var(--atx);border-radius:10px;font-size:11px;font-weight:700;padding:1px 7px}
.sl-punkt .zahl.leise{background:var(--bg4);color:var(--tx2)}
.sl-kopf{display:flex;align-items:center;justify-content:space-between;padding:14px 12px 4px 20px;font-size:11px;font-weight:600;color:var(--mu);text-transform:uppercase;letter-spacing:.08em}
.sl-projekte{flex:1;overflow:auto;padding:2px 10px 10px}
.sl-projekte .punkt{width:9px;height:9px;border-radius:3px;background:var(--pf,var(--a));flex:none}
.sl-fuss{border-top:1px solid var(--ln);padding:10px}
.sl-ich{display:flex;align-items:center;gap:10px;padding:6px 8px;border-radius:9px}
.sl-ich b{display:block;font-size:13px;font-weight:600}.sl-ich small{display:block;color:var(--mu);font-size:11.5px}
.haupt{min-width:0;min-height:0;display:flex;flex-direction:column;position:relative}
.kopfleiste{height:var(--top);flex:none;display:flex;align-items:center;gap:10px;padding:0 18px;border-bottom:1px solid var(--ln);background:var(--bg)}
.kopfleiste h1{font-size:16px;margin:0;font-weight:600}
.brot{display:flex;align-items:center;gap:4px;min-width:0;font-size:15px}
.brot a,.brot span{color:var(--tx2);padding:4px 6px;border-radius:6px;white-space:nowrap;overflow:hidden;text-overflow:ellipsis;max-width:260px}
.brot a:hover{background:var(--bg3);color:var(--tx)}.brot b{font-weight:600;padding:4px 6px;white-space:nowrap;overflow:hidden;text-overflow:ellipsis}
.brot svg.i{width:14px;height:14px;color:var(--mu)}
.flaeche{flex:1;overflow:auto;padding:20px 22px 120px;position:relative}
.menuknopf{display:none}

/* ---------- Projekt-Übersicht ---------- */
.raster{display:grid;grid-template-columns:repeat(auto-fill,minmax(min(var(--kb,240px),100%),1fr));gap:18px}.raster>*{min-width:0}
.pkarte{background:var(--bg1);border:1px solid var(--ln);border-radius:12px;overflow:hidden;cursor:pointer;transition:border-color .15s,transform .15s}
.pkarte:hover{border-color:var(--ln2);transform:translateY(-1px)}
.pcover{aspect-ratio:16/10;background:var(--bg2);display:grid;grid-template-columns:1fr 1fr;grid-template-rows:1fr 1fr;gap:2px;position:relative}
.pcover img{width:100%;height:100%;object-fit:cover;display:block}.pcover img:only-child{grid-column:1/3;grid-row:1/3}
.pcover .leer{grid-column:1/3;grid-row:1/3;display:grid;place-items:center;color:var(--mu)}
.pcover .leer svg.i{width:34px;height:34px;stroke-width:1.3}
.pinfo{padding:12px 14px}.pinfo b{display:block;font-weight:600;font-size:14.5px}.pinfo small{color:var(--mu);font-size:12px}
.pinfo .zeile{display:flex;justify-content:space-between;align-items:center;margin-top:3px;gap:8px}.pinfo .zeile small:last-child{white-space:nowrap;flex:none}
.neukarte{border:1.5px dashed var(--ln2);background:transparent;display:grid;place-items:center;min-height:180px;color:var(--tx2)}
.neukarte:hover{border-color:var(--a);color:var(--a)}
.neukarte div{display:flex;flex-direction:column;align-items:center;gap:8px}.neukarte svg.i{width:26px;height:26px}

/* ---------- Dateien-Raster ---------- */
.abschnitt{font-size:12px;font-weight:600;color:var(--mu);text-transform:uppercase;letter-spacing:.08em;margin:6px 0 12px}
.okarte{color:inherit;min-width:0;display:flex;align-items:center;gap:12px;background:var(--bg1);border:1px solid var(--ln);border-radius:11px;padding:10px 12px;cursor:pointer;transition:border-color .15s,background .15s;position:relative}
.okarte:hover{border-color:var(--ln2);background:var(--bg2)}.okarte.drop{border-color:var(--a);background:color-mix(in srgb,var(--a) 10%,var(--bg1))}
.okarte .ocover{width:56px;height:40px;border-radius:6px;background:var(--bg3) center/cover;display:grid;place-items:center;color:var(--tx2);flex:none}
.okarte b{display:block;font-weight:600}.okarte small{color:var(--mu);font-size:12px}
.karte{background:var(--bg1);border:1px solid var(--ln);border-radius:12px;overflow:hidden;cursor:pointer;position:relative;transition:border-color .15s,box-shadow .15s;user-select:none}
.karte:hover{border-color:var(--ln2)}.karte.gewaehlt{border-color:var(--a);box-shadow:0 0 0 1px var(--a)}.karte.drop{border-color:var(--a);box-shadow:0 0 0 3px color-mix(in srgb,var(--a) 35%,transparent)}
.thumb{aspect-ratio:16/9;background:#050607;position:relative;overflow:hidden;display:grid;place-items:center}
.thumb>img{width:100%;height:100%;object-fit:contain;display:block}
.thumb .scrub{position:absolute;inset:0;background-repeat:no-repeat;opacity:0;pointer-events:none;background-color:#050607}
.thumb .scrubwrap{position:absolute;inset:0;display:grid;place-items:center;pointer-events:none;opacity:0}
.thumb .scrubwrap div{background-repeat:no-repeat}
.thumb .scrubline{position:absolute;left:0;bottom:0;height:3px;background:var(--a);width:0;opacity:0;pointer-events:none}
.karte:hover .scrubwrap.aktiv,.karte:hover .scrubline.aktiv{opacity:1}
.thumb .typ{color:var(--mu)}.thumb .typ svg.i{width:38px;height:38px;stroke-width:1.2}
.thumb .typ .endung{display:block;text-align:center;font:600 11px var(--mono);margin-top:6px;letter-spacing:.06em;text-transform:uppercase}
.badge{position:absolute;font:600 11px var(--font);padding:2px 7px;border-radius:5px;background:rgba(0,0,0,.72);color:#fff;backdrop-filter:blur(6px);pointer-events:none}
.badge.vers{top:8px;left:8px;background:var(--a);color:var(--atx)}
.badge.dauer{bottom:8px;right:8px;font-family:var(--mono)}
.wahl{position:absolute;top:8px;right:8px;width:22px;height:22px;border-radius:6px;border:1.5px solid rgba(255,255,255,.7);background:rgba(0,0,0,.35);display:grid;place-items:center;opacity:0;transition:opacity .12s;cursor:pointer}
.wahl svg.i{width:14px;height:14px;stroke-width:3;color:var(--atx);opacity:0}
.karte:hover .wahl,.auswahl-an .wahl{opacity:1}.karte.gewaehlt .wahl{opacity:1;background:var(--a);border-color:var(--a)}.karte.gewaehlt .wahl svg.i{opacity:1}
.verarb{position:absolute;inset:0;background:rgba(5,6,7,.72);display:flex;flex-direction:column;align-items:center;justify-content:center;gap:8px;font-size:12px;color:var(--tx2);backdrop-filter:blur(2px)}
.verarb .balken{width:60%;height:4px;border-radius:4px;background:rgba(255,255,255,.12);overflow:hidden}.verarb .balken i{display:block;height:100%;background:var(--a);width:0;transition:width .4s}
.verarb.fehler{color:#ffc9cf}
.kinfo{padding:10px 12px 11px}
.kinfo .name{font-weight:600;font-size:13.5px;overflow:hidden;text-overflow:ellipsis;white-space:nowrap}
.kinfo .zeile{display:flex;align-items:center;gap:8px;margin-top:5px;font-size:12px;color:var(--mu);min-height:20px}
.kinfo .zeile .pill{height:20px;font-size:11px;padding:0 7px}
.kmenu{position:absolute;right:6px;bottom:8px;opacity:0}.karte:hover .kmenu{opacity:1}
.kzahl{display:inline-flex;align-items:center;gap:4px}.kzahl svg.i{width:14px;height:14px}.kzahl.offen{color:var(--a)}
.leerzustand{border:1.5px dashed var(--ln2);border-radius:16px;padding:56px 20px;text-align:center;color:var(--tx2);display:flex;flex-direction:column;align-items:center;gap:12px}
.leerzustand svg.i{width:40px;height:40px;stroke-width:1.2;color:var(--a)}.leerzustand h3{margin:0;font-size:17px;color:var(--tx)}.leerzustand p{margin:0;max-width:420px}
.ablage{position:absolute;inset:10px;border:2px dashed var(--a);border-radius:16px;background:color-mix(in srgb,var(--a) 10%,rgba(11,13,16,.85));display:none;align-items:center;justify-content:center;flex-direction:column;gap:10px;z-index:30;pointer-events:none;font-size:17px;font-weight:600}
.ablage.an{display:flex}.ablage svg.i{width:44px;height:44px;color:var(--a)}
.liste-ansicht .raster{grid-template-columns:1fr;gap:4px}
.liste-ansicht .karte{display:grid;grid-template-columns:120px 1fr;border-radius:9px}
.liste-ansicht .thumb{aspect-ratio:16/9}.liste-ansicht .kinfo{display:flex;align-items:center;gap:20px}.liste-ansicht .kinfo .name{flex:1}.liste-ansicht .kinfo .zeile{margin:0}
.liste-ansicht .badge.vers{top:4px;left:4px;font-size:10px}.liste-ansicht .badge.dauer{bottom:4px;right:4px;font-size:10px}.liste-ansicht .wahl{top:4px;right:4px;width:18px;height:18px}
.auswahlleiste{position:absolute;left:50%;bottom:22px;transform:translate(-50%,20px);opacity:0;pointer-events:none;background:var(--bg3);border:1px solid var(--ln2);border-radius:12px;padding:6px 6px 6px 16px;display:flex;align-items:center;gap:6px;box-shadow:0 20px 50px -10px rgba(0,0,0,.6);transition:all .18s;z-index:20;white-space:nowrap}
.auswahlleiste.an{transform:translate(-50%,0);opacity:1;pointer-events:auto}.auswahlleiste b{margin-right:8px}

/* ---------- Menüs, Fenster, Hinweise ---------- */
.menu{position:fixed;z-index:200;min-width:200px;max-width:320px;background:var(--bg2);border:1px solid var(--ln2);border-radius:11px;padding:5px;box-shadow:0 18px 50px -12px rgba(0,0,0,.75);animation:auf .12s ease-out;max-height:70vh;overflow:auto}
@keyframes auf{from{opacity:0;transform:translateY(-4px)}}
.menu button{all:unset;box-sizing:border-box;cursor:pointer;display:flex;align-items:center;gap:10px;width:100%;padding:7px 10px;border-radius:7px;font-size:13.5px;color:var(--tx)}
.menu button:hover,.menu button.fokus{background:var(--bg4)}.menu button.gefahr{color:#ff8b97}.menu button svg.i{width:16px;height:16px;color:var(--tx2)}
.menu button .haken{margin-left:auto;color:var(--a)}.menu button small{margin-left:auto;color:var(--mu);font-size:12px}
.menu hr{border:0;border-top:1px solid var(--ln2);margin:5px 4px}.menu .titel{padding:6px 10px 4px;font-size:11px;color:var(--mu);text-transform:uppercase;letter-spacing:.07em;font-weight:600}
.schleier{position:fixed;inset:0;background:rgba(3,4,6,.66);z-index:150;display:flex;align-items:center;justify-content:center;padding:16px;animation:einb .15s}
@keyframes einb{from{opacity:0}}
.fenster{width:100%;max-width:460px;max-height:calc(100vh - 32px);overflow:auto;background:var(--bg1);border:1px solid var(--ln2);border-radius:16px;box-shadow:0 40px 100px -20px rgba(0,0,0,.8);animation:hoch .18s cubic-bezier(.2,.8,.2,1)}
.fenster.breit{max-width:600px}
@keyframes hoch{from{transform:translateY(10px);opacity:0}}
.fenster header{display:flex;align-items:center;justify-content:space-between;padding:18px 20px 6px}.fenster header h2{margin:0;font-size:17px}
.fenster .inhalt{padding:10px 20px 6px}.fenster footer{display:flex;justify-content:flex-end;gap:8px;padding:12px 20px 18px}
.toasts{position:fixed;left:50%;top:16px;transform:translateX(-50%);z-index:300;display:flex;flex-direction:column;gap:8px;align-items:center;pointer-events:none}
.toast{background:var(--bg3);border:1px solid var(--ln2);color:var(--tx);padding:10px 16px;border-radius:10px;box-shadow:0 14px 40px -10px rgba(0,0,0,.7);font-size:13.5px;display:flex;align-items:center;gap:9px;animation:auf .15s}
.toast.fehler{border-color:color-mix(in srgb,var(--bad) 55%,transparent)}.toast.fehler svg.i{color:var(--bad)}.toast svg.i{color:var(--ok)}
.linkbox{display:flex;gap:6px;align-items:center;background:var(--bg);border:1px solid var(--ln2);border-radius:9px;padding:5px 5px 5px 12px;margin:4px 0 14px}
.linkbox input{all:unset;flex:1;min-width:0;font:13px var(--mono);color:var(--tx2)}

/* ---------- Upload-Fenster ---------- */
.upanel{position:fixed;right:18px;bottom:18px;width:360px;max-width:calc(100vw - 24px);background:var(--bg2);border:1px solid var(--ln2);border-radius:14px;box-shadow:0 24px 70px -14px rgba(0,0,0,.8);z-index:120;overflow:hidden}
.upanel header{display:flex;align-items:center;gap:8px;padding:10px 8px 10px 14px;border-bottom:1px solid var(--ln);font-weight:600;font-size:13.5px}
.upanel .uliste{max-height:300px;overflow:auto}.upanel.zu .uliste{display:none}
.upos{padding:10px 14px;border-bottom:1px solid var(--ln);display:grid;grid-template-columns:1fr auto;gap:4px 10px;align-items:center;font-size:13px}
.upos .n{overflow:hidden;text-overflow:ellipsis;white-space:nowrap}.upos small{color:var(--mu);font-size:11.5px;grid-column:1/3}
.upos .balken{grid-column:1/3;height:4px;border-radius:4px;background:var(--bg4);overflow:hidden}.upos .balken i{display:block;height:100%;background:var(--a);width:0;transition:width .3s}
.upos.fertig .balken i{background:var(--ok)}.upos.fehler .balken i{background:var(--bad)}.upos.fehler small{color:#ff9aa5}
.upos svg.i{width:16px;height:16px}.upos .ok{color:var(--ok)}

/* ---------- Player / Ansicht ---------- */
.viewer{display:grid;grid-template-rows:var(--top) minmax(0,1fr);height:100%;min-height:0;background:var(--bg)}
.vkopf{display:flex;align-items:center;gap:8px;padding:0 12px;border-bottom:1px solid var(--ln);min-width:0;background:var(--bg1)}
.vtitel{min-width:90px;display:flex;flex-direction:column;line-height:1.2;padding-right:4px}
.vtitel b{font-size:14.5px;font-weight:600;overflow:hidden;text-overflow:ellipsis;white-space:nowrap}.vtitel small{color:var(--mu);font-size:12px;overflow:hidden;text-overflow:ellipsis;white-space:nowrap}
.vwahl{all:unset;cursor:pointer;display:inline-flex;align-items:center;gap:6px;height:30px;padding:0 10px;border-radius:8px;background:var(--bg3);font-size:13px;font-weight:600;white-space:nowrap}
.vwahl:hover{background:var(--bg4)}.vwahl svg.i{width:14px;height:14px;color:var(--tx2)}
.vwahl.status{font-weight:500}.vwahl.status i{width:8px;height:8px;border-radius:50%;background:var(--sf,var(--mu))}
.vhaupt{display:grid;grid-template-columns:minmax(0,1fr) 372px;grid-template-rows:minmax(0,1fr);min-height:0}
.viewer.ohne-seite .vhaupt{grid-template-columns:1fr}.viewer.ohne-seite .seite{display:none}
.buehne{display:flex;flex-direction:column;min-width:0;min-height:0;background:#000}
.medien{flex:1;min-height:0;position:relative;display:flex;gap:2px;background:#000;overflow:hidden}
.mbox{flex:1;min-width:0;position:relative;display:grid;place-items:center;overflow:hidden}
.mbox video,.mbox img.bildv{position:absolute;inset:0;width:100%;height:100%;object-fit:contain;background:#000;display:block}
.mbox iframe{position:absolute;inset:0;width:100%;height:100%;border:0;background:#fff}
.mbox .label{position:absolute;top:10px;left:10px;z-index:4;background:rgba(0,0,0,.7);padding:3px 9px;border-radius:6px;font-size:12px;font-weight:600}
.mbox .zeichnung{position:absolute;z-index:3;pointer-events:none;overflow:visible}
.mbox .zeichnung.malen{pointer-events:auto;cursor:crosshair}
.mbox .safe{position:absolute;z-index:2;pointer-events:none}
.safe .zone{position:absolute;background:rgba(239,91,107,.18);border:1px dashed rgba(255,140,150,.6)}
.safe .rahmen{position:absolute;border:1.5px dashed rgba(255,255,255,.75);border-radius:4px}
.safe span{position:absolute;font:600 10px var(--font);color:#ffd0d5;text-transform:uppercase;letter-spacing:.06em;padding:3px 5px}
.mbox .wz{position:absolute;inset:0;z-index:2;pointer-events:none;overflow:hidden;display:flex;flex-wrap:wrap;align-content:center;justify-content:center;gap:70px 90px;transform:rotate(-22deg) scale(1.4);opacity:.17;font-weight:800;font-size:22px;color:#fff;white-space:nowrap;text-shadow:0 1px 2px #000}
.mbox .audiobild{position:absolute;inset:12% 6%;display:flex;flex-direction:column;justify-content:center;gap:16px}
.audiobild .welle{position:relative;height:42%;background-size:100% 100%;background-repeat:no-repeat;border-radius:8px}
.audiobild .welle i{position:absolute;top:-6px;bottom:-6px;width:2px;background:#fff;box-shadow:0 0 8px rgba(255,255,255,.6)}
.audiobild b{text-align:center;font-size:15px;color:var(--tx2)}
.dkarte{display:flex;flex-direction:column;align-items:center;gap:12px;color:var(--tx2);text-align:center;padding:20px}
.dkarte svg.i{width:56px;height:56px;stroke-width:1.1;color:var(--a)}.dkarte b{color:var(--tx);font-size:16px}
.mbox .warte{position:absolute;inset:0;z-index:5;display:flex;flex-direction:column;align-items:center;justify-content:center;gap:12px;background:rgba(0,0,0,.6) center/contain no-repeat;color:var(--tx2);text-align:center;padding:20px}
.mbox .warte .balken{width:min(320px,70%);height:4px;border-radius:4px;background:rgba(255,255,255,.12);overflow:hidden}.mbox .warte .balken i{display:block;height:100%;background:var(--a);transition:width .5s}
.mbox .gross{position:absolute;z-index:4;width:72px;height:72px;border-radius:50%;background:rgba(0,0,0,.55);display:grid;place-items:center;opacity:0;transform:scale(.8);transition:all .25s;pointer-events:none}
.mbox .gross.zeig{opacity:1;transform:scale(1)}.mbox .gross svg.i{width:30px;height:30px;color:#fff}
.wischer{position:absolute;top:0;bottom:0;width:0;z-index:6;cursor:ew-resize}
.wischer::before{content:'';position:absolute;top:0;bottom:0;left:-1px;width:2px;background:#fff;box-shadow:0 0 10px rgba(0,0,0,.6)}
.wischer i{position:absolute;top:50%;left:-16px;width:32px;height:32px;margin-top:-16px;border-radius:50%;background:#fff;box-shadow:0 2px 10px rgba(0,0,0,.5);display:grid;place-items:center;color:#000}
.wischer i svg.i{width:16px;height:16px;stroke-width:2.4}
.steuer{flex:none;background:var(--bg1);border-top:1px solid var(--ln);padding:6px 12px 8px;user-select:none}
.zeitleiste{position:relative;height:30px;cursor:pointer;touch-action:none}
.zl-spur{position:absolute;left:0;right:0;top:13px;height:5px;border-radius:5px;background:var(--bg4);overflow:hidden}
.zl-spur .geladen{position:absolute;top:0;bottom:0;left:0;background:rgba(255,255,255,.12)}.zl-spur .gespielt{position:absolute;top:0;bottom:0;left:0;background:var(--a)}
.zl-bereich{position:absolute;top:10px;height:11px;border-radius:3px;background:color-mix(in srgb,var(--warn) 35%,transparent);border:1px solid var(--warn);pointer-events:none}
.zl-kopf{position:absolute;top:7px;width:3px;height:17px;margin-left:-1.5px;border-radius:2px;background:#fff;box-shadow:0 0 0 2px rgba(0,0,0,.3);pointer-events:none}
.zl-marker{position:absolute;top:-2px;width:15px;height:15px;margin-left:-7.5px;border-radius:50%;background:var(--af,var(--a));border:2px solid var(--bg1);z-index:2;cursor:pointer;transition:transform .12s}
.zl-marker:hover,.zl-marker.an{transform:scale(1.3)}.zl-marker.erledigt{opacity:.45}
.zl-markerbereich{position:absolute;top:-2px;height:15px;border-radius:8px;background:color-mix(in srgb,var(--af,var(--a)) 35%,transparent);border:2px solid var(--bg1);z-index:1}
.zl-vorschau{position:absolute;bottom:34px;transform:translateX(-50%);background:#000;border:1px solid var(--ln2);border-radius:8px;overflow:hidden;pointer-events:none;display:none;z-index:10;box-shadow:0 10px 30px rgba(0,0,0,.6)}
.zl-vorschau div{background-repeat:no-repeat}.zl-vorschau span{display:block;text-align:center;font:600 11px var(--mono);padding:3px 6px;background:rgba(0,0,0,.85)}
.zl-tip{position:absolute;bottom:34px;transform:translateX(-50%);background:var(--bg3);border:1px solid var(--ln2);border-radius:8px;padding:7px 10px;font-size:12px;max-width:260px;pointer-events:none;display:none;z-index:11;white-space:normal;box-shadow:0 10px 30px rgba(0,0,0,.6)}
.zl-tip b{display:block;font-size:11.5px;color:var(--tx2);margin-bottom:2px}
.knopfreihe{display:flex;align-items:center;gap:2px}
.tc{all:unset;cursor:pointer;font:500 13px var(--mono);color:var(--tx);padding:4px 8px;border-radius:6px;white-space:nowrap;font-variant-numeric:tabular-nums}
.tc:hover{background:var(--bg3)}.tc span{color:var(--mu)}
.lautstaerke{display:flex;align-items:center}.lautstaerke input{width:0;opacity:0;transition:all .2s;accent-color:var(--a)}.lautstaerke:hover input,.lautstaerke input:focus{width:80px;opacity:1;margin-right:6px}
.tempo{all:unset;cursor:pointer;font:600 12px var(--mono);padding:4px 7px;border-radius:6px;color:var(--tx2);min-width:30px;text-align:center}.tempo:hover{background:var(--bg3);color:var(--tx)}
.qwahl{all:unset;cursor:pointer;font:700 11px var(--font);padding:3px 7px;border-radius:5px;border:1px solid var(--ln2);color:var(--tx2);letter-spacing:.03em}.qwahl:hover{color:var(--tx);border-color:var(--mu)}
/* Seitenleiste mit Kommentaren */
.seite{display:flex;flex-direction:column;min-height:0;border-left:1px solid var(--ln);background:var(--bg1)}
.reiter{display:flex;align-items:center;gap:2px;padding:8px 10px;border-bottom:1px solid var(--ln)}
.reiter>button.r{all:unset;cursor:pointer;padding:6px 11px;border-radius:7px;font-size:13.5px;font-weight:500;color:var(--tx2)}.reiter>button.r.an{background:var(--bg3);color:var(--tx)}
.reiter>button.r em{font-style:normal;color:var(--mu);margin-left:4px;font-weight:400}
.kliste{flex:1;overflow:auto;padding:6px 0}
.kom{padding:12px 14px 10px;border-bottom:1px solid var(--ln);cursor:pointer;position:relative;transition:background .12s}
.kom:hover{background:var(--bg2)}.kom.an{background:color-mix(in srgb,var(--a) 8%,var(--bg2));box-shadow:inset 3px 0 0 var(--a)}
.kom.erledigt .ktext,.kom.erledigt .kkopf b{opacity:.5}
.kkopf{display:flex;align-items:center;gap:8px;min-width:0}.kkopf b{font-size:13px;font-weight:600;white-space:nowrap;overflow:hidden;text-overflow:ellipsis}.kkopf small{color:var(--mu);font-size:11.5px;white-space:nowrap}
.kkopf .team{font-size:10px;font-weight:700;color:var(--atx);background:var(--a);border-radius:4px;padding:0 4px;text-transform:uppercase}
.kaktion{margin-left:auto;display:flex;gap:2px;flex:none}
.kcheck{all:unset;cursor:pointer;width:22px;height:22px;border-radius:50%;border:1.5px solid var(--ln2);display:grid;place-items:center;color:transparent;transition:all .12s}
.kcheck:hover{border-color:var(--ok);color:var(--ok)}.kcheck.an{background:var(--ok);border-color:var(--ok);color:#05140c}.kcheck svg.i{width:12px;height:12px;stroke-width:3}
.ktc{all:unset;cursor:pointer;font:600 11.5px var(--mono);color:var(--a);background:color-mix(in srgb,var(--a) 12%,transparent);padding:2px 6px;border-radius:5px;margin:7px 0 0;display:inline-flex;align-items:center;gap:5px}
.ktc svg.i{width:12px;height:12px}
.ktext{margin:6px 0 0;white-space:pre-wrap;word-wrap:break-word;font-size:13.5px;line-height:1.5}
.kfuss{display:flex;gap:12px;margin-top:6px;font-size:12px}.kfuss button{all:unset;cursor:pointer;color:var(--mu)}.kfuss button:hover{color:var(--tx)}
.antworten{margin:8px 0 0 12px;padding-left:12px;border-left:2px solid var(--ln2)}
.antwort{padding:6px 0}.antwort .ktext{font-size:13px}
.antwortfeld{margin-top:8px}
.leerkom{padding:40px 24px;text-align:center;color:var(--mu)}.leerkom svg.i{width:34px;height:34px;stroke-width:1.2;margin-bottom:8px;color:var(--ln2)}
.composer{border-top:1px solid var(--ln);padding:10px 12px 12px;background:var(--bg1)}
.composer .gastname{display:grid;grid-template-columns:1fr 1fr;gap:6px;margin-bottom:6px}
.composer .gastname input{height:34px;font-size:13px}
.cbox{background:var(--bg);border:1px solid var(--ln2);border-radius:11px;transition:border-color .15s,box-shadow .15s}
.cbox:focus-within{border-color:var(--a);box-shadow:0 0 0 3px color-mix(in srgb,var(--a) 18%,transparent)}
.cbox textarea{all:unset;box-sizing:border-box;display:block;width:100%;min-height:44px;max-height:180px;padding:10px 12px 4px;font-size:13.5px;line-height:1.45;white-space:pre-wrap;overflow-y:auto}
.cbox textarea::placeholder{color:var(--mu)}
.cleiste{display:flex;align-items:center;gap:4px;padding:4px 6px 6px;flex-wrap:wrap}
.chip{all:unset;cursor:pointer;display:inline-flex;align-items:center;gap:5px;height:26px;padding:0 8px;border-radius:7px;font:600 12px var(--font);color:var(--mu);background:var(--bg2);white-space:nowrap}
.chip.zeit{font:600 11.5px var(--mono)}
.chip.an{color:var(--a);background:color-mix(in srgb,var(--a) 14%,transparent)}.chip:hover{color:var(--tx)}.chip svg.i{width:13px;height:13px}
.senden{all:unset;cursor:pointer;width:30px;height:30px;border-radius:8px;display:grid;place-items:center;background:var(--a);color:var(--atx);flex:none;transition:filter .15s,opacity .15s}.senden:hover{filter:brightness(1.1)}.senden[disabled]{opacity:.35;cursor:default}.senden svg.i{width:16px;height:16px;stroke-width:2.2}
.vhinweis{margin:10px 12px 4px;padding:12px 14px;border-radius:10px;background:var(--bg2);border:1px solid var(--ln);border-left:3px solid var(--a);font-size:13px;color:var(--tx2);white-space:pre-wrap}.vhinweis b{display:block;color:var(--tx);font-size:12px;margin-bottom:4px}
.chip.bereich.an{color:var(--warn);background:color-mix(in srgb,var(--warn) 14%,transparent)}
.zeichenleiste{display:flex;align-items:center;gap:4px;padding:6px 8px;margin:0 0 8px;background:var(--bg2);border:1px solid var(--ln2);border-radius:10px}
.zeichenleiste .farbe{all:unset;cursor:pointer;width:18px;height:18px;border-radius:50%;background:var(--zf);box-shadow:0 0 0 2px var(--bg2),0 0 0 3px transparent}
.zeichenleiste .farbe.an{box-shadow:0 0 0 2px var(--bg2),0 0 0 4px var(--zf)}
.zeichenleiste .trenn{width:1px;height:18px;background:var(--ln2);margin:0 4px}
.infoliste{padding:14px 16px;display:grid;grid-template-columns:auto 1fr;gap:9px 16px;font-size:13px;align-content:start;overflow:auto}
.infoliste dt{color:var(--mu)}.infoliste dd{margin:0;word-break:break-word}
.freigabeleiste{display:flex;gap:6px;align-items:center}
.freigabe-badge{display:inline-flex;align-items:center;gap:6px;background:color-mix(in srgb,var(--ok) 16%,transparent);color:var(--ok);font-weight:600;font-size:12.5px;padding:5px 10px;border-radius:8px;white-space:nowrap}
.freigabe-badge.aenderungen{background:color-mix(in srgb,var(--bad) 16%,transparent);color:#ff97a2}
.freigabe-badge svg.i{width:15px;height:15px}

/* ---------- Seiten: Links, Aktivität, Einstellungen ---------- */
.tabelle{width:100%;border-collapse:separate;border-spacing:0;font-size:13.5px}
.tabelle th{text-align:left;font-size:11.5px;font-weight:600;color:var(--mu);text-transform:uppercase;letter-spacing:.06em;padding:0 12px 10px;border-bottom:1px solid var(--ln)}
.tabelle td{padding:12px;border-bottom:1px solid var(--ln);vertical-align:middle}.tabelle tr:hover td{background:var(--bg1)}
.tabelle td b{font-weight:600}.tabelle td small{display:block;color:var(--mu);font-size:12px}
.artbadge{font-size:11px;font-weight:700;padding:2px 7px;border-radius:5px;background:color-mix(in srgb,var(--a) 15%,transparent);color:var(--a);text-transform:uppercase;letter-spacing:.04em}
.artbadge.upload{background:color-mix(in srgb,var(--vio) 18%,transparent);color:#b6abff}
.akt-tag{font-size:12px;font-weight:600;color:var(--mu);text-transform:uppercase;letter-spacing:.07em;margin:22px 0 8px}
.akt{display:flex;gap:12px;align-items:flex-start;padding:12px 14px;border-radius:11px;cursor:pointer;background:var(--bg1);border:1px solid var(--ln);margin-bottom:6px}
.akt:hover{border-color:var(--ln2)}.akt.neu{border-color:color-mix(in srgb,var(--a) 45%,transparent)}
.akt .aicon{width:32px;height:32px;border-radius:9px;display:grid;place-items:center;background:var(--bg3);color:var(--tx2);flex:none}
.akt .aicon.freigabe{background:color-mix(in srgb,var(--ok) 18%,transparent);color:var(--ok)}.akt .aicon.aenderungen{background:color-mix(in srgb,var(--bad) 18%,transparent);color:#ff97a2}
.akt .aicon.upload{background:color-mix(in srgb,var(--vio) 18%,transparent);color:#b6abff}.akt .aicon.kommentar,.akt .aicon.antwort{background:color-mix(in srgb,var(--a) 15%,transparent);color:var(--a)}
.akt p{margin:0}.akt small{color:var(--mu);font-size:12px}.akt q{display:block;color:var(--tx2);margin-top:3px;font-size:13px}
.einst{max-width:760px}.einst section{background:var(--bg1);border:1px solid var(--ln);border-radius:14px;padding:18px 20px;margin-bottom:16px}
.einst h2{margin:0 0 4px;font-size:16px}.einst section>p.leise{margin:0 0 14px;font-size:13px}
.einst .reihe{display:grid;grid-template-columns:1fr 1fr;gap:0 12px}
.speicherstand{display:flex;gap:18px;flex-wrap:wrap;margin:6px 0 14px}.speicherstand div b{display:block;font-size:20px}.speicherstand div small{color:var(--mu);font-size:12px}
.plattenbalken{position:relative;height:8px;border-radius:8px;background:var(--bg4);overflow:visible}.plattenbalken i{display:block;height:100%;border-radius:8px}.plattenbalken span{position:absolute;top:-3px;bottom:-3px;width:2px;background:var(--mu);opacity:.6}
.sl-warnung{display:flex;align-items:center;gap:9px;margin:0 10px 8px;padding:9px 11px;border-radius:9px;background:color-mix(in srgb,var(--warn) 15%,transparent);color:#ffc58f;font-size:12.5px;font-weight:600}.sl-warnung svg.i{width:16px;height:16px}
.team-zeile{display:flex;align-items:center;gap:10px;padding:9px 0;border-top:1px solid var(--ln)}.team-zeile:first-of-type{border-top:0}

/* ---------- Kunden-Seite ---------- */
body.gastseite{overflow:auto}
.gast{min-height:100%;display:flex;flex-direction:column}
.gkopf{height:64px;flex:none;display:flex;align-items:center;gap:14px;padding:0 24px;border-bottom:1px solid var(--ln);background:var(--bg1)}
.gkopf .titel{min-width:0}.gkopf .titel b{display:block;font-size:15px;white-space:nowrap;overflow:hidden;text-overflow:ellipsis}.gkopf .titel small{color:var(--mu);font-size:12.5px}
.gkopf .trenner{width:1px;height:26px;background:var(--ln2)}
.ginhalt{flex:1;padding:26px 24px 60px;max-width:1400px;width:100%;margin:0 auto}
.gnachricht{background:var(--bg1);border:1px solid var(--ln);border-left:3px solid var(--a);border-radius:10px;padding:14px 16px;margin:0 0 22px;white-space:pre-wrap;color:var(--tx2)}
.gviewer{position:fixed;inset:0;z-index:50;background:var(--bg)}
.tor{min-height:100%;display:flex;align-items:center;justify-content:center;padding:24px 16px}
.uploadseite{max-width:720px;margin:0 auto}
.ablagezone{border:2px dashed var(--ln2);border-radius:18px;padding:48px 20px;text-align:center;display:flex;flex-direction:column;align-items:center;gap:12px;cursor:pointer;transition:all .15s;background:var(--bg1)}
.ablagezone:hover,.ablagezone.an{border-color:var(--a);background:color-mix(in srgb,var(--a) 7%,var(--bg1))}
.ablagezone svg.i{width:46px;height:46px;stroke-width:1.2;color:var(--a)}.ablagezone h3{margin:0;font-size:18px}.ablagezone p{margin:0;color:var(--mu)}
.uliste-gross .upos{background:var(--bg1);border:1px solid var(--ln);border-radius:10px;margin-top:8px}
.fertigbox{text-align:center;padding:30px 10px}.fertigbox svg.i{width:46px;height:46px;color:var(--ok)}

/* ---------- Mobil ---------- */
@media (max-width:980px){
  .vhaupt{grid-template-columns:1fr;grid-template-rows:minmax(220px,auto) 1fr;overflow:auto}
  .buehne{min-height:0}.medien{aspect-ratio:16/10;flex:none;max-height:62vh}
  .seite{border-left:0;border-top:1px solid var(--ln);min-height:420px}
}
@media (max-width:820px){
  .app{grid-template-columns:1fr}
  .seitenleiste{position:fixed;left:0;top:0;bottom:0;width:min(84vw,300px);z-index:140;transform:translateX(-102%);transition:transform .2s;box-shadow:20px 0 60px rgba(0,0,0,.6)}
  .app.menu-auf .seitenleiste{transform:none}
  .menuknopf{display:inline-grid}
  .kopfleiste{padding:0 10px}.flaeche{padding:14px 12px 120px}
  .raster{--kb:160px;gap:12px}
  .nur-breit{display:none!important}
  .tc{font-size:12px;padding:4px}
  .vkopf{gap:4px;padding:0 6px}
  .gkopf{padding:0 14px}.ginhalt{padding:18px 14px 60px}
  .lautstaerke{display:none}
}
@media (max-width:520px){.raster{gap:10px}.einst .reihe{grid-template-columns:1fr}}
