:root{--green:#234b40;--ink:#183d33;--paper:#f4f2ea;--lime:#c6cc8b}*{box-sizing:border-box}body{margin:0;background:#d7d9d0;color:var(--ink);font-family:Arial,Helvetica,sans-serif;overflow:hidden}button,a{-webkit-tap-highlight-color:transparent}button{font:inherit;cursor:pointer;color:inherit;border:0}button:focus-visible,a:focus-visible{outline:3px solid #ab8e3f;outline-offset:4px}button:hover{filter:brightness(.92)}button{touch-action:none}header{position:fixed;top:0;left:0;right:0;height:94px;padding:24px 3.5%;display:flex;justify-content:space-between;align-items:center;background:linear-gradient(#f5f3eccf,transparent);z-index:5;pointer-events:none}header>*{pointer-events:auto}.brand{color:var(--green);text-decoration:none;font-size:12px;letter-spacing:2px;font-weight:bold}.brand span{display:block;letter-spacing:0;font-size:13px;font-weight:normal;margin-top:6px}nav{display:flex;gap:9px;align-items:center}nav button{border:1px solid #234b4026;border-radius:30px;background:#f8f7f1e8;padding:11px 16px;font-size:12px}#full{font-size:22px;padding:6px 12px}nav span{margin-left:8px}.screen{position:fixed;inset:0;z-index:6;background:var(--paper);display:grid;grid-template-columns:1fr 1fr;padding-top:94px}.intro{padding:5vh 7vw 4vh;display:flex;flex-direction:column;align-items:flex-start}.eyebrow{font-size:10px;letter-spacing:2px;font-weight:bold;line-height:1.6}.intro h1{font-family:Georgia,serif;font-size:clamp(48px,6.2vw,110px);font-weight:normal;line-height:.98;letter-spacing:-4px;margin:25px 0}.intro em{font-weight:normal;color:#627b45}.lede{font-family:Georgia,serif;font-size:clamp(20px,2vw,30px);line-height:1.35;margin:8px 0 20px}.summary{max-width:360px;font-size:14px;line-height:1.7;color:#566b61;margin:0 0 26px}.primary{background:var(--green);color:var(--paper);padding:18px 24px;display:flex;gap:38px;justify-content:space-between;align-items:center;border-radius:2px;font-size:14px}.primary span{font-size:23px}.textbutton{background:none;margin-top:18px;padding:0;font-size:12px;text-decoration:underline;text-underline-offset:4px}.intro-bottom{font-size:9px;letter-spacing:1.4px;margin-top:auto;padding-top:35px;display:flex;align-items:center;gap:14px}.intro-bottom i{width:3px;height:3px;background:var(--green);border-radius:50%}.cover{position:relative;margin:0 26px 26px 0;overflow:hidden;background:#9ba789}.cover img{position:absolute;max-width:none;width:340%;height:auto;left:-9%;top:-4%}.cover:after{content:'';position:absolute;inset:0;background:linear-gradient(transparent 50%,#102d26da)}.cover-note{position:absolute;bottom:36px;left:35px;right:20px;z-index:1;font-family:Georgia,serif;font-size:24px;color:white;line-height:1.4}.cover-note span{font:12px Arial;opacity:.75}#welcome{z-index:4}#welcome[hidden],#hud[hidden]{display:none}#viewport{position:fixed;inset:0;perspective:850px;perspective-origin:50% 50%;overflow:hidden;touch-action:none;background:#dadcd3;user-select:none}#camera{position:absolute;left:50%;top:50%;width:0;height:0;transform-style:preserve-3d}.plane{position:absolute;transform-style:preserve-3d;backface-visibility:hidden;transform-origin:center;box-sizing:content-box}.wall{background:#f0eee6;box-shadow:inset 0 -7px 0 #c4c1b3,inset 0 5px 0 #dfdccc;background-image:linear-gradient(90deg,#e8e6dd,#f8f6ee 50%,#e9e6dc)}.floor{background-color:#b0a08b;background-image:repeating-linear-gradient(90deg,transparent 0 99px,#746b5e40 100px 102px),repeating-linear-gradient(0deg,transparent 0 499px,#746b5e35 500px 502px);box-shadow:inset 0 0 120px #7f766966}.ceiling{background:#e9e8df}.art{padding:8px;background:#fff;box-shadow:0 9px 16px #1114;display:block;border:1px solid #d3d0c7;cursor:zoom-in;backface-visibility:hidden}.art img{width:100%;height:100%;display:block;pointer-events:none}.wall-label{background:none;color:var(--green);font-size:16px;text-align:center;letter-spacing:1px;line-height:1.5;backface-visibility:hidden}.room-mark{font-family:Georgia,serif;color:#466255;text-align:center;font-size:30px;padding:15px}.room-mark small{font:11px Arial;letter-spacing:3px;display:block;margin-bottom:14px}.portal-sign{color:#345645;font:15px Arial;text-align:center;letter-spacing:2px}.lamp{background:#faf9ee;box-shadow:0 0 60px 24px #fff9}#hud{position:fixed;inset:0;pointer-events:none;z-index:2}#hud button{pointer-events:auto}.roomheading{position:absolute;left:3.5%;top:125px;background:#f8f7efdc;border-left:2px solid #7a8b58;padding:15px 20px;max-width:360px}.roomheading>span{font-size:10px;letter-spacing:2px}.roomheading h2{font:24px Georgia;margin:8px 0}.roomheading p{font-size:10px;margin:8px 0 0;color:#5c6d60}footer{position:absolute;bottom:0;left:0;right:0;min-height:76px;background:#f4f2eaf0;border-top:1px solid #234b4022;display:flex;align-items:center;justify-content:space-between;padding:14px 3.5%;gap:20px}#position,.footnote{font-size:9px;letter-spacing:1.3px}.roomnav{display:flex;gap:6px}.roomnav button{background:none;padding:11px 16px;border-radius:30px;font-size:12px}.roomnav span{margin-left:8px}.roomnav .active{background:var(--green);color:white}#controls{position:absolute;right:4%;bottom:112px;display:flex;flex-direction:column;align-items:center;gap:5px}#controls>div{display:flex;gap:5px}#controls button,.turns button{width:45px;height:43px;border:1px solid #234b4040;background:#f8f7f0ed;border-radius:5px;font-size:22px;box-shadow:0 2px 5px #0001}#controls button.pressed,.turns button.pressed{background:var(--green);color:#fff}.turns{position:absolute;left:4%;bottom:114px;display:flex;gap:10px;align-items:center}.turns span{font-size:11px;background:#f8f7f0cc;padding:5px}#hint{position:absolute;bottom:110px;left:50%;transform:translateX(-50%);font-size:11px;background:#f8f7f0df;border-radius:20px;padding:10px 18px;text-align:center}dialog{border:none;background:var(--paper);color:var(--ink);padding:44px;max-width:min(850px,92vw);max-height:90dvh;box-shadow:0 20px 100px #0004;border-radius:5px}dialog::backdrop{background:#10261fe0;backdrop-filter:blur(5px)}dialog h2{font:36px Georgia;margin:12px 0 22px}.close{position:absolute;right:15px;top:12px;background:none;font-size:28px;line-height:1.1;padding:8px}.guide{display:grid;grid-template-columns:1fr 1fr 1fr;gap:28px;margin:30px 0}.guide-icon{font:32px Georgia}.guide h3{font-size:14px;margin:15px 0 10px}.guide p{font-size:12px;line-height:1.9;color:#4f6559}.guide b{font-weight:bold}#viewer{width:98vw;max-width:98vw;height:96dvh;max-height:96dvh;padding:0;background:#e2e2da;overflow:hidden}.viewerbar{height:90px;display:flex;align-items:center;justify-content:space-between;gap:20px;padding:16px 24px;background:var(--paper)}.viewerbar h2{font:18px Georgia;margin:4px 0}.vieweractions{display:flex;gap:7px;align-items:center}.vieweractions button{background:#e6e8dc;padding:10px 14px;border-radius:4px}.vieweractions .close{position:static;background:none}.viewerbar .eyebrow{font-size:9px}#imagearea{height:calc(100% - 143px);overflow:hidden;position:relative;touch-action:none;cursor:grab;display:flex;align-items:center;justify-content:center}#largeimage{max-width:100%;max-height:100%;object-fit:contain;user-select:none;pointer-events:none;transform-origin:center;will-change:transform}.viewerfoot{height:53px;background:var(--paper);display:flex;align-items:center;justify-content:space-between;padding:8px 24px}.viewerfoot button{background:none;padding:8px;font-size:12px}.viewerfoot span{font-size:11px;color:#617363}#catalog{width:1100px;max-width:94vw}#cataloggrid{display:grid;grid-template-columns:repeat(3,1fr);gap:22px;margin-top:28px}.catalogintro{font-size:13px}#cataloggrid button{text-align:left;background:white;padding:10px;border:1px solid #dddcd0}#cataloggrid img{width:100%;display:block}#cataloggrid span{display:block;font-size:10px;letter-spacing:1px;margin:13px 0 6px}#cataloggrid p{font:14px Georgia;line-height:1.4;margin:0 0 8px}#loading{position:fixed;bottom:10px;left:12px;z-index:10;background:var(--paper);padding:10px;font-size:12px}#loading[hidden]{display:none}@media(max-height:760px) and (min-width:801px){.intro{padding-top:10px}.intro h1{font-size:65px;margin:16px 0}.lede{font-size:22px;margin-bottom:12px}.summary{font-size:12px;margin-bottom:18px}.primary{padding:13px 20px}.intro-bottom{padding-top:20px}}@media(max-width:800px){header{height:78px;padding:16px 5%}.brand{font-size:9px}.brand span{font-size:11px}nav button{padding:9px;font-size:10px}#help{font-size:0}#help span{font-size:14px;margin:0}.screen{padding-top:78px;grid-template-columns:1fr}.intro{padding:4vh 7vw}.intro h1{font-size:62px;letter-spacing:-3px;margin:18px 0}.cover{display:none}.summary{font-size:13px}.lede{font-size:24px}.intro-bottom{margin-top:20px}.roomheading{top:90px;left:5%;padding:10px 14px;max-width:80%}.roomheading h2{font-size:19px}.roomheading p{font-size:9px}footer{padding:12px;justify-content:center;min-height:70px}.footnote,#position{display:none}.roomnav button{padding:10px 12px}.roomnav span{font-size:10px;margin-left:5px}#hint{bottom:213px;font-size:10px;width:230px}#controls{bottom:95px;right:5%}.turns{bottom:97px;left:5%}.turns span{display:none}dialog{padding:28px}.guide{grid-template-columns:1fr;gap:8px;margin:15px 0}.guide-icon{display:none}.guide h3{margin:8px 0}.guide p{margin:6px 0;font-size:12px}.guide br{line-height:1.6}dialog h2{font-size:28px;margin-bottom:10px}#cataloggrid{grid-template-columns:1fr 1fr;gap:12px}.viewerbar{height:105px;padding:12px;align-items:flex-start}.viewerbar h2{font-size:14px;max-width:45vw}.vieweractions{gap:3px}.vieweractions button{padding:8px}.viewerfoot{padding:8px}.viewerfoot span{display:none}#imagearea{height:calc(100% - 158px)}}

.cover img{inset:0;width:100%;height:100%;object-fit:cover;object-position:43% center}.wall-label{font-size:12px}

/* Gallery 2: real geometry and lighting, CSS rooms remain the fallback. */
#viewport.realistic{perspective:none;background:#eee7da}#viewport.realistic #camera{visibility:hidden}.gallery-canvas{position:absolute;inset:0;width:100%;height:100%;display:block;touch-action:none}#viewport:not(.realistic) .gallery-canvas{display:none}.roomheading{background:#f8f6efda;backdrop-filter:blur(8px);border-radius:0 6px 6px 0}.roomheading h2{font-size:21px}.roomheading p{line-height:1.6}header{background:linear-gradient(#f6f3ead9,transparent)}

.floor{background-color:#ae916e;background-image:radial-gradient(ellipse at 55% 25%,#fff1cc77,transparent 65%),url('assets/oak-floor.webp');background-size:100% 100%,435px 650px;box-shadow:inset 0 0 150px 20px #3d2c2050}
.wall{background-color:#e9e1d2;background-image:radial-gradient(ellipse at 30% 17%,#fff7dcf2 0%,#fff6dd77 22%,transparent 65%),radial-gradient(ellipse at 77% 18%,#fff7dcce 0%,transparent 60%),linear-gradient(0deg,#a69a832b,transparent 30%,#f6eddb22 65%,#55493733),url('assets/plaster.webp');background-size:100% 100%,100% 100%,100% 100%,300px 300px;box-shadow:inset 0 -8px 0 #bbb09d,inset 0 4px 0 #b5aa95}
.ceiling{background:linear-gradient(90deg,#dbd4c5,#f1eadb 42%,#e7dfcd);box-shadow:inset 0 0 80px #95877255}
.art{box-sizing:border-box;border:7px solid #99784e;border-top-color:#b3986c;border-left-color:#c1a57d;border-bottom-color:#795b39;border-right-color:#7d6240;padding:3px;background:#eee9dd;box-shadow:5px 9px 7px #30281726,12px 22px 30px #3028174a,0 0 2px 1px #8a7250;outline:1px solid #b29a76}
.art img{object-fit:contain;background:#fff}.wall-label{font-size:11px;letter-spacing:1.5px;color:#52614e}
.lighting-track{background:#45443b;box-shadow:0 4px 5px #0004}.spot-body{background:linear-gradient(90deg,#222821,#676b5b 55%,#32392d);border-radius:5px;box-shadow:0 4px 6px #0004}.spot-lens{background:#fff1c7;border:7px solid #41473b;border-radius:50%;box-shadow:0 2px 8px #ffdc8a88}
.bench-top{background:#a08158 url('assets/oak-floor.webp') center/300px 400px;border:1px solid #8b6b44}.bench-side,.bench-leg{background:linear-gradient(0deg,#795b3d,#b99b6c);border:1px solid #806441}.bench-shadow{background:radial-gradient(ellipse,#35271966 10%,#35271933 45%,transparent 70%);pointer-events:none}

/* 2.1: small screens, short landscape viewports and touch image zoom. */
#viewer[open]{display:flex;flex-direction:column}.viewerbar,.viewerfoot{flex-shrink:0}#imagearea{flex:1;min-height:0;height:auto}.vieweractions button{min-width:42px;min-height:42px}
@media(max-width:800px){
 header{height:66px;padding:10px 12px;gap:8px}.brand{letter-spacing:1px;flex-shrink:1}.brand span{font-size:10px}nav{gap:4px;flex-shrink:0}nav button{padding:9px 10px;min-height:42px}#full{font-size:20px;padding:7px 9px}#quality{display:none}
 .screen{padding-top:68px;overflow-y:auto;overscroll-behavior:contain;display:block}.intro{padding:24px 7vw 30px}.intro h1{font-size:clamp(42px,12vw,62px);line-height:1.03;margin:15px 0}.intro .lede{font-size:21px}.summary{font-size:12px;margin-bottom:20px}.intro-bottom{padding-top:18px;margin-top:12px}.primary{min-height:48px;padding:12px 18px}.textbutton{line-height:1.5}
 .roomheading{top:78px;left:12px;max-width:calc(100% - 24px);padding:9px 12px;pointer-events:none}.roomheading h2{font-size:17px;margin:5px 0}.roomheading>span{font-size:9px}.roomheading p{font-size:9px;margin:4px 0}.roomnav{width:100%;gap:3px;justify-content:center}.roomnav button{padding:11px 8px;min-height:44px;font-size:11px}.roomnav span{font-size:9px;margin-left:4px}footer{min-height:65px;padding:8px}
 #controls{bottom:88px;right:14px}#controls button,.turns button{width:46px;height:46px} .turns{left:14px;bottom:90px;gap:6px}#hint{bottom:199px;max-width:230px;padding:8px 12px}
 dialog{max-width:calc(100vw - 20px);max-height:calc(100dvh - 20px);padding:24px 20px;overflow-y:auto;overscroll-behavior:contain}#instructions .primary{margin-top:10px}.guide p{font-size:12px;line-height:1.6}#viewer{width:calc(100vw - 8px);max-width:calc(100vw - 8px);height:calc(100dvh - 8px);max-height:calc(100dvh - 8px);margin:auto}.viewerbar{height:auto;min-height:115px;flex-wrap:wrap;gap:8px;padding:12px}.viewerbar>div:first-child{width:100%;padding-right:30px}.viewerbar h2{max-width:none;font-size:13px;line-height:1.4;margin:4px 0}.vieweractions{width:100%;justify-content:center;gap:8px}.vieweractions .close{position:absolute;right:5px;top:5px;padding:7px}.viewerfoot{height:52px;padding:4px 8px}.viewerfoot button{min-height:44px}#cataloggrid{grid-template-columns:1fr;gap:15px}#catalog h2{font-size:25px}#catalog{padding-top:38px}#cataloggrid p{font-size:14px}
}
@media(max-height:500px) and (max-width:950px){
 .roomheading{top:70px;padding:6px 10px}.roomheading p{display:none}.roomheading h2{font-size:15px;margin:3px 0}.turns{bottom:75px}#controls{bottom:75px}#hint{display:none}#controls button,.turns button{height:39px;width:42px}footer{min-height:58px;padding:4px}.viewerbar{min-height:0;flex-wrap:nowrap}.viewerbar>div:first-child{width:auto;flex:1;padding:0}.vieweractions{width:auto;padding-right:35px}.vieweractions .close{top:9px}.viewerbar h2{font-size:12px}.viewerbar .eyebrow{font-size:8px}.viewerfoot{height:45px}#instructions{padding-top:32px}
}

/* 2.2: prevent long-press selection/callouts on touch controls. */
button,button *,#controls,.turns{-webkit-user-select:none;user-select:none;-webkit-touch-callout:none}button{touch-action:manipulation}[data-move],[data-move] *{touch-action:none}button:disabled{opacity:.55;cursor:wait}[data-move] svg{width:25px;height:25px;fill:none;stroke:currentColor;stroke-width:1.8;stroke-linecap:round;stroke-linejoin:round;pointer-events:none;display:block;margin:auto}[data-move="back"] svg{transform:rotate(180deg)}[data-move="left"] svg{transform:rotate(-90deg)}[data-move="right"] svg{transform:rotate(90deg)}[data-move="turnright"] svg{transform:scaleX(-1)}dialog:not([open]){display:none}dialog.dialog-fallback[open]{position:fixed;inset:10px;margin:auto;z-index:20;overflow:auto;outline:100vmax solid #10261fe0;max-height:calc(100vh - 20px)}dialog{max-height:90vh;max-height:90dvh}#viewer{height:96vh;height:96dvh}#largeimage{-webkit-user-select:none;-webkit-touch-callout:none}@media(pointer:coarse){.roomheading{backdrop-filter:none}dialog::backdrop{backdrop-filter:none}.art{box-shadow:0 4px 7px #1113}.floor{box-shadow:none}}
