/* AL-CO · Plano de obra: blanco amplio, reglas finas como líneas de replanteo, la madera como único color. */
@font-face{font-family:"Archivo";src:url(../fonts/archivo-latin-standard-normal.woff2) format("woff2");font-weight:100 900;font-stretch:62% 125%;font-style:normal;font-display:swap}
@font-face{font-family:"Archivo";src:url(../fonts/archivo-latin-ext-standard-normal.woff2) format("woff2");font-weight:100 900;font-stretch:62% 125%;font-style:normal;font-display:swap;unicode-range:U+0100-02AF,U+1E00-1EFF}
@font-face{font-family:"Newsreader";src:url(../fonts/newsreader-latin-standard-normal.woff2) format("woff2");font-weight:200 800;font-style:normal;font-display:swap}
@font-face{font-family:"Newsreader";src:url(../fonts/newsreader-latin-standard-italic.woff2) format("woff2");font-weight:200 800;font-style:italic;font-display:swap}
@font-face{font-family:"Newsreader";src:url(../fonts/newsreader-latin-ext-standard-normal.woff2) format("woff2");font-weight:200 800;font-style:normal;font-display:swap;unicode-range:U+0100-02AF,U+1E00-1EFF}

:root{
  --paper:#ffffff;
  --mist:#f3f2ef;
  --ink:#16171a;
  --ink-2:#34353a;
  --stone:#6d6f72;
  --line:#e4e1dc;
  --wood:#8a5a36;
  --wood-soft:#c9a888;
  --night-line:#3a3b40;
  --night-text:#c9c6c0;
  --night-mute:#9a978f;
  --sans:"Archivo","Helvetica Neue",Arial,sans-serif;
  --serif:"Newsreader",Georgia,"Times New Roman",serif;
  --gut-l:max(20px, env(safe-area-inset-left, 0px));
  --gut-r:max(20px, env(safe-area-inset-right, 0px));
  --step:clamp(72px, 10vw, 136px);
  color-scheme:light;
}
*{box-sizing:border-box}
[hidden]{display:none!important}
html{scroll-behavior:smooth;scroll-padding-top:90px}
body{margin:0;background:var(--paper);color:var(--ink);font-family:var(--sans);font-size:16px;line-height:1.5;-webkit-font-smoothing:antialiased;text-rendering:optimizeLegibility}
body::before{content:"";position:fixed;inset:0 0 auto;height:env(safe-area-inset-top, 0px);z-index:60;background:var(--paper)}
img{max-width:100%;display:block}
a{color:inherit}
button{font:inherit;color:inherit;cursor:pointer}
:focus-visible{outline:2px solid var(--wood);outline-offset:3px}
p{margin:0}
.wrap{max-width:1240px;margin:0 auto;padding-left:var(--gut-l);padding-right:var(--gut-r)}

.eyebrow{font-size:12px;letter-spacing:.2em;text-transform:uppercase;color:var(--wood);font-weight:500;font-stretch:115%}
h1,h2,h3{margin:0;font-weight:600;font-stretch:112%;text-wrap:balance}
h2{font-size:clamp(30px, 4vw, 50px);line-height:1.06;letter-spacing:-.02em}
.lede{font-family:var(--serif);font-size:clamp(18px, 1.6vw, 21px);line-height:1.55;color:var(--ink-2);max-width:34em}

.btn{display:inline-flex;align-items:center;gap:10px;padding:15px 22px;font-size:14px;font-weight:500;letter-spacing:.04em;text-decoration:none;border:1px solid var(--ink);transition:background .2s,color .2s,border-color .2s}
.btn-solid{background:var(--ink);color:var(--paper)}
.btn-solid:hover{background:var(--wood);border-color:var(--wood)}
.btn-line{background:transparent;color:var(--ink)}
.btn-line:hover{background:var(--ink);color:var(--paper)}
.btn svg{width:14px;height:14px;flex-shrink:0}
.more{display:inline-flex;align-items:center;gap:10px;font-size:14px;font-weight:500;letter-spacing:.04em;text-decoration:none;border-bottom:1px solid var(--ink);padding-bottom:4px}
.more:hover{color:var(--wood);border-color:var(--wood)}
.more svg{width:14px;height:14px}

/* Cabecera */
.top{position:sticky;top:env(safe-area-inset-top, 0px);z-index:50;background:rgba(255,255,255,.95);backdrop-filter:saturate(1.2) blur(10px);-webkit-backdrop-filter:saturate(1.2) blur(10px);border-bottom:1px solid var(--line)}
.top .wrap{display:flex;align-items:center;justify-content:space-between;gap:24px;height:76px}
.logo{display:flex;align-items:center;gap:12px;text-decoration:none;flex-shrink:0}
.logo .m{width:40px;height:auto}
.logo .w{height:21px;width:auto}
.nav{display:flex;align-items:center;gap:32px}
.nav ul{display:flex;gap:30px;list-style:none;margin:0;padding:0}
.nav ul a{text-decoration:none;font-size:14px;color:var(--ink-2);letter-spacing:.02em;padding:8px 0;border-bottom:1px solid transparent;transition:border-color .2s,color .2s}
.nav ul a:hover{color:var(--ink);border-color:var(--line)}
.nav ul a[aria-current="page"]{color:var(--ink);border-color:var(--wood);font-weight:500}
.lang{display:flex;gap:2px;border:1px solid var(--line);padding:2px}
.lang button{border:0;background:transparent;font-size:11px;letter-spacing:.12em;font-weight:500;padding:5px 8px;color:var(--stone)}
.lang button[aria-pressed="true"]{background:var(--ink);color:var(--paper)}
.top .btn{padding:11px 16px;font-size:13px}
.menu-btn{display:none;border:1px solid var(--line);background:transparent;width:44px;height:44px;align-items:center;justify-content:center}
.menu-btn span{display:block;width:18px;height:1.5px;background:var(--ink);position:relative}
.menu-btn span::before,.menu-btn span::after{content:"";position:absolute;left:0;width:18px;height:1.5px;background:var(--ink);transition:transform .2s}
.menu-btn span::before{top:-6px}.menu-btn span::after{top:6px}
.menu-open .menu-btn span{background:transparent}
.menu-open .menu-btn span::before{transform:translateY(6px) rotate(45deg)}
.menu-open .menu-btn span::after{transform:translateY(-6px) rotate(-45deg)}

/* Portada */
.hero{padding-block:clamp(40px, 7vw, 96px) var(--step)}
.hero .wrap{display:grid;grid-template-columns:1.05fr .95fr;gap:clamp(32px, 6vw, 96px);align-items:end}
.hero-text{display:flex;flex-direction:column;gap:28px;min-width:0;padding-bottom:8px}
.hero h1{font-size:clamp(42px, 6.4vw, 86px);line-height:.98;letter-spacing:-.035em}
.hero h1 em{font-style:normal;color:var(--wood);display:block}
.ctas{display:flex;flex-wrap:wrap;gap:12px}
.facts{display:grid;grid-template-columns:repeat(3,1fr);border-top:1px solid var(--ink);margin-top:20px}
.facts div{padding:16px 16px 0 0;display:flex;flex-direction:column;gap:4px;min-width:0}
.facts div+div{padding-left:16px;border-left:1px solid var(--line)}
.facts strong{font-size:clamp(24px, 2.6vw, 34px);font-weight:600;font-stretch:112%;letter-spacing:-.02em;line-height:1;font-variant-numeric:tabular-nums}
.facts span{font-size:13px;color:var(--stone);line-height:1.35}
.fig{margin:0;display:flex;flex-direction:column;gap:10px;min-width:0}
.fig .ph{overflow:hidden;background:var(--mist);max-width:100%}
.fig img{width:100%;height:100%;object-fit:cover}
.hero .fig .ph{aspect-ratio:4/5}
.hero .fig img{object-position:50% 30%;animation:settle 1.6s cubic-bezier(.2,.7,.1,1) both}
@keyframes settle{from{transform:scale(1.06)}to{transform:scale(1)}}
.cap{font-size:12px;color:var(--stone);letter-spacing:.03em;display:flex;justify-content:space-between;gap:12px}

/* Cabecera de página interior */
.page-head{padding-block:clamp(48px, 8vw, 112px) clamp(40px, 6vw, 80px);border-bottom:1px solid var(--line)}
.page-head .wrap{display:grid;grid-template-columns:1.1fr .9fr;gap:clamp(24px, 5vw, 80px);align-items:end}
.page-head .t{display:flex;flex-direction:column;gap:22px;min-width:0}
.page-head h1{font-size:clamp(40px, 6vw, 80px);line-height:1;letter-spacing:-.035em}
.crumbs{font-size:12px;color:var(--stone);letter-spacing:.06em;display:flex;gap:8px}
.crumbs a{text-decoration:none}
.crumbs a:hover{color:var(--wood)}

/* Secciones */
.sec{padding-block:var(--step)}
.sec-head{display:grid;grid-template-columns:1fr 1fr;gap:clamp(24px, 5vw, 80px);align-items:end;margin-bottom:clamp(40px, 5vw, 64px)}
.sec-head .t{display:flex;flex-direction:column;gap:18px;min-width:0}
.band{background:var(--mist)}
.sec-foot{margin-top:clamp(32px, 4vw, 48px)}

/* Portada · índice de servicios */
.idx{display:grid;grid-template-columns:repeat(4,1fr);border-top:1px solid var(--ink);list-style:none;margin:0;padding:0}
.idx li{border-bottom:1px solid var(--line);min-width:0}
.idx li:not(:nth-child(4n+1)){border-left:1px solid var(--line)}
.idx a{display:flex;justify-content:space-between;align-items:flex-start;gap:12px;padding:24px 20px 26px 0;text-decoration:none;min-height:100%;transition:color .2s}
.idx li:not(:nth-child(4n+1)) a{padding-left:20px}
.idx h3{font-size:18px;line-height:1.25;letter-spacing:-.005em}
.idx svg{width:16px;height:16px;flex-shrink:0;margin-top:3px;color:var(--stone);transition:transform .25s,color .2s}
.idx a:hover{color:var(--wood)}
.idx a:hover svg{transform:translateX(4px);color:var(--wood)}

/* Antes / después */
.ba{display:grid;grid-template-columns:1fr 1fr;gap:16px}
.ba figure{margin:0;position:relative;overflow:hidden;background:var(--mist);aspect-ratio:4/5}
.ba img{width:100%;height:100%;object-fit:cover}
.tag{position:absolute;left:16px;top:16px;background:var(--paper);font-size:11px;letter-spacing:.18em;text-transform:uppercase;font-weight:600;font-stretch:115%;padding:7px 11px}
.ba-cap{font-size:13px;color:var(--stone);margin-top:14px}

/* Galería */
.gal{columns:3;column-gap:16px}
.gal button{display:block;width:100%;padding:0;border:0;background:none;text-align:left;margin:0 0 28px;break-inside:avoid}
.gal .ph{overflow:hidden;background:var(--mist)}
.gal img{width:100%;height:auto;transition:transform .6s cubic-bezier(.2,.7,.1,1)}
.gal button:hover img{transform:scale(1.03)}
.gal span{display:block;margin-top:10px;font-size:13px;color:var(--stone);letter-spacing:.02em}

/* Lightbox */
.lb{position:fixed;inset:0;z-index:80;background:rgba(18,18,20,.94);display:grid;grid-template-rows:1fr auto;padding:calc(64px + env(safe-area-inset-top, 0px)) max(72px, env(safe-area-inset-right, 0px)) calc(20px + env(safe-area-inset-bottom, 0px)) max(72px, env(safe-area-inset-left, 0px))}
.lb .stage{display:flex;min-height:0}
.lb img{max-width:100%;max-height:100%;margin:auto;object-fit:contain;min-height:0}
.lb p{color:#e9e6e1;text-align:center;font-size:14px;letter-spacing:.03em;padding-top:14px}
.lb button{position:absolute;background:transparent;border:1px solid rgba(255,255,255,.35);color:#fff;width:46px;height:46px;display:grid;place-items:center}
.lb button:hover{background:rgba(255,255,255,.12)}
.lb .x{top:calc(10px + env(safe-area-inset-top, 0px));right:max(16px, env(safe-area-inset-right, 0px))}
.lb .pv{left:max(16px, env(safe-area-inset-left, 0px));top:50%}
.lb .nx{right:max(16px, env(safe-area-inset-right, 0px));top:50%}
.lb svg{width:18px;height:18px}

/* Servicios · filas */
.svc-row{display:grid;grid-template-columns:1fr 1fr;gap:clamp(32px, 6vw, 96px);align-items:center;padding-block:clamp(56px, 7vw, 96px);border-bottom:1px solid var(--line)}
.svc-row:nth-of-type(even) .fig{order:2}
.svc-row .fig .ph{aspect-ratio:5/4}
.svc-row .t{display:flex;flex-direction:column;gap:18px;min-width:0}
.svc-row h2{font-size:clamp(28px, 3.2vw, 42px)}
.svc-row .lede+.lede{margin-top:-4px}
.chips{display:flex;flex-wrap:wrap;gap:8px;margin-top:6px}
.chips span{font-size:11px;letter-spacing:.14em;text-transform:uppercase;color:var(--ink-2);border:1px solid var(--line);padding:7px 10px}
.doors{display:grid;grid-template-columns:repeat(3,1fr);border-top:1px solid var(--ink);margin-top:8px}
.doors div{padding:22px 22px 0 0;display:flex;flex-direction:column;gap:10px;min-width:0}
.doors div+div{padding-left:22px;border-left:1px solid var(--line)}
.doors h3{font-size:19px}
.doors p{font-family:var(--serif);font-size:16px;line-height:1.5;color:var(--ink-2)}
.svc-row.wide{grid-template-columns:1fr}
.svc-row.wide .t{max-width:none}

/* Proceso */
.steps{display:grid;grid-template-columns:repeat(4,1fr);list-style:none;margin:0;padding:0}
.steps li{padding:0 28px 0 0;display:flex;flex-direction:column;gap:14px;min-width:0}
.steps li+li{padding-left:28px;border-left:1px solid #dcd8d1}
.steps .n{font-size:13px;font-weight:500;color:var(--wood);letter-spacing:.1em;font-variant-numeric:tabular-nums;font-stretch:115%}
.steps h3{font-size:20px;letter-spacing:-.01em}
.steps p{font-family:var(--serif);font-size:16px;line-height:1.5;color:var(--ink-2)}

/* Empresa */
.about{display:grid;grid-template-columns:.9fr 1.1fr;gap:clamp(32px, 6vw, 96px);align-items:center}
.about .fig .ph{aspect-ratio:4/5}
.about .fig img{object-position:40% 50%}
.about .t{display:flex;flex-direction:column;gap:22px;min-width:0}
.about .lede+.lede{margin-top:-6px}
.vals{display:grid;grid-template-columns:repeat(3,1fr);border-top:1px solid var(--ink);margin-top:12px}
.vals div{padding:18px 16px 0 0;display:flex;flex-direction:column;gap:6px;min-width:0}
.vals div+div{padding-left:16px;border-left:1px solid #dcd8d1}
.vals strong{font-size:17px;font-weight:600;font-stretch:110%}
.vals span{font-size:14px;color:var(--stone);line-height:1.4}
.quote{font-family:var(--serif);font-style:italic;font-size:19px;color:var(--ink);border-left:2px solid var(--wood);padding-left:18px;margin-top:8px}
.home-about{display:grid;grid-template-columns:1fr 1fr;gap:clamp(32px, 6vw, 96px);align-items:start}
.home-about .t{display:flex;flex-direction:column;gap:20px;min-width:0}
.stats{display:grid;grid-template-columns:repeat(3,1fr);border-top:1px solid var(--ink)}
.stats div{padding:24px 20px 0 0;display:flex;flex-direction:column;gap:8px;min-width:0}
.stats div+div{padding-left:20px;border-left:1px solid #dcd8d1}
.stats strong{font-size:clamp(36px, 4.4vw, 60px);font-weight:600;font-stretch:112%;letter-spacing:-.03em;line-height:1;font-variant-numeric:tabular-nums}
.stats span{font-size:14px;color:var(--stone);line-height:1.4}

/* Contacto */
.contact-grid{display:grid;grid-template-columns:1fr 1.1fr;gap:clamp(40px, 6vw, 96px);align-items:start}
.info{list-style:none;margin:0;padding:0;border-top:1px solid var(--ink)}
.info li{display:grid;grid-template-columns:140px 1fr;gap:16px;padding:18px 0;border-bottom:1px solid var(--line);min-width:0}
.info .k{font-size:12px;letter-spacing:.16em;text-transform:uppercase;color:var(--stone);padding-top:3px}
.info .v{font-size:18px;line-height:1.5;min-width:0;overflow-wrap:anywhere}
.info a{text-decoration:none;border-bottom:1px solid var(--line)}
.info a:hover{border-color:var(--wood);color:var(--wood)}
.form-card{background:var(--mist);padding:clamp(24px, 4vw, 48px)}
.form-card h2{font-size:clamp(24px, 2.6vw, 32px);margin-bottom:28px}
form{display:grid;grid-template-columns:1fr 1fr;gap:20px 16px;align-content:start}
.f{display:flex;flex-direction:column;gap:8px;min-width:0}
.f.full{grid-column:1/-1}
.f label{font-size:12px;letter-spacing:.14em;text-transform:uppercase;color:var(--stone)}
.f input,.f select,.f textarea{font:inherit;font-size:16px;color:var(--ink);background:transparent;border:0;border-bottom:1px solid #cfcac2;padding:10px 0;border-radius:0;width:100%;outline:none;transition:border-color .2s}
.f select{appearance:none;-webkit-appearance:none;background-image:linear-gradient(45deg,transparent 50%,var(--stone) 50%),linear-gradient(135deg,var(--stone) 50%,transparent 50%);background-position:calc(100% - 10px) 52%,calc(100% - 5px) 52%;background-size:5px 5px;background-repeat:no-repeat}
.f textarea{resize:vertical;min-height:120px}
.f input:focus,.f select:focus,.f textarea:focus{border-color:var(--wood)}
.form-foot{grid-column:1/-1;display:flex;flex-wrap:wrap;align-items:center;gap:16px 24px;margin-top:8px}
.note{font-size:13px;color:var(--stone);max-width:30em}
.status{grid-column:1/-1;font-size:14px;color:var(--wood);min-height:1.4em}

/* Llamada a la acción */
.cta-band{background:var(--ink);color:#f2f0ec}
.cta-band .wrap{display:grid;grid-template-columns:1.2fr .8fr;gap:clamp(32px, 5vw, 80px);align-items:end;padding-block:clamp(64px, 8vw, 112px)}
.cta-band .t{display:flex;flex-direction:column;gap:20px;min-width:0}
.cta-band .eyebrow{color:var(--wood-soft)}
.cta-band .lede{color:var(--night-text)}
.cta-band .act{display:flex;flex-direction:column;gap:18px;align-items:flex-start}
.cta-band .btn-solid{background:#f2f0ec;color:var(--ink);border-color:#f2f0ec}
.cta-band .btn-solid:hover{background:var(--wood-soft);border-color:var(--wood-soft)}
.cta-band .tel{font-size:14px;color:var(--night-mute);display:flex;flex-wrap:wrap;align-items:baseline;gap:8px 16px}
.cta-band .tel span{width:100%}
.cta-band .tel a{color:#f2f0ec;text-decoration:none;border-bottom:1px solid #55565c;font-size:18px;font-variant-numeric:tabular-nums}
.cta-band .tel a:hover{border-color:var(--wood-soft)}

/* Pie */
.foot{background:var(--ink);color:var(--night-text);border-top:1px solid #2a2b30}
.foot .cols{display:grid;grid-template-columns:1.3fr 1fr 1fr 1fr;gap:32px;padding-block:56px 40px}
.foot .lg{display:flex;flex-direction:column;gap:16px}
.foot .lg .b{display:flex;align-items:center;gap:12px}
.foot .lg img{height:36px;width:auto}
.foot .lg .w{height:18px}
.foot .lg p{font-size:14px;color:var(--night-mute);max-width:22em;line-height:1.5}
.foot h4{margin:0 0 14px;font-size:11px;letter-spacing:.18em;text-transform:uppercase;color:var(--night-mute);font-weight:500}
.foot ul{list-style:none;margin:0;padding:0;display:flex;flex-direction:column;gap:8px;font-size:14px}
.foot ul a{text-decoration:none}
.foot ul a:hover{color:var(--wood-soft)}
.foot .legal{border-top:1px solid var(--night-line);display:flex;flex-wrap:wrap;justify-content:space-between;gap:12px;padding-block:22px;font-size:12px;letter-spacing:.08em;text-transform:uppercase;color:var(--night-mute)}

/* Responsive */
@media (max-width:1080px){
  .idx{grid-template-columns:repeat(2,1fr)}
  .idx li:not(:nth-child(4n+1)){border-left:0}
  .idx li:not(:nth-child(4n+1)) a{padding-left:0}
  .idx li:nth-child(even){border-left:1px solid var(--line)}
  .idx li:nth-child(even) a{padding-left:20px}
  .steps{grid-template-columns:repeat(2,1fr);row-gap:40px}
  .steps li:nth-child(3){padding-left:0;border-left:0}
  .foot .cols{grid-template-columns:1fr 1fr}
}
@media (max-width:960px){
  .nav{position:fixed;left:0;right:0;top:calc(76px + env(safe-area-inset-top, 0px));background:var(--paper);border-bottom:1px solid var(--line);flex-direction:column;align-items:stretch;gap:20px;padding:12px var(--gut-r) 28px var(--gut-l);display:none;box-shadow:0 24px 40px -24px rgba(22,23,26,.25)}
  .menu-open .nav{display:flex}
  .nav ul{flex-direction:column;gap:0}
  .nav ul a{display:block;padding:16px 0;border-bottom:1px solid var(--line);font-size:18px}
  .nav ul a[aria-current="page"]{border-bottom-color:var(--line);color:var(--wood)}
  .lang{align-self:flex-start}
  .nav .btn{justify-content:center;padding:16px 20px;font-size:15px}
  .menu-btn{display:inline-flex}
  .hero .wrap,.sec-head,.about,.contact-grid,.page-head .wrap,.svc-row,.home-about,.cta-band .wrap{grid-template-columns:1fr}
  .svc-row:nth-of-type(even) .fig{order:0}
  .hero .fig .ph{aspect-ratio:4/3}
  .gal{columns:2}
}
@media (max-width:620px){
  .top .wrap{height:66px}
  html{scroll-padding-top:80px}
  .nav{top:calc(66px + env(safe-area-inset-top, 0px))}
  .logo .w{height:18px}.logo .m{width:34px}
  .idx{grid-template-columns:1fr}
  .idx li:nth-child(even){border-left:0}
  .idx li:nth-child(even) a{padding-left:0}
  .idx a{padding-right:0}
  .steps{grid-template-columns:1fr}
  .steps li,.steps li+li{padding:0 0 28px;border-left:0;border-bottom:1px solid #dcd8d1}
  .doors{grid-template-columns:1fr}
  .doors div,.doors div+div{padding:20px 0;border-left:0;border-bottom:1px solid var(--line)}
  .facts div+div,.stats div+div{padding-left:10px}
  .facts div,.stats div{padding-right:10px}
  .vals{grid-template-columns:1fr}
  .vals div,.vals div+div{padding:14px 0;border-left:0;border-bottom:1px solid #dcd8d1;flex-direction:row;justify-content:space-between;gap:16px}
  .vals span{text-align:right}
  .ba{gap:8px}
  .tag{left:8px;top:8px;font-size:10px;padding:5px 8px}
  .gal{columns:1}
  form{grid-template-columns:1fr}
  .info li{grid-template-columns:1fr;gap:4px}
  .foot .cols{grid-template-columns:1fr}
  .lb{padding-left:max(16px, env(safe-area-inset-left, 0px));padding-right:max(16px, env(safe-area-inset-right, 0px))}
  .lb .pv,.lb .nx{top:auto;bottom:calc(14px + env(safe-area-inset-bottom, 0px))}
  .lb p{padding:14px 56px 4px;min-height:60px}
}
@media (prefers-reduced-motion:reduce){
  html{scroll-behavior:auto}
  *,*::before,*::after{animation:none!important;transition:none!important}
}

/* Añadidos */
.mat{font-size:11px;letter-spacing:.16em;text-transform:uppercase;color:var(--wood);font-weight:500;font-stretch:112%}
.svc-list .svc-row:last-child{border-bottom:0}

/* Contacto directo (sin formulario) */
.reach{display:flex;flex-direction:column;gap:18px}
.reach h2{margin-bottom:0}
.reach-btns{display:flex;flex-direction:column;gap:12px;margin-top:10px}
.reach-btns .btn{justify-content:space-between;flex-wrap:wrap;gap:4px 16px;padding:20px 22px;font-size:13px;letter-spacing:.08em;text-transform:uppercase}
.reach-btns .btn strong{font-size:18px;font-weight:500;letter-spacing:0;text-transform:none;font-variant-numeric:tabular-nums;overflow-wrap:anywhere}
.reach-btns .btn-line{background:var(--paper)}
.reach-btns .btn-line:hover{background:var(--ink)}

/* =========================================================
   Movimiento y microinteracciones
   ========================================================= */
::selection{background:var(--wood);color:#fff}
:root{--ease:cubic-bezier(.2,.7,.1,1);--ease-io:cubic-bezier(.65,0,.35,1)}

/* Transición suave entre páginas (navegadores compatibles) */
@view-transition{navigation:auto}
::view-transition-old(root){animation:vt-out .28s var(--ease-io) both}
::view-transition-new(root){animation:vt-in .45s var(--ease) both}
@keyframes vt-out{to{opacity:0;transform:translateY(-6px)}}
@keyframes vt-in{from{opacity:0;transform:translateY(10px)}}

/* Carga inicial */
@keyframes rise{from{opacity:0;transform:translateY(22px)}to{opacity:1;transform:none}}
@keyframes wipe{from{clip-path:inset(0 0 100% 0)}to{clip-path:inset(0 0 0 0)}}
@keyframes fadein{from{opacity:0}to{opacity:1}}
.top{animation:fadein .6s var(--ease) both}
.hero-text>*,.page-head .t>*,.page-head .wrap>.lede{animation:rise .9s var(--ease) both}
.hero-text>*:nth-child(1),.page-head .t>*:nth-child(1){animation-delay:.05s}
.hero-text>*:nth-child(2),.page-head .t>*:nth-child(2){animation-delay:.14s}
.hero-text>*:nth-child(3),.page-head .t>*:nth-child(3){animation-delay:.24s}
.hero-text>*:nth-child(4),.page-head .wrap>.lede{animation-delay:.34s}
.hero-text>*:nth-child(5){animation-delay:.44s}
.hero .fig .ph{animation:wipe 1.2s var(--ease-io) .15s both}
.hero .fig .cap{animation:fadein .8s var(--ease) .9s both}

/* Revelado al hacer scroll (solo con JS activo) */
.js .rv{opacity:0;transform:translateY(28px);transition:opacity .9s var(--ease),transform .9s var(--ease);transition-delay:var(--d,0s)}
.js .rv.in{opacity:1;transform:none}
.js .rv-img .ph,.js .rv-img.ph{clip-path:inset(0 0 100% 0);transition:clip-path 1.1s var(--ease-io);transition-delay:var(--d,0s)}
.js .rv-img.in .ph,.js .rv-img.in.ph{clip-path:inset(0 0 0 0)}

/* Fotos: aparecen al cargar */
.js img.lz{opacity:0;transition:opacity .7s var(--ease)}
.js img.lz.ok{opacity:1}

/* Cabecera al hacer scroll */
.top{transition:box-shadow .3s,background .3s}
.top.scrolled{box-shadow:0 10px 30px -18px rgba(22,23,26,.35)}
.top .wrap{transition:height .3s var(--ease)}
@media (min-width:961px){.top.scrolled .wrap{height:64px}}

/* Enlaces del menú: subrayado que crece */
.nav ul a{position:relative;border-bottom:0}
.nav ul a::after{content:"";position:absolute;left:0;right:0;bottom:2px;height:1px;background:var(--wood);transform:scaleX(0);transform-origin:right;transition:transform .35s var(--ease)}
.nav ul a:hover::after,.nav ul a[aria-current="page"]::after{transform:scaleX(1);transform-origin:left}
.lang button{transition:background .2s,color .2s}
.lang button:not([aria-pressed="true"]):hover{color:var(--ink);background:var(--mist)}

/* Botones: relleno que barre + flecha que avanza + pulsación */
.btn{position:relative;overflow:hidden;isolation:isolate;transition:color .35s var(--ease),border-color .35s var(--ease),transform .15s;will-change:transform}
.btn::before{content:"";position:absolute;inset:0;z-index:-1;transform:scaleX(0);transform-origin:right;transition:transform .45s var(--ease)}
.btn:hover::before{transform:scaleX(1);transform-origin:left}
.btn:active{transform:scale(.98)}
.btn svg{transition:transform .35s var(--ease)}
.btn:hover svg{transform:translateX(4px)}
.btn-solid{background:var(--ink)}
.btn-solid::before{background:var(--wood)}
.btn-solid:hover{background:var(--ink);border-color:var(--wood);color:#fff}
.btn-line::before{background:var(--ink)}
.btn-line:hover{background:transparent;color:var(--paper)}
.cta-band .btn-solid::before{background:var(--wood-soft)}
.cta-band .btn-solid:hover{background:#f2f0ec;border-color:var(--wood-soft);color:var(--ink)}
.reach-btns .btn-line:hover{background:var(--paper);color:var(--paper)}
.reach-btns .btn strong{transition:transform .35s var(--ease)}
.reach-btns .btn:hover strong{transform:translateX(-4px)}

/* Enlaces «Ver más»: línea que se recorre */
.more{border-bottom:0;padding-bottom:6px;background:linear-gradient(var(--wood),var(--wood)) 0 100%/0 1px no-repeat,linear-gradient(var(--ink),var(--ink)) 0 100%/100% 1px no-repeat;transition:background-size .45s var(--ease),color .3s}
.more:hover{background-size:100% 1px,100% 1px;color:var(--wood)}
.more svg{transition:transform .35s var(--ease)}
.more:hover svg{transform:translateX(5px)}

/* Índice de servicios */
.idx a{position:relative;transition:color .3s,background .3s}
.idx a::before{content:"";position:absolute;inset:0 -1px;background:var(--mist);opacity:0;transition:opacity .3s;z-index:-1}
.idx li{position:relative;isolation:isolate}
.idx a:hover::before{opacity:1}
.idx h3{transition:transform .35s var(--ease)}
.idx a:hover h3{transform:translateX(6px)}

/* Imágenes: zoom suave al pasar */
.fig .ph,.ba figure,.svc-row .ph{position:relative}
.fig .ph img,.ba figure img,.svc-row .ph img{transition:transform 1.2s var(--ease),opacity .7s var(--ease)}
.fig:hover .ph img,.ba figure:hover img,.svc-row:hover .ph img{transform:scale(1.04)}
.hero .fig:hover .ph img{transform:scale(1.03)}

/* Galería: velo + icono de ampliar */
.gal .ph{position:relative}
.gal .ph::after{content:"";position:absolute;inset:0;background:rgba(22,23,26,.28) url("data:image/svg+xml,%3Csvg xmlns='http://www.w3.org/2000/svg' viewBox='0 0 24 24' fill='none' stroke='white' stroke-width='1.5'%3E%3Cpath d='M15 3h6v6M9 21H3v-6M21 3l-7 7M3 21l7-7'/%3E%3C/svg%3E") center/34px no-repeat;opacity:0;transition:opacity .4s var(--ease)}
.gal button:hover .ph::after,.gal button:focus-visible .ph::after{opacity:1}
.gal button:hover img{transform:scale(1.05)}
.gal span{transition:color .3s}
.gal button:hover span{color:var(--ink)}

/* Servicios: línea de madera en la tarjeta de puertas */
.doors div{position:relative}
.doors div::before{content:"";position:absolute;left:0;right:0;top:-1px;height:2px;background:var(--wood);transform:scaleX(0);transform-origin:left;transition:transform .5s var(--ease)}
.doors div+div::before{left:0}
.doors div:hover::before{transform:scaleX(1)}

/* Pasos y valores */
.steps li .n{display:inline-block;transition:transform .35s var(--ease)}
.steps li:hover .n{transform:translateX(4px)}
.steps h3,.vals strong{transition:color .3s}
.steps li:hover h3,.vals div:hover strong{color:var(--wood)}

/* Contacto */
.info a{transition:color .3s,border-color .3s}
.info li{transition:padding .35s var(--ease)}
.info li:hover{padding-left:8px}

/* Pie */
.foot ul a{position:relative;transition:color .3s}
.foot ul a::after{content:"";position:absolute;left:0;right:0;bottom:-2px;height:1px;background:var(--wood-soft);transform:scaleX(0);transform-origin:right;transition:transform .35s var(--ease)}
.foot ul a:hover::after{transform:scaleX(1);transform-origin:left}

/* Menú móvil: despliegue */
@media (max-width:960px){
  .menu-open .nav{animation:menuIn .35s var(--ease) both}
  .menu-open .nav ul li{animation:rise .5s var(--ease) both}
  .menu-open .nav ul li:nth-child(2){animation-delay:.05s}
  .menu-open .nav ul li:nth-child(3){animation-delay:.1s}
  .menu-open .nav ul li:nth-child(4){animation-delay:.15s}
  .nav ul a::after{display:none}
  .nav ul a{border-bottom:1px solid var(--line)}
  .nav ul a:hover{color:var(--wood)}
}
@keyframes menuIn{from{opacity:0;transform:translateY(-10px)}to{opacity:1;transform:none}}

/* Visor de fotos */
.lb:not([hidden]){animation:fadein .3s var(--ease) both}
.lb:not([hidden]) .stage img{animation:lbzoom .45s var(--ease) both}
@keyframes lbzoom{from{opacity:0;transform:scale(.96)}to{opacity:1;transform:none}}
.lb button{transition:background .2s,transform .2s}
.lb button:active{transform:scale(.94)}

/* Cifras */
.facts strong,.stats strong{display:inline-block}

@media (hover:none){
  .fig:hover .ph img,.ba figure:hover img,.svc-row:hover .ph img,.gal button:hover img{transform:none}
  .gal .ph::after{display:none}
}
@media (prefers-reduced-motion:reduce){
  .js .rv,.js .rv-img .ph,.js .rv-img.ph,.js img.lz{opacity:1!important;transform:none!important;clip-path:none!important}
  @view-transition{navigation:none}
}
.skip{position:absolute;left:-9999px;top:0;z-index:100;background:var(--ink);color:var(--paper);padding:12px 16px}.skip:focus{left:16px;top:16px}
