/* Copyright © 2026 Ian Manseau. Remanet runtime. See LICENSE-REMANET-RUNTIME.txt. */

/* Typography */
@font-face{font-family:Inter;src:url('./Inter.ttf') format('truetype');font-style:normal;font-weight:100 900;font-display:swap}
@font-face{font-family:'DM Mono';src:url('./DMMono.ttf') format('truetype');font-style:normal;font-weight:400;font-display:swap}

/* Base Tour Container & Color Tokens */
.tour{
  --tp:var(--tour-background,#f5f7fb);
  --ti:var(--tour-text,#18273d);
  --ta:var(--tour-accent,#174cff);
  --ts:var(--tour-surface,#ffffff);
  --tm:color-mix(in srgb,var(--ti) 78%,var(--tp));
  --tl:color-mix(in srgb,var(--ti) 32%,var(--tp));
  --th:color-mix(in srgb,var(--ta) 14%,var(--ts));
  position:relative;
  width:100%;
  height:100dvh;
  min-height:0;
  overflow:hidden;
  font:16px/1.5 Inter,Arial,sans-serif;
  color:var(--ti);
  background:#dce6eb;
  color-scheme:normal;
  box-sizing:border-box;
}
.tour *{box-sizing:border-box}

/* Interactive Controls & Focus Rings */
.tour button,.tour select{
  font:inherit;
  cursor:pointer;
  border-radius:7px;
  min-height:38px;
  padding:9px 14px;
  font-size:12px;
  font-weight:500;
  line-height:1.35;
  border:1px solid #ffffff90;
  background:#f3f8fc5c;
  color:var(--ti);
  box-shadow:inset 0 1px #ffffff75;
  transform:none;
  transition:background .2s,border-color .2s,color .15s;
}
.tour button:hover{background:#ffffffa1;border-color:#ffffffdb}
.tour button:disabled{opacity:.4;cursor:not-allowed}
.tour button:focus-visible,.tour canvas:focus-visible{outline:2px solid #315bea;outline-offset:3px}

/* Layout Hierarchy */
.tour .t-layout{
  position:absolute;
  inset:0;
  min-height:0;
  height:100%;
  overflow:hidden;
}
.tour .t-stage{
  position:relative;
  width:100%;
  height:100%;
  min-height:0;
  overflow:hidden;
  background:#101e35;
}
.tour canvas{
  position:absolute;
  inset:0;
  width:100%;
  height:100%;
  touch-action:none;
  cursor:grab;
}
.tour canvas:active{cursor:grabbing}

/* Floating Frosted Header (Split Bars) */
.tour .t-head{
  position:absolute;
  z-index:9;
  top:16px;
  left:20px;
  right:20px;
  padding:0;
  min-height:0;
  display:flex;
  align-items:flex-start;
  justify-content:space-between;
  gap:16px;
  border:none;
  background:transparent;
  box-shadow:none;
  pointer-events:none;
}
.tour .t-head-bar{
  pointer-events:auto;
  display:flex;
  align-items:center;
  gap:14px;
  padding:10px 16px;
  min-height:54px;
  max-height:64px;
  border:1px solid #ffffff9e;
  border-radius:12px;
  background:rgba(239,246,251,.62);
  backdrop-filter:blur(22px) saturate(120%);
  -webkit-backdrop-filter:blur(22px) saturate(120%);
  box-shadow:inset 0 1px #ffffffb3,0 8px 28px #152e4012;
  overflow:hidden;
}
.tour .t-head-bar:empty{
  display:none;
}
.tour .t-head-left{
  flex:0 1 auto;
  max-width:min(calc(65% - 8px), 680px);
}
.tour .t-head-right{
  flex:0 1 auto;
  max-width:min(calc(35% - 8px), 380px);
  margin-left:auto;
  justify-content:flex-end;
}
.tour .t-title{
  font:500 25px/1.15 Georgia,serif;
  letter-spacing:-.8px;
  min-width:0;
  flex:1;
  overflow:hidden;
  text-overflow:ellipsis;
  display:-webkit-box;
  -webkit-line-clamp:2;
  -webkit-box-orient:vertical;
}
.tour .t-title.t-title-lg{
  font-size:21px;
  letter-spacing:-.6px;
}
.tour .t-title.t-title-md{
  font-size:18px;
  letter-spacing:-.4px;
}
.tour .t-title.t-title-sm{
  font-size:15px;
  letter-spacing:-.3px;
}
.tour .t-title.t-title-xs{
  font-size:13px;
  letter-spacing:-.2px;
}
.tour .t-subtitle{
  font:10px/1.6 'DM Mono',monospace;
  color:#3d5365;
  overflow-wrap:anywhere;
  text-align:right;
}
.tour .t-exit-btn{
  white-space:nowrap;
  flex:none;
  font-size:11px;
  padding:7px 12px;
  min-height:36px;
}
.tour .t-nav-toggle{
  font-size:17px;
  min-width:40px;
  padding:5px 10px;
  flex:none;
}

/* Floating Slide-Out Navigation Drawer */
.tour .t-list{
  position:absolute;
  z-index:7;
  inset:82px auto 52px 20px;
  width:min(310px,calc(100vw - 40px));
  height:auto;
  max-height:none;
  border:1px solid #ffffff99;
  border-radius:12px;
  padding:0 15px 20px;
  background:#eff6fba6;
  backdrop-filter:blur(24px) saturate(125%);
  -webkit-backdrop-filter:blur(24px) saturate(125%);
  box-shadow:0 15px 45px #172d4326;
  overflow-y:auto;
  overflow-x:hidden;
  scrollbar-gutter:stable;
  scrollbar-width:thin;
  transform:translateX(0);
  visibility:visible;
  transition:transform .2s ease,visibility .2s;
}
.tour.nav-collapsed .t-list{
  transform:translateX(calc(-100% - 24px));
  visibility:hidden;
  pointer-events:none;
}
.tour button.t-nav-backdrop{
  position:absolute;
  inset:0;
  z-index:6;
  border:0;
  border-radius:0;
  padding:0;
  margin:0;
  background:#12293c18;
  width:100%;
  height:100%;
  cursor:pointer;
  box-shadow:none;
}
.tour button.t-nav-backdrop:hover{background:#12293c18;border:0}

/* Navigation Drawer Content */
.tour .t-tabs{
  position:sticky;
  top:0;
  z-index:2;
  background:#eaf2f5a3;
  backdrop-filter:blur(22px);
  -webkit-backdrop-filter:blur(22px);
  display:grid;
  grid-template-columns:repeat(3,minmax(0,1fr));
  gap:0;
  padding:16px 0 12px;
  border-bottom:1px solid #8fa6b535;
}
.tour .t-tabs button{
  background:transparent;
  border:0;
  border-radius:0;
  box-shadow:none;
  font-size:11px;
  padding:9px 3px;
  min-width:0;
  color:var(--ti);
}
.tour .t-tabs button[aria-pressed=true]{
  background:#ffffff20;
  color:#264c79;
  box-shadow:inset 0 -2px #507cac88;
  font-weight:600;
}
.tour .t-list-heading{
  font:700 11px/1.4 'DM Mono',monospace;
  letter-spacing:.08em;
  text-transform:uppercase;
  color:var(--tm);
  margin:22px 10px 8px;
}
.tour .t-item{
  display:block;
  width:100%;
  text-align:left;
  padding:14px 10px;
  margin:5px 0;
  border:0;
  border-bottom:1px solid #8fa6b522;
  border-radius:4px;
  background:transparent;
  box-shadow:none;
  font-size:13px;
  font-weight:500;
  white-space:normal;
  overflow-wrap:anywhere;
}
.tour .t-item[aria-current=true]{
  background:#ffffff66;
  color:#244973;
  border-color:transparent;
}
.tour .t-item small{
  display:block;
  font-size:10px;
  line-height:1.6;
  color:var(--tm);
  margin-top:4px;
}

/* Floating Status Indicator */
.tour .t-status{
  position:absolute;
  top:94px;
  left:24px;
  font:9px 'DM Mono',monospace;
  letter-spacing:.04em;
  background:#edf5f48a;
  backdrop-filter:blur(18px);
  -webkit-backdrop-filter:blur(18px);
  padding:7px 10px;
  border:1px solid #ffffff6b;
  border-radius:6px;
  color:#263d5d;
  max-width:calc(100% - 48px);
  pointer-events:none;
}

/* Floating Controls (Zoom & Fullscreen) */
.tour .t-controls{
  position:absolute;
  z-index:3;
  right:24px;
  bottom:25px;
  display:flex;
  gap:0;
  border:1px solid #ffffff99;
  border-radius:12px;
  padding:5px;
  background:#edf4f88c;
  backdrop-filter:blur(20px);
  -webkit-backdrop-filter:blur(20px);
  box-shadow:0 5px 24px #16304820;
}
.tour .t-controls button{
  min-width:40px;
  background:transparent;
  border:0;
  border-radius:7px;
  box-shadow:none;
  font-size:19px;
  padding:5px;
}
.tour .t-controls button:hover{background:#ffffff60}

/* Floating Artwork Detail Card */
.tour .t-detail{
  position:absolute;
  z-index:3;
  left:24px;
  bottom:52px;
  width:400px;
  max-width:calc(100% - 48px);
  max-height:calc(100% - 175px);
  padding:27px;
  border:1px solid #ffffff9e;
  border-radius:12px;
  background:#f0f6fab8;
  backdrop-filter:blur(24px) saturate(120%);
  -webkit-backdrop-filter:blur(24px) saturate(120%);
  box-shadow:0 16px 50px #17314526;
  color:#18273d;
  overflow:auto;
}
.tour .t-detail .t-close{
  float:right;
  margin:-5px -8px 5px 10px;
  padding:2px 8px;
  min-height:30px;
  font-size:18px;
}
.tour .t-detail h2{
  font:500 34px/1.1 Georgia,serif;
  letter-spacing:-1px;
  margin:0 0 12px;
  padding-right:15px;
}
.tour .t-artwork-year{
  font-size:18px;
  font-weight:400;
  font-style:italic;
  color:#5b7181;
}
.tour .t-detail p{font-size:12px;line-height:1.8;margin:9px 0;white-space:pre-wrap}
.tour .t-detail .t-artwork-artist{font-size:14px;margin:13px 0;font-weight:500}
.tour .t-detail .t-artwork-medium,
.tour .t-detail .t-artwork-dimensions{
  font:10px/1.8 'DM Mono',monospace;
  color:#496174;
  margin:4px 0;
}
.tour .t-detail .t-artwork-statement{margin:16px 0 9px;line-height:1.65;font-size:12.5px;color:#223344}
.tour .t-detail .t-artwork-statement p{margin:8px 0;white-space:normal;line-height:1.7}
.tour .t-detail .t-artwork-statement a{color:#244265;text-decoration:underline}
.tour .t-artwork-commercial{display:flex;flex-wrap:wrap;align-items:center;gap:8px;margin:10px 0 12px}
.tour .t-artwork-edition{font:600 11px/1.3 'DM Mono',monospace;text-transform:uppercase;letter-spacing:0.04em;color:#334d66;background:#f1f5f9;border:1px solid #cbd5e1;padding:3px 7px;border-radius:4px}
.tour .t-artwork-price{font:700 12.5px/1.3 Inter,sans-serif;color:#15803d;background:#f0fdf4;border:1px solid #bbf7d0;padding:3px 8px;border-radius:4px}
.tour .t-inquiry-btn{display:inline-flex;align-items:center;justify-content:center;gap:6px;margin:8px 0 14px;padding:9px 14px;background:#244265;color:#ffffff;border:none;border-radius:6px;font:600 12px/1.2 Inter,sans-serif;cursor:pointer;transition:background .15s ease,transform .1s ease;box-shadow:0 2px 6px rgba(36,66,101,.18);width:100%;box-sizing:border-box}
.tour .t-inquiry-btn:hover{background:#1a314d}
.tour .t-inquiry-btn:active{transform:scale(.99)}
.tour .t-model-sculpture-badge{display:inline-flex;align-items:center;justify-content:center;gap:6px;margin:8px 0;padding:6px 12px;background:#f8fafc;color:#334155;border:1px solid #cbd5e1;border-radius:6px;font:550 11.5px/1.3 Inter,sans-serif;width:100%;box-sizing:border-box}
.tour.t-kiosk-mode .t-head-bar,.tour.t-kiosk-mode .t-exit-btn{display:none !important}
.tour.hide-guide-menu .t-head-left,
.tour.hide-guide-menu .t-nav-toggle,
.tour.hide-guide-menu .t-list,
.tour.hide-guide-menu .t-nav-backdrop {
  display: none !important;
}
.tour .t-detail img{
  max-width:100%;
  max-height:300px;
  object-fit:contain;
  display:block;
  border-radius:5px;
  margin:22px auto 0;
}
.tour .t-detail small{color:var(--tm);font-size:12px}

/* Floating Guided Tour Bar */
.tour .t-guide{
  position:absolute;
  z-index:5;
  bottom:22px;
  left:50%;
  transform:translateX(-50%);
  width:min(560px,calc(100% - 200px));
  padding:9px;
  gap:18px;
  display:flex;
  align-items:center;
  justify-content:center;
  border:1px solid #ffffff9c;
  border-radius:12px;
  background:#edf4f8b0;
  backdrop-filter:blur(24px);
  -webkit-backdrop-filter:blur(24px);
  box-shadow:0 10px 30px #1830451f;
}
.tour .t-step{text-align:center;min-width:0;flex:1;font-size:12px}
.tour .t-step small{display:block;color:var(--tm);font-size:9px;margin-top:3px;font-family:'DM Mono',monospace}
.tour .t-next{
  background:#294b70;
  color:#fff;
  border:1px solid #294b70;
  padding:9px 18px;
}
.tour .t-next:hover{background:#203c5a;border-color:#203c5a}
.tour .t-guide-play{
  min-width:32px;
  height:32px;
  padding:0;
  display:inline-flex;
  align-items:center;
  justify-content:center;
  background:rgba(41,75,112,0.12);
  border:1px solid rgba(41,75,112,0.22);
  border-radius:8px;
  font-size:11px;
  color:#294b70;
  cursor:pointer;
  transition:background 0.15s ease,color 0.15s ease,transform 0.15s ease;
  flex-shrink:0;
}
.tour .t-guide-play:hover{
  background:#294b70;
  color:#fff;
  transform:scale(1.05);
}
.tour .t-guide-progress-track{
  position:absolute;
  bottom:0;
  left:0;
  right:0;
  height:3px;
  background:rgba(41,75,112,0.1);
  overflow:hidden;
  border-bottom-left-radius:12px;
  border-bottom-right-radius:12px;
}
.tour .t-guide-progress-fill{
  width:100%;
  height:100%;
  background:#294b70;
  transform-origin:left center;
  transform:scaleX(0);
  transition:none;
}
/* Small resume button placed off to the side */
.tour .t-resume-guide{
  position:absolute;
  z-index:6;
  right:24px;
  bottom:86px;
  display:inline-flex;
  align-items:center;
  gap:8px;
  padding:9px 16px;
  border-radius:999px;
  border:1px solid rgba(255,255,255,0.85);
  background:rgba(29,53,79,0.92);
  color:#ffffff;
  font-family:'DM Mono',monospace;
  font-size:11px;
  letter-spacing:0.4px;
  text-transform:uppercase;
  font-weight:600;
  box-shadow:0 8px 24px rgba(17,36,52,0.32),inset 0 1px 0 rgba(255,255,255,0.3);
  backdrop-filter:blur(20px);
  -webkit-backdrop-filter:blur(20px);
  cursor:pointer;
  transition:transform 0.2s cubic-bezier(0.16,1,0.3,1),background 0.2s ease,box-shadow 0.2s ease;
  animation:tResumePulse 2.8s infinite ease-in-out;
}
.tour .t-resume-guide:hover{
  background:#15283c;
  transform:translateY(-2px) scale(1.03);
  box-shadow:0 12px 28px rgba(17,36,52,0.45);
}
.tour .t-resume-guide[hidden]{
  display:none!important;
}
@keyframes tResumePulse{
  0%,100%{box-shadow:0 8px 24px rgba(17,36,52,0.32);}
  50%{box-shadow:0 8px 32px rgba(41,75,112,0.65),0 0 0 3px rgba(255,255,255,0.2);}
}
/* Spot pins on panorama stage */
.guide-spot-pin{
  position:absolute;
  transform:translate(-50%,-50%);
  width:32px;
  height:32px;
  border-radius:50%;
  background:rgba(41,75,112,0.92);
  color:#fff;
  border:2px solid #ffffff;
  box-shadow:0 4px 12px rgba(0,0,0,0.25),0 0 0 1px rgba(0,0,0,0.1);
  display:inline-flex;
  align-items:center;
  justify-content:center;
  font-family:'DM Mono',monospace;
  font-size:13px;
  font-weight:700;
  cursor:pointer;
  z-index:4;
  transition:transform 0.15s ease,background 0.15s ease,box-shadow 0.15s ease;
}
.guide-spot-pin:hover{
  transform:translate(-50%,-50%) scale(1.18);
  background:#1b3548;
  box-shadow:0 6px 16px rgba(0,0,0,0.35);
}
.guide-spot-pin.is-selected{
  background:#d97706;
  border-color:#fef3c7;
  transform:translate(-50%,-50%) scale(1.22);
  box-shadow:0 0 0 4px rgba(217,119,6,0.35),0 6px 18px rgba(0,0,0,0.4);
}
.guide-spot-pin.is-hidden{
  opacity:0.5;
}

/* Intro / Welcome Splash */
.tour:has(.t-intro) .t-guide,
.tour:has(.t-intro) .t-detail,
.tour:has(.t-intro) .t-controls,
.tour:has(.t-intro) .t-resume-guide{
  display:none!important;
}
.tour .t-intro{
  position:absolute;
  inset:0;
  z-index:8;
  display:flex;
  flex-direction:column;
  align-items:flex-start;
  justify-content:flex-end;
  justify-content:safe flex-end;
  padding:150px clamp(25px,7vw,110px) 100px;
  background:linear-gradient(90deg,rgba(224,235,242,.92),rgba(227,238,244,.55) 45%,rgba(233,240,247,.02) 78%),linear-gradient(0deg,#dce8f061,transparent 50%);
  color:#1b3548;
  overflow-y:auto;
  -webkit-overflow-scrolling:touch;
}
.tour .t-intro:before{
  content:'THE EXHIBITION / 360°';
  font:10px 'DM Mono',monospace;
  letter-spacing:.18em;
  color:#3d596e;
  margin-bottom:32px;
}
.tour .t-intro h1{
  font:500 clamp(48px,8vw,116px)/.95 Georgia,serif;
  letter-spacing:-.065em;
  max-width:900px;
  margin:20px 0 28px;
  overflow-wrap:anywhere;
  text-wrap:balance;
}
.tour .t-intro p{font-size:14px;line-height:1.85;color:#314f63;max-width:500px;margin:0 0 20px;white-space:pre-wrap}
.tour .t-intro small{font:10px/1.7 'DM Mono',monospace;max-width:550px;color:#345167}
.tour .t-intro button{
  background:#27486a;
  color:#fff;
  border:1px solid #ffffff4a;
  padding:15px 24px;
  min-height:48px;
  border-radius:8px;
  box-shadow:0 8px 24px #203e5b28;
  margin-top:18px;
  cursor:pointer;
  flex-shrink:0;
  touch-action:manipulation;
  -webkit-tap-highlight-color:transparent;
  position:relative;
  z-index:2;
}
.tour .t-intro button:hover{background:#1f3b58;filter:none}

/* Hotspots & Artwork Regions */
.artwork-regions{
  position:absolute;
  inset:0;
  width:100%;
  height:100%;
  pointer-events:none;
  z-index:2;
}
.artwork-polygon{
  fill:transparent;
  stroke:transparent;
  stroke-width:1;
  vector-effect:non-scaling-stroke;
  pointer-events:visiblePainted;
  cursor:pointer;
  outline:none!important;
  filter:none;
  box-shadow:none;
}
.artwork-polygon:focus:not(:focus-visible){stroke:transparent;fill:transparent}
.tour .artwork-polygon:hover{
  fill:transparent;
  stroke:var(--ta,#174cff);
  stroke-width:1;
}
.tour .artwork-polygon:focus-visible{
  fill:transparent;
  stroke:var(--ta,#174cff);
  stroke-width:1.5;
  outline:none!important;
}

/* Artwork Interactive Affordance: Entry Pulse */
@keyframes artworkSheenPulse {
  0% {
    stroke: transparent;
    fill: transparent;
  }
  30% {
    stroke: var(--ta, #174cff);
    stroke-width: 2;
    fill: color-mix(in srgb, var(--ta, #174cff) 14%, transparent);
  }
  70% {
    stroke: var(--ta, #174cff);
    stroke-width: 2;
    fill: color-mix(in srgb, var(--ta, #174cff) 14%, transparent);
  }
  100% {
    stroke: transparent;
    fill: transparent;
  }
}

.artwork-polygon.artwork-pulse {
  animation: artworkSheenPulse 1.5s cubic-bezier(0.16, 1, 0.3, 1) forwards;
}

/* Persistent Artwork Highlights */
.show-artwork-highlights .artwork-polygon {
  stroke: var(--ta, #174cff) !important;
  stroke-width: 1.5 !important;
  stroke-dasharray: 4 3;
  fill: color-mix(in srgb, var(--ta, #174cff) 8%, transparent) !important;
}

.tour .t-controls .t-highlight-toggle {
  font-size: 16px;
  line-height: 1;
  transition: all 0.2s ease;
}

.tour .t-controls .t-highlight-toggle.active {
  background: var(--ta, #174cff) !important;
  color: #ffffff !important;
  border-radius: 7px;
}

.tour .t-controls .t-info-toggle {
  font-family: Georgia, 'Times New Roman', serif;
  font-style: italic;
  font-weight: 700;
  font-size: 17px;
  line-height: 1;
  transition: all 0.2s ease;
}

.tour .t-controls .t-info-toggle.is-active {
  background: var(--ta, #174cff) !important;
  color: #ffffff !important;
  border-radius: 7px;
}

@media (prefers-reduced-motion: reduce) {
  .artwork-polygon.artwork-pulse {
    animation: none !important;
  }
}

/* Pins */
.t-pins{position:absolute;inset:0;pointer-events:none}
.t-pin{
  position:absolute;
  transform:translate(-50%,-50%);
  pointer-events:auto;
  width:36px;
  height:36px;
  border:3px solid var(--ta,#174cff);
  border-radius:50%;
  padding:0;
  background:#f4f8ff;
  box-shadow:0 2px 10px #0003;
}

/* Exhibition Credits Strip */
.tour .t-credits{
  position:absolute;
  z-index:3;
  bottom:0;
  left:0;
  right:0;
  font:9px/1.6 'DM Mono',monospace;
  color:var(--tm);
  background:#eff5fa9e;
  padding:5px 20px;
  max-height:40px;
  backdrop-filter:blur(15px);
  -webkit-backdrop-filter:blur(15px);
  white-space:pre-wrap;
  overflow:auto;
}
.tour:has(.t-credits) .t-controls,
.tour:has(.t-credits) .t-guide,
.tour:has(.t-credits) .t-badge{bottom:55px}
.tour:has(.t-credits) .t-detail,
.tour:has(.t-credits) .t-list{bottom:92px}

/* Error Notice */
.tour .t-error{padding:35px;max-width:700px;margin:auto}
.tour [hidden]{display:none!important}

/* Responsive Breakpoints */
@media(max-width:700px){
  .tour .t-head{top:10px;left:10px;right:10px;gap:8px}
  .tour .t-head-bar{padding:6px 10px;gap:8px;min-height:44px;max-height:52px}
  .tour .t-head-left{max-width:calc(100% - 90px)}
  .tour .t-head:not(:has(.t-head-right:not([hidden]):not(.t-head-info-only))) .t-head-left{max-width:100%}
  .tour .t-title{font-size:18px;letter-spacing:-.5px}
  .tour .t-title.t-title-lg{font-size:16px;letter-spacing:-.4px}
  .tour .t-title.t-title-md{font-size:14px;letter-spacing:-.3px}
  .tour .t-title.t-title-sm{font-size:12.5px;letter-spacing:-.2px}
  .tour .t-title.t-title-xs{font-size:11px;letter-spacing:0}
  .tour .t-subtitle{display:none}
  .tour .t-head-info-only{display:none}
  .tour .t-head-right:not(:has(button)){display:none}
  .tour .t-exit-btn{font-size:10px;padding:5px 8px;min-height:30px}
  .tour .t-head>button:not(.t-nav-toggle){font-size:10px;padding:7px}
  .tour .t-list{top:64px;left:10px;bottom:44px;width:calc(100vw - 20px)}
  .tour .t-status{top:77px;left:14px}
  .tour .t-controls{right:14px;bottom:16px}
  .tour .t-detail{left:14px;bottom:78px;max-width:calc(100% - 28px);width:calc(100% - 28px);max-height:55%;padding:22px}
  .tour .t-detail:not([hidden])~.t-controls{bottom:16px}
  .tour .t-guide{left:14px;right:14px;transform:none;bottom:75px;width:auto;padding:8px;gap:10px}
  .tour .t-resume-guide{right:14px;bottom:140px;padding:8px 14px;font-size:10px}
  .tour:has(.t-credits) .t-detail{bottom:105px}
  .tour:has(.t-credits) .t-guide{bottom:95px}
  .tour:has(.t-credits) .t-list{bottom:80px}
  .tour .t-intro{
    padding:120px 25px 100px;
    padding:120px 25px max(60px, calc(env(safe-area-inset-bottom, 0px) + 30px));
    background:linear-gradient(90deg,#e7f0f3e8,#e7f0f369),linear-gradient(0deg,#e7f0f3a8,transparent);
    justify-content:flex-end;
    justify-content:safe flex-end;
  }
  .tour .t-intro button{
    flex-shrink:0;
    touch-action:manipulation;
    -webkit-tap-highlight-color:transparent;
  }
  .tour .t-intro h1{font-size:clamp(48px,12vw,80px)}
  .tour .t-intro:before{font-size:9px;margin-bottom:20px}
  .tour .t-intro p{font-size:13px}
  .tour .t-head:has(+ .t-layout .t-intro) .t-subtitle{display:none}
}

@media(prefers-reduced-motion:reduce){
  .tour *{transition:none!important;animation:none!important}
}

/* Blurb 3D Plaque on Wall */
.blurb-polygon {
  fill: rgba(255, 255, 255, 0.95);
  stroke: rgba(0, 0, 0, 0.15);
  stroke-width: 0.4;
  cursor: pointer;
  vector-effect: non-scaling-stroke;
  transition: stroke 0.2s ease, fill 0.2s ease, filter 0.2s ease;
}
.blurb-polygon:hover,
.blurb-polygon:focus-visible {
  fill: #ffffff;
  stroke: var(--ta, #174cff);
  stroke-width: 0.8;
  filter: drop-shadow(0 4px 10px rgba(0, 0, 0, 0.25));
}

/* Installation Video Screen Surface */
.video-screen-surface {
  position: absolute;
  left: 0;
  top: 0;
  background: #0f172a;
  border-radius: 1px;
  box-shadow: 0 8px 32px rgba(0, 0, 0, 0.45);
  overflow: hidden;
  pointer-events: none;
  user-select: none;
  z-index: 2;
  backface-visibility: visible !important;
  -webkit-backface-visibility: visible !important;
  transform-style: flat;
}
.video-screen-player {
  width: 100%;
  height: 100%;
  object-fit: cover;
  display: block;
  background: #0f172a;
  pointer-events: none;
}
.video-screen-surface.has-mask {
  background: transparent !important;
  box-shadow: none !important;
  border-radius: 0 !important;
}
.video-screen-surface.has-mask .video-screen-player {
  background: transparent !important;
}

/* Center Play/Pause button for Video Screen */
.video-screen-center-btn {
  position: absolute;
  top: 50%;
  left: 50%;
  width: 88px;
  height: 88px;
  margin: 0;
  padding: 0;
  border-radius: 50%;
  background: rgba(15, 23, 42, 0.72);
  backdrop-filter: blur(8px);
  -webkit-backdrop-filter: blur(8px);
  border: 2.5px solid rgba(255, 255, 255, 0.88);
  color: #ffffff;
  display: flex;
  align-items: center;
  justify-content: center;
  cursor: pointer;
  pointer-events: none;
  opacity: 0;
  transform: translate(-50%, -50%) scale(0.85);
  transition: opacity 0.28s cubic-bezier(0.16, 1, 0.3, 1), transform 0.28s cubic-bezier(0.16, 1, 0.3, 1), background 0.2s ease, border-color 0.2s ease;
  z-index: 10;
  box-shadow: 0 4px 24px rgba(0, 0, 0, 0.55), inset 0 1px 0 rgba(255, 255, 255, 0.3);
  outline: none;
  -webkit-tap-highlight-color: transparent;
}

.video-screen-center-btn svg {
  width: 40px;
  height: 40px;
  fill: currentColor;
  stroke: none;
  filter: drop-shadow(0 2px 4px rgba(0, 0, 0, 0.4));
  pointer-events: none;
}

.video-screen-center-btn.is-visible {
  opacity: 1;
  pointer-events: auto;
  transform: translate(-50%, -50%) scale(1);
}

.video-screen-center-btn:hover {
  background: rgba(15, 23, 42, 0.92);
  border-color: #ffffff;
  transform: translate(-50%, -50%) scale(1.08);
  box-shadow: 0 6px 28px rgba(0, 0, 0, 0.65), inset 0 1px 0 rgba(255, 255, 255, 0.5);
}

.video-screen-center-btn:active {
  transform: translate(-50%, -50%) scale(0.95);
}

.video-screen-center-btn:focus-visible {
  outline: 2px solid #38bdf8;
  outline-offset: 4px;
}

/* Error State */
.video-screen-error {
  position: absolute;
  inset: 0;
  background: rgba(15, 23, 42, 0.88);
  backdrop-filter: blur(4px);
  -webkit-backdrop-filter: blur(4px);
  color: #f8fafc;
  display: flex;
  flex-direction: column;
  align-items: center;
  justify-content: center;
  padding: 24px;
  text-align: center;
  z-index: 6;
  pointer-events: none;
}
.video-screen-error-icon {
  width: 48px;
  height: 48px;
  color: #f59e0b;
  margin-bottom: 12px;
}
.video-screen-error-title {
  font-size: 16px;
  font-weight: 600;
  margin-bottom: 6px;
}
.video-screen-error-msg {
  font-size: 13px;
  color: #94a3b8;
  max-width: 420px;
  line-height: 1.4;
  margin-bottom: 14px;
}
.video-screen-error-retry {
  background: #2563eb;
  color: #ffffff;
  border: none;
  border-radius: 6px;
  padding: 6px 16px;
  font-size: 13px;
  cursor: pointer;
  font-weight: 500;
  pointer-events: auto;
}
.video-screen-error-retry:hover {
  background: #1d4ed8;
}

.blurb-plaque-surface {
  position: absolute;
  left: 0;
  top: 0;
  background: #ffffff;
  color: #1e293b;
  border-radius: 2px;
  box-shadow: 0 4px 16px rgba(0, 0, 0, 0.18), 0 1px 3px rgba(0, 0, 0, 0.1);
  border: 1px solid rgba(0, 0, 0, 0.08);
  overflow: hidden;
  pointer-events: auto;
  cursor: pointer;
  user-select: none;
  z-index: 2;
  transition: box-shadow 0.2s ease, border-color 0.2s ease;
  backface-visibility: hidden;
  -webkit-backface-visibility: hidden;
}
.blurb-plaque-surface:hover,
.blurb-plaque-surface:focus-visible {
  box-shadow: 0 8px 28px rgba(0, 0, 0, 0.28), 0 2px 6px rgba(0, 0, 0, 0.15);
  border-color: var(--ta, #174cff);
  outline: none;
}
.blurb-plaque-inner {
  padding: 24px 28px;
  display: flex;
  flex-direction: column;
  height: 100%;
  box-sizing: border-box;
}
.blurb-plaque-title {
  font-family: 'Inter', sans-serif;
  font-size: 19px;
  font-weight: 700;
  margin: 0 0 14px 0;
  color: #0f172a;
  line-height: 1.25;
  border-bottom: 1.5px solid rgba(0, 0, 0, 0.08);
  padding-bottom: 10px;
}
.blurb-plaque-body {
  font-family: 'Inter', sans-serif;
  font-size: 11px;
  line-height: 1.55;
  color: #334155;
  flex: 1;
  overflow: hidden;
  position: relative;
  mask-image: linear-gradient(to bottom, black 70%, transparent 100%);
  -webkit-mask-image: linear-gradient(to bottom, black 70%, transparent 100%);
}
.blurb-plaque-body p {
  margin: 0 0 8px 0;
}
.blurb-plaque-body h1,
.blurb-plaque-body h2,
.blurb-plaque-body h3 {
  font-size: 13px;
  margin: 8px 0 4px 0;
  color: #0f172a;
}
.blurb-plaque-body ul,
.blurb-plaque-body ol {
  margin: 4px 0 8px 16px;
  padding: 0;
}
.blurb-plaque-hint {
  font-family: 'DM Mono', monospace;
  font-size: 9.5px;
  text-transform: uppercase;
  letter-spacing: 0.08em;
  color: var(--ta, #174cff);
  font-weight: 600;
  margin-top: 10px;
  text-align: right;
  display: flex;
  align-items: center;
  justify-content: flex-end;
  gap: 4px;
}

/* Piece-of-Paper Full-Size Modal */
.blurb-paper-modal {
  position: fixed;
  inset: 0;
  z-index: 100;
  display: flex;
  align-items: center;
  justify-content: center;
  padding: 30px 20px;
  box-sizing: border-box;
}
.blurb-paper-backdrop {
  position: absolute;
  inset: 0;
  background: rgba(15, 23, 42, 0.65);
  backdrop-filter: blur(6px);
  -webkit-backdrop-filter: blur(6px);
  animation: blurbFadeIn 0.2s ease;
}
.blurb-paper-sheet {
  position: relative;
  z-index: 1;
  width: 100%;
  max-width: 680px;
  max-height: 85vh;
  background: #faf9f5;
  color: #1e293b;
  border-radius: 3px;
  box-shadow: 0 12px 36px -4px rgba(0, 0, 0, 0.25), 0 30px 60px -12px rgba(0, 0, 0, 0.35);
  border: 1px solid rgba(0, 0, 0, 0.07);
  padding: 48px 44px 44px 44px;
  box-sizing: border-box;
  display: flex;
  flex-direction: column;
  animation: blurbPaperRise 0.28s cubic-bezier(0.16, 1, 0.3, 1);
}
.blurb-paper-close {
  position: absolute;
  top: 16px;
  right: 16px;
  width: 38px;
  height: 38px;
  border: none;
  background: transparent;
  font-size: 26px;
  line-height: 1;
  color: #64748b;
  cursor: pointer;
  border-radius: 50%;
  display: flex;
  align-items: center;
  justify-content: center;
  transition: background 0.15s, color 0.15s;
}
.blurb-paper-close:hover {
  background: rgba(0, 0, 0, 0.06);
  color: #0f172a;
}
.blurb-paper-eyebrow {
  font-family: 'DM Mono', monospace;
  font-size: 11px;
  font-weight: 500;
  letter-spacing: 0.1em;
  text-transform: uppercase;
  color: #64748b;
  margin-bottom: 8px;
  display: block;
}
.blurb-paper-title {
  font-family: 'Inter', sans-serif;
  font-size: 30px;
  font-weight: 700;
  color: #0f172a;
  margin: 0 0 24px 0;
  line-height: 1.25;
  letter-spacing: -0.02em;
  border-bottom: 1.5px solid rgba(0, 0, 0, 0.08);
  padding-bottom: 16px;
}
.blurb-paper-content {
  font-family: 'Inter', sans-serif;
  font-size: 16px;
  line-height: 1.72;
  color: #334155;
  overflow-y: auto;
  flex: 1;
  padding-right: 16px;
  margin-right: -10px;
  scrollbar-width: thin;
  scrollbar-color: rgba(0, 0, 0, 0.2) transparent;
}
.blurb-paper-content::-webkit-scrollbar {
  width: 6px;
}
.blurb-paper-content::-webkit-scrollbar-track {
  background: transparent;
}
.blurb-paper-content::-webkit-scrollbar-thumb {
  background: rgba(0, 0, 0, 0.2);
  border-radius: 999px;
}
.blurb-paper-content::-webkit-scrollbar-thumb:hover {
  background: rgba(0, 0, 0, 0.35);
}
.blurb-paper-content p {
  margin: 0 0 16px 0;
}
.blurb-paper-content h1 {
  font-size: 24px;
  font-weight: 700;
  color: #0f172a;
  margin: 24px 0 12px 0;
}
.blurb-paper-content h2 {
  font-size: 20px;
  font-weight: 700;
  color: #0f172a;
  margin: 20px 0 10px 0;
}
.blurb-paper-content h3 {
  font-size: 17px;
  font-weight: 600;
  color: #0f172a;
  margin: 16px 0 8px 0;
}
.blurb-paper-content ul,
.blurb-paper-content ol {
  margin: 0 0 16px 24px;
  padding: 0;
}
.blurb-paper-content li {
  margin-bottom: 6px;
}
.blurb-paper-content blockquote {
  border-left: 3px solid var(--ta, #174cff);
  margin: 18px 0;
  padding: 6px 0 6px 18px;
  color: #475569;
  font-style: italic;
  background: rgba(0, 0, 0, 0.02);
  border-radius: 0 3px 3px 0;
}
.blurb-paper-content a {
  color: var(--ta, #174cff);
  text-decoration: underline;
  text-underline-offset: 3px;
}
.blurb-paper-content a:hover {
  color: #0d32b3;
}

@keyframes blurbFadeIn {
  from { opacity: 0; }
  to { opacity: 1; }
}
@keyframes blurbPaperRise {
  from { opacity: 0; transform: translateY(18px) scale(0.98); }
  to { opacity: 1; transform: translateY(0) scale(1); }
}

@media (max-width: 700px) {
  .blurb-paper-sheet {
    padding: 32px 22px 26px 22px;
    max-height: 90vh;
  }
  .blurb-paper-title {
    font-size: 23px;
    margin-bottom: 16px;
    padding-bottom: 12px;
  }
  .blurb-paper-content {
    font-size: 14.5px;
    line-height: 1.62;
  }
}

/* Virtual Gallery Tag Plaque Additions */
.blurb-plaque-surface.is-artwork-tag .blurb-tag-header {
  margin-bottom: 8px;
}
.blurb-plaque-surface.is-artwork-tag .blurb-tag-artist {
  font-family: 'Inter', sans-serif;
  font-size: 13.5px;
  font-weight: 700;
  letter-spacing: 0.03em;
  color: #0f172a;
  margin-bottom: 3px;
  text-transform: uppercase;
}
.blurb-plaque-surface.is-artwork-tag .blurb-tag-title {
  font-family: 'Inter', sans-serif;
  font-size: 15px;
  font-weight: 500;
  color: #1e293b;
  margin-bottom: 4px;
  line-height: 1.25;
}
.blurb-plaque-surface.is-artwork-tag .blurb-tag-title em {
  font-style: italic;
  font-weight: 600;
}
.blurb-plaque-surface.is-artwork-tag .blurb-tag-meta {
  font-family: 'DM Mono', monospace;
  font-size: 10px;
  color: #64748b;
  line-height: 1.4;
  margin-bottom: 6px;
}
.blurb-plaque-surface.is-artwork-tag .blurb-tag-divider {
  border: none;
  border-top: 1px solid rgba(0, 0, 0, 0.08);
  margin: 6px 0 10px 0;
}

/* Virtual Tag Paper Modal Additions */
.blurb-paper-sheet.is-artwork-tag .blurb-paper-artist {
  font-family: 'Inter', sans-serif;
  font-size: 19px;
  font-weight: 700;
  letter-spacing: 0.02em;
  color: #0f172a;
  margin: 0 0 4px 0;
  text-transform: uppercase;
}
.blurb-paper-sheet.is-artwork-tag .blurb-paper-title {
  font-size: 26px;
  font-weight: 500;
  margin-bottom: 6px;
  border-bottom: none;
  padding-bottom: 0;
}
.blurb-paper-sheet.is-artwork-tag .blurb-paper-title em {
  font-style: italic;
  font-weight: 600;
}
.blurb-paper-sheet.is-artwork-tag .blurb-paper-meta {
  font-family: 'DM Mono', monospace;
  font-size: 12px;
  color: #64748b;
  margin: 4px 0 14px 0;
}
.blurb-paper-sheet.is-artwork-tag .blurb-paper-divider {
  border: none;
  border-top: 1.5px solid rgba(0, 0, 0, 0.08);
  margin: 0 0 18px 0;
}
.blurb-paper-action {
  margin-top: 18px;
  padding-top: 14px;
  border-top: 1px solid rgba(0, 0, 0, 0.08);
  display: flex;
  justify-content: flex-end;
}
.blurb-paper-detail-btn {
  font-family: 'Inter', sans-serif;
  font-size: 13px;
  font-weight: 600;
  padding: 8px 16px;
  background: var(--ta, #174cff);
  color: #ffffff;
  border: none;
  border-radius: 4px;
  cursor: pointer;
  transition: background 0.15s ease;
}
.blurb-paper-detail-btn:hover {
  background: #0d32b3;
}

/* Floating Remanet Attribution Badge */
.t-badge,
.tour .t-badge {
  position: absolute;
  bottom: 16px;
  left: 16px;
  z-index: 10;
  display: inline-flex;
  align-items: center;
  gap: 5px;
  padding: 4px 10px;
  border-radius: 999px;
  background: rgba(248, 251, 255, 0.72);
  backdrop-filter: blur(12px);
  -webkit-backdrop-filter: blur(12px);
  border: 1px solid rgba(160, 180, 205, 0.4);
  box-shadow: 0 2px 8px rgba(18, 34, 56, 0.06);
  font: 10px/1.2 'DM Mono', monospace;
  color: #475d72;
  opacity: 0.75;
  transition: opacity 0.18s ease, transform 0.18s ease, background 0.18s ease;
  text-decoration: none;
  pointer-events: auto;
  user-select: none;
  cursor: pointer;
}
.t-badge:hover,
.t-badge:focus-within,
.tour .t-badge:hover,
.tour .t-badge:focus-within {
  opacity: 1;
  background: rgba(255, 255, 255, 0.94);
  transform: translateY(-1px);
  box-shadow: 0 4px 14px rgba(18, 34, 56, 0.1);
}
.t-badge span,
.tour .t-badge span {
  letter-spacing: 0.02em;
}
.t-badge-wordmark,
.tour .t-badge-wordmark {
  font: 500 13px/1 Georgia, serif;
  letter-spacing: -0.02em;
  color: #142334;
  text-decoration: none;
  display: inline-flex;
  align-items: baseline;
}
.t-badge-wordmark::after,
.tour .t-badge-wordmark::after {
  content: '';
  position: absolute;
  inset: 0;
  border-radius: inherit;
}
.t-badge-wordmark em,
.tour .t-badge-wordmark em {
  font-style: italic;
  color: #2d6b63;
}
@media (max-width: 700px) {
  .t-badge,
  .tour .t-badge {
    bottom: max(12px, calc(env(safe-area-inset-bottom, 0px) + 4px));
    left: max(12px, env(safe-area-inset-left, 0px));
    font-size: 9px;
    padding: 3px 8px;
  }
  .tour:has(.t-credits) .t-badge {
    bottom: max(48px, calc(env(safe-area-inset-bottom, 0px) + 40px));
  }
}
