:root {
  color-scheme: dark;
  font-family: Inter, ui-sans-serif, system-ui, -apple-system, BlinkMacSystemFont, "Segoe UI", sans-serif;
  background: #08111f;
  color: #f6f8fb;
}
* { box-sizing: border-box; }
body { margin: 0; min-height: 100vh; }
button, .button-link {
  border: 0; border-radius: 999px; padding: .8rem 1.2rem; background: #66e3c4; color: #07130f;
  font: inherit; font-weight: 750; cursor: pointer; text-decoration: none;
}
input { margin-top: .4rem; width: 100%; padding: .8rem; border: 1px solid #3d4b60; border-radius: .7rem; background: #111d2e; color: inherit; font: inherit; }
select { margin-top: .4rem; width: 100%; padding: .8rem; border: 1px solid #3d4b60; border-radius: .7rem; background: #111d2e; color: inherit; font: inherit; }
label { display: block; margin: 1rem 0; color: #b7c1d0; }
h1, h2, p { margin-top: 0; }
.eyebrow { color: #66e3c4; font-size: .75rem; font-weight: 800; letter-spacing: .13em; text-transform: uppercase; }
.muted, small { color: #91a0b5; }
.error { color: #ff9090; min-height: 1.5em; }
.panel { background: rgba(18, 31, 49, .92); border: 1px solid #2a3a50; border-radius: 1.25rem; padding: 2rem; box-shadow: 0 24px 80px rgba(0,0,0,.25); }
.player-page { overflow: hidden; background: #050b14; }
.stage { position: fixed; inset: 0; display: grid; place-items: center; overflow: hidden; touch-action: pan-y; overscroll-behavior: none; user-select: none; }
.stage.policy-blanked { background: #000; }
.player-standby {
  --standby-primary: #0d6f70;
  --standby-accent: #b7d62a;
  --standby-visual-x: 0vw;
  --standby-visual-y: 0vh;
  --standby-copy-x: 0vw;
  --standby-copy-y: 0vh;
  position: fixed;
  z-index: 10;
  inset: 0;
  display: grid;
  grid-template-columns: minmax(18rem, .82fr) minmax(24rem, 1.18fr);
  grid-template-areas: "visual copy";
  align-items: center;
  gap: clamp(2rem, 7vw, 8rem);
  padding: clamp(3rem, 8vw, 9rem);
  overflow: hidden;
  background:
    radial-gradient(circle at 18% 15%, color-mix(in srgb, var(--standby-primary) 55%, transparent), transparent 35%),
    radial-gradient(circle at 95% 100%, color-mix(in srgb, var(--standby-accent) 24%, transparent), transparent 34%),
    linear-gradient(145deg, #07111c 0%, #0b1d27 52%, #07111c 100%);
}
.player-standby[data-burn-in-layout="mirrored"] {
  grid-template-columns: minmax(24rem, 1.18fr) minmax(18rem, .82fr);
  grid-template-areas: "copy visual";
}
.player-standby[data-burn-in-position="1"] { --standby-visual-x: -2.2vw; --standby-visual-y: 1.8vh; --standby-copy-x: 1.6vw; --standby-copy-y: -1.4vh; }
.player-standby[data-burn-in-position="2"] { --standby-visual-x: 1.7vw; --standby-visual-y: -2.2vh; --standby-copy-x: -1.4vw; --standby-copy-y: 1.7vh; }
.player-standby[data-burn-in-position="3"] { --standby-visual-x: -1.4vw; --standby-visual-y: -1.6vh; --standby-copy-x: 2vw; --standby-copy-y: 1.4vh; }
.player-standby[data-burn-in-position="4"] { --standby-visual-x: 2vw; --standby-visual-y: 1.5vh; --standby-copy-x: -1.8vw; --standby-copy-y: -1.8vh; }
.player-standby[data-burn-in-position="5"] { --standby-visual-x: .8vw; --standby-visual-y: -1vh; --standby-copy-x: -.7vw; --standby-copy-y: .9vh; }
.player-standby[hidden] { display: none; }
.player-standby::before {
  content: '';
  position: absolute;
  inset: 0;
  opacity: .14;
  background-image: linear-gradient(rgba(255,255,255,.08) 1px, transparent 1px), linear-gradient(90deg, rgba(255,255,255,.08) 1px, transparent 1px);
  background-size: 4.5rem 4.5rem;
  mask-image: linear-gradient(90deg, #000, transparent 72%);
  animation: standby-grid-drift 180s linear infinite;
}
.player-standby-visual {
  grid-area: visual;
  position: relative;
  display: grid;
  place-items: center;
  aspect-ratio: 1;
  transform: translate(var(--standby-visual-x), var(--standby-visual-y));
  transition: transform 12s ease-in-out;
}
.player-standby-orbit { position: absolute; border: 1px solid color-mix(in srgb, var(--standby-accent) 44%, transparent); border-radius: 50%; }
.player-standby-orbit.orbit-one { width: 88%; height: 88%; animation: standby-orbit 140s linear infinite; }
.player-standby-orbit.orbit-two { width: 62%; height: 62%; border-color: color-mix(in srgb, var(--standby-primary) 80%, white 20%); animation: standby-orbit 95s linear infinite reverse; }
.player-standby-orbit::after { content: ''; position: absolute; top: 8%; right: 13%; width: 1rem; height: 1rem; border-radius: 50%; background: var(--standby-accent); box-shadow: 0 0 2rem var(--standby-accent); }
.player-standby-screen {
  position: relative;
  display: grid;
  place-items: center;
  width: 48%;
  aspect-ratio: 16 / 10;
  border: clamp(.4rem, .8vw, .8rem) solid rgba(236, 255, 251, .92);
  border-radius: clamp(.8rem, 1.6vw, 1.5rem);
  background: linear-gradient(145deg, color-mix(in srgb, var(--standby-primary) 80%, #07111c), #07111c);
  box-shadow: 0 2rem 7rem color-mix(in srgb, var(--standby-primary) 45%, transparent), inset 0 0 3rem rgba(255,255,255,.08);
}
.player-standby-screen::after { content: ''; position: absolute; top: 100%; width: 22%; height: 18%; background: rgba(236, 255, 251, .92); clip-path: polygon(36% 0, 64% 0, 72% 72%, 100% 82%, 100% 100%, 0 100%, 0 82%, 28% 72%); }
.player-standby-screen span { width: 30%; aspect-ratio: 1; border-radius: 50%; background: var(--standby-accent); box-shadow: 0 0 2.5rem color-mix(in srgb, var(--standby-accent) 72%, transparent); animation: standby-status-pulse 7s ease-in-out infinite alternate; }
.player-standby-copy {
  grid-area: copy;
  position: relative;
  max-width: 54rem;
  transform: translate(var(--standby-copy-x), var(--standby-copy-y));
  transition: transform 12s ease-in-out;
}
.player-standby-copy .eyebrow { color: color-mix(in srgb, var(--standby-accent) 82%, white); font-size: clamp(.9rem, 1.2vw, 1.4rem); }
.player-standby-copy h1 { margin-bottom: clamp(1rem, 2vw, 2rem); font-size: clamp(3rem, 6vw, 7rem); line-height: .98; letter-spacing: -.045em; text-wrap: balance; }
.player-standby-body { max-width: 48rem; color: #becbd6; font-size: clamp(1.25rem, 2vw, 2.25rem); line-height: 1.45; text-wrap: balance; }
.player-standby-connection { display: inline-flex; align-items: center; gap: .8rem; margin-top: clamp(1.5rem, 3vw, 3rem); padding: .8rem 1.2rem; border: 1px solid color-mix(in srgb, var(--standby-accent) 52%, transparent); border-radius: 999px; background: rgba(5, 20, 24, .54); color: #f6fff9; font-size: clamp(1rem, 1.4vw, 1.55rem); }
.player-standby-dot { width: .8em; height: .8em; border-radius: 50%; background: var(--standby-accent); box-shadow: 0 0 1.15rem var(--standby-accent); }
.player-standby-workspace { margin-top: 1.2rem; color: #8294a3; font-size: clamp(.9rem, 1vw, 1.2rem); }
.player-standby-campaign { display: grid; grid-template-columns: clamp(5.5rem, 8vw, 8rem) minmax(0, 18rem); align-items: center; gap: 1rem; width: fit-content; margin-top: clamp(1rem, 2vw, 2rem); padding: .7rem; border: 1px solid rgba(255,255,255,.16); border-radius: 1rem; background: rgba(5, 20, 24, .58); }
.player-standby-campaign[hidden] { display: none; }
.player-standby-campaign canvas { display: block; width: 100% !important; height: auto !important; border-radius: .5rem; }
.player-standby-campaign small { color: #d9e4e8; font-size: clamp(.8rem, 1vw, 1.1rem); line-height: 1.35; }
.pairing { width: min(52rem, calc(100vw - 2rem)); max-height: calc(100vh - 2rem); overflow: auto; }
.trial-launch { width: min(34rem, calc(100vw - 2rem)); text-align: center; }
.trial-launch[hidden], .trial-launch button[hidden] { display: none; }
.trial-launch .error:empty { display: none; }
.public-language-switch { display: flex; justify-content: flex-end; gap: .25rem; margin-bottom: .9rem; }
.public-language-switch button { min-width: 2.6rem; padding: .4rem .55rem; border: 1px solid #3d4b60; background: transparent; color: #b7c1d0; font-size: .72rem; letter-spacing: .08em; }
.public-language-switch button[aria-pressed="true"] { border-color: #66e3c4; background: #174d42; color: #fff; }
.public-language-switch button:focus-visible { outline: 2px solid #66e3c4; outline-offset: 2px; }
.mode-panel { margin: 1rem 0; padding: 1rem; border: 1px solid #3d4b60; border-radius: .8rem; }
.mode-panel[hidden] { display: none; }
.mode-panel legend { padding: 0 .4rem; color: #f6f8fb; font-weight: 750; }
.qr-enrollment { display: grid; grid-template-columns: minmax(14rem, 20rem) 1fr; gap: 2rem; align-items: center; margin: 1rem 0; }
.qr-enrollment[hidden] { display: none; }
.qr-enrollment canvas { display: block; width: 100% !important; height: auto !important; border-radius: .6rem; }
.qr-enrollment p { margin: .35rem 0; color: #b7c1d0; }
.qr-enrollment .enrollment-check { margin-top: 1rem; }
.enrollment-check strong { display: inline-block; margin-left: .35rem; color: #fff; font-size: 1.45rem; letter-spacing: .16em; }
.pairing-divider { display: flex; align-items: center; gap: .75rem; color: #91a0b5; font-size: .8rem; }
.pairing-divider::before, .pairing-divider::after { content: ''; flex: 1; height: 1px; background: #3d4b60; }
.media { position: absolute; inset: 0; width: 100%; height: 100%; object-fit: cover; animation: fade-in .5s ease; }
.scene { position: absolute; inset: 0; width: 100%; height: 100%; overflow: hidden; }
.scene-canvas { position: absolute; transform-origin: top left; isolation: isolate; }
.scene-layer { position: absolute; overflow: hidden; transform-origin: center; }
.scene-layer-interactive { cursor: pointer; }
.scene-layer-interaction-hitbox { position: absolute; inset: 0; z-index: 2147483647; width: 100%; height: 100%; border: 0; background: transparent; padding: 0; cursor: pointer; }
.scene-layer-interaction-hitbox:focus-visible { outline: 4px solid #63e6d1; outline-offset: -4px; }
.scene-layer-media { display: block; width: 100%; height: 100%; }
.scene-layer-browser { display: block; width: 100%; height: 100%; border: 0; background: #000; }
.scene-layer-clock { box-sizing: border-box; display: grid; place-items: center; width: 100%; height: 100%; padding: 4%; font: 700 clamp(24px, 10cqw, 160px)/1.05 Inter, system-ui, sans-serif; text-align: center; container-type: size; }
.scene-layer-clock.clock-analog { position: relative; border-radius: 50%; aspect-ratio: 1; width: min(100%, 100cqh); height: min(100%, 100cqw); margin: auto; border: .04em solid currentColor; }
.clock-hand { position: absolute; left: calc(50% - .012em); bottom: 50%; width: .024em; height: 31%; background: currentColor; transform-origin: 50% 100%; border-radius: 999px; }
.clock-hand.hour { height: 24%; width: .035em; }
.clock-hand.second { width: .012em; color: #ff5c62; background: currentColor; }
.scene-layer-clock.clock-analog > b { width: .06em; height: .06em; border-radius: 50%; background: currentColor; z-index: 2; }
.scene-layer-text { display: flex; width: 100%; height: 100%; white-space: pre-wrap; overflow-wrap: anywhere; }
.scene-layer-ticker { display: flex; width: 100%; height: 100%; white-space: pre; will-change: transform; animation-timing-function: linear; animation-iteration-count: infinite; }
.ticker-left { justify-content: flex-start !important; animation-name: ticker-left; }
.ticker-right { justify-content: flex-start !important; animation-name: ticker-right; }
.ticker-up { align-items: flex-start !important; animation-name: ticker-up; }
.ticker-down { align-items: flex-start !important; animation-name: ticker-down; }
.scene-audio-track { display: none; }
.scene-layer-shape { position: relative; width: 100%; height: 100%; }
.scene-layer-slideshow-entry { position: absolute; inset: 0; overflow: hidden; }
.scene-layer-qr-container { display: grid; place-items: center; }
.scene-layer-qr { display: block; image-rendering: pixelated; }
.scene-layer-queue { container-type: size; background: #06131d; }
.queue-layer-placeholder { box-sizing: border-box; display: grid; width: 100%; height: 100%; place-content: center; gap: 1.2cqh; padding: 5cqw; color: #eef8f6; background: #06131d; text-align: center; font-family: Inter, ui-sans-serif, system-ui, sans-serif; }
.queue-layer-placeholder strong { font-size: clamp(22px, 5cqw, 84px); }
.queue-layer-placeholder span { opacity: .7; font-size: clamp(12px, 2cqw, 34px); }
.queue-layer-widget { --queue-layer-bg:#06131d; --queue-layer-surface:#102235; --queue-layer-primary:#61dcc5; --queue-layer-accent:#b9dc38; --queue-layer-text:#eef8f6; box-sizing:border-box; display:grid; grid-template-columns:minmax(0,1fr) minmax(150px,30%); grid-template-rows:auto minmax(0,1fr); gap:3cqw; width:100%; height:100%; padding:4cqw; color:var(--queue-layer-text); background:var(--queue-layer-bg); font-family:Inter,ui-sans-serif,system-ui,sans-serif; }
.queue-layer-widget>header { grid-column:1/-1; display:flex; align-items:center; gap:2.2cqw; min-width:0; }
.queue-layer-widget>header>div { display:grid; min-width:0; gap:.5cqh; }
.queue-layer-logo { display:block; max-width:18cqw; max-height:10cqh; object-fit:contain; }
.queue-layer-title { overflow:hidden; font-size:clamp(20px,3.5cqw,70px); line-height:1; text-overflow:ellipsis; white-space:nowrap; }
.queue-layer-location { opacity:.7; font-size:clamp(11px,1.4cqw,26px); }
.queue-layer-calls { display:grid; grid-template-columns:repeat(2,minmax(0,1fr)); align-content:start; gap:1.5cqw; min-width:0; min-height:0; overflow:hidden; }
.queue-layer-call { display:grid; min-width:0; gap:.4cqh; padding:1.7cqw; border-left:max(4px,.5cqw) solid var(--queue-layer-accent); border-radius:1.2cqw; background:var(--queue-layer-surface); }
.queue-layer-call strong { overflow:hidden; color:var(--queue-layer-primary); font-size:clamp(24px,4.7cqw,96px); line-height:.92; text-overflow:ellipsis; white-space:nowrap; }
.queue-layer-call span { overflow:hidden; font-size:clamp(12px,1.7cqw,34px); font-weight:700; text-overflow:ellipsis; white-space:nowrap; }
.queue-layer-empty { align-self:center; margin:0; opacity:.65; font-size:clamp(16px,2.4cqw,44px); }
.queue-layer-join { display:flex; min-width:0; min-height:0; flex-direction:column; align-items:center; justify-content:center; gap:1cqh; padding:2cqw; border-radius:1.4cqw; color:var(--queue-layer-text); background:var(--queue-layer-surface); text-align:center; }
.queue-layer-join canvas { max-width:100%; max-height:68%; width:auto!important; height:auto!important; border-radius:.6cqw; }
.queue-layer-join strong { color:var(--queue-layer-primary); font-size:clamp(15px,2.2cqw,42px); }
.queue-layer-join span { opacity:.72; font-size:clamp(10px,1.15cqw,22px); }
.queue-layer-qr-unavailable { display:grid; min-height:30%; place-items:center; }
.queue-layer-widget.queue-view-calls { grid-template-columns:1fr; }
.queue-layer-widget.queue-view-calls .queue-layer-calls { grid-template-columns:repeat(3,minmax(0,1fr)); }
.queue-layer-widget.queue-view-qr { grid-template-columns:1fr; }
.queue-layer-widget.queue-view-qr .queue-layer-join { width:min(72%,720px); justify-self:center; }

.zeitwart-layer-widget { --zeitwart-bg:#071824; --zeitwart-text:#f4fbfa; --zeitwart-accent:#63dfc4; box-sizing:border-box; width:100%; height:100%; display:grid; grid-template-rows:auto minmax(0,1fr) auto; gap:4cqh; padding:5cqw; overflow:hidden; color:var(--zeitwart-text); background:linear-gradient(135deg,color-mix(in srgb,var(--zeitwart-bg) 86%,#ffffff 14%),var(--zeitwart-bg)); font-family:Inter,ui-sans-serif,system-ui,sans-serif; }
.zeitwart-layer-widget>header { display:flex; align-items:flex-start; justify-content:space-between; gap:3cqw; }
.zeitwart-layer-widget>header>div { display:grid; gap:.4cqh; min-width:0; }
.zeitwart-eyebrow { color:var(--zeitwart-accent); font-size:clamp(11px,1.6cqw,28px); font-weight:850; letter-spacing:.16em; }
.zeitwart-room-name { overflow:hidden; font-size:clamp(22px,4.5cqw,74px); line-height:1.05; text-overflow:ellipsis; white-space:nowrap; }
.zeitwart-status { flex:none; padding:.7em 1.15em; border:2px solid color-mix(in srgb,var(--zeitwart-accent) 70%,transparent); border-radius:999px; color:var(--zeitwart-bg); background:var(--zeitwart-accent); font-size:clamp(12px,1.7cqw,26px); font-weight:900; letter-spacing:.08em; }
.zeitwart-status-occupied .zeitwart-status { color:#fff; background:#e34d61; border-color:#ff99a7; }
.zeitwart-status-upcoming .zeitwart-status { color:#1a1608; background:#f3c95b; border-color:#ffe4a0; }
.zeitwart-current { align-self:center; display:grid; gap:1.2cqh; }
.zeitwart-current-state { color:var(--zeitwart-accent); font-size:clamp(36px,8cqw,136px); line-height:.9; letter-spacing:-.04em; }
.zeitwart-status-occupied .zeitwart-current-state { color:#ff7889; }
.zeitwart-status-upcoming .zeitwart-current-state { color:#f3c95b; }
.zeitwart-current-title { font-size:clamp(16px,2.5cqw,40px); font-weight:750; }
.zeitwart-current-time { color:color-mix(in srgb,var(--zeitwart-text) 72%,transparent); font-size:clamp(14px,1.8cqw,30px); }
.zeitwart-schedule { display:grid; grid-template-columns:auto 1fr; gap:.7cqh 2cqw; align-items:baseline; padding-top:2.6cqh; border-top:1px solid color-mix(in srgb,var(--zeitwart-text) 22%,transparent); }
.zeitwart-next-label { grid-column:1/-1; color:color-mix(in srgb,var(--zeitwart-text) 60%,transparent); font-weight:800; letter-spacing:.1em; text-transform:uppercase; }
.zeitwart-next-time { color:var(--zeitwart-accent); font-weight:850; }
.zeitwart-next-title { min-width:0; overflow:hidden; text-overflow:ellipsis; white-space:nowrap; }
.zeitwart-view-schedule { grid-template-rows:auto minmax(0,1fr); }
.zeitwart-view-schedule .zeitwart-schedule { align-self:center; border-top:0; }
.zeitwart-stale { position:absolute; right:2cqw; bottom:1.5cqh; opacity:.65; font-size:clamp(10px,1.2cqw,20px); }
.scene-layer-zeitwart { position:relative; }
.zeitwart-placeholder { place-content:center; text-align:center; }
.zeitwart-placeholder-message { color:color-mix(in srgb,var(--zeitwart-text) 68%,transparent); font-size:clamp(14px,2cqw,30px); }
.video-loop-mask { position: absolute; inset: 0; width: 100%; height: 100%; pointer-events: none; }
.player-status { position: absolute; width: 1px; height: 1px; padding: 0; overflow: hidden; white-space: nowrap; clip-path: inset(50%); }
#maintenance-corners[hidden] { display: none; }
.maintenance-corner { position: fixed; z-index: 20; width: clamp(56px, 7vw, 96px); height: clamp(56px, 7vw, 96px); padding: 0; border: 0; border-radius: 0; background: transparent; opacity: 0; touch-action: manipulation; }
.maintenance-corner.top-left { top: 0; left: 0; }
.maintenance-corner.top-right { top: 0; right: 0; }
.maintenance-corner.bottom-left { bottom: 0; left: 0; }
.maintenance-corner.bottom-right { bottom: 0; right: 0; }
.exit-app { margin-left: .5rem; background: #5a2933; color: #fff; }
.cms-page { background: radial-gradient(circle at 90% 0%, #153849, #08111f 42%); padding: clamp(1.2rem, 4vw, 4rem); }
.cms-header { max-width: 70rem; margin: 0 auto 2rem; display: flex; align-items: center; justify-content: space-between; gap: 1rem; }
.cms-header h1 { margin-bottom: 0; }
.cms-actions { display: flex; align-items: center; justify-content: flex-end; gap: .75rem; flex-wrap: wrap; }
.secondary { background: #303e52; color: #f6f8fb; }
.login-view { min-height: 60vh; display: grid; place-items: center; }
.login-view[hidden], .dashboard[hidden] { display: none; }
.login-panel { width: min(28rem, 100%); }
.dashboard { max-width: 70rem; margin: auto; display: grid; grid-template-columns: repeat(auto-fit, minmax(18rem, 1fr)); gap: 1.5rem; }
.display-row { display: flex; justify-content: space-between; gap: 1rem; padding: 1rem 0; border-top: 1px solid #2a3a50; }
.display-row small { display: block; margin-top: .3rem; }
.badge { align-self: center; padding: .3rem .6rem; border-radius: 999px; background: #303e52; font-size: .75rem; text-transform: uppercase; }
.badge.online { background: #174d42; color: #8affdf; }
@keyframes fade-in { from { opacity: 0; transform: scale(1.01); } }
@keyframes standby-grid-drift { to { background-position: 4.5rem 4.5rem, -4.5rem 4.5rem; } }
@keyframes standby-orbit { to { transform: rotate(360deg); } }
@keyframes standby-status-pulse { to { transform: scale(.82); opacity: .66; } }
@keyframes scene-fade { from { opacity: 0; } to { opacity: 1; } }
@keyframes scene-slide-left { from { transform: translateX(100%); } to { transform: translateX(0); } }
@keyframes scene-slide-right { from { transform: translateX(-100%); } to { transform: translateX(0); } }
@keyframes scene-slide-up { from { transform: translateY(100%); } to { transform: translateY(0); } }
@keyframes scene-slide-down { from { transform: translateY(-100%); } to { transform: translateY(0); } }
@keyframes ticker-left { from { transform: translateX(var(--ticker-from)); } to { transform: translateX(var(--ticker-to)); } }
@keyframes ticker-right { from { transform: translateX(var(--ticker-from)); } to { transform: translateX(var(--ticker-to)); } }
@keyframes ticker-up { from { transform: translateY(var(--ticker-from)); } to { transform: translateY(var(--ticker-to)); } }
@keyframes ticker-down { from { transform: translateY(var(--ticker-from)); } to { transform: translateY(var(--ticker-to)); } }
@media (max-width: 550px) {
  .cms-header { align-items: flex-start; flex-direction: column; }
  .pairing { padding: 1.25rem; }
  .qr-enrollment { grid-template-columns: 1fr; gap: .8rem; text-align: center; }
  .qr-enrollment canvas { width: min(100%, 18rem) !important; justify-self: center; }
}
@media (max-aspect-ratio: 4 / 3) {
  .player-standby,
  .player-standby[data-burn-in-layout="mirrored"] { grid-template-columns: 1fr; grid-template-rows: minmax(12rem, .78fr) auto; grid-template-areas: "visual" "copy"; gap: 1.5rem; padding: clamp(2rem, 7vw, 5rem); text-align: center; }
  .player-standby[data-burn-in-layout="mirrored"] { grid-template-areas: "copy" "visual"; grid-template-rows: auto minmax(12rem, .78fr); }
  .player-standby-visual { height: 100%; min-height: 12rem; justify-self: center; }
  .player-standby-copy { justify-self: center; }
  .player-standby-body { margin-inline: auto; }
  .player-standby-campaign { margin-inline: auto; text-align: left; }
}
.scene-layer-weather {
  overflow: hidden;
  container-type: size;
}
.scene-layer-xml-data { overflow: hidden; container-type: size; }
.xml-data-widget { box-sizing: border-box; display: grid; gap: 2cqh; width: 100%; height: 100%; padding: 3cqw; overflow: hidden; font-family: Inter, ui-sans-serif, system-ui, sans-serif; }
.xml-data-widget.is-stale::before { content: 'offline'; position: absolute; right: 1em; top: 1em; opacity: .55; }
.xml-data-widget article { display: grid; grid-template-columns: minmax(0, 24%) minmax(0, 1fr); gap: 2.5cqw; align-items: center; min-height: 0; padding-bottom: 1.5cqh; border-bottom: 1px solid color-mix(in srgb, currentColor 18%, transparent); }
.xml-data-widget article:not(:has(img)) { grid-template-columns: 1fr; }
.xml-data-widget img { width: 100%; max-height: 18cqh; object-fit: contain; }
.xml-data-widget strong { display: block; font-size: clamp(18px, 2.2cqw, 46px); line-height: 1.05; }
.xml-data-widget p { margin: .45em 0 0; opacity: .8; font-size: clamp(13px, 1.35cqw, 28px); line-height: 1.25; }

.weather-widget {
  box-sizing: border-box;
  position: relative;
  isolation: isolate;
  display: grid;
  grid-template-rows: auto minmax(0, 1fr);
  gap: 4%;
  width: 100%;
  height: 100%;
  padding: 4.5%;
  color: inherit;
  overflow: hidden;
  font-family: Inter, ui-sans-serif, system-ui, sans-serif;
  background:
    radial-gradient(circle at 82% 16%, color-mix(in srgb, var(--weather-accent) 26%, transparent) 0, transparent 25%),
    linear-gradient(135deg, color-mix(in srgb, currentColor 3%, transparent), transparent 52%);
}

.weather-widget::before,
.weather-widget::after {
  position: absolute;
  z-index: -1;
  border: max(2px, .16cqw) solid color-mix(in srgb, var(--weather-accent) 22%, transparent);
  border-radius: 50%;
  content: '';
}
.weather-widget::before { width: 34%; aspect-ratio: 1; right: -12%; top: -25%; }
.weather-widget::after { width: 22%; aspect-ratio: 1; right: 4%; top: -19%; }

.weather-header, .weather-current, .weather-details, .weather-forecast, .weather-place,
.weather-forecast-heading, .weather-forecast-temperatures, .weather-rain {
  display: flex;
  align-items: center;
}

.weather-header { z-index: 1; justify-content: space-between; gap: 4%; }
.weather-place { align-items: flex-start; flex-direction: column; }
.weather-kicker { margin-bottom: .45em; color: var(--weather-accent); font-size: clamp(12px, 1.15cqw, 24px); font-weight: 800; letter-spacing: .18em; text-transform: uppercase; }
.weather-location { font-size: clamp(28px, 3.4cqw, 72px); line-height: .95; letter-spacing: -.03em; }
.weather-date { margin-top: .45em; opacity: .72; font-size: clamp(14px, 1.35cqw, 28px); }
.weather-updated { align-self: flex-start; padding: .65em 1em; border: 1px solid color-mix(in srgb, currentColor 22%, transparent); border-radius: 999px; background: color-mix(in srgb, currentColor 8%, transparent); font-size: clamp(12px, 1.05cqw, 22px); font-weight: 700; }
.weather-updated.is-stale { color: var(--weather-accent); }
.weather-current { min-width: 0; gap: 3.5%; }
.weather-icon-shell { display: grid; flex: 0 0 auto; width: clamp(120px, 18cqw, 360px); aspect-ratio: 1; place-items: center; border: 1px solid color-mix(in srgb, var(--weather-accent) 35%, transparent); border-radius: 38%; background: linear-gradient(145deg, color-mix(in srgb, var(--weather-accent) 22%, transparent), color-mix(in srgb, currentColor 6%, transparent)); box-shadow: inset 0 1px 0 color-mix(in srgb, currentColor 22%, transparent), 0 2cqw 5cqw color-mix(in srgb, #000 22%, transparent); }
.weather-icon { color: var(--weather-accent); font-size: clamp(76px, 12cqw, 250px); line-height: 1; filter: drop-shadow(0 .1em .2em color-mix(in srgb, #000 22%, transparent)); }
.weather-current-values { display: flex; flex-direction: column; }
.weather-temperature { font-size: clamp(84px, 13cqw, 270px); font-weight: 720; line-height: .78; letter-spacing: -.07em; }
.weather-condition { margin-top: .35em; font-size: clamp(26px, 3.3cqw, 68px); font-weight: 650; }
.weather-range { margin-top: .55em; opacity: .7; font-size: clamp(15px, 1.45cqw, 30px); font-weight: 650; }
.weather-details { margin-left: auto; align-self: stretch; flex: 0 0 23%; flex-direction: column; align-items: stretch; justify-content: center; gap: 3%; }
.weather-metric { display: flex; flex: 1; max-height: 28%; flex-direction: column; align-items: flex-start; justify-content: center; padding: 0 11%; border-left: .18em solid var(--weather-accent); border-radius: 0 1em 1em 0; background: color-mix(in srgb, currentColor 7%, transparent); }
.weather-metric small { opacity: .65; font-size: clamp(11px, 1cqw, 21px); font-weight: 700; letter-spacing: .07em; text-transform: uppercase; }
.weather-metric strong { margin-top: .22em; font-size: clamp(18px, 2cqw, 40px); line-height: 1; }
.weather-forecast { min-height: 0; gap: 1.2%; }
.weather-forecast-item { position: relative; flex: 1; display: flex; min-width: 0; flex-direction: column; align-items: center; justify-content: space-between; gap: 2%; padding: 2%; border: 1px solid color-mix(in srgb, currentColor 16%, transparent); border-radius: clamp(14px, 1.4cqw, 28px); background: linear-gradient(155deg, color-mix(in srgb, currentColor 10%, transparent), color-mix(in srgb, currentColor 3%, transparent)); box-shadow: inset 0 1px 0 color-mix(in srgb, currentColor 16%, transparent); font-size: clamp(14px, 1.6cqw, 32px); }
.weather-forecast-item.is-today, .weather-forecast-item.is-now { border-color: color-mix(in srgb, var(--weather-accent) 70%, transparent); background: linear-gradient(155deg, color-mix(in srgb, var(--weather-accent) 22%, transparent), color-mix(in srgb, currentColor 5%, transparent)); }
.weather-forecast-heading { width: 100%; justify-content: space-between; }
.weather-forecast-heading small { opacity: .55; font-size: .62em; }
.weather-small-icon { color: var(--weather-accent); font-size: 2.8em; line-height: 1; filter: drop-shadow(0 .08em .12em color-mix(in srgb, #000 18%, transparent)); }
.weather-forecast-condition { opacity: .75; font-size: .62em; }
.weather-forecast-temperatures { gap: .45em; font-size: 1.25em; }
.weather-forecast-temperatures span { opacity: .52; }
.weather-hour-temperature { font-size: 1.25em; font-weight: 750; }
.weather-rain { width: 100%; flex-direction: column; gap: .45em; }
.weather-rain small { opacity: .62; align-self: flex-start; font-size: .55em; }
.weather-rain-track { display: block; width: 100%; height: .22em; overflow: hidden; border-radius: 999px; background: color-mix(in srgb, currentColor 14%, transparent); }
.weather-rain-value { display: block; height: 100%; border-radius: inherit; background: var(--weather-accent); }

.weather-template-current .weather-current { justify-content: center; padding: 2% 3% 0; }
.weather-template-current .weather-details { flex-basis: 25%; }
.weather-template-daily { grid-template-columns: 32% minmax(0, 1fr); grid-template-rows: auto minmax(0, 1fr); }
.weather-template-daily .weather-header { grid-column: 1 / -1; }
.weather-template-daily .weather-current { flex-direction: column; justify-content: center; padding-right: 8%; border-right: 1px solid color-mix(in srgb, currentColor 16%, transparent); text-align: center; }
.weather-template-daily .weather-icon-shell { width: clamp(100px, 13cqw, 270px); }
.weather-template-daily .weather-icon { font-size: clamp(62px, 9cqw, 190px); }
.weather-template-daily .weather-temperature { margin-top: .14em; font-size: clamp(65px, 8cqw, 170px); }
.weather-template-daily .weather-condition { font-size: clamp(22px, 2.2cqw, 44px); }
.weather-template-daily .weather-details { width: 100%; margin: 7% 0 0; align-self: auto; flex: 0 0 auto; flex-direction: row; gap: 2%; }
.weather-template-daily .weather-metric { min-width: 0; max-height: none; padding: 5% 3%; border: 0; border-top: .14em solid var(--weather-accent); border-radius: .7em; align-items: center; }
.weather-template-daily .weather-metric small { font-size: clamp(8px, .65cqw, 14px); }
.weather-template-daily .weather-metric strong { font-size: clamp(12px, 1cqw, 21px); white-space: nowrap; }
.weather-template-daily .weather-forecast { align-self: stretch; }

.weather-template-hourly { grid-template-rows: auto 31% minmax(0, 1fr); }
.weather-template-hourly .weather-current { max-width: 90%; }
.weather-template-hourly .weather-icon-shell { width: clamp(76px, 9cqw, 190px); }
.weather-template-hourly .weather-icon { font-size: clamp(52px, 6.3cqw, 135px); }
.weather-template-hourly .weather-temperature { font-size: clamp(62px, 8cqw, 170px); }
.weather-template-hourly .weather-condition { font-size: clamp(20px, 2cqw, 42px); }
.weather-template-hourly .weather-range { display: none; }
.weather-template-hourly .weather-details { flex-basis: auto; flex-direction: row; gap: 2%; }
.weather-template-hourly .weather-metric { min-width: clamp(100px, 10cqw, 200px); max-height: none; padding: 3% 7%; border-left: 0; border-top: .16em solid var(--weather-accent); border-radius: .8em; }
.weather-template-hourly .weather-forecast { align-self: stretch; }
.weather-unavailable { display: grid; place-items: center; width: 100%; height: 100%; font: 600 clamp(24px, 4cqw, 72px) system-ui, sans-serif; }
.scene-layer-wayfinding{overflow:hidden}.wayfinding-widget{--wayfinding-bg:#071824;--wayfinding-text:#f4fbfa;--wayfinding-accent:#63dfc4;width:100%;height:100%;padding:clamp(18px,2.2%,42px);display:flex;flex-direction:column;gap:clamp(14px,2%,32px);color:var(--wayfinding-text);background:linear-gradient(145deg,var(--wayfinding-bg),color-mix(in srgb,var(--wayfinding-bg),#144f52 35%));font-family:Inter,system-ui,sans-serif}.wayfinding-widget header{display:flex;align-items:flex-start;justify-content:space-between;gap:20px}.wayfinding-eyebrow{display:block;margin-bottom:.4em;color:var(--wayfinding-accent);font-size:clamp(10px,1vw,21px);font-weight:850;letter-spacing:.15em}.wayfinding-title{display:block;font-size:clamp(22px,3vw,58px);line-height:1.05}.wayfinding-distance{display:grid;justify-items:end;padding:.5em .8em;border-radius:14px;background:#ffffff16}.wayfinding-distance strong{font-size:clamp(18px,2vw,38px);color:var(--wayfinding-accent)}.wayfinding-distance span{font-size:clamp(12px,1vw,20px)}.wayfinding-body{flex:1;min-height:0;display:grid;grid-template-columns:minmax(0,1fr) minmax(180px,28%);gap:clamp(16px,2vw,36px)}.wayfinding-floor-stack{position:relative;min-height:0;perspective:1100px}.wayfinding-floor{--floor-index:0;position:absolute;inset:calc(4% + var(--floor-index)*9%) calc(5% + var(--floor-index)*2%) calc(11% - var(--floor-index)*4%) calc(5% - var(--floor-index)*2%);border:2px solid #ffffff54;border-radius:18px;background:linear-gradient(135deg,#ffffffee,#cfe1ddee);box-shadow:20px 26px 40px #0005;transform:rotateX(58deg) rotateZ(-7deg) translateZ(calc(var(--floor-index)*28px));transform-origin:center;color:#153334}.wayfinding-floor-name{position:absolute;left:4%;top:7%;font-size:clamp(12px,1.2vw,24px)}.wayfinding-floor-room{position:absolute;border:1px solid #78918c;border-radius:6px;background:#d8e6e2}.wayfinding-route-line{position:absolute;height:clamp(8px,1vw,18px);border-radius:99px;background:var(--wayfinding-accent);box-shadow:0 0 0 4px #fff,0 6px 14px #063c3570;transform-origin:left center}.wayfinding-route-marker{position:absolute;width:clamp(16px,1.5vw,30px);height:clamp(16px,1.5vw,30px);border-radius:50%;background:var(--wayfinding-accent);border:4px solid #fff;box-shadow:0 4px 10px #0005;transform:translate(-50%,-50%)}.wayfinding-route-marker.destination{background:#ec4b64}.wayfinding-body aside{display:flex;flex-direction:column;gap:.8em;padding:1em;border-radius:18px;background:#ffffff12;font-size:clamp(12px,1.15vw,22px)}.wayfinding-body aside>span{padding:.65em .75em;border-radius:10px;background:#ffffff12}.wayfinding-accessible{color:var(--wayfinding-accent)}.wayfinding-qr{margin-top:auto;padding:.65em;display:grid;justify-items:center;gap:.55em;border-radius:16px;background:white;color:#163532;text-align:center}.wayfinding-qr canvas{display:block;max-width:80%;height:auto}.wayfinding-placeholder{align-items:center;justify-content:center;text-align:center}.wayfinding-placeholder-message{font-size:clamp(20px,2.5vw,48px)}
