@import url('https://fonts.googleapis.com/css2?family=DM+Sans:wght@400;500;600;700&family=Libre+Caslon+Display&display=swap');
:root{color-scheme:light;--ink:#243036;--paper:#f8f6ef;--line:#d1cec2}*{box-sizing:border-box}body{margin:0;overflow:hidden;color:var(--ink);font-family:'DM Sans',sans-serif;font-size:16px;background:#d9d1c3}button,a{-webkit-tap-highlight-color:transparent}button{font:inherit;cursor:pointer;color:inherit}button:focus-visible,a:focus-visible{outline:3px solid #d6693e;outline-offset:4px}button{border:0;background:transparent}#gallery,canvas{position:fixed;inset:0;width:100%;height:100%;display:block;touch-action:none}header{position:fixed;top:0;left:0;right:0;display:flex;justify-content:space-between;align-items:center;padding:27px 34px;pointer-events:none;z-index:3;background:linear-gradient(#f4f0e5dd,transparent)}header button,header .identity{pointer-events:auto}.identity{display:flex;gap:13px;align-items:center}.mark{font-family:'Libre Caslon Display',Georgia,serif;font-size:46px;line-height:1}.identity strong{display:block;font-size:14px;letter-spacing:.2em}.identity div>span{display:block;font-size:14px;margin-top:4px}.quiet{font-size:14px;background:#f8f6efdc;border:1px solid #ffffff8a;border-radius:24px;padding:12px 17px;backdrop-filter:blur(15px)}.quiet span{margin-left:10px}.intro{position:fixed;top:26%;left:6%;max-width:440px;background:#f8f6efec;border:1px solid #fff9;box-shadow:0 15px 80px #2b22191a;backdrop-filter:blur(12px);padding:32px 36px 27px;border-radius:3px;z-index:2}.eyebrow{font-size:12px;letter-spacing:.16em;font-weight:600}.intro h1{font-family:'Libre Caslon Display',Georgia,serif;font-size:64px;line-height:1.02;margin:22px 0}.intro p{font-size:15px;line-height:1.7}.primary{padding:15px 23px;background:#293a40;color:#fff;border-radius:3px;display:flex;gap:28px;justify-content:space-between;align-items:center}.intro .primary{margin:24px 0 18px}.intro small{font-size:12px;color:#697273}.stops{position:fixed;bottom:26px;left:50%;transform:translateX(-50%);display:flex;gap:3px;padding:6px;background:#f8f6eff0;border:1px solid white;border-radius:35px;box-shadow:0 5px 35px #25271c24;z-index:4;white-space:nowrap}.stops button{padding:13px 18px;font-size:14px;border-radius:25px}.stops button.active{background:#2b3c42;color:white}.stops button:hover:not(.active){background:#e7e3d9}.room-tools{position:fixed;right:28px;top:125px;background:#f8f6efed;padding:18px;border-radius:4px;z-index:2;width:171px}.room-tools>span{font-size:12px;letter-spacing:.06em}.swatches{display:flex;gap:9px;margin:15px 0}.swatch{width:24px;height:24px;border-radius:50%;background:var(--swatch);border:2px solid white;box-shadow:0 0 0 1px #0001}.swatch.selected{box-shadow:0 0 0 2px #243036}.room-tools #fire,.room-tools #focus{font-size:13px;border-top:1px solid var(--line);padding:11px 0;width:100%;text-align:left}.room-tools #fire{padding-bottom:0}.location{position:fixed;top:122px;left:34px;pointer-events:none}.location span{display:block}.location #roomName{font-family:'Libre Caslon Display',Georgia,serif;font-size:29px;margin-top:6px}.hint{position:fixed;bottom:102px;left:50%;transform:translateX(-50%);font-size:13px;background:#243036c9;color:#fff;padding:8px 14px;border-radius:20px;pointer-events:none;text-align:center}.movement{position:fixed;bottom:25px;left:27px;display:flex;flex-direction:column;align-items:center;gap:4px;z-index:3}.movement div{display:flex;gap:4px}.movement button{background:#f8f6efdb;border:1px solid #fff9;width:37px;height:35px;border-radius:4px;font-size:18px;touch-action:none}.movement button:active{background:#b7c7c8}#context{position:fixed;bottom:146px;left:50%;transform:translateX(-50%);background:#f8f6eff5;padding:12px 13px 12px 20px;border-radius:5px;display:flex;align-items:center;gap:25px;z-index:4;box-shadow:0 5px 35px #25271c24;font-size:14px}#context button{background:#293a40;color:white;border-radius:3px;padding:10px 16px;white-space:nowrap}[hidden]{display:none!important}#return{position:fixed;bottom:30px;left:50%;transform:translateX(-50%);z-index:5}#vr{position:fixed;bottom:35px;right:25px;background:#f8f6ef;padding:12px 16px;border-radius:25px}#loading{position:fixed;inset:0;background:#f0ede4;z-index:20;display:flex;align-items:center;justify-content:center;flex-direction:column;text-align:center;padding:30px}#loading h1{font-family:'Libre Caslon Display',Georgia,serif;font-size:42px;font-weight:400}.loader{height:50px;width:50px;border:1px solid #bbc2bb;border-top-color:#243036;border-radius:50%;animation:spin 1s linear infinite}@keyframes spin{to{transform:rotate(360deg)}}dialog{border:0;border-radius:5px;max-width:900px;width:90vw;padding:0;color:var(--ink);background:var(--paper);box-shadow:0 30px 100px #0004}dialog::backdrop{background:#14272bd9;backdrop-filter:blur(7px)}#details[open]{display:grid;grid-template-columns:1.2fr 1fr;align-items:center}.detail-media{width:100%;height:100%;max-height:70vh;display:grid;place-items:center;background:#161a1c;overflow:hidden}#detailImage,#detailVideo{width:100%;height:100%;max-height:70vh;object-fit:contain;background:#161a1c}.detail-copy{padding:45px 35px}dialog h2{font-family:'Libre Caslon Display',Georgia,serif;font-size:42px;font-weight:400;line-height:1.08;margin:20px 0}dialog p{font-size:16px;line-height:1.65}dialog .note{font-size:13px;color:#667171}dialog a{display:inline-block;margin-top:22px;color:#2e595e;font-size:14px;line-height:1.5}dialog .close{position:absolute;right:12px;top:8px;background:#f8f6efed;border-radius:50%;font-size:28px;width:38px;height:38px;z-index:5}#instructions{max-width:530px;padding:38px}.toast{position:fixed;top:95px;left:50%;transform:translateX(-50%);background:#253a40;color:white;padding:12px 20px;border-radius:5px;opacity:0;transition:opacity .3s;pointer-events:none;z-index:8}.toast.show{opacity:1}body.dream header{color:#fff;background:linear-gradient(#0a1a30cc,transparent)}body.dream .quiet{color:#243036}body.dream .location{color:#fff}@media(max-width:800px){header{padding:18px}.identity strong{font-size:12px}.identity div>span{font-size:12px}.mark{font-size:37px}.quiet{font-size:12px;padding:10px}.intro{left:20px;top:22%;padding:24px;width:calc(100% - 40px);max-width:370px}.intro h1{font-size:50px}.room-tools{top:99px;right:16px;width:auto;padding:12px}.room-tools>span{display:none}.swatches{margin:0 0 12px;gap:7px}.swatch{width:21px;height:21px}.room-tools #fire{font-size:12px}.location{top:103px;left:18px}.location #roomName{font-size:24px}.stops{bottom:20px;max-width:calc(100vw - 24px);width:max-content;overflow:auto;padding:4px}.stops button{font-size:12px;padding:11px 12px}.movement{bottom:82px;left:17px}.hint{bottom:80px;max-width:55%;font-size:12px}#context{bottom:135px;max-width:calc(100vw - 35px);width:max-content;gap:13px}#contextText{max-width:170px;font-size:13px}#details[open]{display:block;max-height:90vh;overflow:auto}.detail-media,#detailImage,#detailVideo{max-height:40vh}.detail-copy{padding:20px 26px}dialog h2{font-size:34px}#vr{bottom:85px;right:16px}#return{bottom:25px}}@media(prefers-reduced-motion:reduce){.loader{animation:none}}
/* Touch layout: one clean viewpoint strip and no overlapping arrow pad. */
@media(max-width:800px){.stops{bottom:14px;left:12px;right:12px;transform:none;max-width:none;width:auto;overflow-x:auto;padding:4px;justify-content:flex-start}.movement{display:none}.hint{bottom:88px;max-width:calc(100vw - 32px);font-size:12px;white-space:nowrap}#context{bottom:132px}}
/* Contact links use the visitor's own email app; no submitted-form service is needed. */
header .header-actions{display:flex;align-items:center;gap:9px;pointer-events:auto}header .contact-link{text-decoration:none}.inquiry-link{font-weight:600}@media(max-width:800px){header .header-actions{gap:5px}header .contact-link{font-size:0;padding:10px 12px}header .contact-link::after{content:'Email';font-size:12px}}
/* A small menu keeps the room controls available without leaving a panel over the artwork. */
.menu-toggle{width:45px;height:42px;border-radius:24px;background:#f8f6efdc;border:1px solid #ffffff8a;backdrop-filter:blur(15px);display:grid;place-content:center;gap:4px}.menu-toggle span{display:block;width:17px;height:1px;background:#243036}.room-tools{width:205px}.room-tools .menu-link{display:block;width:100%;padding:0 0 12px;margin-bottom:11px;border-bottom:1px solid var(--line);text-align:left;text-decoration:none;color:var(--ink);font-size:13px}.room-tools>span{display:block;margin-top:2px}.room-tools #focus{margin-top:4px}@media(max-width:800px){.menu-toggle{width:40px;height:38px}.room-tools{top:70px;right:14px;width:198px}.room-tools .menu-link{font-size:13px}.room-tools>span{display:block}.swatches{margin:12px 0}.room-tools #fire{font-size:13px}}
