/* Dimensional surfaces and restrained, accessible motion. */
:root{--motion-red:#e63840}.btn{position:relative;isolation:isolate;box-shadow:0 5px 0 #82161c,0 12px 24px #0002;transition:transform .22s,box-shadow .22s,background .22s;overflow:hidden}.btn:before{content:'';position:absolute;inset:0;z-index:-1;background:linear-gradient(115deg,transparent 20%,#fff3 48%,transparent 70%);transform:translateX(-130%);transition:transform .6s}.btn:hover:before{transform:translateX(130%)}.btn:hover{transform:translateY(-3px);box-shadow:0 8px 0 #82161c,0 16px 28px #0003}.btn:active{transform:translateY(3px);box-shadow:0 2px 0 #82161c}.btn.ghost{box-shadow:0 5px 0 #111,0 12px 24px #0002}header{box-shadow:0 8px 28px #0002}header img{transition:transform .3s}header a:hover img{transform:translateY(-2px)}nav>a:not(.btn){transition:color .2s}nav>a:hover{color:#ff7277}.hero,.page-hero,.hardware-hero,.about-hero{position:relative;isolation:isolate}.page-hero,.hardware-hero,.about-hero{background:radial-gradient(ellipse at 85% 40%,#4d2023 0,transparent 55%),#1d1e1e;overflow:hidden}.page-hero:after,.hardware-hero:after,.about-hero:after{content:'';position:absolute;z-index:-1;width:290px;height:290px;right:9%;top:16%;border:1px solid #e6384033;box-shadow:28px 28px 0 -1px #1d1e1e,28px 28px 0 0 #e6384022,56px 56px 0 -1px #1d1e1e,56px 56px 0 0 #e6384018;transform:perspective(600px) rotateY(-30deg) rotateZ(-8deg);animation:frame-drift 9s ease-in-out infinite alternate;pointer-events:none}.product,.review-card,.gallery figure,.door-chart{transform:perspective(950px) rotateX(var(--tilt-x,0deg)) rotateY(var(--tilt-y,0deg)) translateY(var(--lift,0px));transition:transform .28s ease,box-shadow .28s ease;transform-style:preserve-3d;will-change:auto}.product:hover,.review-card:hover,.gallery figure:hover,.door-chart:hover{--lift:-6px;box-shadow:10px 18px 30px #0002}.product-art{box-shadow:inset 0 0 40px #0000000b}.mini-door{transition:transform .65s;transform-origin:left center;transform-style:preserve-3d}.product:hover .mini-door{transform:perspective(650px) rotateY(-16deg)}.frame:hover .mini-door{transform:none}.gallery img{transition:transform .45s}.gallery figure:hover img{transform:translateZ(15px) scale(1.025)}.service-cards article{transition:transform .3s,box-shadow .3s;padding:22px 16px}.service-cards article:hover{transform:translateY(-5px);box-shadow:0 15px 25px #0000000c}.motion-reveal{opacity:0;translate:0 24px;transition:opacity .7s ease,translate .7s cubic-bezier(.2,.7,.3,1);transition-delay:var(--reveal-delay,0ms)}.motion-reveal.is-visible{opacity:1;translate:0 0}.scene{background:radial-gradient(ellipse at 50% 30%,#858a86,#393d3a 75%);perspective:1100px}.door-set{transform-style:preserve-3d;transform:rotateY(-12deg) rotateX(2deg);transition:transform .9s cubic-bezier(.2,.7,.3,1);animation:door-arrive 1.4s both}.door-set:before{content:'';position:absolute;inset:8px;background:radial-gradient(ellipse at center,#eddbaf,#bd9b6a 50%,#2e2821);box-shadow:inset 0 0 55px #000b;transform:translateZ(-12px)}.door{transform-style:preserve-3d;transform-origin:left center;transition:transform 1.3s cubic-bezier(.22,.65,.25,1),filter 1.3s;backface-visibility:visible}.door+.door{transform-origin:right center}.scene.is-open .door:first-child{transform:rotateY(-53deg);filter:brightness(.85)}.scene.is-open .door+.door{transform:rotateY(53deg);filter:brightness(.92)}.scene.is-open .door-set{transform:rotateY(-6deg) rotateX(1deg)}.door-control{position:absolute;z-index:4;bottom:72px;left:30px;background:#171819e8;color:#fff;border:1px solid #ffffff80;padding:12px 18px;font-size:11px;font-weight:bold;letter-spacing:1px;cursor:pointer;box-shadow:0 5px 15px #0004}.door-control:hover{background:#b51f27}.door-control:focus-visible{outline:3px solid #fff;outline-offset:4px}.scene-label{font-size:8px}.scene-top{animation:soft-light 5s ease-in-out infinite alternate}.step{transition:padding-left .3s,border-color .3s}.step:hover{padding-left:10px;border-color:#e63840}.review-stars{filter:drop-shadow(0 2px 1px #b878001f)}@keyframes frame-drift{to{transform:perspective(600px) rotateY(-18deg) rotateZ(-3deg) translateY(-15px)}}@keyframes soft-light{to{opacity:.55}}@keyframes door-arrive{from{opacity:0;transform:translateY(30px) rotateY(-25deg)}to{opacity:1;transform:translateY(0) rotateY(-12deg) rotateX(2deg)}}@media(max-width:800px){.page-hero:after,.hardware-hero:after,.about-hero:after{right:-160px;opacity:.45}.door-control{bottom:65px;left:20px}.scene-label{left:20px;font-size:7px}.motion-reveal{translate:0 15px}}@media(prefers-reduced-motion:reduce){*,*:before,*:after{animation:none!important;transition:none!important;scroll-behavior:auto!important}.motion-reveal{opacity:1;translate:none}.product,.review-card,.gallery figure,.door-chart{transform:none}.product:hover .mini-door{transform:none}.btn:hover,.btn:active{transform:none}.scene.is-open .door:first-child{transform:rotateY(-40deg)}.scene.is-open .door+.door{transform:rotateY(40deg)}}

/* Reveal the actual Custom Doors building through the open doorway. */
.door-set:before{background: url("custom-doors-entrance-crop.png") center center / 100% 100% no-repeat,linear-gradient(180deg,#202626,#434a48 50%,#202626);box-shadow:inset 0 0 18px #0005}.scene.is-open .door:first-child{transform:rotateY(-82deg)}.scene.is-open .door+.door{transform:rotateY(82deg)}

/* Finished hollow-metal surround: continuous jambs, head, stops and sill. */
.door-set{padding:12px 10px 8px;border:16px solid #72797c;border-top-width:20px;border-bottom-width:12px;border-image:linear-gradient(125deg,#e2e5e5 0%,#a3abad 18%,#677074 42%,#a8b0b2 61%,#444d51 100%) 1;background:linear-gradient(90deg,#171e22 0%,#424c51 3%,#171d20 6%,#151b1e 94%,#687478 98%,#20282d 100%);box-shadow:0 0 0 2px #323b3e,0 0 0 5px #909797,0 0 0 7px #343c3e,4px 5px 0 8px #0003,20px 25px 28px #0006,inset 0 0 0 2px #b4bec1,inset 5px 6px 9px #000b}
.door-set:before{inset:12px 10px 8px;box-shadow:inset 0 5px 12px #0006;transform:translateZ(-8px)}
.door-set:after{content:'';position:absolute;left:-16px;right:-16px;bottom:-13px;height:17px;background:linear-gradient(180deg,#dbe0e1 0%,#869297 20%,#465258 30%,#b7c1c4 42%,#8d999e 64%,#3f4b51 72%,#66747a 100%);border:1px solid #3e484d;box-shadow:0 4px 0 #252e32,0 8px 8px #0005;transform:translateZ(8px);pointer-events:none}
.door-set>.door{box-shadow:inset 0 1px 1px #ed7f8055,inset 0 0 8px #0004,0 0 0 1px #1b1112}
@media(max-width:800px){.door-set{border-width:12px;border-top-width:16px;border-bottom-width:10px;padding:9px 7px 6px;box-shadow:0 0 0 2px #323b3e,0 0 0 4px #909797,0 0 0 6px #343c3e,14px 20px 22px #0006,inset 0 0 0 2px #b4bec1,inset 4px 5px 7px #000b}.door-set:before{inset:9px 7px 6px}.door-set:after{left:-12px;right:-12px;bottom:-11px;height:14px}}

/* Keep the building photograph fully concealed behind closed door leaves.
   Explicit visibility avoids showing the recessed 3D layer at the frame edges. */
.scene .door-set:before{opacity:0;visibility:hidden;pointer-events:none;transition:opacity .18s ease,visibility 0s .18s}
.scene.is-open .door-set:before{opacity:1;visibility:visible;transition:opacity .18s ease,visibility 0s}
.scene .door-set>.door{flex:1 1 0;min-width:0}
