/* ==========================================================================
   TrainTechSolutions · Messe-Modus (messe.html): Vorführungen aller Apps in Endlosschleife,
   dazwischen eine Abfahrtstafel „Nächster Halt“ mit Fallblatt-Buchstaben
   ========================================================================== */
.messe { overflow: hidden; height: 100vh; background: var(--bg); }
.messe .fx-grain { display: none; }
.messe__bild { position: fixed; inset: 0; width: 100%; height: 100%; border: 0; background: var(--bg); opacity: 0; transition: opacity .8s var(--ease); }
.messe.is-laeuft .messe__bild { opacity: 1; }

/* Startbild */
.messe__start { position: fixed; inset: 0; z-index: 5; display: flex; flex-direction: column; justify-content: center; padding: var(--pad); background: radial-gradient(900px 520px at 22% 30%, rgba(224, 160, 112, .12), transparent 62%), radial-gradient(800px 480px at 82% 80%, rgba(140, 192, 230, .1), transparent 60%), var(--bg); transition: opacity .7s var(--ease), visibility .7s; }
.messe.is-laeuft .messe__start { opacity: 0; visibility: hidden; }
.messe__zeichen { width: 92px; height: 92px; margin-bottom: 34px; filter: drop-shadow(0 6px 24px rgba(0, 0, 0, .6)); }
.messe__start h1 { font-size: clamp(3rem, 8vw, 7.4rem); line-height: .92; letter-spacing: -.055em; font-weight: 500; }
.messe__text { margin-top: 24px; max-width: 600px; font-size: 17px; line-height: 1.6; color: var(--ink-2); }

/* Abfahrtstafel zwischen den Apps */
.messe__tafel { position: fixed; inset: 0; z-index: 4; display: flex; flex-direction: column; justify-content: center; align-items: center; padding: var(--pad); text-align: center; background: radial-gradient(1000px 560px at 50% 46%, rgba(var(--t-rgb, 224, 160, 112), .14), transparent 64%), #04060a; opacity: 0; visibility: hidden; transition: opacity .7s var(--ease), visibility .7s; }
.messe__tafel.is-da { opacity: 1; visibility: visible; }
.messe__tafel-kopf { position: absolute; left: var(--pad); right: var(--pad); top: calc(28px + env(safe-area-inset-top, 0px)); display: flex; align-items: center; gap: 12px; font-size: 19px; font-weight: 600; letter-spacing: -.02em; }
.messe__tafel-kopf img { width: 40px; height: 40px; }
.messe__tafel-kopf b { font-weight: 600; color: var(--kupfer); }
.messe__uhr { margin-left: auto; font-family: var(--mono); font-size: 22px; font-weight: 500; color: #ffd75e; letter-spacing: .04em; }
.messe__naechster { font-family: var(--mono); font-size: 13px; letter-spacing: .3em; text-transform: uppercase; color: rgb(var(--t-rgb, 224, 160, 112)); }
/* so groß, wie der Name in eine Zeile passt (--n = Zahl der Zeichen, aus messe.js) */
.messe__app { display: flex; flex-wrap: nowrap; justify-content: center; gap: .08em; margin-top: 26px; font-size: min(9rem, calc(86vw / (var(--n, 10) * .92))); line-height: 1; letter-spacing: -.02em; font-weight: 500; }
.messe__app span { display: inline-block; min-width: .62em; padding: .06em .08em .04em; border-radius: .08em; background: linear-gradient(180deg, #121b28 50%, #0c131d 50%); box-shadow: inset 0 0 0 1px rgba(255, 255, 255, .06), 0 .08em .2em rgba(0, 0, 0, .5); color: #f3f0e8; }
.messe__app span.ist-luecke { min-width: .34em; background: none; box-shadow: none; }
.messe__tafel.is-da .messe__app span { animation: messe-klappen .55s var(--ease) both; animation-delay: calc(var(--k) * 45ms + .15s); }
@keyframes messe-klappen { 0% { transform: perspective(500px) rotateX(88deg); opacity: 0; } 60% { transform: perspective(500px) rotateX(-12deg); opacity: 1; } 100% { transform: none; } }
.messe__info { margin-top: 30px; font-family: var(--mono); font-size: 15px; letter-spacing: .12em; text-transform: uppercase; color: var(--ink-2); }
.messe__info b { color: #ffd75e; font-weight: 500; }
.messe__plan { position: relative; display: flex; width: min(960px, 100%); margin-top: 60px; list-style: none; }
.messe__plan::before { content: ''; position: absolute; left: 10%; right: 10%; top: 6px; height: 2px; background: rgba(243, 240, 232, .14); }
.messe__plan li { position: relative; flex: 1; padding-top: 26px; font-family: var(--mono); font-size: 11px; letter-spacing: .1em; text-transform: uppercase; color: var(--ink-3); transition: color .5s; }
.messe__plan li::before { content: ''; position: absolute; z-index: 1; left: 50%; top: 0; width: 14px; height: 14px; margin-left: -7px; box-sizing: border-box; border-radius: 50%; background: #0b0e12; border: 2px solid rgba(243, 240, 232, .3); transition: border-color .5s, box-shadow .5s, background .5s; }
.messe__plan li.ist-vorbei::before { border-color: rgba(var(--t-rgb, 224, 160, 112), .6); }
.messe__plan li.ist-jetzt { color: var(--ink); }
.messe__plan li.ist-jetzt::before { border-color: rgb(var(--t-rgb, 224, 160, 112)); background: rgb(var(--t-rgb, 224, 160, 112)); box-shadow: 0 0 0 6px rgba(var(--t-rgb, 224, 160, 112), .15), 0 0 22px rgb(var(--t-rgb, 224, 160, 112)); }

/* Beenden: erscheint nur, wenn sich die Maus bewegt */
.messe__ende { position: fixed; z-index: 6; right: 18px; top: 18px; padding: 9px 16px; border-radius: 999px; font-size: 13px; color: var(--ink-2); background: rgba(10, 13, 18, .8); border: 1px solid rgba(255, 255, 255, .14); opacity: 0; pointer-events: none; transition: opacity .4s; }
.messe.is-laeuft.zeigt-maus .messe__ende { opacity: 1; pointer-events: auto; }
.messe.is-laeuft:not(.zeigt-maus) { cursor: none; }
@media (prefers-reduced-motion: reduce) { .messe__tafel.is-da .messe__app span { animation: none; } }
