@font-face{font-family:"AlgoArt Marker";src:url("../../fonts/AlgoArt-Marker-Regular.woff2") format("woff2");font-style:normal;font-weight:400;font-display:swap}
:root{color-scheme:light;--paper:#e8e4da;--ink:#242a28;--rule:rgba(30,35,32,.22);--glass:rgba(247,245,239,.94);font-family:Arial,Helvetica,sans-serif}
*{box-sizing:border-box}
html,body{margin:0;width:100%;height:100%;overflow:hidden;background:#9a9e99;color:var(--ink)}
[hidden]{display:none!important}
button,input,a{font:inherit}
button{cursor:pointer}
a{color:inherit}
#world{position:fixed;inset:0;display:block;width:100%;height:100%;touch-action:none}
.topbar{position:fixed;top:0;left:0;right:0;z-index:4;display:flex;align-items:center;justify-content:space-between;gap:12px;padding:15px clamp(15px,2.5vw,35px);background:linear-gradient(to bottom,rgba(237,235,228,.96),rgba(237,235,228,.84));border-bottom:1px solid var(--rule);backdrop-filter:blur(12px)}
.identity{display:flex;align-items:baseline;gap:22px;white-space:nowrap}
.brand{text-decoration:none;font-family:"AlgoArt Marker",Georgia,serif;font-weight:400;font-size:clamp(18px,2vw,27px);letter-spacing:-.035em}
.section-name{font-family:Georgia,serif;font-style:italic;font-size:18px;color:#555d55}
.top-actions{display:flex;gap:10px;align-items:center;flex-wrap:wrap;justify-content:flex-end}
.top-actions button,.top-actions>a,.top-actions input{background:rgba(255,255,255,.48);border:1px solid var(--rule);padding:8px 11px;text-decoration:none;border-radius:2px;font-size:12px;color:var(--ink);min-height:35px}
.top-actions button:hover,.top-actions a:hover,.top-actions button:focus-visible,.top-actions a:focus-visible{background:#fff;outline-offset:2px}
.date-label{font-size:12px;color:#586058}
.top-actions input{width:133px}
#xr-controls{display:flex;align-items:center}
#xr-controls button,#xr-controls a{position:static!important;display:inline-flex!important;align-items:center!important;justify-content:center!important;opacity:1!important;width:auto!important;height:35px!important;background:#333b37!important;border:1px solid #333b37!important;color:white!important;border-radius:2px!important;padding:0 13px!important;font-size:12px!important;text-decoration:none!important;white-space:nowrap!important}
#xr-controls a{background:#9a9a96!important;border-color:#888!important}
.welcome{position:fixed;inset:0;z-index:8;background:linear-gradient(110deg,rgba(232,228,218,.98) 0%,rgba(232,228,218,.92) 34%,rgba(232,228,218,.14) 76%);display:flex;align-items:center;pointer-events:none}
.welcome-content{width:min(540px,100%);padding:clamp(28px,6vw,85px);pointer-events:auto}
.eyebrow{font-size:12px;letter-spacing:.045em;color:#495b4e;margin-bottom:20px}
.welcome h1{font-family:"AlgoArt Marker",Georgia,serif;font-size:clamp(43px,5.8vw,83px);font-weight:normal;letter-spacing:-.06em;line-height:1.04;margin:0 0 29px}
.welcome p{max-width:395px;font-size:15px;line-height:1.7;margin:0 0 17px}
.welcome .shortcuts{font-size:12px;color:#59625e;line-height:1.6}
.enter{display:block;padding:15px 24px;border:1px solid #303d35;background:#303d35;color:white;font-size:14px;margin:24px 0 19px;min-width:205px;text-align:center}
.enter:disabled{opacity:.65;cursor:default}
.welcome-content>a{font-size:13px;text-decoration-thickness:1px;text-underline-offset:3px}
.center-reticle{position:fixed;z-index:2;top:50%;left:50%;width:5px;height:5px;border:1px solid rgba(255,255,255,.92);border-radius:50%;background:#252c27;box-shadow:0 0 0 2px rgba(0,0,0,.3);transform:translate(-50%,-50%);pointer-events:none}
.welcome:not([hidden])~.center-reticle{display:none}
.info{position:fixed;z-index:6;bottom:78px;left:28px;display:flex;background:var(--glass);width:min(420px,calc(100vw - 56px));box-shadow:0 8px 40px rgba(0,0,0,.17);pointer-events:auto}
.info>img{object-fit:contain;background:#eee9dc;width:36%;max-height:180px}
.info-body{padding:23px;position:relative;flex:1}
.info h2{font-family:Georgia,serif;font-weight:normal;font-size:23px;line-height:1.16;margin:9px 12px 10px 0}
.info p{font-size:12px;color:#565d57;margin:0 0 19px}
.info .info-meta{font-weight:600;line-height:1.5;margin-bottom:5px}
.info a{display:inline-block;font-size:13px;text-underline-offset:3px}
.info-close{position:absolute;right:9px;top:6px;border:0;background:transparent;font-size:22px}
.status{position:fixed;z-index:3;left:25px;bottom:25px;background:rgba(242,239,232,.84);padding:10px 13px;font-size:12px;max-width:58vw;pointer-events:none}
.hint{position:fixed;right:22px;bottom:23px;z-index:3;background:rgba(242,239,232,.86);padding:11px 14px;font-size:12px;max-width:48vw}
.error{position:fixed;bottom:20px;left:20px;right:20px;z-index:10;background:#fff4ee;color:#642d21;padding:17px;font-size:14px;max-width:640px;border:1px solid #a54c35}
.touch-nav{display:none;position:fixed;right:20px;bottom:22px;z-index:4;text-align:center}
.touch-nav button{width:55px;height:55px;border-radius:50%;border:1px solid rgba(255,255,255,.7);color:#fff;background:rgba(24,29,26,.58);font-size:24px;touch-action:none;user-select:none}
.touch-nav>div{display:flex;gap:7px;margin-top:6px}
.touch-nav span{display:block;color:#fff;text-shadow:0 1px 4px #111;font-size:10px;margin-top:8px}
@media (pointer:coarse){.touch-nav{display:block}.hint{display:none}.center-reticle{display:none}.status{left:15px;bottom:18px;max-width:45vw;font-size:11px}.welcome{background:rgba(232,228,218,.94)}}
@media(max-width:800px){.topbar{align-items:flex-start;gap:8px}.identity{display:block}.section-name{display:block;margin-top:5px;font-size:15px}.top-actions{gap:5px;max-width:75%;}.date-label{display:none}.top-actions button,.top-actions a,.top-actions input{font-size:11px;padding:6px;min-height:32px}.top-actions input{width:120px}.welcome-content{padding:25px}.welcome h1{font-size:clamp(42px,11vw,70px)}.info{left:10px;bottom:140px;width:min(460px,calc(100vw - 20px))}.info-body{padding:13px}.info h2{font-size:18px}}
@media(max-width:480px){.topbar{padding:10px}.brand{font-size:18px}.section-name{font-size:13px}.top-actions{max-width:67%}#fullscreen{display:none}.top-actions>a{display:none}.welcome p{font-size:14px}.info>img{width:36%}}



/* Real architectural diagram for the non-linear museum. */
.plan-view{position:fixed;top:88px;right:23px;z-index:3;background:rgba(244,241,233,.91);padding:12px 13px 8px;box-shadow:0 9px 33px rgba(35,43,37,.13);border:1px solid rgba(64,64,54,.16);pointer-events:none;backdrop-filter:blur(8px)}
.plan-view span{display:block;font:12px Georgia,serif;color:#4d524a;margin:0 0 5px}
.plan-view canvas{display:block;width:214px;height:188px}
@media(max-width:750px){.plan-view{top:112px;right:10px;padding:8px}.plan-view canvas{width:132px;height:116px}.plan-view span{font-size:10px}}
@media(max-width:390px){.plan-view{top:101px}.plan-view canvas{width:112px;height:98px}}

/* Lift destination panel: at most 31 date controls for any selected month. */
.lift-panel{position:fixed;z-index:9;top:50%;left:50%;transform:translate(-50%,-50%);width:min(410px,calc(100vw - 24px));max-height:calc(100dvh - 30px);overflow:auto;background:#f1eee7;color:#252b28;padding:23px 26px;box-shadow:0 18px 65px rgba(0,0,0,.4);border:1px solid #aaa99f}
.lift-head{display:flex;justify-content:space-between;align-items:start}.lift-head small{color:#586158}.lift-head h2{font:normal 31px Georgia,serif;margin:5px 0 15px}
.lift-head button{border:0;background:none;font-size:27px}.lift-panel p{font-size:12px;color:#626a64;line-height:1.5}.lift-panel label{display:block;font-size:12px;margin:16px 0 6px}
#liftMonth{width:100%;font-size:16px;padding:9px;background:white;border:1px solid #aab0a9}
.lift-weekdays,.lift-days{display:grid;grid-template-columns:repeat(7,minmax(0,1fr));gap:5px;text-align:center}
.lift-weekdays{margin:19px 0 7px;font-size:11px;color:#777}.lift-days button{aspect-ratio:1;border:1px solid #d6d5ce;background:#e9e7e2;color:#999;font-size:13px}
.lift-days button.lift-available{position:relative;background:#a03933;color:#fff;border-color:#92322c;font-weight:700}
.lift-days button.lift-available::after{content:'';position:absolute;bottom:2px;left:50%;width:4px;height:4px;border-radius:50%;transform:translateX(-50%);background:#fff}
.lift-days button.lift-available:hover,.lift-days button.lift-available:focus-visible{background:#762b26;outline:2px solid #292c29;outline-offset:2px}
.lift-days button.lift-current{box-shadow:inset 0 0 0 3px #f4dfad}
.lift-note{margin:17px 0 0}#liftTravel{font-weight:700;color:#373f3a}
@media(max-width:480px){.lift-panel{padding:18px}.lift-days{gap:3px}.lift-panel h2{font-size:27px}}

/* Lift journey is a short animated vestibule, covering the destination fetch. */
.lift-animation{position:fixed;inset:0;z-index:15;background:#242b2b;overflow:hidden;display:grid;place-items:center;color:#f1eee7}
.lift-doors{position:absolute;inset:0;display:flex;pointer-events:none}
.lift-doors>div{width:50%;background:linear-gradient(90deg,#777d7c,#b4b8b2 65%,#68716f);animation:lift-close .7s ease-out both;border-right:2px solid #3a4543}
.lift-doors>div:first-child{transform:translateX(-100%)}
.lift-doors>div:last-child{transform:translateX(100%)}
@keyframes lift-close{to{transform:translateX(0)}}
.lift-motion{position:relative;z-index:1;text-align:center;animation:lift-display .3s ease 700ms both;padding:28px;background:rgba(34,41,40,.93);min-width:min(360px,92vw)}
@keyframes lift-display{from{opacity:0}to{opacity:1}}
.lift-motion>span{font-size:13px;letter-spacing:.04em}.lift-motion strong{font:normal 29px Georgia,serif;display:block;margin:12px 0}
.lift-motion p{font-size:12px;color:#c3cbc5}.lift-track{position:relative;height:145px;overflow:hidden;border-left:2px solid #9ba8a1;border-right:2px solid #9ba8a1;margin:20px auto;width:62px}
.lift-track-lines{position:absolute;inset:-140px 0;background:repeating-linear-gradient(to bottom,transparent 0 21px,#82948c 22px 25px,transparent 26px 43px);animation:lift-rise .55s linear infinite}
@keyframes lift-rise{to{transform:translateY(43px)}}
.lift-arrow{position:absolute;inset:0;display:grid;place-items:center;font-size:38px;background:rgba(31,40,38,.55)}
.lift-arrival{position:fixed;top:18%;left:50%;transform:translateX(-50%);z-index:12;background:#303b38;color:#fff;padding:16px 28px;font:20px Georgia,serif;box-shadow:0 12px 40px #0005}
@media(prefers-reduced-motion:reduce){.lift-doors>div,.lift-motion,.lift-track-lines{animation:none!important}.lift-doors>div{transform:none}.lift-motion{opacity:1}}

.lift-animation.descending .lift-arrow{transform:rotate(180deg)}
.lift-animation.descending .lift-track-lines{animation-direction:reverse}

.floor-indicator{display:inline-flex;align-items:center;justify-content:center;min-width:30px;padding:3px 8px;background:#343d39;color:#fff;font:700 12px Arial,sans-serif;border-radius:2px}
.start-floor{font:normal 16px Georgia,serif!important;color:#535b54!important;margin:-13px 0 20px!important}

/* A visible, non-intrusive focus boundary for keyboard explorers. */
#world:focus-visible{outline:3px solid #e9bc76;outline-offset:-5px}
.info button:focus-visible,.info a:focus-visible,.lift-panel button:focus-visible,#liftMonth:focus-visible,.enter:focus-visible,.welcome a:focus-visible{outline:3px solid #314d40;outline-offset:3px}


/* The virtual exhibition shares the real site header instead of inventing a
   second navigation. Keep it visible over the 3D canvas and welcome screen. */
body .algo-global-header.gallery-global-header{
  position:fixed!important;
  top:0!important;left:0!important;right:0!important;
  z-index:10!important;
}
.topbar{
  top:72px;
  z-index:5;
  min-height:49px;
  justify-content:flex-end;
  padding:7px clamp(15px,2.5vw,35px);
  background:rgba(237,235,228,.94);
  backdrop-filter:none;
}
.topbar .identity{align-items:center;gap:12px}
.topbar .section-name{font-size:15px}
.topbar .top-actions{flex-wrap:nowrap;margin-left:auto}
.topbar .top-actions button,.topbar .top-actions>a{white-space:nowrap}
.plan-view{top:143px}
@media(max-width:850px){
  .topbar{top:92px;align-items:center;gap:10px;padding:7px 12px}
  .topbar .identity{display:flex;align-items:center;gap:8px}
  .topbar .section-name{display:none}
  .topbar .top-actions{max-width:none;flex:1;flex-wrap:nowrap;justify-content:flex-end;gap:6px}
  .topbar .top-actions button,.topbar .top-actions>a{padding:6px 8px}
  .plan-view{top:156px}
}
@media(max-width:480px){
  .topbar .top-actions>a{display:none}
  .plan-view{top:150px}
}


/* Welcome starts below the shared header and its gallery controls. The
   measured offset also handles browser zoom, wrapping, and XR controls. */
:root{--gallery-ui-bottom:132px}
.welcome{
  top:var(--gallery-ui-bottom);
  bottom:0;
  align-items:safe center;
  overflow-y:auto;
  overscroll-behavior:contain;
  pointer-events:auto;
  padding-block:12px;
}
.welcome-content{
  width:min(640px,100%);
  padding:clamp(16px,2.2vw,30px) clamp(22px,4.5vw,68px);
  margin-block:auto;
}
.welcome h1{
  font-size:clamp(40px,4.2vw,66px);
  line-height:1.04;
  margin-bottom:18px;
}
.welcome .eyebrow{margin-bottom:12px}
.welcome p{line-height:1.5;margin-bottom:13px;max-width:480px}
.welcome .shortcuts{line-height:1.48}
.welcome .enter{margin:16px 0 12px;padding:12px 20px}
.plan-view{top:calc(var(--gallery-ui-bottom) + 18px)}
@media(max-width:850px){
  :root{--gallery-ui-bottom:152px}
  .welcome-content{padding:20px 25px}
  .welcome h1{font-size:clamp(36px,8vw,54px);margin-bottom:15px}
  .welcome .shortcuts{font-size:11px}
}
@media(max-width:480px){
  .welcome{padding-block:8px}
  .welcome-content{padding:14px 20px 22px}
  .welcome h1{font-size:clamp(35px,10vw,47px)}
  .welcome p{font-size:13px;line-height:1.48}
  .welcome .shortcuts{font-size:11px}
}
