/* The accepted Blender composition, with the site's existing colour tokens. */
.desk-body .desk-header { padding: 6px clamp(12px, 2vw, 28px) 0; }
.desk-body .desk-header .header-inner { display: flex; flex-wrap: wrap; width: 100%; min-height: 44px; align-items: center; gap: 0 12px; padding: 0; border: 0; }
.desk-body .desk-header .site-mark { width: auto; min-width: 0; min-height: 44px; gap: 8px; padding: 0; border: 0; }
.desk-body .desk-header .brand-symbol { width: 24px; height: 24px; }
.desk-body .desk-header .brand-copy strong { color: var(--ink-soft); font-size: 10px; line-height: 1.4; }
.desk-body .desk-header .brand-copy small { display: none; }
.desk-body .fm-site-actions { display: flex; flex-wrap: wrap; align-items: center; justify-content: flex-end; flex: 0 1 auto; min-width: 0; gap: 0 clamp(12px, 2vw, 24px); margin-left: auto; font-family: var(--sans); font-size: .75rem; color: var(--ink-soft); }
.desk-body .fm-enter-gallery { display: inline-flex; align-items: center; min-height: 44px; white-space: nowrap; }
.desk-body .fm-enter-gallery:hover { color: var(--ink); }
.desk-body .fm-menu { position: relative; }
.desk-body .fm-menu > summary { display: flex; align-items: center; justify-content: flex-end; gap: 6px; min-width: 44px; min-height: 44px; cursor: pointer; list-style: none; }
.desk-body .fm-menu > summary::-webkit-details-marker { display: none; }
.desk-body .fm-menu > summary::after { content: '+'; font-family: var(--mono); font-size: 1rem; line-height: 1; }
.desk-body .fm-menu[open] > summary::after { content: '−'; }
.desk-body .fm-menu > summary:focus-visible { outline: 2px solid var(--accent); outline-offset: 2px; }
.desk-body .fm-menu > nav { position: absolute; z-index: 30; top: calc(100% + 4px); right: 0; display: grid; grid-template-columns: repeat(2,minmax(0,1fr)); align-items: stretch; width: min(260px,calc(100vw - 24px)); min-width: 0; gap: 0 16px; margin: 0; padding: 12px 18px; border: 1px solid var(--line); overflow: visible; scroll-snap-type: none; background: var(--paper); box-shadow: 0 8px 24px #0002; }
.desk-body .fm-menu > nav > a { display: inline-flex; align-items: center; min-width: 0; min-height: 44px; padding: 10px 0; font-size: .6875rem; }
.desk-body .fm-menu > nav > a::after { content: none; }
.desk-body .fm-menu .nav-utilities { position: static; display: flex; grid-column: 1 / -1; width: auto; align-items: center; justify-content: flex-start; gap: 24px; margin: 4px 0 0; padding: 4px 0 0; border: 0; border-top: 1px solid var(--line); transform: none; }
.desk-body .fm-menu .nav-utilities > :is(a,button) { justify-content: flex-start; min-width: 44px; min-height: 44px; padding: 10px 0; font-size: .6875rem; }
.desk-body .fm-menu .theme-toggle b { display: inline; }
.desk-page { width: min(calc(100% - clamp(16px,2vw,32px)), max(280px,calc((100svh - 114px) * 1.5238095))); max-width: 1600px; padding: 0 0 18px; }
#fm-desk-interaction { --desk-bg: var(--paper); --desk-fg: var(--ink); --desk-muted: var(--ink-soft); --desk-line: var(--line); --desk-accent: var(--accent); --motion-duration: 850ms; color: var(--desk-fg); font-family: var(--serif); font-size: 1rem; overflow-wrap: anywhere; }
#fm-desk-interaction [hidden] { display: none !important; }
#fm-desk-interaction button, #fm-desk-interaction a { color: inherit; font: inherit; }
#fm-desk-interaction button { background: transparent; border: 0; }
#fm-desk-interaction :is(button,a,summary):focus-visible { outline: 2px solid var(--desk-accent); outline-offset: 4px; }
#fm-desk-interaction .fm-list-toggle { min-height: 44px; padding: 8px 0; font-family: var(--sans); font-size: .75rem; text-align: left; color: var(--desk-muted); }
#fm-desk-interaction .fm-stage { position: relative; aspect-ratio: 3200/2100; isolation: isolate; overflow: hidden; background: #73756b; }
#fm-desk-interaction .fm-scene { position: absolute; inset: 0; width: 100%; height: 100%; object-fit: cover; display: block; user-select: none; pointer-events: none; }
#fm-desk-interaction .fm-overview { transform-origin: 53% 67%; transition: transform var(--motion-duration) cubic-bezier(.22,.65,.25,1), opacity calc(var(--motion-duration) * .7) ease; }
#fm-desk-interaction .fm-close { opacity: 0; transform: scale(.96); transition: opacity calc(var(--motion-duration) * .65) ease calc(var(--motion-duration) * .26), transform var(--motion-duration) cubic-bezier(.22,.65,.25,1); }
#fm-desk-interaction[data-view="tickets"] .fm-overview { transform: scale(1.9); opacity: 0; }
#fm-desk-interaction[data-view="tickets"] .fm-close { opacity: 1; transform: scale(1); }
#fm-desk-interaction .fm-stage-trigger { position: absolute; inset: 0; width: 100%; height: 100%; cursor: zoom-in; }
#fm-desk-interaction .fm-stage-trigger:focus-visible { outline-offset: -6px; outline-color: #fff1dc; }
#fm-desk-interaction .fm-approach { min-height: 44px; padding: 8px 0; text-align: left; font-family: var(--sans); font-size: .75rem; color: var(--desk-muted); }
#fm-desk-interaction .fm-approach-label { text-decoration: none; }
#fm-desk-interaction .fm-stage-tools { display: flex; flex-wrap: wrap; align-items: center; gap: 8px 16px; }
#fm-desk-interaction .fm-back { padding: 8px 0; min-height: 44px; font-family: var(--sans); font-size: .75rem; color: var(--desk-muted); }
#fm-desk-interaction .fm-stage-caption { font-size: .8125rem; color: var(--desk-muted); }
#fm-desk-interaction .fm-hotspots { position: absolute; inset: 0; display: block; width: auto; margin: 0; padding: 0; border: 0; overflow: visible; pointer-events: none; }
#fm-desk-interaction .fm-ticket-link { position: absolute; display: block; min-width: 44px; min-height: 44px; padding: 0; border-radius: 2px; pointer-events: none; text-decoration: none; }
#fm-desk-interaction .fm-ticket-link::after, #fm-desk-interaction .fm-journey::after { content: none; }
#fm-desk-interaction .fm-ticket-link svg { position: absolute; inset: 0; width: 100%; height: 100%; overflow: visible; pointer-events: none; }
#fm-desk-interaction .fm-ticket-link polygon { fill: transparent; stroke: transparent; stroke-width: 1; vector-effect: non-scaling-stroke; pointer-events: fill; }
#fm-desk-interaction .fm-ticket-link:hover polygon, #fm-desk-interaction .fm-ticket-link:focus-visible polygon { stroke: #fcf2df; fill: #fff9eb12; filter: drop-shadow(0 0 2px #201b17); }
#fm-desk-interaction .fm-ticket-link span { position: absolute; left: 50%; bottom: calc(100% + 10px); transform: translateX(-50%); white-space: nowrap; background: #211d18f2; color: #f5e9d8; font-family: var(--mono); font-size: .8125rem; padding: 8px 11px; opacity: 0; pointer-events: none; }
#fm-desk-interaction .fm-ticket-link:hover span, #fm-desk-interaction .fm-ticket-link:focus-visible span { opacity: 1; }
#fm-desk-interaction .fm-bottom { display: flex; flex-wrap: wrap; justify-content: space-between; align-items: center; gap: 0 16px; padding: 0; font-size: .75rem; color: var(--desk-muted); }
#fm-desk-interaction .fm-bottom-main { min-width: 0; }
#fm-desk-interaction .fm-browse-actions { display: flex; align-items: center; gap: 16px; }
#fm-desk-interaction .fm-escape { font-family: var(--sans); }
#fm-desk-interaction :is(.fm-list-toggle,.fm-approach,.fm-back):hover { color: var(--desk-fg); }
#fm-desk-interaction .fm-journeys > summary { padding: 15px 0; min-height: 44px; font-size: .8125rem; color: var(--desk-fg); cursor: pointer; }
#fm-desk-interaction[data-view] .fm-journeys > summary { display: none; }
#fm-desk-interaction .fm-journey-grid { display: grid; width: 100%; grid-template-columns: repeat(4,minmax(0,1fr)); align-items: start; gap: 0 24px; margin: 0; padding: 0 0 18px; border: 0; overflow: visible; scroll-snap-type: none; font-family: var(--serif); font-size: 1rem; letter-spacing: normal; }
#fm-desk-interaction .fm-trip { min-width: 0; padding: 18px 0; border-top: 1px solid var(--desk-line); }
#fm-desk-interaction .fm-journey { display: block; padding: 0; text-decoration: none; min-width: 0; white-space: normal; }
#fm-desk-interaction .fm-journey:hover .fm-route { color: var(--desk-accent); }
#fm-desk-interaction .fm-ticket-print { width: 100%; height: 110px; object-fit: contain; display: block; margin-bottom: 12px; }
#fm-desk-interaction .fm-route { display: block; font-size: 1rem; line-height: 1.5; }
#fm-desk-interaction .fm-route small, #fm-desk-interaction .fm-date { display: block; font-family: var(--mono); font-size: .75rem; color: var(--desk-muted); margin-top: 4px; line-height: 1.6; }
#fm-desk-interaction .fm-open { display: block; font-size: .8125rem; margin-top: 12px; line-height: 1.6; }
#fm-desk-interaction .fm-ticket-read { font-size: .8125rem; margin-top: 8px; }
#fm-desk-interaction .fm-ticket-read > summary { padding: 12px 0; min-height: 44px; color: var(--desk-fg); cursor: pointer; }
#fm-desk-interaction .fm-ticket-reading { user-select: text; line-height: 1.75; }
#fm-desk-interaction .fm-ticket-fields { margin: 0; }
#fm-desk-interaction .fm-ticket-fields dt { color: var(--desk-muted); }
#fm-desk-interaction .fm-ticket-fields dd { margin: 0 0 .8em; font-variant-numeric: tabular-nums; }
#fm-desk-interaction .fm-ticket-reading p { margin: .6em 0; }
#fm-desk-interaction .fm-ticket-reading a { display: inline-flex; align-items: center; min-height: 44px; white-space: normal; text-decoration: underline; text-underline-offset: 3px; }
#fm-desk-interaction .fm-credits { color: var(--desk-muted); font-size: .8125rem; }
#fm-desk-interaction .fm-credits summary { display: list-item; padding: 14px 0; min-height: 44px; font-family: var(--sans); font-size: .75rem; cursor: pointer; }
#fm-desk-interaction .fm-credits p { max-width: 78ch; margin: 0 0 14px; line-height: 1.8; overflow-wrap: anywhere; }
#fm-desk-interaction .fm-credits a { display: inline-flex; align-items: center; min-height: 44px; text-decoration: underline; text-underline-offset: 3px; }
#fm-desk-interaction .fm-noscript { font-size: .8125rem; line-height: 1.7; }
#fm-desk-interaction[data-view="tickets"][data-direct-list="true"] .fm-journeys > summary { display: none; }
#fm-desk-interaction[data-view="tickets"][data-direct-list="true"] .fm-journey-grid { padding-top: 12px; }
#fm-desk-interaction[data-image-error="true"] .fm-journeys > summary { color: var(--desk-accent); }
@media (max-width: 600px) {
  .desk-body .desk-header .brand-copy { display: none; }
  #fm-desk-interaction .fm-stage-caption, #fm-desk-interaction .fm-escape { display: none; }
  #fm-desk-interaction .fm-journey-grid { grid-template-columns: repeat(auto-fit,minmax(min(100%,9rem),1fr)); gap: 0 18px; }
  #fm-desk-interaction .fm-ticket-print { height: 85px; }
}
@media (prefers-reduced-motion: reduce) {
  #fm-desk-interaction .fm-scene { transition: none !important; }
}
