/* The lightweight opening atmosphere renders before the 3D module arrives. */
.coming-loading{display:none}
.coming-boot .coming-loading{display:grid;place-items:center;position:fixed;inset:0;z-index:100;background:radial-gradient(ellipse at 50% 70%,#534633 0%,#202a2a 28%,#0b141b 65%);overflow:hidden;pointer-events:none;opacity:1;visibility:visible;transition:opacity .85s ease,visibility 0s .85s}
.coming-boot body.scene-ready .coming-loading,.coming-boot body.scene-failed .coming-loading{opacity:0;visibility:hidden}
.coming-loading-copy{position:relative;z-index:2;text-align:center;width:min(440px,72vw);padding-bottom:3vh;color:#ddcca7}
.coming-loading-copy img{display:block;width:100%;height:auto;filter:drop-shadow(0 8px 28px #0008)}
.coming-loading-copy span{display:block;margin-top:30px;font:500 12px/1.5 var(--sans,sans-serif);letter-spacing:.15em;text-transform:uppercase}
.coming-loading-copy i{display:block;width:5px;height:5px;margin:24px auto 0;background:#e6c994;border-radius:50%;box-shadow:0 0 16px 5px #dcb77755;animation:gate-ember 2.8s ease-in-out infinite}
.coming-loading-arch{position:absolute;width:min(520px,84vw);height:78%;top:22%;border:1px solid #d4b67932;border-radius:50% 50% 0 0;box-shadow:inset 0 0 70px #ccb07c0c,0 0 90px #ccb07c08;transform:perspective(800px) rotateX(8deg)}
.coming-loading-mist{position:absolute;inset:-20%;background:radial-gradient(ellipse at 25% 70%,#c9d2c92e,transparent 40%),radial-gradient(ellipse at 80% 60%,#a9bdc332,transparent 36%),radial-gradient(ellipse at 50% 100%,#dbc59b30,transparent 45%);animation:gate-mist 9s ease-in-out infinite alternate}
.coming-loading-mist:after{content:'';position:absolute;inset:0;background:radial-gradient(circle at 30% 65%,#e4d0a5 0 1px,transparent 2px),radial-gradient(circle at 67% 38%,#d5bd8e 0 1px,transparent 2px),radial-gradient(circle at 56% 78%,#d5bd8e 0 1px,transparent 2px),radial-gradient(circle at 41% 24%,#d5bd8e 0 1px,transparent 2px);opacity:.6;animation:gate-dust 7s ease-in-out infinite alternate}
@keyframes gate-mist{from{transform:translate(-4%,3%) scale(1)}to{transform:translate(5%,-3%) scale(1.12)}}
@keyframes gate-dust{to{transform:translate(12px,-35px);opacity:.3}}
@keyframes gate-ember{50%{opacity:.35;transform:scale(.7)}}
@media(prefers-reduced-motion:reduce){.coming-loading *,.coming-loading *:after{animation:none!important}.coming-boot .coming-loading{transition:opacity .15s,visibility 0s .15s}}
@media(max-width:700px){.coming-brand .coming-seal{display:none}.coming-brand{top:max(48px,9svh);width:min(280px,74vw)}.coming-announcement{margin-top:20px}.coming-page{min-height:560px}.coming-stone-control{bottom:max(28px,env(safe-area-inset-bottom));}.coming-close .coming-brand{top:max(28px,env(safe-area-inset-top))}.coming-story{top:135px;max-height:calc(100svh - 165px)}.coming-loading-copy span{font-size:10px;margin-top:24px}}
@media(max-height:500px) and (orientation:landscape){.coming-page{min-height:360px}.coming-brand{top:28px;width:200px}.coming-brand .coming-seal{display:none}.coming-announcement{font-size:12px;margin-top:12px}.coming-stone-control{bottom:22px}.coming-stone-control>button{min-height:54px;padding:12px 24px;font-size:22px}.coming-socials a{min-height:44px;padding:10px}.coming-close .coming-brand{top:20px;width:150px}.coming-story{top:90px;max-height:calc(100svh - 110px)}}
/* Carved action plaques share the teaser's border geometry and exterior silk. */
.action-silk-frame{position:relative;display:inline-flex;max-width:100%;vertical-align:middle}
.action-silk{position:absolute;inset:0;width:100%;height:100%;overflow:visible;pointer-events:none;z-index:4;fill:none;stroke:#d9c59c;stroke-width:.65;stroke-linecap:round;opacity:.72}
.hp-intro-actions .hp-primary,.hp-yard-controls [data-home-yard]{position:relative;isolation:isolate;border:0;border-radius:0;clip-path:polygon(14px 0,calc(100% - 14px) 0,100% 14px,100% calc(100% - 14px),calc(100% - 14px) 100%,14px 100%,0 calc(100% - 14px),0 14px);background:#b89c64;padding:20px 28px;min-height:64px;gap:24px;transition:background .25s,color .25s;transform:none!important}
.hp-intro-actions .hp-primary:before,.hp-yard-controls [data-home-yard]:before{content:'';display:block;position:absolute;inset:1px;padding:0;z-index:-1;background:#e6d5b2;clip-path:inherit;mask:none;animation:none;transition:background .25s}
.hp-intro-actions .hp-primary:after,.hp-yard-controls [data-home-yard]:after{display:none}
.hp-yard-controls [data-home-yard]:before{background:#142126}
.hp-yard-controls [data-home-yard]{font:20px var(--serif);color:#eee2ca}
.hp-intro-actions .hp-primary:hover:before{background:#f4e6c8}
.hp-yard-controls [data-home-yard]:hover:before{background:#2a3738}
.hp-intro-actions .hp-primary:focus-visible,.hp-yard-controls [data-home-yard]:focus-visible{background:#fff4d0;outline:none}
.hp-intro-actions .hp-primary:focus-visible:before,.hp-yard-controls [data-home-yard]:focus-visible:before{inset:3px}
.hp-yard-controls .yard-3d{color:#dcc18a}
@media(max-width:760px){.hp-intro-actions{flex-wrap:wrap;gap:22px}.hp-intro-actions .hp-primary,.hp-yard-controls [data-home-yard]{min-height:56px;padding:16px 22px}.hp-yard-controls [data-home-yard]{font-size:17px}.home-yard-preview{height:150px}.hp-yard-controls{overflow:visible}}
@media(prefers-reduced-motion:reduce){.hp-intro-actions .hp-primary:before,.hp-yard-controls [data-home-yard]:before{transition:none}}
/* The teaser is a viewport, not a document: touch belongs to the camera. */
html:has(body[data-view=coming]){overflow:hidden;overscroll-behavior:none}
body[data-view=coming]{position:fixed;inset:0;width:100%;height:100%;height:100dvh;overflow:hidden;overscroll-behavior:none}
body[data-view=coming] #main,body[data-view=coming] .coming-page{height:100%;min-height:0}
body[data-view=coming] #environment{height:100%;touch-action:none}
body[data-view=coming] .coming-story{overflow-y:auto;overscroll-behavior:contain;touch-action:pan-y;-webkit-overflow-scrolling:touch;max-height:calc(100dvh - 165px)}
.coming-gesture{position:absolute;bottom:calc(100% + 22px);left:0;right:0;text-align:center;font:12px/1.5 var(--sans);letter-spacing:.02em;color:#e4d8bc;text-shadow:0 2px 5px #000;opacity:0;transition:opacity .4s;pointer-events:none}
.scene-ready .coming-gesture{opacity:1}
.coming-loading:before{content:'';position:absolute;inset:0;background:url('/assets/coming-poster.jpg') center/cover no-repeat;opacity:.58}
.coming-loading-copy{padding:36px 0;background:radial-gradient(ellipse,#0b141be6,transparent 72%)}
.coming-loading-track{width:140px;height:2px;margin:24px auto 0;background:#ccb07726;overflow:hidden}
.coming-loading-track b{display:block;width:45%;height:100%;background:linear-gradient(90deg,transparent,#ead4a7,transparent);animation:gate-track 2.3s ease-in-out infinite}
@keyframes gate-track{from{transform:translateX(-110%)}to{transform:translateX(335%)}}
@media(max-width:700px){.coming-brand{top:max(28px,7dvh);width:min(270px,70vw)}.coming-stone-control{bottom:max(24px,calc(env(safe-area-inset-bottom) + 14px))}.coming-announcement{font-size:13px;margin-top:18px}.coming-loading-arch{height:76%;top:24%}}
@media(max-height:640px){body[data-view=coming] .coming-brand{top:22px;width:210px}.coming-brand .coming-seal{display:none}.coming-announcement{margin-top:12px}.coming-stone-control{gap:12px;bottom:max(18px,env(safe-area-inset-bottom))}.coming-stone-control>button{min-height:54px;padding:13px 22px;font-size:21px}.coming-socials a{min-height:44px;padding:10px}.coming-gesture{bottom:calc(100% + 14px);font-size:11px}}
@media(max-height:450px) and (orientation:landscape){body[data-view=coming] .coming-brand{left:25%;top:24%;width:210px}.coming-stone-control{left:73%;width:300px;min-width:0;bottom:48px}.coming-close .coming-brand{display:none}.coming-story{top:24px;left:auto;right:30px;width:min(440px,80vw);max-height:calc(100dvh - 48px)!important}}
@media(prefers-reduced-motion:reduce){.coming-loading-track b{animation:none;transform:translateX(65%)}.coming-gesture{transition:none}}
/* Keep the complete action group above Safari's expanded browser controls. */
@media(max-width:700px),(max-height:450px) and (orientation:landscape){
 body[data-view=coming]{height:var(--coming-visible-height,100svh)}
 .coming-stone-control{width:min(310px,calc(100% - 56px));gap:10px;bottom:max(64px,calc(env(safe-area-inset-bottom) + 40px))}
 .coming-stone-control>button{min-width:0;min-height:54px;padding:13px 22px;font-size:21px;gap:20px}
 .coming-stone-control>button svg{width:22px;height:22px}
 .coming-socials{gap:12px}
 .coming-socials a{min-height:44px;padding:10px 9px;font-size:12px;gap:7px}
 .coming-socials svg{width:16px;height:16px}
 .coming-gesture{bottom:calc(100% + 18px);font-size:11px}
}
@media(max-height:560px){.coming-stone-control{bottom:max(40px,calc(env(safe-area-inset-bottom) + 24px))}}
@media(max-height:450px) and (orientation:landscape){.coming-stone-control{width:280px;bottom:max(38px,env(safe-area-inset-bottom))}}
/* Give the longer brand label its own space beside the fixed-size arrow. */
.coming-stone-control{min-width:390px}
.coming-stone-control>button{gap:22px;padding-inline:28px}
.coming-stone-control>button [data-approach-label]{white-space:nowrap;min-width:0}
.coming-stone-control>button svg{flex:0 0 22px;width:22px;height:22px}
@media(max-width:700px),(max-height:450px) and (orientation:landscape){
 .coming-stone-control{min-width:0;width:min(344px,calc(100% - 48px))}
 .coming-stone-control>button{padding:15px 20px;gap:14px;font-size:clamp(17px,4.8vw,21px);min-height:56px;line-height:1.2}
 .coming-stone-control>button svg{flex-basis:20px;width:20px;height:20px}
}
@media(max-height:450px) and (orientation:landscape){.coming-stone-control{width:300px}.coming-stone-control>button{font-size:18px}}
/* The complete brand lockup stays proportional in every placement. */
.brand .brand-wordmark{width:190px;height:auto;max-height:64px;object-fit:contain}
.footer-identity .brand-wordmark{height:auto;max-height:86px;object-fit:contain}
.coming-brand{width:min(400px,62vw)}
.coming-brand img:not(.coming-seal){height:auto}
.coming-stone-control>button{font-size:23px}
@media(max-width:700px){.brand .brand-wordmark{width:126px;max-height:48px}.coming-brand{width:min(245px,66vw);top:max(22px,5dvh)}.coming-announcement{margin-top:12px}.coming-stone-control>button{font-size:clamp(16px,4.65vw,20px);gap:12px;padding-inline:18px}.coming-close .coming-brand{width:170px;top:20px}.coming-story{top:140px}}
@media(max-height:560px){body[data-view=coming] .coming-brand{width:180px;top:14px}.coming-announcement{font-size:11px;margin-top:8px}}
