/* Purpose: quiet, responsive interface for the Hyskov first-person walkthrough.
   Usage: linked from index.html. Version 1.0.0 / 2026-09-06.
   Version 1.1.0: persistent, touch-sized rendering mode selector.
   Version 1.2.0: non-intercepting native Cycles frame and refinement status.
   Version 1.3.0: measured startup loader and complete-download status. */
:root{font-family:Inter,-apple-system,BlinkMacSystemFont,"Segoe UI",sans-serif;color:#25342d;background:#dce4e2;font-synthesis:none}
.cycles-frame{position:absolute;inset:0;width:100%;height:100%;object-fit:fill;pointer-events:none}.cycles-status{position:fixed;right:28px;bottom:32px;padding:9px 14px;background:#f7f5edef;color:#304437;border-radius:20px;font-size:11px;pointer-events:none;box-shadow:0 2px 15px #0001}@media(max-width:700px){.cycles-status{right:16px;bottom:94px;font-size:10px}}
.view-mode{display:flex;gap:3px;padding:4px;background:#f7f5edf5;border:1px solid #ffffffb3;border-radius:30px;box-shadow:0 3px 22px #17241d14;backdrop-filter:blur(16px)}.view-mode a{display:flex;align-items:center;justify-content:center;min-width:86px;min-height:44px;padding:0 16px;border-radius:24px;text-decoration:none;color:#33483b;font-size:12px;font-weight:600;white-space:nowrap;transition:background .15s,color .15s}.view-mode a:hover{background:#e3e9df}.view-mode a[aria-current="page"]{background:#273d31;color:#fff;box-shadow:0 1px 4px #17241d1a}
@media(max-width:700px){body .topbar{flex-wrap:wrap;gap:10px}body .top-actions{margin-left:auto}body .map-panel{top:148px}.view-mode a{min-width:79px;padding:0 12px}}
*{box-sizing:border-box}body{margin:0;overflow:hidden}button,a{-webkit-tap-highlight-color:transparent}button{font:inherit;cursor:pointer;border:0}button:disabled{cursor:wait;opacity:.65}button:focus-visible,a:focus-visible{outline:3px solid #b49b5e;outline-offset:5px}[hidden]{display:none!important}
#viewport{position:fixed;inset:0}#viewport canvas{display:block;width:100%;height:100%;touch-action:none}.topbar{position:fixed;left:32px;right:32px;top:26px;display:flex;align-items:center;justify-content:space-between;gap:20px;pointer-events:none}.brand,.top-actions{pointer-events:auto}.brand{display:flex;gap:12px;text-decoration:none;color:inherit;align-items:center;font-size:12px;font-weight:700;letter-spacing:.21em;background:#f5f3eae8;padding:12px 18px 12px 12px;border-radius:14px;box-shadow:0 3px 22px #17241d0a;backdrop-filter:blur(16px)}.brand-mark{display:grid;place-items:center;width:39px;height:39px;background:#293e31;color:#f5f0e6;border-radius:8px;font:25px Georgia,serif;letter-spacing:0}.brand small{display:block;font-size:10px;font-weight:450;letter-spacing:.02em;margin-top:6px;color:#6b736c}.top-actions{display:flex;gap:10px;align-items:center}.top-actions>span{background:#f5f3eade;padding:13px 17px;border-radius:24px;font-size:12px;backdrop-filter:blur(16px)}.top-actions button{display:flex;gap:27px;align-items:center;background:#273d31;color:#fff;border-radius:24px;padding:13px 20px;font-size:12px}.top-actions button span{font-size:18px}
.welcome{position:fixed;top:50%;left:7vw;transform:translateY(-43%);background:#f7f5edf2;backdrop-filter:blur(22px);width:min(465px,86vw);padding:38px 40px 28px;border-radius:22px;box-shadow:0 16px 90px #182c1929}.eyebrow{font-size:10px;letter-spacing:.22em;color:#6c7a6d;font-weight:650}h1{font:normal 54px/1.07 Georgia,"Times New Roman",serif;letter-spacing:-.04em;margin:22px 0 20px}.welcome>p{font-size:14px;line-height:1.7;color:#6c746c;margin:0 0 24px}.primary{width:100%;padding:18px 21px;border-radius:11px;background:#2d4637;color:#fff;display:flex;justify-content:space-between;font-size:14px;text-align:left}.primary span{font-size:19px}.progress{height:2px;background:#dfe2d8;margin-top:13px;overflow:hidden}.progress i{display:block;width:0;height:100%;background:#759475;transition:width .3s}.welcome .load-status{font-size:11px;margin:9px 0 20px;min-height:18px}.quick-help{display:flex;justify-content:space-between;font-size:9px;color:#788078;gap:10px;border-top:1px solid #dcdfd5;padding-top:19px}.quick-help span{display:flex;flex-direction:column;gap:7px}.quick-help b{font-size:10px;color:#415446;letter-spacing:.1em}.fidelity{display:block;margin-top:21px;font-size:10px;line-height:1.6;color:#899086}
.places{position:fixed;bottom:27px;left:50%;transform:translateX(-50%);display:flex;align-items:center;background:#f8f7eff0;backdrop-filter:blur(16px);border-radius:40px;padding:6px;box-shadow:0 4px 30px #182b1920}.places button{background:transparent;padding:12px 22px;border-radius:26px;color:#415448;font-size:12px}.places button.active{background:#e1e8dd}.places span{width:1px;height:16px;background:#d8dfd5}.walking-help{position:fixed;bottom:34px;left:32px;font-size:11px;color:#f5f4ed;text-shadow:0 1px 4px #000}.resume{position:fixed;left:50%;top:50%;transform:translate(-50%,-50%);background:#f8f6edef;padding:20px 28px;border-radius:13px;box-shadow:0 10px 40px #0002;color:#233b2c}#crosshair{position:fixed;top:50%;left:50%;width:5px;height:5px;transform:translate(-50%,-50%);border:1px solid #fff9;border-radius:50%;box-shadow:0 0 2px #0007;pointer-events:none}
.map-panel{position:fixed;right:32px;top:108px;width:min(390px,90vw);background:#f7f5eef5;backdrop-filter:blur(20px);border-radius:17px;padding:20px;box-shadow:0 10px 50px #17281925}.map-head{display:flex;justify-content:space-between;align-items:center;font-size:13px}.map-head button{font-size:26px;background:transparent;color:#657366;padding:0 4px}#minimap{width:100%;height:auto}.room-links{display:flex;flex-wrap:wrap;gap:6px}.room-links button{font-size:10px;background:#e8ece3;color:#4b5e4f;padding:8px 10px;border-radius:16px}.error{position:fixed;left:50%;bottom:100px;transform:translateX(-50%);width:min(550px,90vw);background:#fff1e8;color:#7a3e29;border-radius:14px;padding:20px;font-size:14px}.touch-controls{position:fixed;left:20px;bottom:30px;text-align:center}.touch-controls button{width:44px;height:44px;border-radius:13px;margin:2px;background:#f7f5edd9;color:#2d4535;font-size:22px;touch-action:none}
@media(max-width:700px){.topbar{left:16px;right:16px;top:16px}.brand{padding:8px 11px 8px 8px;gap:9px}.brand small{font-size:8px}.brand-mark{width:32px;height:32px}.top-actions>span{display:none}.top-actions button{padding:12px 15px;gap:8px}.welcome{left:7vw;padding:30px;transform:translateY(-42%)}h1{font-size:45px}.walking-help{display:none}.map-panel{right:5vw;top:92px}.places{bottom:20px}.places button{padding:11px 17px}.touch-controls~.error{bottom:150px}body.touch .places{left:auto;right:18px;transform:none;flex-direction:column;border-radius:20px}body.touch .places span{display:none}}

/* Version 1.1.0: quiet whole-property download progress, independent of GPU residency. */
.download-status{position:fixed;left:24px;bottom:58px;padding:7px 12px;border-radius:20px;background:#eeece4e8;color:#253b2e;font-size:11px;pointer-events:none}
@media(max-width:650px){.download-status{left:12px;bottom:90px;font-size:10px}}

/* Startup animation does not stand in for measured progress. */
.loader-caption{display:flex;align-items:center;justify-content:center;gap:10px;margin-top:14px;font-size:12px;color:#43574a}
.loader-spinner{width:15px;height:15px;border:2px solid #253b2e30;border-top-color:#253b2e;border-radius:50%;animation:loader-turn .8s linear infinite}
@keyframes loader-turn{to{transform:rotate(360deg)}}
@media(prefers-reduced-motion:reduce){.loader-spinner{animation:none}}
