/* Guest portal (/visit) — public pages. Builds on app.css / soft.css tokens; works in light & dark, RTL & LTR. */
.visit .screen { padding-bottom: calc(24px + var(--safe-b)); }
.visit-bar .visit-brand { display: inline-flex; align-items: center; gap: 8px; font-size: 13.5px; font-weight: 750; max-width: 46vw; overflow: hidden; white-space: nowrap; text-overflow: ellipsis; color: var(--label); }
.visit-bar .visit-brand img { height: 28px; width: auto; border-radius: 6px; }
.visit-bar .sm-tile { width: 28px; height: 28px; border-radius: 9px; background: var(--hc, var(--tint)); }
.visit-bar .sm-tile .ic { width: 17px; height: 17px; }
.visit-content { padding-top: 4px; }

/* hero in the hotel colour */
.visit-hero { background: radial-gradient(120% 140% at 100% 0%, color-mix(in srgb, var(--hc) 70%, #fff) 0%, transparent 55%), linear-gradient(135deg, var(--hc), #1f1b2e) !important;
  box-shadow: 0 22px 44px -20px var(--hc) !important; color: #fff; }
.visit-hero h2 { font-size: 28px; }
.visit-now { position: relative; z-index: 1; margin-top: 14px; display: grid; gap: 8px; }
.visit-now-h { font-size: 13px; font-weight: 750; display: flex; align-items: center; gap: 6px; opacity: .95; }
.visit-now-row { display: flex; align-items: center; gap: 10px; padding: 10px 12px; border-radius: 16px; color: #fff;
  background: rgba(255,255,255,.16); box-shadow: inset 0 1px 0 rgba(255,255,255,.3); backdrop-filter: blur(8px); -webkit-backdrop-filter: blur(8px); }
.visit-now-row .grow { display: grid; min-width: 0; }
.visit-now-row b { font-size: 15.5px; white-space: nowrap; overflow: hidden; text-overflow: ellipsis; }
.visit-now-row small { font-size: 12.5px; opacity: .85; white-space: nowrap; overflow: hidden; text-overflow: ellipsis; }
.visit-now-row .chev { opacity: .7; }
.visit-now-row.next { background: rgba(0,0,0,.18); }
.glass-tile { background: rgba(255,255,255,.22) !important; box-shadow: inset 0 1px 0 rgba(255,255,255,.4); }
.visit-count { display: grid; text-align: center; flex: none; padding: 4px 10px; border-radius: 12px; background: rgba(255,255,255,.18); }
.visit-count b { font-size: 18px; font-weight: 800; letter-spacing: .02em; }
.visit-count small { font-size: 11px; opacity: .85; }
.visit-now-empty { margin: 0; display: flex; align-items: center; gap: 6px; opacity: .9; }
.live-dot { display: inline-block; width: 8px; height: 8px; border-radius: 50%; background: #34d399; box-shadow: 0 0 0 0 rgba(52,211,153,.7); animation: vpulse 1.6s infinite; flex: none; }
@keyframes vpulse { 70% { box-shadow: 0 0 0 8px rgba(52,211,153,0); } 100% { box-shadow: 0 0 0 0 rgba(52,211,153,0); } }
@media (prefers-reduced-motion: reduce) { .live-dot { animation: none; } }

/* section shortcuts: a wrapping grid (never a horizontal strip) */
.visit-jump { display: grid; grid-template-columns: repeat(6, 1fr); gap: 8px; margin: 16px 0 4px; }
.visit-jump a { display: grid; justify-items: center; gap: 4px; padding: 10px 4px; border-radius: 16px; font-size: 12px; font-weight: 650; color: var(--label);
  background: var(--surface, var(--bg-elev)); box-shadow: var(--e1, var(--shadow)); }
.visit-jump a .ic { width: 22px; height: 22px; color: var(--hc, var(--tint)); }
@media (max-width: 380px) { .visit-jump { grid-template-columns: repeat(3, 1fr); } }
.visit .section { scroll-margin-top: 70px; }

/* day tabs: pure CSS (radio + :has) */
.visit-seg { grid-auto-columns: minmax(0, 1fr); }
.visit-seg label span { font-size: 12.5px; padding-inline: 2px; white-space: nowrap; overflow: hidden; text-overflow: ellipsis; }
.visit-day { display: none; }
.visit-days:has(#vday0:checked) .visit-day[data-d="0"], .visit-days:has(#vday1:checked) .visit-day[data-d="1"],
.visit-days:has(#vday2:checked) .visit-day[data-d="2"], .visit-days:has(#vday3:checked) .visit-day[data-d="3"],
.visit-days:has(#vday4:checked) .visit-day[data-d="4"], .visit-days:has(#vday5:checked) .visit-day[data-d="5"],
.visit-days:has(#vday6:checked) .visit-day[data-d="6"] { display: block; animation: vfade .25s var(--ease); }
@keyframes vfade { from { opacity: 0; transform: translateY(4px); } to { opacity: 1; transform: none; } }

/* timeline */
.visit-timeline { list-style: none; margin: 0; padding: 0; display: grid; gap: 10px; }
.visit-timeline a { display: flex; align-items: center; gap: 12px; padding: 12px; border-radius: var(--r-lg); color: var(--label);
  background: var(--surface, var(--bg-elev)); box-shadow: var(--e1, var(--shadow)); }
.visit-timeline .vt-time { display: grid; text-align: center; min-width: 46px; flex: none; }
.visit-timeline .vt-time b { font-size: 16px; font-weight: 800; }
.visit-timeline .vt-time small { font-size: 12px; color: var(--label-2); }
.visit-timeline .vt-body { flex: 1; min-width: 0; display: grid; gap: 2px; }
.visit-timeline .vt-body b { font-size: 15.5px; white-space: nowrap; overflow: hidden; text-overflow: ellipsis; }
.visit-timeline .vt-body small { font-size: 13px; color: var(--label-2); display: flex; align-items: center; gap: 4px; }
.visit-timeline .vt-badges { display: flex; flex-wrap: wrap; gap: 6px; }
.visit-timeline .vt-badges:empty { display: none; }
.visit-timeline .chev { color: var(--label-3); width: 18px; height: 18px; flex: none; }
.visit-timeline .st-done a { opacity: .55; }
.visit-timeline .st-live a { box-shadow: 0 0 0 2px var(--green), var(--e1, var(--shadow)); }

/* events */
.visit-events { display: grid; gap: 10px; }
.visit-event { display: flex; align-items: center; gap: 12px; }
.visit-event .ve-date { display: grid; place-items: center; width: 50px; height: 54px; border-radius: 14px; flex: none; color: #fff; background: linear-gradient(150deg, var(--hc, var(--tint)), #1f1b2e); }
.visit-event .ve-date b { font-size: 20px; line-height: 1; }
.visit-event .ve-date small { font-size: 11px; opacity: .85; }
.visit-event .grow { min-width: 0; }
.visit-event .sub { font-size: 13px; }

/* kids & team grids */
.visit-kids, .visit-team { display: grid; grid-template-columns: repeat(auto-fill, minmax(150px, 1fr)); gap: 10px; }
.visit-kid, .visit-member { display: grid; justify-items: center; text-align: center; gap: 4px; color: var(--label); }
.visit-kid b, .visit-member b { font-size: 15px; }
.visit-kid small, .visit-member small { font-size: 12.5px; }
.visit-member .avatar.lg { width: 72px; height: 72px; margin: 0 auto 4px; }

/* places */
.visit-place { align-items: flex-start; }
.visit-place .btn { flex: none; align-self: center; }
.visit-more summary { cursor: pointer; color: var(--tint); font-weight: 650; padding: 4px 6px; }

/* request form */
.visit-ask .segmented { margin-bottom: 12px; }
.visit-ask .segmented label span { font-size: 12.5px; white-space: normal; line-height: 1.25; }
.visit-hp { position: absolute !important; inset-inline-start: -9999px; width: 1px; height: 1px; opacity: 0; }
.visit-ask .k-feedback { display: none; }
.visit-ask:has(input[name="kind"][value="feedback"]:checked) .k-feedback { display: flex; }
.visit-ask:has(input[name="kind"][value="feedback"]:checked) .k-contact,
.visit-ask:has(input[name="kind"][value="feedback"]:checked) .k-join,
.visit-ask:has(input[name="kind"][value="party"]:checked) .k-join { display: none; }
.visit-stars { border: 0; margin: 12px 0 0; padding: 0; flex-direction: row-reverse; justify-content: center; gap: 6px; position: relative; }
.visit-stars legend { position: absolute; width: 1px; height: 1px; overflow: hidden; clip: rect(0 0 0 0); }
.visit-stars input { position: absolute; opacity: 0; pointer-events: none; }
.visit-stars label { cursor: pointer; padding: 4px; color: var(--label-3); }
.visit-stars label .ic { width: 34px; height: 34px; }
.visit-stars input:checked ~ label { color: #f59e0b; }
.visit-stars label:hover, .visit-stars label:hover ~ label { color: #fbbf24; }
.visit-stars input:focus-visible + label { outline: 2px solid var(--tint); border-radius: 8px; }
.visit-thanks { display: flex; align-items: center; gap: 14px; }
.visit-thanks p { margin: 2px 0 0; }
.visit-about { line-height: 1.8; font-size: 15px; }
.visit-foot { text-align: center; color: var(--label-3); font-size: 12px; margin: 30px 0 10px; }

/* share sheet */
.visit-qr { display: inline-grid; padding: 14px; background: #fff; border-radius: 20px; box-shadow: var(--e2, var(--shadow)); }
.visit-qr canvas { width: 220px; height: 220px; image-rendering: pixelated; }
.visit-url { font-size: 12.5px; word-break: break-all; margin: 12px 0; }
.visit-actions { display: flex; flex-wrap: wrap; gap: 8px; justify-content: center; }

/* printable poster */
.visit-poster { max-width: 640px; margin: 24px auto; padding: 36px 28px; text-align: center; border-radius: 28px; color: #111;
  background: #fff; box-shadow: 0 30px 60px -30px rgba(0,0,0,.35); border-top: 14px solid var(--hc); }
.visit-poster .vp-top { display: flex; align-items: center; justify-content: center; gap: 12px; }
.visit-poster .vp-company { font-weight: 800; letter-spacing: .06em; font-size: 15px; color: #444; }
.visit-poster h1 { font-size: 40px; margin: 18px 0 6px; line-height: 1.2; }
.visit-poster .vp-lead { font-size: 20px; margin: 0 0 22px; color: #333; }
.visit-poster .vp-qr { display: inline-grid; padding: 18px; border-radius: 24px; border: 3px solid var(--hc); }
.visit-poster .vp-qr canvas { width: min(70vw, 360px); height: min(70vw, 360px); image-rendering: pixelated; }
.visit-poster .vp-points { list-style: none; padding: 0; margin: 22px 0 6px; display: flex; flex-wrap: wrap; justify-content: center; gap: 10px 18px; font-weight: 700; font-size: 16px; }
.visit-poster .vp-points li { display: inline-flex; align-items: center; gap: 6px; }
.visit-poster .vp-points .ic { color: var(--hc); width: 22px; height: 22px; }
.visit-poster .vp-url { color: #666; font-size: 13px; word-break: break-all; }
.visit-poster .vp-actions { display: flex; gap: 10px; justify-content: center; margin-top: 18px; }
@media print {
  @page { size: A4; margin: 12mm; }
  html, body { background: #fff !important; }
  body.visit > :not(.shell), .no-print, #toasts, #netbar { display: none !important; }
  .visit-poster { box-shadow: none; margin: 0 auto; max-width: none; }
  .visit .screen { padding: 0; }
}
.visit-bar.scrolled .visit-brand b { display: none; }

/* ======================================================================
   Photos & videos (media library: public items only)
   ====================================================================== */
.visit .screen { overflow-x: clip; }

/* full-bleed hero: featured video, or crossfading photos */
.visit-hero.vhero { position: relative; isolation: isolate; overflow: hidden; margin-inline: calc(50% - 50vw); border-radius: 0 0 32px 32px;
  min-height: min(76vh, 640px); display: flex; flex-direction: column; justify-content: flex-end;
  padding: 96px max(18px, calc(50vw - 362px)) 24px; background: #15121f !important; box-shadow: 0 30px 60px -36px rgba(0,0,0,.6) !important; color: #fff; }
.visit-hero.vhero.vhero-sm { min-height: min(54vh, 460px); }
.visit-hero.vhero::before { display: none !important; }
.visit-hero.vhero::after { content: ""; position: absolute; inset: 0; z-index: -1; animation: none !important; background-size: auto !important;
  background: linear-gradient(180deg, rgba(0,0,0,.30) 0%, rgba(0,0,0,0) 30%, rgba(0,0,0,.18) 55%, rgba(0,0,0,.78) 100%) !important; }
.visit-hero.vhero h2 { font-size: clamp(30px, 8vw, 44px); text-shadow: 0 2px 18px rgba(0,0,0,.45); }
.visit-hero.vhero :is(.eyebrow, p) { text-shadow: 0 1px 10px rgba(0,0,0,.5); }
.vhero-media { position: absolute; inset: 0; z-index: -2; overflow: hidden; }
.vhero-media > img, video.vhero-media { position: absolute; inset: 0; width: 100%; height: 100%; object-fit: cover; }
.vhero-media:not(.slides) > img { animation: vkb 22s ease-in-out infinite alternate; }
.vhero-media.slides > img { opacity: 0; animation: 14s vslide2 infinite both; animation-delay: calc(var(--i) * 7s); }
.vhero-media.slides.n3 > img { animation-name: vslide3; animation-duration: 21s; }
.vhero-media.slides.n4 > img { animation-name: vslide4; animation-duration: 28s; }
@keyframes vkb { from { transform: scale(1.02); } to { transform: scale(1.12) translate(-1.5%, -1%); } }
@keyframes vslide2 { 0% { opacity: 0; transform: scale(1.1); } 6% { opacity: 1; } 50% { opacity: 1; } 58% { opacity: 0; transform: scale(1); } 100% { opacity: 0; } }
@keyframes vslide3 { 0% { opacity: 0; transform: scale(1.1); } 4% { opacity: 1; } 33% { opacity: 1; } 39% { opacity: 0; transform: scale(1); } 100% { opacity: 0; } }
@keyframes vslide4 { 0% { opacity: 0; transform: scale(1.1); } 3% { opacity: 1; } 25% { opacity: 1; } 30% { opacity: 0; transform: scale(1); } 100% { opacity: 0; } }
.visit-hero.vhero, .visit-hero.vhero :is(b, h2, small, p, .eyebrow, .visit-now-row) { color: #fff !important; }
.vact, .vshow, .vact :is(b, small), .vshow :is(b, small, span) { color: #fff !important; }
.vhero .visit-now-row { background: rgba(255,255,255,.18); }
.vhero .visit-now-row.next { background: rgba(0,0,0,.32); }

/* stories (Instagram-style circles) */
.vstories { display: flex; gap: 14px; overflow-x: auto; scroll-snap-type: x proximity; padding: 18px 16px 6px; margin: 0 -16px; scrollbar-width: none; }
.vstories::-webkit-scrollbar { display: none; }
.vstory { flex: none; display: grid; justify-items: center; gap: 6px; width: 76px; padding: 0; border: 0; background: none; color: var(--label); font: inherit; cursor: pointer; scroll-snap-align: start; }
.vstory-ring { display: block; width: 70px; height: 70px; border-radius: 50%; padding: 3px; background: conic-gradient(from 200deg, #feda75, #fa7e1e, #d62976, #962fbf, #4f5bd5, #feda75); transition: transform .2s; }
.vstory:active .vstory-ring { transform: scale(.92); }
.vstory.seen .vstory-ring { background: var(--fill-2, #c7c7cc); }
.vstory-ring img { display: block; width: 100%; height: 100%; border-radius: 50%; object-fit: cover; border: 3px solid var(--bg, #f2f2f7); }
.vstory-l { font-size: 12.5px; font-weight: 650; max-width: 76px; white-space: nowrap; overflow: hidden; text-overflow: ellipsis; }
.vstory:focus-visible { outline: none; } .vstory:focus-visible .vstory-ring { box-shadow: 0 0 0 3px var(--tint); }

/* activity cards with cover photos */
.vacts { display: grid; grid-template-columns: repeat(2, 1fr); gap: 10px; }
@media (min-width: 640px) { .vacts { grid-template-columns: repeat(3, 1fr); } }
.vact { position: relative; display: block; aspect-ratio: 4 / 5; border-radius: 22px; overflow: hidden; color: #fff; isolation: isolate; box-shadow: var(--e1, var(--shadow)); }
.vact img { position: absolute; inset: 0; width: 100%; height: 100%; object-fit: cover; z-index: -2; transition: transform .5s; }
.vact::after { content: ""; position: absolute; inset: 0; z-index: -1; background: linear-gradient(180deg, transparent 40%, rgba(0,0,0,.72)); }
.vact:active img { transform: scale(1.05); }
.vact-body { position: absolute; inset-inline: 12px; bottom: 12px; display: grid; gap: 2px; }
.vact-body b { font-size: 15.5px; line-height: 1.3; text-shadow: 0 1px 8px rgba(0,0,0,.5); }
.vact-body small { font-size: 12.5px; opacity: .9; white-space: nowrap; overflow: hidden; text-overflow: ellipsis; }

/* tonight's show: one big photo */
.vshow { position: relative; display: block; aspect-ratio: 16 / 10; border-radius: 26px; overflow: hidden; color: #fff; isolation: isolate; margin-bottom: 14px; box-shadow: 0 24px 48px -26px rgba(0,0,0,.6); }
.vshow img { position: absolute; inset: 0; width: 100%; height: 100%; object-fit: cover; z-index: -2; }
.vshow::after { content: ""; position: absolute; inset: 0; z-index: -1; background: linear-gradient(180deg, rgba(0,0,0,.1), rgba(0,0,0,.75)); }
.vshow-body { position: absolute; inset-inline: 18px; bottom: 16px; display: grid; gap: 4px; }
.vshow-body b { font-size: 24px; font-weight: 800; line-height: 1.2; text-shadow: 0 2px 14px rgba(0,0,0,.5); }
.vshow-body small { font-size: 14px; opacity: .92; }
.vshow-eyebrow { justify-self: start; display: inline-flex; align-items: center; gap: 5px; padding: 4px 10px; border-radius: 99px; font-size: 12.5px; font-weight: 750;
  background: rgba(255,255,255,.2); backdrop-filter: blur(8px); -webkit-backdrop-filter: blur(8px); }

/* gallery: filter chips (wrapping) + masonry */
.vchips { display: flex; flex-wrap: wrap; gap: 8px; margin: 0 0 12px; }
.vchip { padding: 7px 14px; border-radius: 99px; border: 0; font: inherit; font-size: 13.5px; font-weight: 650; cursor: pointer; color: var(--label);
  background: var(--surface, var(--bg-elev)); box-shadow: var(--e1, var(--shadow)); }
.vchip.on { background: var(--hc, var(--tint)); color: #fff; }
.vchip:focus-visible { outline: 2px solid var(--tint); outline-offset: 2px; }
.vgal { columns: 2; column-gap: 8px; }
@media (min-width: 640px) { .vgal { columns: 3; } }
.vg-item { position: relative; display: block; margin: 0 0 8px; break-inside: avoid; border-radius: 16px; overflow: hidden; background: var(--fill, rgba(120,120,128,.15)); }
.vg-item img, .vg-item video { display: block; width: 100%; height: auto; }
.vgal:not(.all) .vg-item:nth-child(n+25) { display: none; }
.vg-item[hidden] { display: none !important; }
.vg-item:focus-visible { outline: 3px solid var(--tint); outline-offset: 2px; }
.vg-play { position: absolute; top: 50%; left: 50%; width: 46px; height: 46px; margin: -23px 0 0 -23px; display: grid; place-items: center; border-radius: 50%;
  color: #fff; background: rgba(0,0,0,.45); backdrop-filter: blur(6px); -webkit-backdrop-filter: blur(6px); pointer-events: none; }
.vg-play .ic { width: 22px; height: 22px; }

/* kids cards with covers, team photos */
.visit-kid.has-cover { padding-top: 8px; }
.visit-kid .vk-cover { width: 100%; aspect-ratio: 4 / 3; object-fit: cover; border-radius: 14px; margin-bottom: 4px; }
.vteam-shots { display: grid; grid-template-columns: repeat(3, 1fr); gap: 8px; margin-bottom: 12px; }
.vteam-shots .vg-item { margin: 0; aspect-ratio: 1; }
.vteam-shots img { width: 100%; height: 100%; object-fit: cover; }
.visit-member .vm-photo { width: 72px; height: 72px; border-radius: 50%; object-fit: cover; margin: 0 auto 4px; }

/* full-screen viewer: stories + lightbox (built by visit.js) */
html.vview-open, html.vview-open body { overflow: hidden; }
.vview { position: fixed; inset: 0; z-index: 1000; background: #000; color: #fff; display: grid; grid-template-rows: auto 1fr auto; touch-action: none; user-select: none; -webkit-user-select: none; animation: vvIn .2s ease; }
@keyframes vvIn { from { opacity: 0; transform: scale(.98); } }
.vv-top { position: absolute; inset-inline: 0; top: 0; z-index: 3; padding: calc(10px + env(safe-area-inset-top)) 12px 18px; background: linear-gradient(180deg, rgba(0,0,0,.55), transparent); }
.vv-bars { display: flex; gap: 4px; margin-bottom: 10px; direction: ltr; }
[dir="rtl"] .vv-bars { direction: rtl; }
.vv-bars .vb { flex: 1; height: 3px; border-radius: 3px; background: rgba(255,255,255,.35); overflow: hidden; }
.vv-bars .vb i { display: block; height: 100%; width: 0; background: #fff; }
.vv-head { display: flex; align-items: center; gap: 10px; }
.vv-title { flex: 1; font-size: 15px; }
.vv-count { font-size: 13px; opacity: .8; }
.vv-stage { grid-row: 1 / -1; grid-column: 1; display: grid; place-items: center; overflow: hidden; }
.vv-stage img, .vv-stage video { max-width: 100%; max-height: 100%; width: 100%; height: 100%; object-fit: contain; }
.is-story .vv-stage img, .is-story .vv-stage video { object-fit: cover; }
@media (min-width: 700px) { .is-story .vv-stage img, .is-story .vv-stage video { object-fit: contain; } }
.vv-cap { position: absolute; inset-inline: 0; bottom: 0; z-index: 3; margin: 0; padding: 40px 18px calc(18px + env(safe-area-inset-bottom)); font-size: 14.5px; line-height: 1.6;
  max-height: 34vh; overflow: auto; white-space: pre-line; background: linear-gradient(0deg, rgba(0,0,0,.75), transparent); }
.vv-btn { display: grid; place-items: center; width: 42px; height: 42px; border: 0; border-radius: 50%; color: #fff; background: rgba(255,255,255,.16); cursor: pointer; }
.vv-btn .ic { width: 22px; height: 22px; }
.vv-btn:focus-visible { outline: 2px solid #fff; outline-offset: 2px; }
.vv-prev, .vv-next { position: absolute; top: 50%; z-index: 3; margin-top: -21px; }
.vv-next { inset-inline-end: 12px; }
.vv-prev { inset-inline-start: 12px; }
/* the chevron glyph points left: next → in LTR, prev → in RTL get mirrored */
.vv-next .ic { transform: scaleX(-1); }
[dir="rtl"] .vv-next .ic { transform: none; }
[dir="rtl"] .vv-prev .ic { transform: scaleX(-1); }
.is-story .vv-prev, .is-story .vv-next { display: none; }
@media (min-width: 700px) { .is-story .vv-prev, .is-story .vv-next { display: grid; } }
.vv-btn[hidden] { display: none !important; }

@media (prefers-reduced-motion: reduce) {
  .vhero-media > img, .vhero-media.slides > img { animation: none !important; }
  .vhero-media.slides > img { opacity: 0; } .vhero-media.slides > img:first-child { opacity: 1; }
  .vview { animation: none; }
  .vact img { transition: none; }
}

/* ---------- polish v2: readable day tabs (light + dark), no overflow, header name ---------- */
:root .segmented.visit-seg { grid-auto-flow: row; grid-template-columns: repeat(4, 1fr); gap: 4px; padding: 4px; border-radius: 14px; }
:root .segmented.visit-seg label { padding: 0; font-size: 13px; }
:root .segmented.visit-seg label span { margin: 0; padding: 8px 4px; border-radius: 10px; color: var(--label); white-space: nowrap; }
:root[data-theme="dark"] .segmented label span, :root[data-theme="dark"] .segmented a { color: color-mix(in srgb, var(--label) 82%, transparent); }
:root[data-theme="dark"] :is(.segmented .on, .segmented input:checked + span) { color: var(--o3, var(--tint)); background: color-mix(in srgb, var(--label) 12%, transparent); }
.visit-bar .visit-brand { padding-inline: 4px; }
.visit-bar .visit-brand b { overflow: hidden; text-overflow: ellipsis; min-width: 0; }
.visit-bar .visit-brand b { unicode-bidi: plaintext; text-align: start; }

/* ---- licensed photos: credits + photo tiles (appended by the media/attribution task) ---- */
.vv-credit { position: absolute; inset-inline: 0; bottom: 0; z-index: 4; margin: 0; padding: 0 14px calc(8px + env(safe-area-inset-bottom)); text-align: center; font-size: 11px; line-height: 1.4; pointer-events: none; }
.vv-credit a { pointer-events: auto; color: rgba(255,255,255,.72); text-decoration: none; text-shadow: 0 1px 4px rgba(0,0,0,.6); }
.vv-credit a[href]:hover { color: #fff; text-decoration: underline; }
.vview:has(.vv-credit:not([hidden])) .vv-cap { padding-bottom: calc(30px + env(safe-area-inset-bottom)); }
.vhero-credits { position: absolute; inset-inline-end: 10px; bottom: 8px; z-index: 2; display: flex; flex-direction: column; align-items: flex-end; gap: 2px; max-width: 70%; }
.vhero-credit { font-size: 10px; line-height: 1.3; opacity: .7; direction: ltr; text-align: end; }
.vhero-credit, .vhero-credit a { color: #fff; text-decoration: none; text-shadow: 0 1px 3px rgba(0,0,0,.7); }
.vhero-credit a:hover { text-decoration: underline; }
.visit-hotel .tile.tile-photo { position: relative; overflow: hidden; width: 52px; height: 52px; border-radius: 14px; padding: 0; }
.visit-hotel .tile.tile-photo > img { position: absolute; inset: 0; width: 100%; height: 100%; object-fit: cover; }
.visit-hotel .tile.tile-photo::before { display: none; }

/* compact typography (v3) for the guest portal */
.visit-timeline .vt-body b { font-size: 14px; }
.visit-timeline .vt-body small, .visit-timeline .vt-time small { font-size: 11.5px; }
.visit-timeline .vt-time b { font-size: 14px; }
:root .segmented.visit-seg label { font-size: 12px; }
.visit-hero h2 { font-size: 22px; }
.visit-hero.vhero h2 { font-size: clamp(22px, 6.5vw, 32px); }
.visit-hero p, .visit-hero .vh-sub { font-size: 13px; }
