:root{--ink:#17332d;--forest:#1d5144;--leaf:#6e8d63;--cream:#f5f0e6;--sand:#ded0b9;--sun:#e6a94b;--white:#fff;--muted:#60716b;--line:#d6ddd8;--radius:18px;
  /* Ritmo compartido: el margen lateral es el MISMO que el de la cabecera, para
     que el contenido de cualquier módulo caiga sobre la misma línea vertical.
     Antes cada pantalla elegía el suyo (25-75px, 22px, 24px) y los bordes
     bailaban al cambiar de sección. */
  --inset:clamp(22px,4vw,56px);--bloque:26px;--bloque-grande:44px}*{box-sizing:border-box}html{scroll-behavior:smooth}body{margin:0;color:var(--ink);font:17px/1.6 "DM Sans",sans-serif;background:#fbfaf7}h1,h2,h3,p{margin-top:0}h1,h2{font-family:"Newsreader",serif;line-height:1.04;font-weight:600}h1{font-size:clamp(3.2rem,7vw,6.7rem);letter-spacing:-.045em;margin-bottom:24px}h2{font-size:clamp(2.5rem,5vw,4.5rem);letter-spacing:-.035em;margin-bottom:24px}h3{font-size:1.25rem}a{color:inherit}.skip-link{position:absolute;left:-999px}.skip-link:focus{left:16px;top:16px;background:white;padding:12px;z-index:20}.site-header{height:92px;display:flex;align-items:center;justify-content:space-between;padding:0 clamp(24px,6vw,92px);position:absolute;z-index:10;width:100%}.brand{display:flex;align-items:center;gap:11px;text-decoration:none;font-weight:700;letter-spacing:.08em;line-height:1.05}.brand small{display:block;font-size:.62rem;font-weight:500;letter-spacing:.04em;margin-top:5px}.brand-mark{display:grid;place-items:center;width:42px;height:42px;border:2px solid;border-radius:50%;font-family:"Newsreader";font-size:1.6rem}.site-header nav{display:flex;gap:30px;align-items:center}.site-header nav>a{text-decoration:none;font-size:.9rem;font-weight:600}.menu-button{display:none}.button{display:inline-flex;justify-content:center;align-items:center;border:0;border-radius:999px;background:var(--forest);color:white;padding:15px 24px;font:600 .94rem "DM Sans";text-decoration:none;cursor:pointer;transition:.2s}.button:hover{background:#123d33;transform:translateY(-1px)}.button-small{padding:11px 18px}.hero{min-height:780px;display:grid;grid-template-columns:1.05fr .95fr;background:var(--cream)}.hero-copy{padding:175px clamp(24px,6vw,92px) 90px;max-width:900px}.eyebrow{text-transform:uppercase;letter-spacing:.16em;font-size:.76rem;font-weight:700;color:var(--leaf);margin-bottom:24px}.lead{font-size:1.18rem;max-width:660px;color:#405851}.actions{display:flex;align-items:center;gap:26px;margin:36px 0}.text-link{font-weight:700;text-underline-offset:5px}.trust-list{display:flex;gap:28px;padding:0;list-style:none;font-size:.86rem;font-weight:600;margin-top:56px}.trust-list li:before{content:"✓";color:var(--leaf);margin-right:8px}.hero-visual{position:relative;overflow:hidden;background:#c9d6c3;min-height:600px}.sun{position:absolute;width:210px;height:210px;border-radius:50%;background:var(--sun);top:100px;right:12%}.hill{position:absolute;border-radius:50% 50% 0 0}.hill-one{width:130%;height:47%;background:#819c77;bottom:-10%;left:-30%;transform:rotate(7deg)}.hill-two{width:100%;height:36%;background:#496f60;bottom:-12%;right:-35%;transform:rotate(-8deg)}.building{position:absolute;bottom:23%;left:20%;width:58%;height:40%;background:#f6eee0;clip-path:polygon(0 20%,50% 0,100% 20%,100% 100%,0 100%);display:grid;grid-template-columns:repeat(3,1fr);gap:10%;padding:20% 10% 8%;box-shadow:0 20px 50px #17332d33}.building span{background:#2e514b;border:6px solid white}.tree{position:absolute;width:18px;background:#744e32;bottom:15%;height:22%;z-index:2}.tree:before{content:"";position:absolute;width:110px;height:130px;background:#315c49;border-radius:50%;left:-46px;top:-90px}.tree-one{left:9%}.tree-two{right:8%;transform:scale(.8)}.hero-card{position:absolute;left:8%;bottom:7%;width:260px;background:white;padding:20px;border-radius:14px;box-shadow:0 20px 40px #17332d2b;z-index:4}.hero-card strong,.hero-card span{display:block}.hero-card span{font-size:.83rem;color:var(--muted);margin-top:5px}.section{padding:110px clamp(24px,7vw,110px)}.intro{text-align:center}.intro>h2{max-width:830px;margin-left:auto;margin-right:auto}.feature-grid{display:grid;grid-template-columns:repeat(3,1fr);gap:20px;margin-top:70px;text-align:left}.feature-grid article{padding:32px;border-top:1px solid var(--line)}.number{color:var(--sun);font:600 2rem "Newsreader"}.feature-grid h3{margin:38px 0 12px}.feature-grid p{color:var(--muted)}.project{display:grid;grid-template-columns:1.1fr .9fr;gap:8%;background:var(--forest);color:white}.project-art{min-height:500px;background:#b9c8b1;position:relative;overflow:hidden;border-radius:var(--radius)}.project-house{position:absolute;left:12%;bottom:0;width:76%;height:68%;background:#eee4d5;clip-path:polygon(0 18%,50% 0,100% 18%,100% 100%,0 100%);display:flex;align-items:flex-end;justify-content:center;gap:10%;padding:20% 10% 12%}.project-house i{width:22%;height:55%;background:#375c54;border:8px solid white}.project-copy{align-self:center}.project-copy p{color:#d9e2de}.project-copy .eyebrow{color:#b8d1c3}.project-copy dl{display:grid;grid-template-columns:repeat(3,1fr);margin:35px 0;padding:25px 0;border-block:1px solid #ffffff33}.project-copy dt{font-size:.76rem;color:#b8c9c3}.project-copy dd{font:500 1.3rem "Newsreader";margin:5px 0 0}.note{font-size:.75rem!important}.evaluation{max-width:1300px;margin:auto}.evaluation-heading{max-width:800px}.questions{display:grid;grid-template-columns:repeat(2,1fr);gap:20px;margin:45px 0 28px}label{font-size:.86rem;font-weight:600}select,input,textarea{display:block;width:100%;margin-top:9px;border:1px solid var(--line);border-radius:10px;padding:14px;background:white;color:var(--ink);font:inherit}select:focus,input:focus,textarea:focus{outline:3px solid #e6a94b55;border-color:var(--sun)}.result{margin-top:30px;padding:28px;border-radius:var(--radius);background:var(--cream);border-left:6px solid var(--sun)}.result strong{display:block;font:600 2rem "Newsreader"}.contact{background:var(--sand);display:grid;grid-template-columns:.8fr 1.2fr;gap:8%}.contact form{display:grid;grid-template-columns:1fr 1fr;gap:18px}.contact .full{grid-column:1/-1}.consent{display:flex;gap:10px;align-items:flex-start}.consent input{width:auto;margin-top:5px}.form-status{align-self:center;margin:0}.form-status.success{color:#185441;font-weight:700}footer{background:#102d27;color:white;padding:50px clamp(24px,7vw,110px);display:grid;grid-template-columns:1fr auto auto;gap:40px;align-items:center;font-size:.78rem}.inverse{color:white}footer p{margin:0;color:#b8c9c3}
@media(max-width:850px){.site-header{height:76px}.menu-button{display:block;border:1px solid var(--ink);border-radius:999px;padding:8px 13px;background:transparent}.site-header nav{display:none;position:absolute;top:70px;left:20px;right:20px;background:white;padding:24px;border-radius:14px;box-shadow:0 20px 45px #17332d33;flex-direction:column;align-items:stretch}.site-header nav.open{display:flex}.hero{grid-template-columns:1fr}.hero-copy{padding-top:140px}.hero-visual{min-height:540px}.trust-list{flex-wrap:wrap}.feature-grid,.project,.contact{grid-template-columns:1fr}.questions{grid-template-columns:1fr}.project-copy{order:-1}.contact form{grid-template-columns:1fr}.contact .full{grid-column:auto}footer{grid-template-columns:1fr}.section{padding-block:80px}}@media(max-width:480px){h1{font-size:3.1rem}.actions{align-items:flex-start;flex-direction:column}.trust-list{display:block}.trust-list li{margin:9px 0}.project-copy dl{grid-template-columns:1fr;gap:18px}.hero-card{width:230px}.section{padding-inline:22px}}
.marketplace{background:#fff}.marketplace-heading{display:grid;grid-template-columns:1fr .7fr;gap:8%;align-items:end}.marketplace-heading>p{color:var(--muted)}.market-toolbar{display:flex;gap:10px;margin:42px 0 28px;overflow:auto}.filter{border:1px solid var(--line);border-radius:999px;background:white;padding:10px 18px;color:var(--ink);font:600 .85rem "DM Sans";cursor:pointer;white-space:nowrap}.filter.active{background:var(--ink);color:white}.listing-grid{display:grid;grid-template-columns:repeat(3,1fr);gap:22px}.listing-card{border:1px solid var(--line);border-radius:var(--radius);overflow:hidden;background:white;transition:.2s}.listing-card:hover{transform:translateY(-4px);box-shadow:0 18px 40px #17332d12}.listing-card[hidden]{display:none}.listing-image{height:260px;position:relative;overflow:hidden}.home-image{background:linear-gradient(145deg,#b9cbb8,#6f947d)}.home-image:after{content:"";position:absolute;width:68%;height:58%;left:16%;bottom:0;background:#eee4d5;clip-path:polygon(0 20%,50% 0,100% 20%,100% 100%,0 100%)}.chair-image{background:linear-gradient(145deg,#eadfcf,#c3a98c)}.chair-image:after{content:"";position:absolute;width:48%;height:46%;border-radius:40% 40% 15% 15%;background:#6e8d63;left:26%;bottom:18%;box-shadow:-38px 35px 0 -20px #4f7049,38px 35px 0 -20px #4f7049}.service-image{background:linear-gradient(145deg,#d8e4dc,#92ad9b)}.service-image:after{content:"+";position:absolute;font:500 10rem "Newsreader";color:#fff9;inset:0;display:grid;place-items:center}.badge{position:absolute;z-index:2;top:15px;left:15px;background:white;padding:7px 11px;border-radius:999px;font-size:.69rem;font-weight:700}.badge-protected:before{content:"◆ ";color:var(--sun)}.badge-verified:before{content:"● ";color:var(--leaf)}.badge-identity:before{content:"✓ ";color:var(--forest)}.heart{position:absolute;right:14px;top:14px;z-index:3;border:0;border-radius:50%;background:white;width:38px;height:38px;font-size:1.4rem;color:var(--ink);cursor:pointer}.heart.saved{background:var(--forest);color:white}.listing-body{padding:22px}.listing-type{font-size:.72rem;color:var(--leaf);text-transform:uppercase;letter-spacing:.1em;font-weight:700;margin-bottom:8px}.listing-body h3{margin-bottom:14px}.listing-body>p:last-of-type{font-size:.83rem;color:var(--muted)}.price{font-weight:700}.price small{display:block;font-weight:500;color:var(--muted)}.listing-action{border:0;background:none;padding:0;font:700 .87rem "DM Sans";cursor:pointer}.market-cta{display:flex;justify-content:space-between;align-items:center;gap:25px;margin-top:28px;padding:28px;background:var(--cream);border-radius:var(--radius)}.market-cta strong,.market-cta span{display:block}.market-cta span{color:var(--muted);font-size:.88rem}.secure-process{display:grid;grid-template-columns:.8fr 1.2fr;gap:9%;background:var(--cream)}.process-steps{list-style:none;margin:0;padding:0}.process-steps li{display:flex;gap:20px;padding:22px 0;border-bottom:1px solid #cfc6b8}.process-steps li>span{flex:0 0 38px;height:38px;border-radius:50%;background:var(--sun);display:grid;place-items:center;font-weight:700}.process-steps p{margin:3px 0 0;color:var(--muted);font-size:.87rem}dialog{border:0;border-radius:20px;padding:40px;max-width:560px;color:var(--ink);box-shadow:0 30px 80px #102d2766}dialog::backdrop{background:#102d27aa}.dialog-close{position:absolute;right:18px;top:14px;border:0;background:none;font-size:2rem;cursor:pointer}.dialog-confirm{margin-top:10px}@media(max-width:850px){.marketplace-heading,.secure-process{grid-template-columns:1fr}.listing-grid{grid-template-columns:1fr 1fr}}@media(max-width:600px){.listing-grid{grid-template-columns:1fr}.market-cta{align-items:flex-start;flex-direction:column}}

/* Sistema de marca Uproinco: unión, patrimonio y territorio. */
.brand-mark{display:block;flex:0 0 44px;width:44px;height:44px;border:0;border-radius:13px;background:url("assets/uproinco-symbol.svg") center/contain no-repeat;color:transparent;font-size:0;overflow:hidden;box-shadow:0 7px 18px rgba(23,59,50,.16)}
/* El cuadro del símbolo es #173b32 y el pie rgb(16,45,39): sobre fondo
   oscuro el logo se derretía y solo flotaban la U y el rombo. */
.brand.inverse .brand-mark{background-image:url("assets/uproinco-symbol-inverse.svg");box-shadow:0 7px 18px rgba(0,0,0,.28)}

/* Plantilla de página: un solo encabezado y un solo ancho para todos los
   módulos. Antes cada pantalla repetía su cabecera con tamaños distintos
   (3rem aquí, 5.5rem allá) y su propio margen inferior. */
.page-shell,.map-shell,.portfolio-main,.asset-shell,.case-main{
  box-sizing:border-box;width:100%;max-width:1320px;margin-inline:auto;
  padding:var(--bloque-grande) var(--inset) calc(var(--bloque-grande) * 1.6);
}
.page-heading,.map-heading,.portfolio-header,.verify-heading{margin-bottom:var(--bloque)}
.page-heading h1,.map-heading h1,.verify-heading h1{
  margin:6px 0 10px;font:600 clamp(2.2rem,4.4vw,3.4rem)/1.02 Newsreader,serif;
}
.page-heading > p:last-child,.map-heading > div > p:last-child,.verify-heading > p:last-child{
  color:var(--muted);font-size:1rem;margin:0;max-width:62ch;
}

/* Un elemento con [hidden] no se ve, y punto. Cualquier `display:grid|flex` de
   autor gana al del navegador y deja cajas vacías con borde y relleno por la
   pantalla: así vivía un aviso de propuestas de 36 px en el panel. */
[hidden]{display:none!important}

/* Un botón que no parece botón: sin marco ni fondo, sólo texto que actúa. Su
   regla vivía encerrada en una tarjeta del portafolio, así que en las otras
   siete páginas que lo usan salía con el marco gris del navegador. */
.text-button{padding:0;border:0;background:none;color:var(--forest);font:inherit;font-weight:700;cursor:pointer}
.text-button:hover{text-decoration:underline}
.text-button:focus-visible{outline:2px solid var(--forest);outline-offset:2px;border-radius:3px}
.text-button:disabled{cursor:not-allowed;opacity:.45;text-decoration:none}

/* El hermano sobrio de .button. Su definición vivía repetida en cuatro hojas
   de página y ausente en el resto, así que en el portafolio, el estudio y el
   mercado estos botones salían con el marco gris del navegador. Las hojas de
   página cargan después: las que ya tenían su versión siguen mandando. */
.outline-button{display:inline-flex;justify-content:center;align-items:center;border:1px solid var(--line);border-radius:999px;background:#fff;color:var(--forest);padding:12px 20px;font:700 .8rem "DM Sans",sans-serif;text-decoration:none;cursor:pointer;transition:.2s}
.outline-button:hover{border-color:var(--forest)}
.outline-button:focus-visible{outline:2px solid var(--forest);outline-offset:2px}
.outline-button:disabled{cursor:not-allowed;opacity:.5}
