/* =====================================================================
   WebCeption – App-Nachbau (HTML/CSS/SVG) für die sechs "Screenshots" der Website
   ---------------------------------------------------------------------
   Alles hier ist dem echten Programm (public/assets/css/app.css + Bootstrap 5.3) nachgebaut:
   gleiche Farben, Abstände, Schriftgrößen, Icons (Bootstrap Icons, als Inline-SVG) und
   Aufbau (Seitenleiste, Timeline, Buchungstabelle, Karte, Auswertungen ...).
   Dadurch bleibt alles scharf, übersetzbar und interaktiv (Farbwahl, Animationen).

   Skalierung: .wcp-ui-frame ist ein Container; .wcp-ui rechnet 1em so um, dass die
   Oberfläche immer so aussieht, als wäre sie auf einem Bildschirm der Breite
   --wcp-ui-ref (in em, 1em = 16px) aufgenommen worden – wie ein verkleinerter Screenshot.
   Namensraum: wcp-ui-*   |   Markenfarben: --wcp-ui-primary / --wcp-ui-secondary folgen --wcp-c1 / --wcp-c2
   (Farbwahl im Hero), die Farbfelder im "Dein Look"-Abschnitt überschreiben --wcp-ui-primary lokal.
   ===================================================================== */

.wcp-ui-frame { container-type: inline-size; }

.wcp-ui {
  --wcp-ui-primary: var(--wcp-c1);
  --wcp-ui-secondary: var(--wcp-c2);
  --wcp-ui-ref: 55;
  --wcp-ui-line: #dde2ea;
  --wcp-ui-grid: #edf0f5;
  --wcp-ui-muted: #6c757d;
  --wcp-ui-today: rgba(255, 220, 40, .15);
  --wcp-ui-green: #2eb872;
  --wcp-ui-red: #e5484d;
  --wcp-ui-grey: #9aa0a8;
  display: flex;
  min-width: 0;
  font-family: system-ui, -apple-system, 'Segoe UI', Roboto, 'Helvetica Neue', 'Noto Sans', 'Noto Sans Thai', 'Liberation Sans', Arial, sans-serif;
  font-size: calc(100cqw / var(--wcp-ui-ref));
  font-weight: 400;
  line-height: 1.5;
  letter-spacing: 0;
  text-align: left;
  color: #212529;
  background: #f4f6fa;
  text-transform: none;
}
.wcp-ui *, .wcp-ui *::before, .wcp-ui *::after { box-sizing: border-box; }
.wcp-ui em { background: none; -webkit-text-fill-color: currentColor; color: inherit; font-style: normal; }
.wcp-ui svg { display: block; flex: none; }
.wcp-ui-i { width: 1em; height: 1em; fill: currentColor; }

/* ---------- Bausteine (Bootstrap-nah) ---------- */
.wcp-ui-btn {
  display: inline-flex; align-items: center; justify-content: center; gap: .4em; flex: none;
  padding: .25em .5em; font-size: .875em; line-height: 1.5; white-space: nowrap;
  border: 1px solid transparent; border-radius: .25em; background: #fff; color: #212529;
}
.wcp-ui-btn--out { border-color: #6c757d; color: #6c757d; }
.wcp-ui-btn--pri { background: var(--wcp-ui-primary); border-color: var(--wcp-ui-primary); color: #fff; transition: background .3s, border-color .3s; }
.wcp-ui-btn--outpri { border-color: var(--wcp-ui-primary); color: var(--wcp-ui-primary); }
.wcp-ui-btn--sq { padding: .25em .5em; }
.wcp-ui-btns { display: inline-flex; }
.wcp-ui-btns .wcp-ui-btn + .wcp-ui-btn { margin-left: -1px; border-top-left-radius: 0; border-bottom-left-radius: 0; }
.wcp-ui-btns .wcp-ui-btn:not(:last-child) { border-top-right-radius: 0; border-bottom-right-radius: 0; }

.wcp-ui-badge {
  display: inline-block; padding: .35em .65em; font-size: .75em; font-weight: 700; line-height: 1; text-align: center; white-space: nowrap;
  vertical-align: baseline; border-radius: .375em; background: #f8f9fa; border: 1px solid #dee2e6; color: #000;
}
.wcp-ui-badge--red { background: #dc3545; border-color: #dc3545; color: #fff; display: inline-flex; align-items: center; gap: .35em; }

/* Raum-Böppel (Kürzel in Raumfarbe) + Ampel + Quellen-Icon (wie raum_name.twig / source_icon.twig) */
.wcp-ui-chip {
  display: inline-flex; align-items: center; justify-content: center; flex: none; width: 2.3077em; height: 2.3077em; border-radius: 50%;
  background: var(--wcp-rc, #9aa0a8); color: #fff; font-size: .65em; font-weight: 700; line-height: 1; white-space: nowrap; overflow: hidden;
}
.wcp-ui-amp { display: inline-block; flex: none; width: .85em; height: .85em; border-radius: 50%; background: #9aa0a8; }
.wcp-ui-amp[data-c="gruen"] { background: #2eb872; }
.wcp-ui-amp[data-c="rot"] { background: #e5484d; }
.wcp-ui-amp[data-c="gruen-rot"] { background: linear-gradient(135deg, #2eb872 0 45%, #e5484d 55% 100%); }
.wcp-ui-amp[data-c="rot-gruen"] { background: linear-gradient(135deg, #e5484d 0 45%, #2eb872 55% 100%); }

.wcp-ui-src {
  --wcp-ui-primary: var(--wcp-c1);
  position: relative; display: inline-flex; align-items: center; justify-content: center; flex: none;
  width: 1.75em; height: 1.75em; border-radius: .45em; font-weight: 800; font-size: 1em; line-height: 1; vertical-align: middle;
}
.wcp-ui-src b { font-size: 1.05em; font-weight: 800; }
.wcp-ui-src--booking { background: #003580; color: #fff; letter-spacing: -.02em; }
.wcp-ui-src--booking s { text-decoration: none; color: #6cc4ff; font-size: 1.05em; }
.wcp-ui-src--agoda { background: #fff; border: 1px solid #d9dde5; color: #3a3a46; }
.wcp-ui-src--agoda b { margin-top: .3em; letter-spacing: -.03em; }
.wcp-ui-src--agoda i { position: absolute; top: .22em; width: .19em; height: .19em; border-radius: 50%; }
.wcp-ui-src--agoda i:nth-of-type(1) { left: .16em; background: #e5484d; }
.wcp-ui-src--agoda i:nth-of-type(2) { left: .47em; background: #9b5de5; }
.wcp-ui-src--agoda i:nth-of-type(3) { left: .78em; background: #2eb872; }
.wcp-ui-src--agoda i:nth-of-type(4) { left: 1.09em; background: #f59e0b; }
.wcp-ui-src--agoda i:nth-of-type(5) { left: 1.4em; background: #3b82f6; }
.wcp-ui-src--direct { background: var(--wcp-ui-primary); color: #fff; }
.wcp-ui-src--direct svg { width: 1.15em; height: 1.15em; fill: currentColor; }

/* ---------- Seitenleiste (nur Icons, wie die eingeklappte App) ---------- */
.wcp-ui-side {
  flex: 0 0 4.75em; display: flex; flex-direction: column; background: #262c3d; color: #e7ebf3; box-shadow: 3px 0 16px rgba(0, 0, 0, .25); position: relative; z-index: 2;
}
.wcp-ui-side--wide { flex-basis: 13.5em; }
.wcp-ui-side__logo {
  display: flex; align-items: center; justify-content: center; gap: .65em; padding: 1em 1.25em; font-weight: 700; font-size: 1.05em; color: #fff;
  border-bottom: 1px solid rgba(255, 255, 255, .08); white-space: nowrap; overflow: hidden; min-height: 3.6em;
}
.wcp-ui-side--wide .wcp-ui-side__logo { justify-content: flex-start; }
.wcp-ui-side__logo img { width: 1.9em; height: 1.9em; flex: none; }
.wcp-ui-side__logo i { width: 1.9em; height: 1.9em; flex: none; border-radius: .5em; background: linear-gradient(135deg, var(--wcp-ui-primary), var(--wcp-ui-secondary)); transition: background .3s; }
.wcp-ui-side__nav { flex: 1; padding: .5em 0 1em; }
.wcp-ui-link {
  display: flex; align-items: center; justify-content: center; gap: .75em; padding: .65em 0; border-left: 3px solid transparent; font-size: .95em; color: #9aa5b8; white-space: nowrap;
}
.wcp-ui-side--wide .wcp-ui-link { justify-content: flex-start; padding: .65em 1.25em; }
.wcp-ui-link svg { width: 1.15em; height: 1.15em; fill: currentColor; }
.wcp-ui-link[data-t="calendar"] svg { color: var(--wcp-ui-primary); }
.wcp-ui-link[data-t="timeline"] svg { color: #0ea5e9; }
.wcp-ui-link[data-t="map"] svg { color: #14b8a6; }
.wcp-ui-link[data-t="rooms"] svg { color: #f59e0b; }
.wcp-ui-link[data-t="conflicts"] svg { color: #ef4444; }
.wcp-ui-link[data-t="wifi"] svg { color: #22c55e; }
.wcp-ui-link[data-t="checkin"] svg { color: #06b6d4; }
.wcp-ui-link[data-t="docs"] svg { color: #a78bfa; }
.wcp-ui-link.wcp-ui-on { color: #fff; background: color-mix(in srgb, var(--wcp-ui-primary) 18%, transparent); border-left-color: var(--wcp-ui-primary); transition: background .3s, border-color .3s; }
.wcp-ui-link small { margin-left: auto; padding: .08em .5em; border-radius: 99px; font-size: .62em; letter-spacing: .03em; background: color-mix(in srgb, var(--wcp-ui-primary) 35%, transparent); color: #fff; transition: background .3s; }
.wcp-ui-side__fixed { background: #1e2331; border-top: 1px solid rgba(255, 255, 255, .08); padding: .8em .4em; text-align: center; font-variant-numeric: tabular-nums; }
.wcp-ui-clock {
  display: block; font: 600 .78em/1.2 ui-monospace, 'JetBrains Mono', SFMono-Regular, Menlo, Consolas, monospace; letter-spacing: .02em;
  background: linear-gradient(135deg, var(--wcp-ui-primary), var(--wcp-ui-secondary)); -webkit-background-clip: text; background-clip: text; color: transparent; transition: background .3s;
}

/* ---------- Inhaltsbereich + Karte ---------- */
.wcp-ui-content { flex: 1; min-width: 0; padding: 1em; position: relative; }
.wcp-ui-card { background: #fff; border: 1px solid rgba(0, 0, 0, .1); border-radius: .375em; overflow: hidden; position: relative; }
.wcp-ui-toolbar { display: flex; align-items: center; gap: .6em; padding: .55em .9em; border-bottom: 1px solid #e3e7ee; }
.wcp-ui-toolbar__date { font-size: .82em; font-weight: 500; margin-left: .25em; white-space: nowrap; }
.wcp-ui-toolbar__sp { flex: 1; }
.wcp-ui-title { display: inline-flex; align-items: center; gap: .5em; font-size: .9em; font-weight: 600; }
.wcp-ui-title span { font-weight: 400; color: var(--wcp-ui-muted); }
.wcp-ui-hint { padding: .8em .9em 0; font-size: .75em; color: var(--wcp-ui-muted); line-height: 1.5; }

/* ---------- Timeline (timeline.js / app.css .wcp-tl-*) ---------- */
.wcp-ui-tl { display: flex; align-items: flex-start; }
.wcp-ui-tl__names { flex: 0 0 11.25em; border-right: 2px solid var(--wcp-ui-line); background: #fff; position: relative; z-index: 1; }
.wcp-ui-tl__wrap { flex: 1; min-width: 0; overflow: hidden; position: relative; }
.wcp-ui-tl__grid { position: relative; width: calc(var(--wcp-days, 14) * 3.5em); }
.wcp-ui-tl__head { display: flex; height: 2.75em; border-bottom: 1px solid var(--wcp-ui-grid); }
.wcp-ui-tl__h {
  flex: 0 0 calc(100% / var(--wcp-days, 14)); display: flex; flex-direction: column; align-items: center; justify-content: center; line-height: 1.1; font-size: .78em; font-weight: 600; color: #6c7688;
  border-right: 1px solid var(--wcp-ui-grid);
}
.wcp-ui-tl__h b { font-weight: 600; }
.wcp-ui-tl__corner { height: 2.75em; border-bottom: 1px solid var(--wcp-ui-grid); }
.wcp-ui-tl__room {
  display: flex; align-items: center; gap: .4em; height: 3.2353em; padding: 0 .4em; border-bottom: 1px solid var(--wcp-ui-grid); font-size: .85em; color: #1b2331; white-space: nowrap; overflow: hidden;
}
.wcp-ui-tl__room > * { flex: none; }
.wcp-ui-tl__room .wcp-ui-tl__name { flex: 0 1 auto; font-size: 1.1765em; overflow: hidden; text-overflow: ellipsis; }
.wcp-ui-tl__room .wcp-ui-badge { font-size: .88em; }
.wcp-ui-tl__room .wcp-ui-chip { font-size: .7647em; }
.wcp-ui-tl__room .wcp-ui-amp { font-size: 1.1765em; }
.wcp-ui-tl__row {
  position: relative; height: 2.75em; border-bottom: 1px solid var(--wcp-ui-grid);
  background-image: linear-gradient(90deg, transparent calc(3.5em - 1px), var(--wcp-ui-grid) 0); background-size: 3.5em 100%;
}
.wcp-ui-tl__today { position: absolute; top: 0; bottom: 0; left: calc(var(--wcp-t, 1) / var(--wcp-days, 14) * 100%); width: calc(100% / var(--wcp-days, 14)); background: var(--wcp-ui-today); pointer-events: none; z-index: 0; }
.wcp-ui-tl__bar {
  position: absolute; margin-left: .17em; left: calc(var(--wcp-s) / var(--wcp-days, 14) * 100%); width: calc((var(--wcp-e) - var(--wcp-s)) / var(--wcp-days, 14) * 100% - .35em);
  display: flex; align-items: center; gap: .3em; padding: 0 .4em; border-radius: 13px; background: var(--wcp-rc); color: #fff; font-size: .72em; line-height: 1;
  overflow: hidden; white-space: nowrap; transform-origin: left center;
}
.wcp-ui-tl__bar { top: .7813em; height: 2.2569em; }
.wcp-ui-tl__bar svg { width: 1em; height: 1em; fill: #fff; }
.wcp-ui-tl__bar--past { opacity: .4; }
.wcp-ui-tl__bar--c { outline: 2px solid #dc3545; outline-offset: 0; z-index: 2; animation: wcp-ui-warn 2.4s ease-in-out infinite; }
.wcp-ui-tl__bar--l0 { top: 0; }
.wcp-ui-tl__bar--l1 { top: auto; bottom: 0; }
@keyframes wcp-ui-warn { 50% { outline-color: rgba(220, 53, 69, .45); } }

/* Einblenden der Balken, sobald die Szene sichtbar wird */
.wcp-reveal .wcp-ui-tl__bar { opacity: 0; transform: scaleX(.2); }
.wcp-reveal.wcp-in .wcp-ui-tl__bar { animation: wcp-bar-in .7s cubic-bezier(.2, .8, .2, 1) both; animation-delay: calc(var(--wcp-i, 0) * 55ms + .25s); }
.wcp-reveal.wcp-in .wcp-ui-tl__bar--c { animation: wcp-bar-in .7s cubic-bezier(.2, .8, .2, 1) both, wcp-ui-warn 2.4s ease-in-out 1.6s infinite; animation-delay: calc(var(--wcp-i, 0) * 55ms + .25s), 1.6s; }
.wcp-reveal .wcp-ui-tl__bar--past { opacity: 0; }
.wcp-reveal.wcp-in .wcp-ui-tl__bar--past { opacity: .4; animation: wcp-ui-past .7s cubic-bezier(.2, .8, .2, 1) both; animation-delay: calc(var(--wcp-i, 0) * 55ms + .25s); }
@keyframes wcp-ui-past { from { opacity: 0; transform: scaleX(.2); } to { opacity: .4; transform: scaleX(1); } }

/* Hero-Fenster: Browserleiste */
.wcp-window__bar .wcp-window__url {
  flex: 1; max-width: 21rem; margin-left: .7rem; padding: .16rem .85rem; border-radius: 99px; background: rgba(255, 255, 255, .07);
  font-size: .72rem; letter-spacing: .02em; color: var(--wcp-muted); white-space: nowrap; overflow: hidden; text-overflow: ellipsis;
}
.wcp-window .wcp-ui { border-radius: 0; }
.wcp-ui--tl { --wcp-ui-ref: 47; min-height: 22em; }

/* Legende unter dem Hero-Fenster (echte Quellen-Icons) */
.wcp-legend { display: flex; flex-wrap: wrap; align-items: center; gap: .5rem 1.2rem; padding: .7rem 1rem; border-top: 1px solid var(--wcp-line); font-size: .72rem; color: var(--wcp-muted); }
.wcp-legend > span { display: inline-flex; align-items: center; gap: .45rem; }
.wcp-legend .wcp-ui-src { font-size: .62rem; }
.wcp-legend__warn { margin-left: auto; color: #ff8aa6; }
.wcp-legend__warn svg { width: .9rem; height: .9rem; fill: #ff5a6c; }

/* ---------- Synchronisation: Quellen -> Buchungsliste ---------- */
.wcp-sync { display: grid; justify-items: stretch; gap: 0; }
.wcp-sync__sources { display: flex; flex-wrap: wrap; justify-content: space-between; gap: .6rem; }
.wcp-sync__sources .wcp-wm { flex: none; }
.wcp-sync__lines { width: 100%; height: 3.4rem; display: block; }
.wcp-sync__lines path { fill: none; stroke: color-mix(in srgb, var(--wcp-c2) 80%, white); stroke-width: 2; stroke-dasharray: 5 7; vector-effect: non-scaling-stroke; animation: wcp-dash 1.2s linear infinite; opacity: .85; }
.wcp-sync__hub-title { display: flex; align-items: center; gap: .5rem; margin-bottom: .7rem; font: 600 .9rem var(--wcp-font-head); }
.wcp-ui--bk { --wcp-ui-ref: 40; border-radius: var(--wcp-radius); overflow: hidden; box-shadow: 0 40px 90px -30px rgba(0, 0, 0, .8), 0 0 0 1px rgba(255, 255, 255, .08); }
.wcp-ui--bk .wcp-ui-content { padding: .8em; }
.wcp-ui-bk { width: 100%; border-collapse: collapse; font-size: .82em; }
.wcp-ui-bk th { padding: .55em .6em .5em; text-align: left; font-weight: 700; border-bottom: 1px solid #212529; white-space: nowrap; }
.wcp-ui-bk td { padding: .42em .6em; border-bottom: 1px solid #dee2e6; vertical-align: middle; white-space: nowrap; }
.wcp-ui-bk td:first-child { border-left: 3px solid var(--wcp-ui-primary); transition: border-color .3s; }
.wcp-ui-bk .wcp-ui-room { display: inline-flex; align-items: center; gap: .4em; }
.wcp-ui-bk .wcp-ui-room .wcp-ui-chip { font-size: .65em; }
.wcp-ui-bk .wcp-ui-room .wcp-ui-badge { font-size: .75em; }
.wcp-ui-bk .wcp-ui-amp { font-size: 1em; }
.wcp-ui-period { display: inline-block; padding: .35em .65em; border-radius: .375em; background: var(--wcp-rc); color: #fff; font-size: .8em; font-weight: 700; line-height: 1; }
.wcp-ui-bk td .wcp-ui-badge { margin-left: .5em; font-size: .62em; }
.wcp-ui-sync { padding: 0 .9em .6em; font-size: .72em; color: var(--wcp-ui-muted); }
.wcp-ui-bk__new td { animation: wcp-ui-row 7.5s ease-in-out infinite; animation-delay: var(--wcp-d, 0s); }
.wcp-ui-bk__new .wcp-ui-badge { font-weight: 700; }
.wcp-ui-bk__cancel td:not(:last-child) { text-decoration: line-through; text-decoration-color: rgba(0, 0, 0, .35); }
.wcp-ui-bk__cancel .wcp-ui-period { opacity: .6; }
@keyframes wcp-ui-row {
  0%, 6% { opacity: 0; background: color-mix(in srgb, var(--wcp-ui-primary) 16%, white); transform: translateY(-.4em); }
  14% { opacity: 1; background: color-mix(in srgb, var(--wcp-ui-primary) 16%, white); transform: none; }
  34%, 86% { opacity: 1; background: transparent; transform: none; }
  94%, 100% { opacity: 0; background: transparent; transform: translateY(.3em); }
}

/* ---------- Anzeige: Karte (map.js) auf dem Fernseher ---------- */
.wcp-tv { max-width: 600px; margin-inline: auto; }
.wcp-tv__screen { border: 9px solid #181830; border-radius: 1.1rem; background: #0c0c20; overflow: hidden; box-shadow: 0 40px 90px -30px #000, 0 0 0 1px rgba(255, 255, 255, .08); }
.wcp-tv__stand { width: 28%; height: 14px; margin: 0 auto; background: linear-gradient(#222244, #14142c); border-radius: 0 0 .6rem .6rem; }
.wcp-ui--map { --wcp-ui-ref: 42; }
.wcp-ui--map .wcp-ui-content { padding: .6em; }
.wcp-ui-mapbar { display: flex; justify-content: flex-end; padding: .45em .9em; border-bottom: 1px solid #e3e7ee; font-size: .72em; font-weight: 600; }
.wcp-ui-count { display: grid; }
.wcp-ui-count > span { grid-area: 1 / 1; white-space: nowrap; text-align: right; }
.wcp-ui-count b:first-child { color: #198754; font-weight: 600; }
.wcp-ui-count b:last-child { color: #b02a37; font-weight: 600; }
.wcp-ui-count i { font-style: normal; color: #adb5bd; margin: 0 .35em; }
.wcp-ui-count__b { opacity: 0; }
.wcp-ui-map { padding: .5em .8em .8em; }
.wcp-ui-map svg { display: block; width: 100%; height: auto; }
.wcp-ui-map .wcp-ui-room-shape path, .wcp-ui-map .wcp-ui-room-shape rect, .wcp-ui-map .wcp-ui-room-shape polygon { stroke: #4b5563; stroke-width: 3; }
.wcp-ui-map text.wcp-ui-map__name { fill: #fff; font-weight: 600; stroke: rgba(0, 0, 0, .55); paint-order: stroke; stroke-linejoin: round; }
.wcp-tv__legend { display: flex; flex-wrap: wrap; justify-content: center; align-items: center; gap: .4rem 1.1rem; margin-top: 1.1rem; font-size: .76rem; color: var(--wcp-muted); }
.wcp-tv__legend span { display: inline-flex; align-items: center; gap: .4rem; }
.wcp-tv__legend .wcp-ui-amp { font-size: 1rem; }
.wcp-tv__mode { padding: .15rem .65rem; border-radius: 99px; background: rgba(46, 184, 114, .14); color: #6ee7a8; letter-spacing: .05em; }
.wcp-tv__mode i { width: .45rem; height: .45rem; border-radius: 50%; background: #2eb872; animation: wcp-ping 1.8s infinite; }
.wcp-tv .wcp-ui-map [data-room] { transition: filter .3s; }
.wcp-reveal .wcp-ui-map [data-room] { opacity: 0; }
.wcp-reveal.wcp-in .wcp-ui-map [data-room] { animation: wcp-ui-fade .55s ease both; animation-delay: calc(var(--wcp-i, 0) * 90ms + .2s); }
@keyframes wcp-ui-fade { from { opacity: 0; } to { opacity: 1; } }

/* ---------- Geräte: Handy -> Tablet -> Fernseher ----------
   Alle Maße in cqw (Prozent der Bühnenbreite): die ganze Szene skaliert wie ein Bild.
   Grundzustand = "synchron" (Buchung ist überall angekommen); die Schleife (--wcp-loop)
   spielt nur im sichtbaren Bereich und nicht bei "Bewegung reduzieren". */
.wcp-devs { --wcp-loop: 9s; }
.wcp-devs__stage { position: relative; container-type: inline-size; aspect-ratio: 100 / 86; max-width: 620px; margin-inline: auto; }
/* einspaltig: Grafiken nutzen die ganze Spaltenbreite (keine max-width) */
@media (max-width: 979.98px) { .wcp-tv, .wcp-devs__stage { max-width: none; } }
.wcp-dv { position: absolute; overflow: hidden; background: #0c0c20; border: solid #1d1d3c; box-shadow: 0 3cqw 7cqw -3cqw #000, 0 0 0 1px rgba(255, 255, 255, .08); }
.wcp-dv .wcp-ui { border-radius: 0; }
.wcp-dv--tv { left: 22cqw; top: 0; width: 78cqw; border-width: 1.1cqw; border-radius: 2cqw; }
.wcp-dv--tv .wcp-ui--map { --wcp-ui-ref: 40; }
.wcp-dv--tablet { left: 0; top: 33cqw; width: 65cqw; border-width: 1.3cqw; border-radius: 3cqw; z-index: 2; }
.wcp-dv--tablet .wcp-ui { --wcp-ui-ref: 36; }
.wcp-dv--phone { right: 1.5cqw; top: 44cqw; width: 24cqw; height: 42cqw; border-width: 1cqw; border-radius: 3.2cqw; z-index: 3; }
.wcp-dv--phone::before { content: ''; position: absolute; top: .5cqw; left: 50%; z-index: 4; width: 5cqw; height: .7cqw; margin-left: -2.5cqw; border-radius: 99px; background: #1d1d3c; }
.wcp-dv--phone .wcp-ui-frame { height: 100%; }
.wcp-dv--phone .wcp-ui { --wcp-ui-ref: 15.5; height: 100%; }
.wcp-ui--tab .wcp-ui-content { padding: .7em; }
.wcp-ui--tab .wcp-ui-tl__names { flex-basis: 7.5em; }
.wcp-ui--tab .wcp-ui-tl__name { display: none; }
.wcp-ui--tab .wcp-ui-tl__room .wcp-ui-badge:not(.wcp-ui-keep) { display: none; }
.wcp-ui--tab .wcp-ui-toolbar { padding: .45em .7em; }
.wcp-ui--tab .wcp-ui-tl__bar { font-size: .66em; }
.wcp-ui-fab {
  position: absolute; right: .8em; bottom: .8em; z-index: 3; display: grid; place-items: center; width: 3em; height: 3em; border-radius: 50%; color: #fff;
  background: linear-gradient(135deg, var(--wcp-ui-primary), var(--wcp-ui-secondary)); box-shadow: 0 .3em .9em rgba(0, 0, 0, .3); transition: background .3s;
}
.wcp-ui-fab svg { width: 1.3em; height: 1.3em; fill: currentColor; }

/* Handy: "Neue Buchung" als Dialog über der (abgedunkelten) App */
.wcp-ui--ph { position: relative; align-items: center; justify-content: center; background: #2a2e39; }
.wcp-ui--ph::before { content: ''; position: absolute; inset: 0; background: rgba(0, 0, 0, .5); }
.wcp-ui-modal { position: relative; width: calc(100% - 1.4em); background: #fff; border-radius: .5em; border: 1px solid rgba(0, 0, 0, .18); overflow: hidden; box-shadow: 0 .5em 1.6em rgba(0, 0, 0, .4); }
.wcp-ui-modal__h { display: flex; align-items: center; justify-content: space-between; padding: .7em .8em; border-bottom: 1px solid #dee2e6; }
.wcp-ui-modal__h h5 { margin: 0; font-size: 1.05em; font-weight: 500; line-height: 1.2; font-family: inherit; letter-spacing: 0; color: #212529; }
.wcp-ui-modal__h div { display: flex; align-items: center; gap: .8em; color: var(--wcp-ui-primary); }
.wcp-ui-modal__h svg { width: .95em; height: .95em; fill: currentColor; }
.wcp-ui-modal__h .wcp-ui-x { color: #212529; opacity: .5; }
.wcp-ui-modal__b { padding: .7em .8em; display: grid; gap: .5em; }
.wcp-ui-modal__f { display: flex; justify-content: flex-end; gap: .4em; padding: .55em .7em; border-top: 1px solid #dee2e6; }
.wcp-ui-f label { display: block; margin-bottom: .2em; font-size: .75em; color: #212529; }
.wcp-ui-in { display: flex; align-items: center; justify-content: space-between; min-height: 2.1em; padding: .25em .5em; border: 1px solid #ced4da; border-radius: .375em; font-size: .78em; background: #fff; white-space: nowrap; overflow: hidden; }
.wcp-ui-in svg { width: 1em; height: 1em; fill: #6c757d; }
.wcp-ui-3 { display: grid; grid-template-columns: 1.1fr .7fr 1.1fr; gap: .4em; }
.wcp-ui-btn--sec { background: #6c757d; border-color: #6c757d; color: #fff; }

.wcp-devs__links { position: absolute; inset: 0; width: 100%; height: 100%; pointer-events: none; z-index: 5; overflow: visible; }
.wcp-devs__links path { fill: none; stroke: color-mix(in srgb, var(--wcp-c2) 80%, white); stroke-width: .8; stroke-linecap: round; stroke-dasharray: 1.4 1.8; opacity: 0; }
.wcp-devs__caps { display: flex; flex-wrap: wrap; justify-content: center; gap: .4rem 1.2rem; margin-top: 1.4rem; font-size: .8rem; color: var(--wcp-muted); }
.wcp-devs__caps > span { display: inline-flex; align-items: center; gap: .45rem; }
.wcp-devs__caps .wcp-ui-src { font-size: .62rem; }

/* Ablauf (9 s): Handy speichert -> Linien blitzen -> Balken im Tablet + Zimmer 6 auf dem TV wird rot */
.wcp-reveal.wcp-in .wcp-devs .wcp-ui-btn--save { animation: wcp-dv-press var(--wcp-loop) infinite; }
.wcp-reveal.wcp-in .wcp-devs__links path { animation: wcp-dv-link var(--wcp-loop) infinite, wcp-dv-dash 1s linear infinite; }
.wcp-reveal.wcp-in .wcp-devs .wcp-ui-tl__bar--new { animation: wcp-dv-bar var(--wcp-loop) infinite; }
.wcp-reveal.wcp-in .wcp-devs .wcp-ui-map [data-room="6"] .wcp-ui-room-shape > * { animation: wcp-dv-fill var(--wcp-loop) infinite; }
.wcp-reveal.wcp-in .wcp-devs .wcp-ui-map [data-room="6"] .wcp-ui-room-shape { animation: wcp-dv-glow var(--wcp-loop) infinite; }
.wcp-reveal.wcp-in .wcp-devs .wcp-ui-count__a { animation: wcp-dv-cnt-a var(--wcp-loop) infinite; }
.wcp-reveal.wcp-in .wcp-devs .wcp-ui-count__b { animation: wcp-dv-cnt-b var(--wcp-loop) infinite; }
@keyframes wcp-dv-press { 0%, 18% { transform: none; filter: none; } 22% { transform: scale(.92); filter: brightness(1.25); } 28%, 100% { transform: none; filter: none; } }
@keyframes wcp-dv-link { 0%, 24% { opacity: 0; } 30%, 48% { opacity: 1; } 58%, 100% { opacity: 0; } }
@keyframes wcp-dv-dash { to { stroke-dashoffset: -3.2; } }
@keyframes wcp-dv-bar { 0%, 32% { opacity: 0; transform: scaleX(.15); } 40%, 86% { opacity: 1; transform: none; } 94%, 100% { opacity: 0; transform: scaleX(.15); } }
@keyframes wcp-dv-fill { 0%, 33% { fill: #2eb872; } 38%, 86% { fill: #e5484d; } 94%, 100% { fill: #2eb872; } }
@keyframes wcp-dv-glow { 0%, 34% { filter: none; } 40% { filter: drop-shadow(0 0 6px rgba(229, 72, 77, .9)); } 55%, 100% { filter: none; } }
@keyframes wcp-dv-cnt-a { 0%, 33% { opacity: 1; } 34%, 92% { opacity: 0; } 94%, 100% { opacity: 1; } }
@keyframes wcp-dv-cnt-b { 0%, 33% { opacity: 0; } 34%, 92% { opacity: 1; } 94%, 100% { opacity: 0; } }

/* ---------- Auswertungen (admin.js, Tab "Auswertungen") ---------- */
.wcp-ui--stats { --wcp-ui-ref: 44; border-radius: var(--wcp-radius); overflow: hidden; box-shadow: 0 40px 90px -30px rgba(0, 0, 0, .8), 0 0 0 1px rgba(255, 255, 255, .08); }
.wcp-ui--stats .wcp-ui-content { padding: .8em; }
.wcp-ui-tabs { display: flex; flex-wrap: wrap; gap: .15em; padding: .55em .7em; border-bottom: 1px solid #e3e7ee; }
.wcp-ui-tab { display: inline-flex; align-items: center; gap: .4em; padding: .38em .7em; border-radius: .35em; font-size: .78em; color: var(--wcp-ui-primary); white-space: nowrap; transition: color .3s; }
.wcp-ui-tab svg { width: 1em; height: 1em; fill: currentColor; }
.wcp-ui-tab--on { background: #0d6efd; color: #fff; }
.wcp-ui-filter { padding: .8em .9em .2em; display: grid; gap: .55em; }
.wcp-ui-filter__row { display: flex; flex-wrap: wrap; align-items: flex-end; gap: .45em; }
.wcp-ui-filter__row .wcp-ui-f { min-width: 7.4em; }
.wcp-ui-range { font-size: .72em; color: var(--wcp-ui-muted); padding: 0 .9em .5em; }
.wcp-ui-tbl { width: calc(100% - 1.8em); margin: 0 .9em .7em; border-collapse: collapse; font-size: .8em; }
.wcp-ui-tbl th { padding: .45em .5em; font-weight: 700; text-align: right; border-bottom: 1px solid #212529; white-space: nowrap; }
.wcp-ui-tbl td { padding: .35em .5em; text-align: right; border-bottom: 1px solid #dee2e6; font-variant-numeric: tabular-nums; white-space: nowrap; }
.wcp-ui-tbl th:first-child, .wcp-ui-tbl td:first-child { text-align: left; }
.wcp-ui-tbl tfoot td { font-weight: 700; border-bottom: 0; border-top: 2px solid #212529; }
.wcp-ui-tbl tr { transition: background .2s; }
.wcp-ui-tbl tbody tr:hover { background: #f4f6fa; }
.wcp-ui-sw { display: inline-flex; align-items: center; gap: .5em; font-size: .78em; }
.wcp-ui-sw i { width: 2em; height: 1.1em; border-radius: 99px; background: var(--wcp-ui-primary); position: relative; transition: background .3s; }
.wcp-ui-sw i::after { content: ''; position: absolute; right: .15em; top: .15em; width: .8em; height: .8em; border-radius: 50%; background: #fff; }

/* ---------- Dein Look: Seitenleiste mit eigenem Logo/Seiten ---------- */
.wcp-ui--yours { --wcp-ui-ref: 40; border-radius: var(--wcp-radius); overflow: hidden; box-shadow: 0 40px 90px -30px rgba(0, 0, 0, .8), 0 0 0 1px rgba(255, 255, 255, .08); transition: --wcp-ui-primary .3s; }
.wcp-ui--yours .wcp-ui-link { padding-top: .55em; padding-bottom: .55em; }
.wcp-ui--yours .wcp-ui-content { padding: .9em; }
.wcp-ui-wifi { display: grid; grid-template-columns: auto 1fr auto; gap: 1em; align-items: center; padding: 1.1em; }
.wcp-ui-wifi__ic { width: 3em; height: 3em; border-radius: .9em; display: grid; place-items: center; color: #fff; background: linear-gradient(135deg, var(--wcp-ui-primary), var(--wcp-ui-secondary)); transition: background .3s; }
.wcp-ui-wifi__ic svg { width: 1.7em; height: 1.7em; fill: currentColor; }
.wcp-ui-wifi dl { margin: 0; display: grid; gap: .5em; font-size: .85em; }
.wcp-ui-wifi dt { font-size: .78em; color: var(--wcp-ui-muted); }
.wcp-ui-wifi dd { margin: 0; font-weight: 600; font-size: 1.12em; }
.wcp-ui-wifi code { font: 600 1em ui-monospace, SFMono-Regular, Menlo, Consolas, monospace; padding: .12em .5em; border-radius: .3em; background: #f1f3f7; letter-spacing: .04em; }
.wcp-ui-qr { display: grid; justify-items: center; gap: .35em; }
.wcp-ui-qr svg { width: 6em; height: 6em; }
.wcp-ui-qr p { margin: 0; font-size: .7em; color: var(--wcp-ui-muted); line-height: 1.3; text-align: center; }
.wcp-ui-qr rect.wcp-q { fill: #1b2331; }
.wcp-ui-qr rect.wcp-qa { fill: var(--wcp-ui-primary); transition: fill .3s; }

.wcp-swatches { display: flex; flex-wrap: wrap; align-items: center; gap: .6rem; margin-top: 1.1rem; }
.wcp-swatches__label { font-size: .78rem; color: var(--wcp-muted); margin-right: .3rem; }
.wcp-sw { width: 1.7rem; height: 1.7rem; border-radius: 50%; border: 2px solid transparent; background: var(--wcp-c); cursor: pointer; box-shadow: 0 0 0 1px var(--wcp-line); transition: transform .2s, border-color .2s; }
.wcp-sw:hover { transform: scale(1.12); }
.wcp-sw.wcp-is-on { border-color: #fff; box-shadow: 0 0 0 3px color-mix(in srgb, var(--wcp-c) 40%, transparent); }

/* ---------- schmale Displays ---------- */
@media (max-width: 560px) {
  .wcp-ui--tl { --wcp-ui-ref: 29; min-height: 0; }
  .wcp-ui--tl .wcp-ui-side { display: none; }
  .wcp-ui--tl .wcp-ui-tl__names { flex-basis: 3.75em; }
  .wcp-ui--tl .wcp-ui-tl__name, .wcp-ui--tl .wcp-ui-tl__room .wcp-ui-badge { display: none; }
  .wcp-ui--tl .wcp-ui-tl__room { justify-content: center; gap: .3em; padding: 0 .2em; }
  .wcp-ui--tl .wcp-ui-content { padding: .7em; }
  .wcp-ui--bk { --wcp-ui-ref: 30; }
  .wcp-ui-bk .wcp-ui-col-period { display: none; }
  .wcp-ui--map { --wcp-ui-ref: 30; }
  .wcp-dv--tv .wcp-ui--map { --wcp-ui-ref: 28; }
  .wcp-dv--tablet .wcp-ui { --wcp-ui-ref: 26; }
  .wcp-dv--phone .wcp-ui { --wcp-ui-ref: 11.5; }
  .wcp-ui--stats { --wcp-ui-ref: 34; }
  .wcp-ui-hide-s { display: none; }
  .wcp-ui--yours { --wcp-ui-ref: 30; }
  .wcp-ui--yours .wcp-ui-side--wide { flex-basis: 10.5em; }
  .wcp-ui--yours .wcp-ui-link small { display: none; }
}
@media (prefers-reduced-motion: reduce) {
  .wcp-ui-tl__bar--c, .wcp-ui-bk__new td { animation: none !important; }
}
