:root{--paper:#f7f5ee;--white:#fffdf8;--ink:#263637;--muted:#4f5c5b;--line:#d6d7cd;--accent:#405c58;--serif:Georgia,'Times New Roman',serif;--sans:system-ui,-apple-system,'Segoe UI',sans-serif}*{box-sizing:border-box}html{scroll-behavior:smooth;scroll-padding-top:108px}body{margin:0;background:var(--paper);color:var(--ink);font:16px/1.65 var(--sans)}img{display:block;width:100%;object-fit:cover}a{color:inherit;text-decoration:none}a:focus-visible,summary:focus-visible{outline:2px solid #af784e;outline-offset:5px}figure,p,h1,h2,h3{margin:0}p{color:var(--muted)}h1,h2,h3{font-family:var(--serif);font-weight:400;line-height:1.1}h1{font-size:clamp(3.35rem,7.35vw,7.3rem);letter-spacing:-.067em}h1 em{color:var(--accent);font-weight:400}h2{font-size:clamp(2.45rem,4.5vw,4.6rem);letter-spacing:-.058em}h3{font-size:1.55rem;letter-spacing:-.02em}.shell{width:min(1320px,calc(100% - 112px));margin-inline:auto}.skip{position:fixed;top:8px;left:8px;transform:translateY(-160%);z-index:5;padding:10px;background:var(--white)}.skip:focus{transform:none}header{position:sticky;top:0;z-index:4;background:var(--paper);border-bottom:1px solid var(--line)}.bar{min-height:88px;display:flex;align-items:center;justify-content:space-between;gap:26px}.brand{display:flex;align-items:center;gap:10px;white-space:nowrap}.brand svg{width:43px;height:43px}.brand strong{display:block;font:1.65rem/1 var(--serif);letter-spacing:-.04em}.brand small{font-size:.65rem;text-transform:uppercase;letter-spacing:.13em}.nav,.lang{display:flex;align-items:center;gap:clamp(15px,2.4vw,38px);font-size:.88rem}.nav a{padding-block:8px}.nav a:hover,.foot a:hover{text-decoration:underline;text-underline-offset:4px}.lang{gap:3px;border:1px solid var(--line);border-radius:40px;padding:3px}.lang a{padding:5px 10px;border-radius:40px;font-weight:700;font-size:.72rem}.lang a[aria-current]{background:var(--ink);color:var(--white)}.hero{display:grid;grid-template-columns:1.04fr 1fr;gap:5%;align-items:center;padding-block:44px 32px}.hero-copy{padding-block:35px}.kicker{font-size:.72rem;font-weight:750;letter-spacing:.16em;text-transform:uppercase;color:var(--accent);margin-bottom:20px}.hero .kicker{display:flex;align-items:center;gap:11px}.hero .kicker:before{content:'';width:22px;height:1px;background:currentColor}.lead{font-size:clamp(1rem,1.4vw,1.22rem);max-width:44ch;margin-top:23px}.actions{display:flex;align-items:center;gap:18px 25px;flex-wrap:wrap;margin-top:29px}.button{display:inline-flex;align-items:center;justify-content:center;gap:15px;background:var(--ink);color:var(--white);font-weight:650;font-size:.9rem;padding:14px 19px;min-height:48px}.button:hover{background:var(--accent)}.line-link{font-size:.9rem;font-weight:650;text-decoration:underline;text-underline-offset:5px}.line-link:hover{text-decoration-thickness:2px}.hero-art{position:relative;background:#c7cec1}.hero-art img{height:clamp(400px,48vw,640px);object-position:center 58%}.hero-art figcaption{position:absolute;bottom:0;left:0;background:var(--paper);padding:8px 14px;font-size:.68rem;letter-spacing:.1em;text-transform:uppercase}.strip{border-block:1px solid var(--line)}.strip .shell{display:flex;justify-content:space-between;gap:12px;padding-block:18px}.strip span{display:flex;align-items:center;gap:12px;font-size:.76rem;letter-spacing:.08em;text-transform:uppercase}.strip span:before{content:'◆';color:var(--accent);font-size:.53rem}.block{padding-block:clamp(58px,8vw,118px)}.section-head{display:grid;grid-template-columns:1.3fr .7fr;gap:32px;align-items:end;margin-bottom:40px}.section-head>p{max-width:37ch}.services{display:grid;grid-template-columns:repeat(4,1fr);gap:22px}.services article{border-top:1px solid var(--line);padding-top:20px}.number{font:italic 1.1rem var(--serif);color:var(--accent)}.services h3{margin:22px 0 10px}.material{background:#e7ebe4}.cards{display:grid;grid-template-columns:repeat(3,1fr);gap:20px}.cards figure{background:var(--paper)}.cards img{height:auto;aspect-ratio:4/4.25;background:#c3cbc0}.cards figcaption{padding:20px 23px 24px}.cards h3{margin-bottom:8px}.note{font-size:.8rem;margin-top:15px}.approach,.contact-grid{display:grid;grid-template-columns:1fr 1fr;gap:7%}.approach ol{margin:0;padding:0;list-style:none}.approach li{display:grid;grid-template-columns:40px 1fr;gap:12px;padding:22px 0;border-top:1px solid var(--line)}.approach h3{margin-bottom:7px}.faq{margin-top:33px}details{border-bottom:1px solid var(--line);padding:11px 0}details p{margin-top:8px}summary{cursor:pointer;font-weight:600}.contact{background:#273c3e;color:var(--white)}.contact p{color:#d8e2dd}.contact .button{background:#f1eee1;color:var(--ink)}.contact .button:hover{background:#d8e2dd}address{font-style:normal;align-self:center}address>div{border-bottom:1px solid #77918c;padding:10px 0;overflow-wrap:anywhere}address small{display:block;color:#d8e2dd;text-transform:uppercase;letter-spacing:.14em;font-size:.68rem}.map{display:inline-block;margin-top:5px}footer{padding-block:20px 28px;font-size:.8rem}.foot{display:flex;justify-content:space-between;gap:10px}footer details{margin-top:5px;border:0}@media(max-width:1050px){.shell{width:calc(100% - 64px)}.bar{gap:18px}.hero{gap:4%}.nav{gap:18px}}@media(max-width:780px){html{scroll-padding-top:125px}.shell{width:calc(100% - 40px)}.bar{flex-wrap:wrap;gap:0;min-height:auto;padding-top:10px}.nav{order:3;flex:1 0 100%;justify-content:space-between;gap:8px;font-size:.76rem;flex-wrap:wrap;margin-top:6px}.hero{grid-template-columns:1fr;gap:22px;padding-block:25px 20px}.hero-copy{padding-block:12px 0}.hero-art img{height:clamp(290px,75vw,460px)}.section-head,.approach,.contact-grid{grid-template-columns:1fr;gap:22px}.services{grid-template-columns:repeat(2,1fr)}.strip span{font-size:.65rem;letter-spacing:.02em;gap:4px}.cards{gap:12px}.cards figcaption{padding:14px}.cards h3{font-size:1.27rem}}@media(max-width:560px){.cards{grid-template-columns:1fr}.cards img{aspect-ratio:5/4;object-position:center 57%}.strip .shell{flex-wrap:wrap}.services{gap:20px 14px}.services h3{font-size:1.3rem}.actions{margin-top:22px}.kicker{margin-bottom:14px}}@media(prefers-reduced-motion:reduce){html{scroll-behavior:auto}}

/* Motion follows the reading order and plays once. */
.brand svg{overflow:visible;transform-origin:center}
.brand svg .arch{stroke-dasharray:1;stroke-dashoffset:0;animation:chisel 1.05s cubic-bezier(.22,.7,.25,1) both}
.brand svg .inner{animation-delay:.17s}.brand svg .base{animation-delay:.37s}
.brand:hover svg{transform:translateY(-2px)}.brand svg{transition:transform .25s ease}
@keyframes chisel{from{stroke-dashoffset:1}to{stroke-dashoffset:0}}
.hero-copy>*{animation:arrive .85s cubic-bezier(.2,.72,.25,1) both}
.hero-copy h1{animation-delay:.09s}.hero-copy .lead{animation-delay:.2s}.hero-copy .actions{animation-delay:.3s}
@keyframes arrive{from{opacity:0;transform:translateY(21px)}to{opacity:1;transform:translateY(0)}}
.hero-art{isolation:isolate}
.hero-window{display:block;overflow:hidden}
.hero-art img{animation:stone-enter 1.55s cubic-bezier(.18,.63,.27,1) both;transform-origin:64% 55%}
@keyframes stone-enter{from{transform:scale(1.075);opacity:.4}to{transform:scale(1);opacity:1}}
.hero-art figcaption{z-index:1}.hero-art:after{position:absolute;content:'';inset:12px;border:1px solid #fffdf870;pointer-events:none}
.seal{position:absolute;right:18px;bottom:18px;display:grid;place-items:center;width:88px;height:88px;border-radius:50%;background:#f7f5ee;color:var(--ink);z-index:1;box-shadow:0 6px 23px #20282633;animation:seal-in .8s .55s both}
.seal>svg{width:82px;height:82px;overflow:visible}.seal .orbit{transform-origin:44px 44px;animation:turn-seal 2s .55s cubic-bezier(.16,.8,.3,1) both}.seal text{font:700 7px var(--sans);letter-spacing:1.7px;fill:currentColor}.seal .stamp{stroke-dasharray:1;animation:chisel 1s .7s both}
@keyframes seal-in{from{opacity:0;scale:.83}to{opacity:1;scale:1}}
@keyframes turn-seal{from{rotate:-47deg}to{rotate:0deg}}
.actions .button{transition:background .24s ease,transform .24s ease}.actions .button:hover{transform:translateY(-2px)}.button span{transition:transform .24s ease}.button:hover span{transform:translate(3px,-2px)}
.services article{transition:border-color .24s ease}.services article:hover{border-color:var(--accent)}
.cards figure{overflow:hidden}.card-photo{width:100%;position:relative;display:block;overflow:hidden;border:0;padding:0;background:#c3cbc0;color:var(--ink);text-align:left;cursor:zoom-in}.card-photo:focus-visible{outline:3px solid #af784e;outline-offset:-5px}.card-photo img{transition:transform .65s cubic-bezier(.2,.7,.25,1)}.card-photo:hover img,.card-photo:focus-visible img{transform:scale(1.055)}.zoom{position:absolute;display:grid;place-items:center;right:14px;bottom:14px;width:42px;height:42px;border-radius:50%;background:var(--paper);font:1.45rem var(--serif);box-shadow:0 3px 14px #20333122;transition:transform .25s ease}.card-photo:hover .zoom{transform:rotate(90deg)}
.card-photo[disabled]{cursor:default}.card-photo[disabled] .zoom{display:none}
.motion-in{animation:arrive .75s cubic-bezier(.21,.74,.3,1) both;animation-delay:var(--stagger,0ms)}
.gallery-dialog{max-height:calc(100dvh - 28px);width:min(600px,calc(100% - 28px));max-width:none;padding:0;border:0;background:var(--paper);color:var(--ink);box-shadow:0 16px 65px #17262655;overflow:auto}
.gallery-dialog[open]{animation:arrive .3s ease both}.gallery-dialog::backdrop{background:#162524c9}
.gallery-dialog img{height:min(58vh,490px);object-position:center;object-fit:contain;background:#253633}
.gallery-dialog figcaption{padding:16px 20px}.gallery-dialog h3{margin-bottom:6px}.gallery-dialog .note{margin-top:9px}
.gallery-controls{display:flex;align-items:center;justify-content:space-between;gap:10px;padding:9px 12px;background:var(--paper)}
.gallery-controls button{cursor:pointer;min-width:40px;min-height:40px;color:inherit;border:1px solid var(--line);background:transparent;font:inherit}.gallery-controls button:hover{background:#e7ebe4}.gallery-controls button:focus-visible{outline:2px solid #af784e;outline-offset:2px}.gallery-controls .close-gallery{padding:0 12px}.gallery-controls .gallery-count{margin-inline:auto;font-size:.85rem}
body.gallery-open{overflow:hidden}
@media(max-width:560px){.seal{width:64px;height:64px;right:15px;bottom:15px}.seal>svg{width:62px;height:62px}.hero-art:after{inset:8px}.hero-art figcaption{font-size:.61rem}}
@media(prefers-reduced-motion:reduce){*,*::before,*::after{animation:none!important;transition:none!important;scroll-behavior:auto!important}}


/* The hero uses a moving crop inside a separate reveal mask. */
.hero-window {
  position: relative;
  animation: stone-mask 1.45s cubic-bezier(.18,.82,.23,1) both;
}
.hero-window::after {
  position: absolute;
  inset: 0;
  content: '';
  pointer-events: none;
  background: linear-gradient(120deg, transparent 36%, #fff9e830 49%, transparent 64%);
  transform: translateX(100%);
  animation: stone-light 1.65s .35s ease-out both;
}
.hero-art img {
  animation: stone-camera 1.8s cubic-bezier(.18,.72,.25,1) both;
  translate: var(--stone-x, 0) var(--stone-y, 0);
  transition: translate .45s cubic-bezier(.2,.7,.2,1);
}
.hero-copy h1 {
  animation-name: title-cut;
  animation-duration: 1.15s;
}
.hero-copy h1 em {
  display: inline-block;
  animation: title-cut 1.2s .12s cubic-bezier(.16,.8,.24,1) both;
}
@keyframes stone-mask {
  from { clip-path: inset(7% 0 0 100%); }
  to { clip-path: inset(0); }
}
@keyframes stone-camera {
  from { transform: scale(1.21); }
  to { transform: scale(1.05); }
}
@keyframes stone-light {
  from { transform: translateX(-100%); }
  to { transform: translateX(100%); }
}
@keyframes title-cut {
  from { clip-path: inset(0 0 100% 0); transform: translateY(19px); opacity: .3; }
  to { clip-path: inset(0 0 -12% 0); transform: translateY(0); opacity: 1; }
}
.seal .orbit { animation: turn-seal 2.55s .55s cubic-bezier(.15,.73,.23,1) both; }
@keyframes turn-seal {
  from { rotate: -205deg; }
  to { rotate: 0deg; }
}
.reading-progress {
  position: absolute;
  bottom: -1px;
  inset-inline: 0;
  height: 2px;
  background: #55756c;
  transform: scaleX(var(--reading-progress, 0));
  transform-origin: left;
  pointer-events: none;
}
.section-head h2, .approach h2, .contact h2 { text-wrap: balance; }
.section-head.motion-in, .approach > .motion-in, .contact-grid > .motion-in {
  animation-name: title-cut;
  animation-duration: .95s;
}
.services article { position: relative; }
.services article::before {
  content: '';
  position: absolute;
  inset: -1px 0 auto;
  height: 2px;
  background: var(--accent);
  transform: scaleX(0);
  transform-origin: left;
  transition: transform .45s cubic-bezier(.2,.7,.25,1);
}
.services article:hover::before { transform: scaleX(1); }
.cards .motion-in { animation-name: gallery-reveal; animation-duration: 1s; }
@keyframes gallery-reveal {
  from { clip-path: inset(12% 0 14%); transform: translateY(18px); opacity: .4; }
  to { clip-path: inset(0); transform: translateY(0); opacity: 1; }
}
.card-photo .zoom { transition: transform .35s ease, background .3s ease, color .3s ease; }
.card-photo:hover .zoom, .card-photo:focus-visible .zoom {
  transform: rotate(90deg) scale(1.08);
  background: var(--ink);
  color: var(--white);
}
.whatsapp-link { display: inline-flex; align-items: center; gap: 9px; }
.whatsapp-link svg { width: 22px; height: 22px; flex: none; }
.whatsapp-float {
  position: fixed;
  z-index: 3;
  inset-inline-end: max(16px, env(safe-area-inset-right));
  bottom: calc(16px + env(safe-area-inset-bottom));
  min-height: 50px;
  border: 1px solid #ffffff30;
  border-radius: 40px;
  padding: 0 15px;
  color: #fff;
  background: #136044;
  box-shadow: 0 5px 24px #182f2840;
  font-size: .84rem;
  font-weight: 700;
  transition: transform .3s ease, background .3s ease;
}
.whatsapp-float:hover { transform: translateY(-3px); background: #0e5038; }
footer.shell { padding-bottom: calc(76px + env(safe-area-inset-bottom)); }
@media(max-width:560px) {
  .whatsapp-float { min-width: 52px; justify-content: center; padding: 0 13px; }
  .whatsapp-float span { position: absolute; clip-path: inset(50%); width: 1px; height: 1px; overflow: hidden; }
}
@media(prefers-reduced-motion:reduce) {
  .hero-art img { translate: none; }
  .reading-progress { display: none; }
}


/* Warm bronze, smoked stone and ivory. */
:root {
  color-scheme: dark;
  --paper: #201c19;
  --white: #fbf0e0;
  --ink: #f2e7d8;
  --muted: #c8b9a9;
  --line: #55493e;
  --accent: #d9af82;
  --panel: #2d251f;
  --bronze: #dfb991;
  --on-bronze: #241a13;
}
body { background: var(--paper); }
header { background: #211b17; }
.brand svg { color: var(--accent); }
.brand small { color: var(--muted); }
.lang a[aria-current] { background: var(--bronze); color: var(--on-bronze); }
.skip { background: var(--panel); }
.hero { position: relative; isolation: isolate; }
.hero::before {
  position: absolute;
  z-index: -1;
  inset: 0 25% 0 -2%;
  background: radial-gradient(ellipse at 28% 40%, #513b2a65, transparent 68%);
  content: '';
  pointer-events: none;
}
.hero-art { background: #302820; }
.hero-art::after { border-color: #e9c49a72; }
.hero-art figcaption { color: var(--ink); background: #2a221b; }
.seal { background: #30241b; color: var(--bronze); border: 1px solid #ab825d; }
.button, .contact .button { background: var(--bronze); color: var(--on-bronze); }
.button:hover, .contact .button:hover { background: #efcaa4; }
.line-link { text-decoration-color: #b28964; }
.reading-progress { background: var(--bronze); }
.strip { background: #29221d; }
.material { background: #171411; }
.cards figure { background: var(--panel); border: 1px solid #4e4034; }
.cards img, .card-photo { background: #342a22; }
.card-photo .zoom { background: #2c221b; color: var(--ink); border: 1px solid #aa805c; }
.card-photo:hover .zoom, .card-photo:focus-visible .zoom { background: var(--bronze); color: var(--on-bronze); }
.cards figcaption { border-top: 1px solid #594335; }
.contact { background: #33271f; color: var(--white); border-block: 1px solid #5d4939; }
.contact p, address small { color: #e3d0bc; }
address > div { border-color: #78604c; }
.gallery-dialog img { background: #171411; }
.gallery-controls button:hover { background: #423226; }
.gallery-dialog::backdrop { background: #100b08db; }
.whatsapp-float { border-color: #a2b9a068; }

.hero-art img { object-position: 40% 41%; }
.cards img { object-position: center 46%; }


.gallery-toolbar { display: flex; flex-wrap: wrap; gap: 8px; margin-bottom: 20px; }
.gallery-toolbar[hidden], .cards figure[hidden], .gallery-thumbs button[hidden] { display: none; }
.gallery-toolbar button {
  padding: 9px 16px; border: 1px solid var(--line); border-radius: 30px;
  background: transparent; color: var(--ink); font: inherit; font-size: .87rem; cursor: pointer;
}
.gallery-toolbar button[aria-pressed="true"] { background: var(--bronze); color: var(--on-bronze); border-color: var(--bronze); }
.gallery-toolbar button:focus-visible, .gallery-dialog button:focus-visible { outline: 2px solid var(--bronze); outline-offset: 3px; }
.card-number {
  position: absolute; top: 13px; left: 13px; padding: 3px 9px;
  background: #201c19df; color: var(--white); font-size: .72rem; letter-spacing: .14em;
}
.gallery-dialog { width: min(1000px, calc(100% - 28px)); border: 1px solid var(--line); }
.gallery-controls { border-bottom: 1px solid var(--line); padding: 9px 18px; }
.gallery-eyebrow { color: var(--accent); font-size: .68rem; letter-spacing: .15em; }
.gallery-count { color: var(--muted); font-variant-numeric: tabular-nums; white-space: nowrap; }
.gallery-stage { position: relative; overflow: hidden; background: #171411; touch-action: pan-y pinch-zoom; }
.gallery-stage .gallery-image { height: min(53dvh, 630px); min-height: 155px; }
.gallery-stage button {
  position: absolute; top: 50%; transform: translateY(-50%); width: 49px; height: 49px;
  border-radius: 50%; border: 1px solid #d9af8288; color: var(--white); background: #211b17ed;
  font: 1.35rem var(--sans); cursor: pointer;
}
.gallery-stage button:hover { background: var(--bronze); color: var(--on-bronze); }
.gallery-prev { left: 15px; }.gallery-next { right: 15px; }
.gallery-caption { display: flex; align-items: baseline; justify-content: space-between; gap: 12px; padding: 12px 18px 4px; }
.gallery-caption .note { flex-shrink: 0; }
.gallery-thumbs { display: flex; gap: 8px; overflow: auto; padding: 11px 18px 14px; scrollbar-color: var(--accent) var(--panel); }
.gallery-thumbs button {
  flex: 0 0 57px; height: 57px; padding: 2px; border: 1px solid var(--line);
  background: var(--panel); cursor: pointer;
}
.gallery-thumbs button[aria-current="true"] { border: 2px solid var(--bronze); }
.gallery-thumbs button img { height: 100%; object-fit: cover; }
@media(max-width:560px) {
  .gallery-controls { padding-inline: 10px; }
  .gallery-eyebrow { font-size: .58rem; letter-spacing: .08em; }
  .gallery-stage button { width: 42px; height: 42px; }
  .gallery-prev { left: 6px; }.gallery-next { right: 6px; }
  .gallery-caption { flex-direction: column; gap: 0; padding-inline: 12px; }
  .gallery-thumbs { padding-inline: 12px; }
}


/* The photography stays neutral while bronze accents warm the page. */
:root { --paper: #251f1b; --panel: #322923; --muted: #d0c1b2; }
header { background: #241e1a; }
.material { background: #201a16; }
.hero::before { background: radial-gradient(ellipse at 28% 40%, #694a322e, transparent 68%); }
.hero-window::after { display: none; }
.hero-art img { object-position: center 44%; }
@keyframes stone-camera {
  from { transform: scale(1.08); }
  to { transform: scale(1.035); }
}
.cards img { object-position: center; }

.hero-art img { object-position: center 12%; }
@media (max-width: 780px) {
  .hero-art img { height: auto; aspect-ratio: 4 / 4.6; max-height: 540px; }
}

.stone-options { margin-top: clamp(40px, 7vw, 84px); border-top: 1px solid var(--line); padding-top: 28px; }
.stone-options > h3 { font-size: clamp(1.8rem, 3.4vw, 3rem); }
.options-intro { margin: 12px 0 24px; max-width: 68ch; }
.options-grid { display: grid; grid-template-columns: repeat(3, minmax(0, 1fr)); gap: 12px; }
.options-grid article { background: var(--panel); border: 1px solid var(--line); padding: 18px; }
.options-grid h4 { margin: 0 0 6px; color: var(--accent); font-size: 1rem; }
.options-grid p { font-size: .93rem; }
@media (max-width: 780px) { .options-grid { grid-template-columns: repeat(2, minmax(0, 1fr)); } }
@media (max-width: 500px) { .options-grid { grid-template-columns: 1fr; } }


.photo-signature {
  position: absolute;
  z-index: 2;
  left: 12px;
  bottom: 12px;
  padding: 4px 8px;
  border: 1px solid #e5c7a561;
  background: #211a15df;
  color: #f5e6d3;
  font: 700 .66rem/1.35 Arial, sans-serif;
  letter-spacing: .11em;
  pointer-events: none;
}
.hero-art > .photo-signature { left: 15px; bottom: 40px; }
.hero-art img { object-fit: contain; object-position: center; }
@keyframes stone-camera { from { transform: scale(.97); } to { transform: scale(1); } }
.cards .card-photo img { aspect-ratio: 1; object-fit: contain; }
.cards .card-photo:hover img, .cards .card-photo:focus-visible img { transform: scale(1.025); }
.cards .card-category {
  margin-bottom: 7px;
  color: var(--accent);
  font-size: .68rem;
  font-weight: 700;
  letter-spacing: .1em;
  text-transform: uppercase;
}
.gallery-stage .photo-signature { left: auto; right: 12px; }

