/* ---- v19-spice.css ---- */
/* KR STONES V19 — high-motion premium layer for non-detail pages only */
:root{--v19-ink:#10231d;--v19-cream:#f7f1e7;--v19-gold:#d9a85f;--v19-amber:#f1c881;--v19-deep:#0c1c17;--v19-leaf:#234d3d;--v19-rust:#a95e3c;--v19-white:#fff;--v19-shadow:0 24px 70px rgba(12,28,23,.18)}
body.v19-page{overflow-x:hidden;background:linear-gradient(180deg,#f7f1e7 0%,#fffaf2 38%,#f4efe6 100%)}
body.v19-page main{position:relative;isolation:isolate}
body.v19-page main>*{position:relative;z-index:2}
.v19-scene{position:fixed;inset:0;z-index:-1;overflow:hidden;pointer-events:none;opacity:.9}
.v19-scene:before{content:"";position:absolute;inset:-20%;background:radial-gradient(circle at 12% 12%,rgba(217,168,95,.18),transparent 28%),radial-gradient(circle at 88% 25%,rgba(35,77,61,.12),transparent 28%),radial-gradient(circle at 62% 92%,rgba(169,94,60,.1),transparent 30%);animation:v19Aura 16s ease-in-out infinite alternate}
.v19-orb{position:absolute;border:1px solid rgba(217,168,95,.25);border-radius:50%;box-shadow:inset 0 0 50px rgba(217,168,95,.08);animation:v19Float var(--dur,12s) ease-in-out infinite alternate, v19Spin calc(var(--dur,12s)*2) linear infinite}
.v19-orb:nth-child(1){width:240px;height:240px;left:-80px;top:18%;--dur:14s}.v19-orb:nth-child(2){width:130px;height:130px;right:5%;top:12%;--dur:10s}.v19-orb:nth-child(3){width:320px;height:320px;right:-140px;top:54%;--dur:18s}.v19-orb:nth-child(4){width:90px;height:90px;left:9%;top:72%;--dur:9s}
@keyframes v19Aura{to{transform:translate3d(2%,3%,0) scale(1.05)}}@keyframes v19Float{to{transform:translate3d(22px,-22px,0)}}@keyframes v19Spin{to{rotate:360deg}}
.v19-progress{position:fixed;left:0;top:0;height:3px;width:100%;z-index:9999;transform-origin:left;transform:scaleX(0);background:linear-gradient(90deg,var(--v19-gold),var(--v19-rust),var(--v19-leaf));box-shadow:0 0 18px rgba(217,168,95,.6)}
.v19-page .site-header{backdrop-filter:saturate(145%) blur(16px);box-shadow:0 12px 40px rgba(12,28,23,.08)}
.v19-page .site-header:after{content:"";position:absolute;left:0;right:0;bottom:0;height:1px;background:linear-gradient(90deg,transparent,rgba(217,168,95,.8),transparent);animation:v19HeaderLine 5s ease-in-out infinite}
@keyframes v19HeaderLine{0%,100%{transform:scaleX(.2);opacity:.3}50%{transform:scaleX(1);opacity:1}}
.v19-page .pageHero,.v19-page .approved-hero{overflow:hidden}
.v19-page .pageHero{padding-top:clamp(78px,10vw,150px);padding-bottom:clamp(64px,8vw,120px)}
.v19-page .pageHero:before{content:"";position:absolute;z-index:-1;width:380px;height:380px;border-radius:44% 56% 55% 45%;right:-90px;top:-80px;background:linear-gradient(145deg,rgba(217,168,95,.22),rgba(35,77,61,.06));animation:v19Morph 10s ease-in-out infinite alternate}
@keyframes v19Morph{to{border-radius:58% 42% 38% 62%;transform:rotate(14deg) scale(1.06)}}
.v19-page h1,.v19-page h2,.v19-page h3,.v19-page p,.v19-page small,.v19-page a,.v19-page label,.v19-page strong,.v19-page b{position:relative;z-index:2}
.v19-page .pageHero h1,.v19-home .heroCopy h1{color:#10231d;text-wrap:balance;text-shadow:none}
.v19-home .heroCopy h1,.v19-home .heroCopy p,.v19-home .heroCopy small,.v19-home .hero-points span{color:white;text-shadow:0 2px 18px rgba(0,0,0,.55)}
.v19-word{display:inline-block;will-change:transform,opacity;animation:v19WordIn .82s cubic-bezier(.2,.8,.2,1) both;animation-delay:calc(var(--i)*45ms)}
@keyframes v19WordIn{from{opacity:0;transform:translateY(30px) rotateX(45deg);filter:blur(8px)}to{opacity:1;transform:none;filter:none}}
.v19-reveal{opacity:0;transform:translateY(36px) scale(.985);filter:blur(6px);transition:opacity .85s ease,transform .95s cubic-bezier(.16,1,.3,1),filter .85s ease}
.v19-reveal.is-in{opacity:1;transform:none;filter:none}
.v19-reveal[data-v19-delay="1"]{transition-delay:.08s}.v19-reveal[data-v19-delay="2"]{transition-delay:.16s}.v19-reveal[data-v19-delay="3"]{transition-delay:.24s}.v19-reveal[data-v19-delay="4"]{transition-delay:.32s}
.v19-page .btn,.v19-page .quote,.v19-page .textlink{transition:transform .25s ease,box-shadow .25s ease,background .25s ease,color .25s ease;will-change:transform}
.v19-page .btn.primary,.v19-page .quote{position:relative;overflow:hidden;box-shadow:0 14px 34px rgba(35,77,61,.22)}
.v19-page .btn.primary:after,.v19-page .quote:after{content:"";position:absolute;inset:-50% auto -50% -35%;width:30%;background:linear-gradient(90deg,transparent,rgba(255,255,255,.65),transparent);transform:skewX(-20deg);animation:v19Shimmer 3.6s ease-in-out infinite}
@keyframes v19Shimmer{0%,60%{left:-45%}100%{left:130%}}
.v19-kinetic-marquee{overflow:hidden;background:#10231d;color:#fff;border-top:1px solid rgba(217,168,95,.35);border-bottom:1px solid rgba(217,168,95,.35)}
.v19-kinetic-marquee .track{display:flex;width:max-content;gap:34px;padding:13px 0;animation:v19Marquee 25s linear infinite}
.v19-kinetic-marquee span{font-size:12px;letter-spacing:.18em;text-transform:uppercase;white-space:nowrap;color:#fff}.v19-kinetic-marquee i{color:#d9a85f;font-style:normal}
@keyframes v19Marquee{to{transform:translateX(-50%)}}
/* HOME — kinetic atelier */
.v19-home .approved-hero{min-height:82vh;display:grid;align-items:end}
.v19-home .heroMedia img{animation:v19HeroZoom 16s ease-in-out infinite alternate;transform-origin:65% 45%}
@keyframes v19HeroZoom{to{transform:scale(1.09) translate3d(-1.5%,1%,0)}}
.v19-home .heroCopy{padding-bottom:clamp(55px,8vw,110px)}
.v19-home .heroCopy:before{content:"";position:absolute;left:-28px;top:-22px;width:70px;height:70px;border-left:2px solid #d9a85f;border-top:2px solid #d9a85f;animation:v19Corner 3s ease-in-out infinite alternate}
@keyframes v19Corner{to{width:105px;height:105px}}
.v19-home .v19-material-orbit{position:absolute;right:5vw;top:22%;z-index:4;width:220px;height:220px;border:1px solid rgba(255,255,255,.26);border-radius:50%;animation:v19OrbitRotate 18s linear infinite;pointer-events:none}
.v19-home .v19-material-orbit:before,.v19-home .v19-material-orbit:after{content:"";position:absolute;border:1px dashed rgba(217,168,95,.65);border-radius:50%;inset:24px}.v19-home .v19-material-orbit:after{inset:58px;border-style:solid}
.v19-home .v19-material-orbit span{position:absolute;background:rgba(10,28,22,.82);color:white;border:1px solid rgba(217,168,95,.55);padding:8px 12px;border-radius:999px;font-size:10px;letter-spacing:.12em;text-transform:uppercase;backdrop-filter:blur(10px)}
.v19-home .v19-material-orbit span:nth-child(1){left:50%;top:-16px;transform:translateX(-50%)}.v19-home .v19-material-orbit span:nth-child(2){right:-52px;top:50%}.v19-home .v19-material-orbit span:nth-child(3){left:50%;bottom:-16px;transform:translateX(-50%)}.v19-home .v19-material-orbit span:nth-child(4){left:-52px;top:50%}
@keyframes v19OrbitRotate{to{rotate:360deg}}
.v19-home .feature-strip article{position:relative;overflow:hidden;transform-origin:center;transition:transform .45s cubic-bezier(.16,1,.3,1),box-shadow .45s ease}.v19-home .feature-strip article:hover{transform:translateY(-8px) rotate(-.5deg);box-shadow:var(--v19-shadow)}.v19-home .feature-strip article:after{content:"";position:absolute;inset:auto -20% -55% 20%;height:100%;background:radial-gradient(circle,rgba(255,255,255,.45),transparent 68%);animation:v19CardGlow 5s ease-in-out infinite alternate;pointer-events:none}
@keyframes v19CardGlow{to{transform:translate(-25%,-15%)}}
.v19-home .productMini{transition:transform .5s cubic-bezier(.16,1,.3,1),box-shadow .45s ease}.v19-home .productMini:hover{transform:translateY(-12px) rotate(.7deg);box-shadow:0 28px 60px rgba(12,28,23,.23)}
/* ABOUT — heritage timeline */
.v19-about{--v19-accent:#b86d43}.v19-about .pageHero{background:linear-gradient(135deg,#f9f2e8 0%,#f2e4d4 60%,#eef3ec 100%);border-radius:0 0 70px 70px}
.v19-heritage-line{margin:-28px auto 50px;max-width:1160px;padding:0 20px;display:grid;grid-template-columns:repeat(4,1fr);gap:10px;position:relative;z-index:5}.v19-heritage-line:before{content:"";position:absolute;left:8%;right:8%;top:31px;height:2px;background:linear-gradient(90deg,#d9a85f,#a95e3c,#234d3d);transform-origin:left;animation:v19Timeline 2s ease both}
@keyframes v19Timeline{from{transform:scaleX(0)}to{transform:scaleX(1)}}
.v19-heritage-line div{background:rgba(255,255,255,.92);border:1px solid rgba(16,35,29,.12);border-radius:22px;padding:18px 16px;box-shadow:0 15px 35px rgba(12,28,23,.08);text-align:center;transition:.35s ease}.v19-heritage-line div:hover{transform:translateY(-8px);box-shadow:0 22px 45px rgba(12,28,23,.16)}.v19-heritage-line b{display:grid;place-items:center;width:28px;height:28px;margin:0 auto 10px;border-radius:50%;background:#10231d;color:white;box-shadow:0 0 0 5px #f7f1e7}.v19-heritage-line span{display:block;color:#4b5f57;font-size:12px}.v19-about .profileLead{background:white;border-radius:38px;padding:clamp(28px,5vw,70px);box-shadow:var(--v19-shadow);margin-top:34px}.v19-about .profileLead .wm{border-radius:28px;overflow:hidden}.v19-about .profileLead img{transition:transform 1.2s cubic-bezier(.16,1,.3,1)}.v19-about .profileLead:hover img{transform:scale(1.06)}
.v19-about .fact{background:#fff;border-radius:18px;border:1px solid rgba(217,168,95,.25);overflow:hidden;transition:.45s cubic-bezier(.16,1,.3,1)}.v19-about .fact:hover{transform:translateY(-9px) scale(1.02);box-shadow:var(--v19-shadow)}.v19-about .fact span{color:#b86d43}.v19-about .facility{background:linear-gradient(140deg,#10231d,#173d31);color:white;overflow:hidden}.v19-about .facility h2,.v19-about .facility p,.v19-about .facility small{color:white}.v19-about .facility:before{content:"";position:absolute;inset:-40%;background:conic-gradient(from 90deg,transparent,rgba(217,168,95,.14),transparent 25%);animation:v19SlowSpin 16s linear infinite;pointer-events:none}@keyframes v19SlowSpin{to{rotate:360deg}}
/* PRODUCTS — interactive collection */
.v19-products{--v19-accent:#d9a85f}.v19-products .pageHero{background:linear-gradient(135deg,#10231d 0%,#17392f 65%,#2f5c49 100%);max-width:none;padding-left:max(20px,calc((100vw - 1160px)/2));padding-right:max(20px,calc((100vw - 1160px)/2));color:white}.v19-products .pageHero h1,.v19-products .pageHero p,.v19-products .pageHero small{color:white}.v19-products .pageHero:after{content:"18";position:absolute;right:6vw;bottom:-36px;font-size:clamp(130px,22vw,330px);line-height:.8;font-weight:900;color:rgba(255,255,255,.04);letter-spacing:-.08em;pointer-events:none;animation:v19GhostNum 7s ease-in-out infinite alternate}@keyframes v19GhostNum{to{transform:translateY(-14px);color:rgba(217,168,95,.08)}}
.v19-product-console{width:min(1160px,calc(100% - 40px));margin:-34px auto 46px;position:sticky;top:88px;z-index:20;background:rgba(255,255,255,.94);border:1px solid rgba(16,35,29,.11);border-radius:24px;box-shadow:0 20px 50px rgba(12,28,23,.15);backdrop-filter:blur(16px);padding:13px;display:grid;grid-template-columns:auto 1fr auto;align-items:center;gap:12px}.v19-product-console strong{padding:0 8px;color:#10231d}.v19-product-console input{width:100%;border:0;background:#f2eee6;border-radius:15px;padding:14px 16px;color:#10231d;font:inherit;outline:none}.v19-product-console input:focus{box-shadow:0 0 0 2px #d9a85f}.v19-product-console .count{background:#10231d;color:white;padding:10px 13px;border-radius:999px;font-size:11px;letter-spacing:.12em}
.v19-products .productCatalog{display:grid;grid-template-columns:repeat(3,minmax(0,1fr));gap:24px}.v19-products .productCard{border:1px solid rgba(16,35,29,.1);background:#fff;border-radius:28px;overflow:hidden;box-shadow:0 14px 32px rgba(12,28,23,.09);transition:transform .55s cubic-bezier(.16,1,.3,1),box-shadow .45s ease}.v19-products .productCard:nth-child(3n+2){transform:translateY(30px)}.v19-products .productCard:hover{transform:translateY(-12px) rotate(.5deg)!important;box-shadow:0 28px 60px rgba(12,28,23,.2)}.v19-products .productCard .wm{overflow:hidden;display:block}.v19-products .productCard img{transition:transform 1s cubic-bezier(.16,1,.3,1)}.v19-products .productCard:hover img{transform:scale(1.08)}.v19-products .productCard>div{padding:18px 20px 22px;background:white}.v19-products .productCard p,.v19-products .productCard small,.v19-products .productCard a{color:#10231d}.v19-products .productCard.is-filtered{display:none}
/* GALLERY — kinetic wall + lightbox */
.v19-gallery{--v19-accent:#b86d43}.v19-gallery .pageHero{background:#f1e8db;border-radius:0 0 110px 0}.v19-gallery .masonry figure{position:relative;overflow:hidden;border-radius:22px;box-shadow:0 18px 45px rgba(12,28,23,.11);cursor:zoom-in;transition:transform .55s cubic-bezier(.16,1,.3,1),box-shadow .4s ease}.v19-gallery .masonry figure:nth-child(4n+2){transform:translateY(24px) rotate(.6deg)}.v19-gallery .masonry figure:nth-child(5n+3){transform:rotate(-.8deg)}.v19-gallery .masonry figure:hover{transform:translateY(-12px) rotate(0) scale(1.015)!important;box-shadow:0 35px 70px rgba(12,28,23,.25)}.v19-gallery .masonry figure:after{content:"VIEW";position:absolute;right:14px;bottom:14px;background:#fff;color:#10231d;border-radius:999px;padding:9px 12px;font-size:10px;font-weight:800;letter-spacing:.14em;opacity:0;transform:translateY(8px);transition:.3s ease}.v19-gallery .masonry figure:hover:after{opacity:1;transform:none}.v19-gallery .masonry img{transition:transform 1.2s cubic-bezier(.16,1,.3,1)}.v19-gallery .masonry figure:hover img{transform:scale(1.08)}
.v19-lightbox{position:fixed;inset:0;z-index:10000;background:rgba(5,16,12,.92);display:grid;place-items:center;padding:5vw;opacity:0;visibility:hidden;transition:.35s ease;backdrop-filter:blur(10px)}.v19-lightbox.open{opacity:1;visibility:visible}.v19-lightbox img{max-width:min(1100px,92vw);max-height:82vh;border-radius:22px;box-shadow:0 35px 100px rgba(0,0,0,.55);transform:scale(.92);transition:.45s cubic-bezier(.16,1,.3,1)}.v19-lightbox.open img{transform:scale(1)}.v19-lightbox button{position:absolute;right:28px;top:24px;width:46px;height:46px;border:1px solid rgba(255,255,255,.45);border-radius:50%;background:rgba(255,255,255,.1);color:white;font-size:24px;cursor:pointer}.v19-lightbox .caption{position:absolute;bottom:24px;color:white;font-size:12px;letter-spacing:.18em;text-transform:uppercase}
/* CONTACT — project concierge */
.v19-contact{--v19-accent:#d9a85f}.v19-contact .pageHero{background:linear-gradient(135deg,#f9f3e8,#e8eee9);border-radius:0 0 54px 54px}.v19-project-path{width:min(1160px,calc(100% - 40px));margin:-28px auto 48px;background:#10231d;color:white;border-radius:28px;padding:20px 22px;display:grid;grid-template-columns:auto 1fr;gap:18px;align-items:center;box-shadow:var(--v19-shadow);overflow:hidden}.v19-project-path:before{content:"";position:absolute;inset:-80% 30% -80% -30%;background:linear-gradient(90deg,transparent,rgba(217,168,95,.16),transparent);animation:v19PathSweep 5s ease-in-out infinite;pointer-events:none}@keyframes v19PathSweep{to{transform:translateX(130%)}}.v19-project-path>strong{color:#d9a85f;letter-spacing:.14em;font-size:11px}.v19-project-steps{display:grid;grid-template-columns:repeat(4,1fr);gap:8px}.v19-project-steps span{position:relative;color:white;border:1px solid rgba(255,255,255,.16);border-radius:14px;padding:10px 12px;font-size:11px;text-align:center;background:rgba(255,255,255,.05)}.v19-project-steps span:after{content:"";position:absolute;right:-7px;top:50%;width:6px;height:6px;border-radius:50%;background:#d9a85f;box-shadow:0 0 14px #d9a85f}.v19-project-steps span:last-child:after{display:none}
.v19-contact .contactMain{align-items:stretch}.v19-contact .contactCard{background:linear-gradient(145deg,#10231d,#214739);border-radius:34px;padding:clamp(28px,4vw,52px);color:white;box-shadow:var(--v19-shadow);overflow:hidden}.v19-contact .contactCard:before{content:"";position:absolute;width:240px;height:240px;border:1px solid rgba(217,168,95,.35);border-radius:50%;right:-100px;top:-80px;animation:v19SlowSpin 14s linear infinite}.v19-contact .contactCard h2,.v19-contact .contactCard p,.v19-contact .contactCard a,.v19-contact .contactCard strong{color:white}.v19-contact .contactCard>a{display:block;padding:10px 0;border-bottom:1px solid rgba(255,255,255,.12);transition:.25s ease}.v19-contact .contactCard>a:hover{padding-left:9px;color:#f1c881}.v19-contact .enquiry{background:white;border-radius:34px;padding:clamp(28px,4vw,52px);box-shadow:var(--v19-shadow);border:1px solid rgba(16,35,29,.08)}.v19-contact .enquiry h2,.v19-contact .enquiry label,.v19-contact .enquiry p{color:#10231d}.v19-contact .enquiry input,.v19-contact .enquiry select,.v19-contact .enquiry textarea{background:#f6f1e8;border:1px solid #ded4c4;color:#10231d;transition:.25s ease}.v19-contact .enquiry input:focus,.v19-contact .enquiry select:focus,.v19-contact .enquiry textarea:focus{outline:none;border-color:#d9a85f;box-shadow:0 0 0 4px rgba(217,168,95,.16);transform:translateY(-1px)}
.v19-contact .mapSection{background:#ece4d8}.v19-contact .mapShell{border-radius:28px;overflow:hidden;box-shadow:var(--v19-shadow)}
/* visibility safety */
.v19-page .section,.v19-page .factsBand .wrap,.v19-page .productCatalog,.v19-page .masonry,.v19-page .contactMain,.v19-page .locationGrid{isolation:isolate}
.v19-page .section p,.v19-page .section h2,.v19-page .section h3,.v19-page .section small,.v19-page .section a{opacity:1;mix-blend-mode:normal}
@media(max-width:900px){.v19-home .v19-material-orbit{display:none}.v19-products .productCatalog{grid-template-columns:repeat(2,minmax(0,1fr))}.v19-products .productCard:nth-child(3n+2){transform:none}.v19-heritage-line{grid-template-columns:repeat(2,1fr)}.v19-project-path{grid-template-columns:1fr}.v19-project-steps{grid-template-columns:repeat(2,1fr)}.v19-product-console{top:70px;grid-template-columns:1fr auto}.v19-product-console strong{display:none}}
@media(max-width:620px){.v19-products .productCatalog{grid-template-columns:1fr}.v19-products .productCard{transform:none!important}.v19-heritage-line{grid-template-columns:1fr}.v19-heritage-line:before{display:none}.v19-project-steps{grid-template-columns:1fr}.v19-project-steps span:after{display:none}.v19-page .pageHero{padding-top:70px}.v19-product-console{position:relative;top:auto;margin-top:-20px}.v19-gallery .masonry figure{transform:none!important}.v19-kinetic-marquee .track{animation-duration:34s}}
@media(prefers-reduced-motion:reduce){.v19-page *,.v19-page *:before,.v19-page *:after{animation-duration:.001ms!important;animation-iteration-count:1!important;scroll-behavior:auto!important;transition-duration:.001ms!important}.v19-reveal{opacity:1!important;transform:none!important;filter:none!important}.v19-word{opacity:1!important;transform:none!important;filter:none!important}.v19-scene{display:none}}

/* ---- v20-experience.css ---- */
/* KR STONES V20 — kinetic stone atelier for top-level pages only. Readability first. */
:root{--v20-ink:#0b211a;--v20-deep:#071712;--v20-green:#173e31;--v20-gold:#e3b468;--v20-sand:#f2dfbc;--v20-cream:#fffaf0;--v20-rust:#b96845;--v20-line:rgba(227,180,104,.5)}
body.v20-page{background:#f8f3e9;color:var(--v20-ink)}
body.v20-page main{overflow:clip}
/* Persistent cinematic grain + cursor aurora. Purely decorative and always behind content. */
.v20-grain{position:fixed;inset:0;z-index:1;pointer-events:none;opacity:.16;mix-blend-mode:multiply;background-image:radial-gradient(circle at 20% 30%,rgba(11,33,26,.12) 0 1px,transparent 1.4px),radial-gradient(circle at 70% 80%,rgba(185,104,69,.11) 0 1px,transparent 1.4px);background-size:18px 18px,24px 24px;mask-image:linear-gradient(to bottom,rgba(0,0,0,.8),transparent 92%)}
.v20-cursor{position:fixed;z-index:3;width:360px;height:360px;left:0;top:0;border-radius:50%;pointer-events:none;transform:translate3d(calc(var(--mx,50vw) - 180px),calc(var(--my,50vh) - 180px),0);background:radial-gradient(circle,rgba(227,180,104,.12),rgba(35,77,61,.06) 35%,transparent 68%);filter:blur(8px);transition:opacity .3s;opacity:.85}
body.v20-page main>*{z-index:4}
/* Header gains a living gold filament, but remains visually stable. */
.v20-page .site-header{border-bottom:1px solid rgba(11,33,26,.08)}
.v20-page .site-header:before{content:"";position:absolute;left:10%;right:10%;bottom:-1px;height:2px;background:linear-gradient(90deg,transparent,var(--v20-gold),#fff3cf,var(--v20-gold),transparent);background-size:220% 100%;animation:v20HeaderFlow 6s linear infinite;opacity:.75}
@keyframes v20HeaderFlow{to{background-position:220% 0}}
/* General premium motion vocabulary */
.v20-page .v20-lift{opacity:0;transform:translateY(42px) scale(.97);filter:blur(8px);transition:opacity .9s ease,transform 1s cubic-bezier(.16,1,.3,1),filter .9s ease}
.v20-page .v20-lift.in{opacity:1;transform:none;filter:none}
.v20-page .v20-lift[data-delay="1"]{transition-delay:.08s}.v20-page .v20-lift[data-delay="2"]{transition-delay:.16s}.v20-page .v20-lift[data-delay="3"]{transition-delay:.24s}.v20-page .v20-lift[data-delay="4"]{transition-delay:.32s}
.v20-page .btn,.v20-page .quote{isolation:isolate;overflow:hidden}
.v20-page .btn:before,.v20-page .quote:before{content:"";position:absolute;z-index:-1;inset:-2px;transform:translateX(-115%) skewX(-18deg);background:linear-gradient(100deg,transparent,rgba(255,255,255,.5),transparent);transition:transform .65s cubic-bezier(.16,1,.3,1)}
.v20-page .btn:hover:before,.v20-page .quote:hover:before{transform:translateX(115%) skewX(-18deg)}
/* Hero: animated architectural portal, strong text layer. */
.v20-page .approved-hero,.v20-page .pageHero{isolation:isolate}
.v20-page .approved-hero:after,.v20-page .pageHero:after{content:"";position:absolute;z-index:0;pointer-events:none;inset:16px;border:1px solid rgba(227,180,104,.28);border-radius:clamp(22px,4vw,52px);clip-path:polygon(0 0,26% 0,26% 1px,74% 1px,74% 0,100% 0,100% 100%,74% 100%,74% calc(100% - 1px),26% calc(100% - 1px),26% 100%,0 100%);animation:v20PortalPulse 4.8s ease-in-out infinite alternate}
@keyframes v20PortalPulse{to{inset:23px;opacity:.55}}
.v20-page .heroCopy,.v20-page .pageHero .wrap{z-index:4}
.v20-hero-sigil{position:absolute;z-index:3;right:clamp(22px,6vw,90px);bottom:clamp(30px,9vw,110px);width:clamp(118px,15vw,210px);aspect-ratio:1;border-radius:50%;display:grid;place-items:center;pointer-events:none;color:#fff;text-align:center;text-transform:uppercase;font-size:9px;letter-spacing:.18em}
.v20-hero-sigil:before,.v20-hero-sigil:after{content:"";position:absolute;inset:0;border:1px solid rgba(255,255,255,.45);border-radius:50%;animation:v20SigilSpin 18s linear infinite}.v20-hero-sigil:after{inset:18%;border-style:dashed;border-color:rgba(227,180,104,.8);animation-direction:reverse;animation-duration:12s}.v20-hero-sigil i{position:absolute;inset:34%;border-radius:50%;background:rgba(7,23,18,.68);box-shadow:0 0 30px rgba(227,180,104,.28);backdrop-filter:blur(10px)}.v20-hero-sigil span{z-index:2;max-width:76px;line-height:1.55}
@keyframes v20SigilSpin{to{rotate:360deg}}
.v20-scroll-cue{position:absolute;z-index:5;left:50%;bottom:18px;transform:translateX(-50%);display:grid;gap:6px;place-items:center;color:#fff;font-size:8px;letter-spacing:.22em;text-transform:uppercase;opacity:.85}.v20-scroll-cue i{width:1px;height:34px;background:linear-gradient(#fff,transparent);transform-origin:top;animation:v20Cue 1.7s ease-in-out infinite}@keyframes v20Cue{0%{transform:scaleY(.15);opacity:.3}60%{transform:scaleY(1);opacity:1}100%{transform-origin:bottom;transform:scaleY(.15);opacity:.2}}
/* Kinetic showcase — injected on Home, distinct from the ordinary product grid. */
.v20-showcase{padding:clamp(70px,9vw,130px) 0;background:linear-gradient(135deg,#071712 0%,#102d24 55%,#1c4436 100%);color:#fff;overflow:hidden;isolation:isolate}
.v20-showcase:before{content:"";position:absolute;inset:-40%;background:conic-gradient(from 30deg,transparent 0 34%,rgba(227,180,104,.12) 38%,transparent 43% 70%,rgba(255,255,255,.05) 74%,transparent 78%);animation:v20ShowSpin 24s linear infinite;z-index:-1}@keyframes v20ShowSpin{to{rotate:360deg}}
.v20-showcase .v20-show-head{display:grid;grid-template-columns:1.1fr .9fr;gap:30px;align-items:end;margin-bottom:42px}.v20-showcase small{color:var(--v20-gold);font-weight:800;letter-spacing:.18em}.v20-showcase h2{color:#fff;font-size:clamp(42px,6vw,88px);line-height:.9;margin:.2em 0 0;text-wrap:balance}.v20-showcase p{color:#e9f1ed;max-width:550px;font-size:16px}.v20-showcase-grid{display:grid;grid-template-columns:1.2fr .8fr .8fr;gap:18px;perspective:1200px}.v20-show-card{position:relative;min-height:410px;border-radius:32px;overflow:hidden;border:1px solid rgba(255,255,255,.16);background:#0c211b;box-shadow:0 34px 80px rgba(0,0,0,.28);transition:transform .65s cubic-bezier(.16,1,.3,1),box-shadow .65s ease}.v20-show-card:nth-child(2){min-height:350px;margin-top:64px}.v20-show-card:nth-child(3){min-height:320px;margin-top:118px}.v20-show-card:hover{transform:translateY(-14px) rotateX(2deg) rotateY(-2deg);box-shadow:0 48px 110px rgba(0,0,0,.4)}.v20-show-card img{width:100%;height:100%;object-fit:cover;transition:transform 1.3s cubic-bezier(.16,1,.3,1);filter:saturate(.92) contrast(1.02)}.v20-show-card:hover img{transform:scale(1.08)}.v20-show-card:after{content:"";position:absolute;inset:0;background:linear-gradient(180deg,transparent 38%,rgba(7,23,18,.88));pointer-events:none}.v20-show-card div{position:absolute;z-index:2;left:24px;right:24px;bottom:24px}.v20-show-card b{display:block;color:#fff;font-size:clamp(20px,2.2vw,32px)}.v20-show-card span{color:#ead8ae;font-size:11px;letter-spacing:.16em;text-transform:uppercase}
/* About: animated stone-strata ribbon and chapter cards */
.v20-about-strata{width:min(1160px,calc(100% - 40px));margin:30px auto 60px;display:grid;grid-template-columns:repeat(3,1fr);gap:16px}.v20-about-strata article{position:relative;overflow:hidden;background:#fff;border-radius:28px;padding:28px;border:1px solid rgba(11,33,26,.08);box-shadow:0 20px 50px rgba(11,33,26,.1);min-height:190px;transition:.55s cubic-bezier(.16,1,.3,1)}.v20-about-strata article:hover{transform:translateY(-10px) rotate(-.5deg);box-shadow:0 32px 75px rgba(11,33,26,.16)}.v20-about-strata article:before{content:"";position:absolute;inset:auto -25% -65% 10%;height:150%;border-radius:50%;background:radial-gradient(circle,rgba(227,180,104,.25),transparent 63%);animation:v20Strata 6s ease-in-out infinite alternate;pointer-events:none}@keyframes v20Strata{to{transform:translate(-20%,-18%) scale(1.12)}}.v20-about-strata small{color:#a55f3e;font-weight:800;letter-spacing:.14em}.v20-about-strata h3{font-size:25px;margin:10px 0;color:var(--v20-ink)}.v20-about-strata p{color:#4e6259;margin:0}
/* Products: cards turn into spotlight panels with reactive border glow */
.v20-products .productCard{--spot-x:50%;--spot-y:50%;isolation:isolate;border-radius:28px!important;overflow:hidden!important}.v20-products .productCard:after{content:"";position:absolute;z-index:3;inset:0;border-radius:inherit;padding:1px;background:radial-gradient(280px circle at var(--spot-x) var(--spot-y),rgba(227,180,104,.95),transparent 45%);-webkit-mask:linear-gradient(#000 0 0) content-box,linear-gradient(#000 0 0);-webkit-mask-composite:xor;mask-composite:exclude;pointer-events:none;opacity:.75}.v20-products .productCard:hover{box-shadow:0 30px 75px rgba(9,31,24,.2)}
.v20-collection-pulse{width:min(1160px,calc(100% - 40px));margin:12px auto 38px;display:grid;grid-template-columns:auto 1fr auto;gap:14px;align-items:center}.v20-collection-pulse i{height:1px;background:linear-gradient(90deg,var(--v20-gold),rgba(227,180,104,.05));position:relative;overflow:hidden}.v20-collection-pulse i:after{content:"";position:absolute;left:-18%;top:-1px;width:18%;height:3px;background:#fff5d2;box-shadow:0 0 18px var(--v20-gold);animation:v20PulseLine 2.8s linear infinite}@keyframes v20PulseLine{to{left:110%}}.v20-collection-pulse span{font-size:10px;letter-spacing:.18em;text-transform:uppercase;font-weight:800;color:#6a4c22}
/* Gallery: cursor-reactive frames and animated caption rail */
.v20-gallery .masonry figure{--gx:50%;--gy:50%;isolation:isolate;box-shadow:0 18px 45px rgba(11,33,26,.12);transition:transform .55s cubic-bezier(.16,1,.3,1),box-shadow .55s ease}.v20-gallery .masonry figure:before{content:"";position:absolute;z-index:2;inset:0;background:radial-gradient(240px circle at var(--gx) var(--gy),rgba(255,244,206,.18),transparent 58%);pointer-events:none}.v20-gallery .masonry figure:hover{transform:translateY(-9px) scale(1.012)!important;box-shadow:0 34px 80px rgba(11,33,26,.22)}.v20-gallery .masonry figure figcaption{background:linear-gradient(180deg,transparent,rgba(7,23,18,.86));color:#fff!important;transform:translateY(12px);opacity:.88;transition:.4s ease}.v20-gallery .masonry figure:hover figcaption{transform:none;opacity:1}.v20-gallery-strip{overflow:hidden;background:#10231d;color:white;border-block:1px solid rgba(227,180,104,.38);margin:28px 0}.v20-gallery-strip .track{display:flex;width:max-content;gap:28px;padding:15px 0;animation:v20GalleryTicker 22s linear infinite}.v20-gallery-strip span{white-space:nowrap;font-size:10px;letter-spacing:.2em;text-transform:uppercase;color:#fff}.v20-gallery-strip b{color:var(--v20-gold);font-weight:400}@keyframes v20GalleryTicker{to{transform:translateX(-50%)}}
/* Contact: animated project compass + elevated form */
.v20-project-compass{width:min(1160px,calc(100% - 40px));margin:28px auto 58px;display:grid;grid-template-columns:260px 1fr;gap:24px;align-items:stretch}.v20-compass-disc{position:relative;aspect-ratio:1;border-radius:50%;display:grid;place-items:center;background:radial-gradient(circle,#173d31 0 27%,#0b211a 28% 54%,#173d31 55% 56%,#081914 57%);box-shadow:0 30px 75px rgba(11,33,26,.24);color:#fff}.v20-compass-disc:before,.v20-compass-disc:after{content:"";position:absolute;inset:12%;border:1px dashed rgba(227,180,104,.72);border-radius:50%;animation:v20SigilSpin 16s linear infinite}.v20-compass-disc:after{inset:28%;animation-direction:reverse;animation-duration:9s}.v20-compass-disc span{z-index:2;text-align:center;font-size:11px;letter-spacing:.16em;text-transform:uppercase;color:#fff}.v20-compass-copy{display:grid;grid-template-columns:repeat(3,1fr);gap:14px}.v20-compass-copy article{background:#fff;border:1px solid rgba(11,33,26,.08);border-radius:24px;padding:26px;box-shadow:0 16px 40px rgba(11,33,26,.09);transition:.45s cubic-bezier(.16,1,.3,1)}.v20-compass-copy article:hover{transform:translateY(-8px);box-shadow:0 28px 65px rgba(11,33,26,.15)}.v20-compass-copy small{color:#a55f3e;font-weight:800}.v20-compass-copy h3{margin:8px 0;color:var(--v20-ink)}.v20-compass-copy p{margin:0;color:#4e6259}.v20-contact .enquiry{position:relative;overflow:hidden}.v20-contact .enquiry:before{content:"";position:absolute;pointer-events:none;width:220px;height:220px;right:-90px;top:-90px;border-radius:50%;background:radial-gradient(circle,rgba(227,180,104,.25),transparent 66%);animation:v20FormGlow 5s ease-in-out infinite alternate}@keyframes v20FormGlow{to{transform:translate(-50px,45px) scale(1.15)}}
/* Accessibility and contrast lock */
.v20-page h1,.v20-page h2,.v20-page h3,.v20-page p,.v20-page a,.v20-page span,.v20-page small,.v20-page strong,.v20-page label{mix-blend-mode:normal}
.v20-page .pageHero:not(.dark) h1,.v20-page .pageHero:not(.dark) p{color:var(--v20-ink)}
@media(max-width:900px){.v20-showcase .v20-show-head{grid-template-columns:1fr}.v20-showcase-grid{grid-template-columns:1fr 1fr}.v20-show-card:nth-child(2),.v20-show-card:nth-child(3){margin-top:0}.v20-show-card:nth-child(1){grid-column:1/-1}.v20-about-strata{grid-template-columns:1fr}.v20-project-compass{grid-template-columns:1fr}.v20-compass-disc{width:220px;margin:auto}.v20-compass-copy{grid-template-columns:1fr 1fr}.v20-hero-sigil{opacity:.7}}
@media(max-width:620px){.v20-cursor,.v20-hero-sigil{display:none}.v20-showcase-grid{grid-template-columns:1fr}.v20-show-card:nth-child(1){grid-column:auto}.v20-show-card{min-height:330px!important}.v20-compass-copy{grid-template-columns:1fr}.v20-page .approved-hero:after,.v20-page .pageHero:after{inset:8px;border-radius:20px}.v20-gallery-strip .track{animation-duration:30s}}
@media(prefers-reduced-motion:reduce){.v20-page *,.v20-page *:before,.v20-page *:after{animation-duration:.001ms!important;animation-iteration-count:1!important;transition-duration:.001ms!important}.v20-lift{opacity:1!important;transform:none!important;filter:none!important}.v20-cursor,.v20-grain{display:none!important}}

/* ---- v21-3-layout-visibility-fixes.css ---- */
/* KR STONES V21.3 - targeted fixes requested by owner.
   Scope: product finder spacing, contact proprietor line, company fact cards on Home/About. */

/* 1) PRODUCTS: give the Stone Finder complete breathing room before the collection rail. */
body.v21-products .v19-product-console{
  margin-bottom:76px!important;
}
body.v21-products .v20-collection-pulse{
  position:relative!important;
  z-index:2!important;
  margin-top:28px!important;
  margin-bottom:42px!important;
  clear:both!important;
}
@media(max-width:900px){
  body.v21-products .v19-product-console{margin-bottom:62px!important}
  body.v21-products .v20-collection-pulse{margin-top:22px!important}
}
@media(max-width:620px){
  body.v21-products .v19-product-console{margin-bottom:44px!important}
  body.v21-products .v20-collection-pulse{margin-top:18px!important;margin-bottom:30px!important}
}

/* 2) CONTACT: keep proprietor's full name on a single line on desktop by widening the card. */
body.v19-contact .contactMain{
  grid-template-columns:minmax(0,.98fr) minmax(0,1.12fr)!important;
  gap:clamp(28px,4vw,58px)!important;
}
body.v19-contact .contactCard h2{
  font-family:Georgia,'Times New Roman',serif!important;
  font-size:clamp(30px,2.55vw,40px)!important;
  line-height:1.08!important;
  letter-spacing:-.03em!important;
  white-space:nowrap!important;
  max-width:none!important;
}
@media(max-width:920px){
  body.v19-contact .contactMain{grid-template-columns:1fr!important}
  body.v19-contact .contactCard h2{white-space:normal!important;font-size:clamp(30px,7vw,40px)!important}
}

/* 3 + 4) HOME + ABOUT: light creative fact cards, readable type, no clipped GST/business data. */
body.v19-home .factsBand,
body.v19-about .factsBand{
  background:linear-gradient(135deg,#fbf7ef 0%,#f2eadc 52%,#f8f4eb 100%)!important;
  color:#17231d!important;
}
body.v19-home .factGrid,
body.v19-about .factGrid{
  gap:16px!important;
  border:0!important;
  background:transparent!important;
  align-items:stretch!important;
}
body.v19-home .fact,
body.v19-about .fact{
  min-width:0!important;
  min-height:158px!important;
  padding:20px 18px 18px!important;
  border-radius:19px!important;
  border:1px solid rgba(24,61,49,.13)!important;
  color:#18251f!important;
  overflow:hidden!important;
  isolation:isolate!important;
  box-shadow:0 14px 32px rgba(51,42,27,.075)!important;
  transition:transform .35s cubic-bezier(.16,1,.3,1),box-shadow .35s ease,border-color .35s ease!important;
  font-family:'Segoe UI',Roboto,Arial,sans-serif!important;
}
body.v19-home .fact:nth-child(1),body.v19-about .fact:nth-child(1){background:#f3e8d6!important}
body.v19-home .fact:nth-child(2),body.v19-about .fact:nth-child(2){background:#e8f0e9!important}
body.v19-home .fact:nth-child(3),body.v19-about .fact:nth-child(3){background:#f4e6de!important}
body.v19-home .fact:nth-child(4),body.v19-about .fact:nth-child(4){background:#e6eeed!important}
body.v19-home .fact:nth-child(5),body.v19-about .fact:nth-child(5){background:#f4ecd9!important}
body.v19-home .fact:nth-child(6),body.v19-about .fact:nth-child(6){background:#edf1e4!important}
body.v19-home .fact:hover,
body.v19-about .fact:hover{
  transform:translateY(-6px)!important;
  box-shadow:0 22px 44px rgba(51,42,27,.12)!important;
  border-color:rgba(178,128,48,.35)!important;
}
body.v19-home .fact span,
body.v19-about .fact span{
  color:#9b691e!important;
  font-family:'Segoe UI',Roboto,Arial,sans-serif!important;
  font-size:9px!important;
  line-height:1!important;
  font-weight:850!important;
  letter-spacing:.13em!important;
}
body.v19-home .fact b,
body.v19-about .fact b{
  display:block!important;
  margin-top:18px!important;
  color:#4b5d54!important;
  font-family:'Segoe UI',Roboto,Arial,sans-serif!important;
  font-size:11px!important;
  line-height:1.25!important;
  font-weight:700!important;
  letter-spacing:.01em!important;
}
body.v19-home .fact strong,
body.v19-about .fact strong{
  display:block!important;
  margin-top:12px!important;
  padding-right:2px!important;
  color:#123f32!important;
  font-family:'Trebuchet MS','Segoe UI',Arial,sans-serif!important;
  font-size:clamp(15px,1.18vw,18px)!important;
  line-height:1.25!important;
  font-weight:700!important;
  letter-spacing:-.02em!important;
  opacity:1!important;
  text-shadow:none!important;
  overflow-wrap:break-word!important;
  word-break:normal!important;
}
/* Keep identifiers compact enough to stay inside each card. */
body.v19-home .fact:nth-child(4) strong,
body.v19-home .fact:nth-child(5) strong,
body.v19-about .fact:nth-child(4) strong,
body.v19-about .fact:nth-child(5) strong{
  font-family:'Segoe UI',Roboto,Arial,sans-serif!important;
  font-size:clamp(12px,.95vw,15px)!important;
  letter-spacing:-.035em!important;
  white-space:nowrap!important;
}
body.v19-home .fact:after,
body.v19-about .fact:after{
  right:12px!important;
  bottom:12px!important;
  width:32px!important;
  height:32px!important;
  background:rgba(18,63,50,.08)!important;
  color:#123f32!important;
  opacity:.75!important;
}
@media(max-width:1150px) and (min-width:921px){
  body.v19-home .factGrid,body.v19-about .factGrid{grid-template-columns:repeat(3,minmax(0,1fr))!important}
  body.v19-home .fact:nth-child(4) strong,body.v19-home .fact:nth-child(5) strong,
  body.v19-about .fact:nth-child(4) strong,body.v19-about .fact:nth-child(5) strong{font-size:14px!important}
}
@media(max-width:920px){
  body.v19-home .factGrid,body.v19-about .factGrid{grid-template-columns:repeat(2,minmax(0,1fr))!important}
  body.v19-home .fact,body.v19-about .fact{min-height:145px!important}
}
@media(max-width:560px){
  body.v19-home .factGrid,body.v19-about .factGrid{grid-template-columns:1fr!important}
  body.v19-home .fact:nth-child(4) strong,body.v19-home .fact:nth-child(5) strong,
  body.v19-about .fact:nth-child(4) strong,body.v19-about .fact:nth-child(5) strong{font-size:15px!important}
}

/* V24 mobile gallery visibility hardening
   Gallery figures were gated behind multiple IntersectionObserver reveal classes
   (.reveal, .v19-reveal and .v20-lift). Mobile Safari/WebViews can occasionally
   fail to resolve one of those observers inside masonry/column layouts, leaving
   the figures at opacity:0. On touch/mobile layouts, visibility takes priority
   over entrance animation. */
@media (max-width: 700px) {
  .v19-gallery .masonry figure,
  .v19-gallery .masonry figure.reveal,
  .v19-gallery .masonry figure.v19-reveal,
  .v19-gallery .masonry figure.v20-lift {
    opacity: 1 !important;
    visibility: visible !important;
    transform: none !important;
    filter: none !important;
  }

  .v19-gallery .masonry figure .wm,
  .v19-gallery .masonry figure img {
    opacity: 1 !important;
    visibility: visible !important;
  }
}

/* V25 definitive mobile gallery fix
   Keep gallery/facility content visible on touch/mobile and avoid CSS-column
   + IntersectionObserver paint issues. */
@media (max-width: 900px), (hover: none) and (pointer: coarse) {
  body.v19-gallery .masonry,
  body.v19-gallery .facilityMasonry {
    columns: auto !important;
    column-count: auto !important;
    display: grid !important;
    grid-template-columns: minmax(0, 1fr) !important;
    gap: 14px !important;
  }

  body.v19-gallery .masonry figure,
  body.v19-gallery .facilityMasonry figure,
  body.v19-gallery .masonry figure.reveal,
  body.v19-gallery .facilityMasonry figure.reveal,
  body.v19-gallery .masonry figure.v19-reveal,
  body.v19-gallery .facilityMasonry figure.v19-reveal,
  body.v19-gallery .masonry figure.v20-lift,
  body.v19-gallery .facilityMasonry figure.v20-lift {
    display: block !important;
    opacity: 1 !important;
    visibility: visible !important;
    transform: none !important;
    filter: none !important;
    break-inside: auto !important;
    margin: 0 !important;
  }

  body.v19-gallery .facilityGallery,
  body.v19-gallery .facilityGallery .wrap,
  body.v19-gallery .facilityGallery.v19-reveal,
  body.v19-gallery .facilityGallery .wrap.v20-lift,
  body.v19-gallery .kr-v23-existing-gallery,
  body.v19-gallery .kr-v23-existing-gallery.v19-reveal,
  body.v19-gallery .kr-v23-existing-gallery.v20-lift {
    opacity: 1 !important;
    visibility: visible !important;
    transform: none !important;
    filter: none !important;
  }

  body.v19-gallery .masonry .wm,
  body.v19-gallery .facilityMasonry .wm {
    display: block !important;
    width: 100% !important;
    min-height: 280px !important;
    height: min(78vw, 420px) !important;
    opacity: 1 !important;
    visibility: visible !important;
  }

  body.v19-gallery .masonry img,
  body.v19-gallery .facilityMasonry img {
    display: block !important;
    width: 100% !important;
    height: 100% !important;
    min-height: 1px !important;
    object-fit: cover !important;
    opacity: 1 !important;
    visibility: visible !important;
  }

  /* Archive figures contain direct images rather than .wm wrappers. */
  body.v19-gallery .kr-v23-existing-gallery .masonry figure > img {
    height: auto !important;
    aspect-ratio: auto !important;
  }
}
