*{box-sizing:border-box}
:root{--bg1:#e5b85f;--bg2:#167061;--accent:#fff0ad;--txt:#fff;--tile:rgba(255,255,255,.16);--border:rgba(255,255,255,.24);--shadow:0 18px 48px rgba(0,0,0,.23)}
html,body{margin:0;width:100%;height:100%;font-family:Arial,Helvetica,sans-serif;overflow:hidden}
.event-display{background:radial-gradient(circle at 48% 10%,var(--bg1),var(--bg2));color:var(--txt)}
.theme-gruen{--bg1:#2b8067;--bg2:#092c26;--accent:#e5b557;--txt:#fff;--tile:rgba(255,255,255,.11)}
.theme-festlich{--bg1:#98722c;--bg2:#18160f;--accent:#f3cc78;--txt:#fff;--tile:rgba(255,248,226,.13)}
.theme-gold{--bg1:#b48031;--bg2:#3c2712;--accent:#ffe0a0;--txt:#fffaf0;--tile:rgba(255,241,205,.13)}
.theme-nachtblau{--bg1:#2d5f91;--bg2:#081522;--accent:#9bd4f5;--txt:#fff;--tile:rgba(255,255,255,.10)}
.theme-bordeaux{--bg1:#8d4250;--bg2:#261017;--accent:#f2c28d;--txt:#fff;--tile:rgba(255,245,239,.11)}
.theme-hell{--bg1:#fff8eb;--bg2:#dde9e3;--accent:#b17827;--txt:#123f36;--tile:rgba(255,255,255,.68);--border:rgba(18,63,54,.14)}
.theme-schiefer{--bg1:#63727b;--bg2:#172229;--accent:#ead098;--txt:#fff;--tile:rgba(255,255,255,.10)}
.theme-sommer{--bg1:#e5b85f;--bg2:#167061;--accent:#fff0ad;--txt:#fff;--tile:rgba(255,255,255,.16)}
.theme-abendsonne{--bg1:#df804b;--bg2:#482442;--accent:#ffe0a0;--txt:#fff;--tile:rgba(255,255,255,.14)}
.theme-rosenfest{--bg1:#d88996;--bg2:#603344;--accent:#fff1d1;--txt:#fff;--tile:rgba(255,255,255,.17)}
.theme-schwarzgold{--bg1:#322b20;--bg2:#090908;--accent:#d9ab45;--txt:#fff8e8;--tile:rgba(217,171,69,.10)}
.theme-abend{--bg1:#334b70;--bg2:#080e19;--accent:#e5b557;--txt:#fff;--tile:rgba(255,255,255,.10)}
.event-stage{height:100vh;padding:2vh 2.4vw 6.5vh;display:flex;flex-direction:column;gap:1.2vh;position:relative}
.event-stage:before{content:"";position:absolute;inset:0;background:radial-gradient(circle at 72% 20%,rgba(255,235,175,.18),transparent 34%);pointer-events:none}
.event-header{height:13vh;display:flex;align-items:center;gap:2vw;z-index:1}
.event-logo{height:11vh;max-width:27vw;object-fit:contain;filter:brightness(0) invert(1);opacity:.95}
.theme-hell .event-logo{filter:none}
.event-headings{border-left:2px solid var(--accent);padding-left:2vw}
.event-headings h1{margin:0 0 .6vh;font-size:clamp(2rem,3.2vw,4rem);line-height:1.05}
.event-headings p{margin:0;font-size:clamp(1rem,1.45vw,1.6rem);opacity:.92}
.event-canvas{flex:1;min-height:0;position:relative;z-index:1}
.event-item{position:absolute;min-width:0;min-height:0;padding:clamp(10px,1.4vw,24px);display:flex;flex-direction:column;justify-content:center;overflow:hidden;text-align:center}
.event-item.v-oben{justify-content:flex-start}.event-item.v-unten{justify-content:flex-end}
.event-item.tile{background:var(--tile);border:1px solid var(--border);border-radius:22px;box-shadow:var(--shadow);backdrop-filter:blur(6px)}
.event-item.align-links{text-align:left;align-items:flex-start}.event-item.align-rechts{text-align:right;align-items:flex-end}
.item-title{font-weight:700;color:var(--accent);margin-bottom:.7vh}.item-value{font-weight:800;letter-spacing:-.035em;line-height:1.03}.item-text{font-weight:700;line-height:1.26}.item-text.multiline{white-space:pre-wrap;overflow-wrap:anywhere}.item-sub{margin-top:.8vh;opacity:.9;font-weight:600}
.qr-content{height:100%;display:flex;align-items:center;justify-content:center;gap:1.2vw}.qr-content img{height:min(92%,260px);max-width:58%;background:#fff;padding:9px;border-radius:14px}.qr-content .item-text{max-width:13ch;color:var(--accent)}
.photo-show{position:relative;height:100%;width:100%;display:flex;align-items:center;justify-content:center}.photo-show img{position:absolute;inset:0;width:100%;height:100%;object-fit:contain;object-position:center;border-radius:14px;opacity:0;transition:opacity 1s}.photo-show img.active{opacity:1}
.event-ticker{height:5vh;min-height:42px;background:rgba(5,22,19,.48);border:1px solid var(--border);border-radius:14px;display:flex;align-items:center;overflow:hidden;z-index:1}.event-ticker div{white-space:nowrap;font-weight:700;font-size:clamp(1rem,1.35vw,1.48rem);color:var(--accent);padding-left:100%;animation:ticker 22s linear infinite}@keyframes ticker{from{transform:translateX(0)}to{transform:translateX(-140%)}}
.new-donation-celebration[hidden]{display:none!important}.new-donation-celebration{position:fixed;inset:0;z-index:20;display:flex;align-items:center;justify-content:center;background:rgba(3,20,17,.3);pointer-events:none}.celebration-card{background:rgba(255,249,236,.98);color:#154638;border-radius:28px;padding:4vh 5vw;font-size:clamp(2.7rem,5vw,6rem);font-weight:800;text-align:center;box-shadow:var(--shadow);animation:pop .45s ease}.celebration-card small{display:block;font-size:clamp(1rem,1.7vw,2rem);margin-top:1.2vh}@keyframes pop{from{transform:scale(.76);opacity:0}to{transform:scale(1);opacity:1}}
.event-controls{position:absolute;bottom:1vh;right:2.4vw;display:flex;flex-wrap:wrap;justify-content:flex-end;gap:7px;align-items:center;max-width:96vw;z-index:30;opacity:.16;transition:opacity .22s}.event-controls:hover{opacity:1}.event-controls button{background:rgba(0,0,0,.22);color:var(--txt);border:1px solid var(--border);border-radius:9px;padding:8px 11px;font-weight:700;cursor:pointer}.event-controls button:disabled{opacity:.45}.event-controls form{display:inline}.event-fetch-result{display:none;max-width:520px;padding:8px 10px;border-radius:9px;font-size:12px}.event-fetch-result.show{display:inline-block}.event-fetch-result.ok{background:rgba(19,91,59,.86)}.event-fetch-result.wait{background:rgba(127,91,21,.9)}.event-fetch-result.fail{background:rgba(135,34,32,.9)}#eventAutoState{font-size:12px;background:rgba(0,0,0,.22);padding:8px;border-radius:9px}
.anim-funkeln .qr-content img{animation:glow 3.5s ease-in-out infinite}
.event-logo.custom-logo{filter:none!important}@keyframes glow{50%{filter:drop-shadow(0 0 20px rgba(255,220,120,.62))}}
.anim-sanfter_puls .event-item.tile{animation:pulse 4.5s ease-in-out infinite}@keyframes pulse{50%{transform:scale(1.008)}}
.anim-schweben .event-logo{animation:float 4.3s ease-in-out infinite}@keyframes float{50%{transform:translateY(-7px)}}
@media(max-width:900px){.event-stage{padding:1.5vh 2vw 9vh}.event-header{height:11vh}.event-logo{height:8vh}.event-canvas{gap:7px}.event-item{padding:9px}}


/* LIVE-PATCH 35: Nur veröffentlichte Szenen im neuen quadratischen Raster. */
.event-display.layout-square{display:flex;align-items:center;justify-content:center}
.event-display.layout-square .event-stage{
    position:relative;
    width:min(100vw, calc(100vh * 16 / 9));
    height:min(100vh, calc(100vw * 9 / 16));
    aspect-ratio:16 / 9;
    margin:auto;
    padding:0;
    display:block;
    overflow:hidden;
}
.event-display.layout-square .event-header{
    position:absolute;
    top:2%;
    left:2.4%;
    right:2.4%;
    height:13%;
    z-index:3;
    pointer-events:none;
}
.event-display.layout-square .event-canvas{
    position:absolute;
    inset:0;
    z-index:1;
    min-height:0;
}
.event-display.layout-square .event-ticker{
    position:absolute;
    left:2.4%;
    right:2.4%;
    bottom:2%;
    height:5%;
    min-height:0;
    z-index:3;
}
.event-display.layout-square .event-controls{z-index:30}
@media(max-width:900px){
    .event-display.layout-square .event-stage{padding:0}
    .event-display.layout-square .event-header{height:13%}
}


/* LIVE-PATCH 37: Eine einzige feste 16:9-Designfläche für Live und Vorschau. */
.event-display.layout-square{
    position:relative;
    display:block;
    overflow:hidden;
    min-width:0;
    min-height:0;
}
.event-display.layout-square .event-stage{
    position:absolute;
    left:50%;
    top:50%;
    width:1600px;
    height:900px;
    margin:-450px 0 0 -800px;
    transform:scale(var(--event-stage-scale, 1));
    transform-origin:center center;
    max-width:none;
    max-height:none;
    aspect-ratio:auto;
    padding:0;
    display:block;
    overflow:hidden;
}
.event-display.layout-square .event-header{
    position:absolute;
    top:18px;
    left:38px;
    right:38px;
    height:117px;
    z-index:3;
    pointer-events:none;
    gap:32px;
}
.event-display.layout-square .event-logo{
    height:99px;
    max-width:432px;
}
.event-display.layout-square .event-headings{
    padding-left:32px;
}
.event-display.layout-square .event-canvas{
    position:absolute;
    inset:0;
    z-index:1;
    min-height:0;
}
.event-display.layout-square .event-item{
    padding:20px;
}
.event-display.layout-square .event-item.tile{
    border-radius:20px;
}
.event-display.layout-square .event-ticker{
    position:absolute;
    left:38px;
    right:38px;
    bottom:18px;
    height:45px;
    min-height:45px;
    z-index:3;
}
.event-display.layout-square .event-controls{
    z-index:30;
}
.event-display.preview-render .event-controls,
.event-display.preview-render .new-donation-celebration{
    display:none!important;
}

/* LIVE-PATCH 40: Einzelbild mit transparentem PNG und optionalem Text oben/unten. */

.single-image-content{height:100%;width:100%;display:flex;flex-direction:column;align-items:center;justify-content:center;gap:12px;min-height:0}
.single-image-top,.single-image-bottom{flex:0 0 auto;max-width:100%;text-align:inherit;white-space:pre-wrap;overflow-wrap:anywhere}
.single-image-media{flex:1 1 auto;min-height:0;min-width:0;width:100%;display:flex;align-items:center;justify-content:center;overflow:hidden}
.single-image-media img{display:block;max-width:100%;max-height:100%;width:100%;height:100%;object-fit:contain;object-position:center;background:transparent}


/* LIVE-PATCH 41: Laufband frei positionierbar und gestaltbar. */
.event-display.layout-square .event-ticker{
    right:auto;
    bottom:auto;
    min-height:0;
}
.event-display.layout-square .event-ticker div,
.event-ticker div{
    font-size:inherit;
    color:inherit;
}


/* LIVE-PATCH 42: Steuerleiste gehört zur Event-Seite, nicht zur skalierten Szene. */
.event-display:not(.preview-render) .event-controls{
    position:fixed;
    left:12px;
    right:12px;
    bottom:12px;
    z-index:10000;
    max-width:none;
    display:flex;
    flex-wrap:wrap;
    justify-content:flex-end;
    align-items:center;
    gap:8px;
    opacity:1;
    padding:9px;
    border-radius:12px;
    background:rgba(7,22,19,.44);
    backdrop-filter:blur(7px);
}
.event-display:not(.preview-render) .event-controls button,
.event-display:not(.preview-render) .event-controls #eventAutoState{
    background:rgba(0,0,0,.34);
}
.event-display:not(.preview-render) .event-fetch-result.show{
    display:inline-block;
}
.event-display.preview-render .event-controls{
    display:none!important;
}
@media(max-width:900px){
    .event-display:not(.preview-render) .event-controls{
        left:6px;
        right:6px;
        bottom:6px;
        justify-content:center;
    }
}


/* LIVE-PATCH 43: Bedienleiste dezent im Hintergrund, bei Nutzung sichtbar. */
.event-display:not(.preview-render) .event-controls{
    opacity:.06;
    transform:translateY(7px);
    transition:opacity .32s ease, transform .32s ease, background .32s ease;
    background:transparent;
}
.event-display:not(.preview-render).event-ui-active .event-controls,
.event-display:not(.preview-render) .event-controls:hover,
.event-display:not(.preview-render) .event-controls:focus-within{
    opacity:1;
    transform:translateY(0);
    background:rgba(7,22,19,.50);
}
.event-display:not(.preview-render).event-ui-idle,
.event-display:not(.preview-render).event-ui-idle *{
    cursor:none!important;
}
.event-display:not(.preview-render).event-ui-active,
.event-display:not(.preview-render).event-ui-active *{
    cursor:auto;
}


/* LIVE-PATCH 44: Freitext-Zeilen mit | als zuverlässig ausgerichtete Spalten. */
.aligned-text{
    display:grid;
    grid-template-columns:max-content 1fr;
    grid-auto-rows:auto;
    column-gap:clamp(18px,3vw,64px);
    align-items:baseline;
    width:100%;
    line-height:1.38;
    white-space:normal;
}
.aligned-left{
    text-align:left;
    white-space:pre-wrap;
}
.aligned-right{
    text-align:left;
    white-space:pre-wrap;
    overflow-wrap:anywhere;
}
.aligned-full{
    grid-column:1 / -1;
    text-align:left;
    white-space:pre-wrap;
    overflow-wrap:anywhere;
}
.aligned-spacer{
    grid-column:1 / -1;
    height:.72em;
}


/* LIVE-PATCH 48: Öffentliche Gewinnplätze – nur Rang und gekürzter Name, niemals Betrag. */
.winner-places{width:100%;display:flex;flex-direction:column;gap:clamp(7px,1vh,16px);margin-top:clamp(5px,1vh,14px)}
.winner-row{display:grid;grid-template-columns:auto 1fr;column-gap:clamp(12px,1.4vw,28px);align-items:baseline;font-weight:800;line-height:1.18}
.align-mitte .winner-row{justify-content:center;grid-template-columns:auto auto}
.align-rechts .winner-row{justify-content:end;grid-template-columns:auto auto}
.winner-number{color:var(--accent)}
.winner-name{white-space:nowrap}
.winner-empty{opacity:.85;font-weight:700}

/* LIVE_PATCH_74: öffentliche Subdomain – nur Vollbild und Sprache oben rechts. */
.public-event-controls{
    position:fixed;
    top:14px;
    right:14px;
    z-index:9999;
    display:flex;
    gap:8px;
    align-items:center;
    flex-wrap:wrap;
    justify-content:flex-end;
    opacity:.24;
    transition:opacity .2s ease;
}
.public-event-controls:hover,
.public-event-controls:focus-within{opacity:1}
.public-event-controls button{
    border:1px solid rgba(255,255,255,.35);
    background:rgba(0,0,0,.38);
    color:#fff;
    border-radius:10px;
    padding:9px 12px;
    font-weight:700;
    cursor:pointer;
    backdrop-filter:blur(5px);
}
.public-event-controls .lang-btn.active{
    background:rgba(255,255,255,.88);
    color:#123f36;
}
.event-controls{display:none!important}
@media(max-width:700px){.public-event-controls{top:8px;right:8px;gap:5px}.public-event-controls button{padding:7px 9px;font-size:12px}}
