/* ============================================================
   MARLIN BLACK ESTATES — piel de la división inmobiliaria
   Se carga DESPUÉS de styles.css.

   La identidad de la división no es el fondo claro: es el DORADO.
   Por eso aquí se fija el acento y las superficies las sigue poniendo
   el tema global, de modo que la página funciona igual en claro
   (crema + dorado) que en oscuro (navy + dorado).
   ============================================================ */

body.estates {
    /* El acento de la casa pasa de aguamarina a dorado */
    --aqua:       #A8862F;
    --aqua-soft:  #E4C57E;
    --line-aqua:  rgba(168, 134, 47, 0.45);

    /* Paneles oscuros de la página: manifiesto, hero, combo, pie */
    --est-panel:       #0B1620;
    --est-panel-2:     #16212B;
    --est-panel-txt:   #F7F3EA;
    --est-panel-dim:   rgba(247, 243, 234, 0.66);
    --est-panel-faint: rgba(247, 243, 234, 0.40);
    --est-panel-line:  rgba(247, 243, 234, 0.15);
}

/* ── Superficies en tema claro ── */
:root[data-theme="light"] body.estates {
    --abyss:      #F7F3EA;
    --ink:        #F1EADC;
    --ink-2:      #FFFFFF;
    --ink-3:      #F7F3EA;
    --ink-4:      #EBE2D0;

    --marlin:     #0B1620;
    --marlin-lo:  #16212B;
    --marlin-hi:  #24384A;

    --txt:        rgba(22, 33, 43, 0.74);
    --txt-dim:    rgba(22, 33, 43, 0.56);
    --txt-faint:  rgba(22, 33, 43, 0.40);
    --txt-strong: #0B1620;

    --line:       rgba(11, 22, 32, 0.11);
    --line-2:     rgba(11, 22, 32, 0.20);

    --rgb-ground: 247, 243, 234;
    --rgb-sheen:  11, 22, 32;
    --rgb-card:   255, 255, 255;

    --nav-bg:       rgba(247, 243, 234, 0.80);
    --nav-bg-solid: rgba(247, 243, 234, 0.96);
}

/* ── Superficies en tema oscuro ── */
:root[data-theme="dark"] body.estates {
    --abyss:      #05090E;
    --ink:        #0A1119;
    --ink-2:      #111B25;
    --ink-3:      #0C1621;
    --ink-4:      #18242F;

    --marlin:     #C9A24B;
    --marlin-lo:  #8A6C22;
    --marlin-hi:  #E4C57E;

    --est-panel:   #101A24;
    --est-panel-2: #1A2733;

    --txt:        rgba(238, 233, 222, 0.72);
    --txt-dim:    rgba(238, 233, 222, 0.50);
    --txt-faint:  rgba(238, 233, 222, 0.32);
    --txt-strong: #F3EEE3;

    --line:       rgba(228, 197, 126, 0.13);
    --line-2:     rgba(228, 197, 126, 0.24);

    --rgb-ground: 5, 9, 14;
    --rgb-sheen:  228, 197, 126;
    --rgb-card:   17, 27, 37;

    --nav-bg:       rgba(5, 9, 14, 0.74);
    --nav-bg-solid: rgba(5, 9, 14, 0.94);

    /* En oscuro el dorado puede ir más brillante sin quemarse */
    --aqua:       #D4AC53;
    --aqua-soft:  #E4C57E;
}

body.estates { background: var(--abyss); color: var(--txt); }
body.estates ::selection { background: var(--gold); color: #16212B; }
body.estates ::-webkit-scrollbar-thumb { background: var(--ink-4); }
body.estates ::-webkit-scrollbar-thumb:hover { background: var(--gold); }

/* ── Anuncios y navegación ── */
body.estates .announce { background: var(--est-panel); border-bottom-color: transparent; }
/* En tema claro la regla general aclaraba la cinta y el texto seguia crema:
   crema sobre crema no se lee. La cinta se queda oscura, como el panel. */
:root[data-theme="light"] body.estates .announce { background: #101A24; border-bottom-color: transparent; }
body.estates .announce-track { color: var(--est-panel-dim); }
body.estates .announce-track i, body.estates .announce-track svg { color: var(--gold-hi); }
body.estates .announce-dot { color: var(--est-panel-faint); }
body.estates .nav-progress { background: linear-gradient(90deg, var(--gold-hi), var(--gold)); box-shadow: none; }
:root[data-theme="light"] body.estates .nav-logo-mark { color: #0B1620; }
:root[data-theme="dark"] body.estates .nav-logo-mark { color: var(--gold-hi); }

/* ── Botones ── */
:root[data-theme="light"] body.estates .btn-primary,
:root[data-theme="light"] body.estates .nav-cta {
    background: #0B1620; color: var(--cream);
    box-shadow: 0 10px 30px rgba(11,22,32,.16);
}
:root[data-theme="dark"] body.estates .btn-primary,
:root[data-theme="dark"] body.estates .nav-cta {
    background: var(--gold); color: #14100A;
    box-shadow: 0 10px 30px rgba(201,162,75,.20);
}
body.estates .btn-primary::before { background: var(--gold-hi); }
body.estates .btn-primary:hover { color: #16212B; box-shadow: 0 16px 42px rgba(201,162,75,.34); }
body.estates .btn-ghost:hover { border-color: var(--gold); color: var(--gold-hi); background: rgba(201,162,75,.09); }
:root[data-theme="light"] body.estates .btn-ghost:hover { color: #7C6220; }
body.estates .link-arrow { color: var(--gold); }
:root[data-theme="light"] body.estates .link-arrow { color: #8A6C22; }
:root[data-theme="dark"] body.estates .link-arrow { color: var(--gold-hi); }
body.estates .filter-btn.is-active { background: var(--gold); border-color: var(--gold); color: #14100A; }
body.estates .chip.is-active { background: rgba(201,162,75,.16); border-color: var(--gold); color: var(--gold); }
:root[data-theme="light"] body.estates .chip.is-active { color: #7C6220; }

/* ── Bloques oscuros presentes en ambos temas ── */
body.estates .manifesto { background: var(--est-panel); border-color: transparent; }
body.estates .manifesto-text [data-word] { color: rgba(247,243,234,.14); }
body.estates .manifesto-text [data-word].is-revealed { color: var(--est-panel-txt); }
body.estates .manifesto-text .em.is-revealed { color: var(--gold-hi); }
body.estates .manifesto-sign { color: var(--est-panel-faint); }
body.estates .manifesto-sign::before { background: var(--gold); }

body.estates .cta-final { background: var(--est-panel); }
body.estates .cta-final::after { display: none; }
body.estates .cta-title { color: var(--est-panel-txt); }
body.estates .cta-title em { color: var(--gold-hi); font-style: italic; }
body.estates .cta-sub { color: var(--est-panel-dim); }
body.estates .cta-meta { color: var(--est-panel-faint); }
body.estates .cta-meta i, body.estates .cta-meta svg { color: var(--gold-hi); }
body.estates .cta-final .btn-primary { background: var(--gold); color: #16212B; }
body.estates .cta-final .btn-ghost { border-color: var(--est-panel-line); color: var(--est-panel-txt); }
body.estates .cta-final .btn-ghost:hover { border-color: var(--gold-hi); color: var(--gold-hi); }

body.estates .footer { background: var(--est-panel); border-top: 0; color: var(--est-panel-dim); }
body.estates .footer-art { color: rgba(247,243,234,.035); }
body.estates .footer .logo-brand { color: var(--est-panel-txt); }
body.estates .footer .logo-sub,
body.estates .footer-col h5,
body.estates .footer-bottom { color: var(--est-panel-faint); }
body.estates .footer-brand p,
body.estates .footer-col a,
body.estates .footer-col li { color: var(--est-panel-dim); }
body.estates .footer-col a:hover,
body.estates .footer-bottom a:hover { color: var(--gold-hi); }
body.estates .footer-contact i,
body.estates .footer .nav-logo-mark { color: var(--gold-hi); }
body.estates .footer-social a { border-color: var(--est-panel-line); color: var(--est-panel-dim); }
body.estates .footer-social a:hover { border-color: var(--gold-hi); color: var(--gold-hi); }
body.estates .footer-bottom { border-top-color: var(--est-panel-line); }

/* ── Superficies normales ── */
body.estates .sec-title em, body.estates .page-title em { color: var(--gold); font-style: italic; }
:root[data-theme="dark"] body.estates .sec-title em { color: var(--gold-hi); }
body.estates .sec-num::before { background: linear-gradient(90deg, var(--gold), transparent); }
body.estates .b-card i.b-icon, body.estates .b-card svg.b-icon { color: var(--gold); }
body.estates .b-stat b { color: var(--gold); }
body.estates .field select {
    background-image: url("data:image/svg+xml,%3Csvg xmlns='http://www.w3.org/2000/svg' width='12' height='12' viewBox='0 0 24 24' fill='none' stroke='%23C9A24B' stroke-width='2.4'%3E%3Cpath d='M6 9l6 6 6-6'/%3E%3C/svg%3E");
}
body.estates .field input:focus, body.estates .field select:focus, body.estates .field textarea:focus {
    border-color: var(--gold); box-shadow: 0 0 0 3px rgba(201,162,75,.14);
}
body.estates .form-note i,
body.estates .faq-icon i,
body.estates .modal-list li i, body.estates .modal-list li svg { color: var(--gold); }
body.estates .faq-item.is-open .faq-icon { background: var(--gold); border-color: var(--gold); }
body.estates .faq-item.is-open .faq-icon i, body.estates .faq-item.is-open .faq-icon svg { color: #14100A; }
body.estates .faq-q:hover { color: var(--gold); }
body.estates .modal-hero-txt { background: linear-gradient(to top, rgba(11,22,32,.85), transparent); }
body.estates .modal-hero-txt h3 { color: var(--est-panel-txt); }
body.estates .modal-hero-txt .tag { color: var(--gold-hi); }
body.estates .modal-col h4 { color: var(--gold); }
body.estates .quoter::before { background: radial-gradient(circle, rgba(201,162,75,.16), transparent 70%); }
:root[data-theme="light"] body.estates .quoter { box-shadow: 0 20px 60px rgba(11,22,32,.07); }

/* ============================================================
   Componentes propios de la división
   ============================================================ */

.est-hero {
    position: relative;
    background: var(--est-panel);
    color: var(--est-panel-txt);
    overflow: hidden;
}
.est-hero-grid {
    display: grid; grid-template-columns: 1.02fr .98fr;
    align-items: stretch; min-height: min(78vh, 720px);
}
.est-hero-txt {
    display: flex; flex-direction: column; justify-content: center;
    padding: clamp(56px, 7vw, 110px) clamp(24px, 5vw, 90px);
    position: relative; z-index: 3;
}
.est-hero .crumbs { color: var(--est-panel-faint); }
.est-hero .crumbs a:hover { color: var(--gold-hi); }
.est-hero-title {
    font-family: var(--f-display); font-weight: 300;
    font-size: clamp(2.5rem, 5.4vw, 4.6rem);
    line-height: 1.02; letter-spacing: -.035em;
    color: var(--est-panel-txt); max-width: 15ch;
}
.est-hero-title em { font-style: italic; color: var(--gold-hi); }
.est-hero-lead {
    margin-top: 26px; max-width: 46ch;
    font-size: clamp(1rem, 1.2vw, 1.12rem); line-height: 1.74;
    color: var(--est-panel-dim);
}
.est-hero-actions { margin-top: 34px; display: flex; gap: 13px; flex-wrap: wrap; }
.est-hero-media { position: relative; overflow: hidden; }
/* El shader dorado vive sobre el panel oscuro; la foto lo tapa en su mitad */
.est-hero-media { z-index: 2; }
.est-hero .page-hero-shader { z-index: 1; mix-blend-mode: screen; }
.est-hero .page-hero-shader.esta-vivo { opacity: .8; }

.est-hero-media img { width: 100%; height: 100%; object-fit: cover; }
.est-hero-media::after {
    content: ''; position: absolute; inset: 0;
    background: linear-gradient(90deg, var(--est-panel) 0%, rgba(11,22,32,.55) 16%, rgba(11,22,32,.12) 42%, transparent 62%);
}
body.estates .est-hero .btn-primary {
    background: var(--gold); color: #16212B;
    box-shadow: 0 10px 30px rgba(201,162,75,.24);
}
body.estates .est-hero .btn-primary::before { background: var(--gold-hi); }
body.estates .est-hero .btn-primary:hover { color: #16212B; box-shadow: 0 16px 42px rgba(201,162,75,.38); }
body.estates .est-hero .btn-ghost { border-color: var(--est-panel-line); color: var(--est-panel-txt); }
body.estates .est-hero .btn-ghost:hover { border-color: var(--gold-hi); color: var(--gold-hi); }
.est-hero-tick {
    margin-top: clamp(34px, 4vw, 52px); z-index: 3;
    display: flex; gap: clamp(24px, 3vw, 44px); flex-wrap: wrap;
    font-family: var(--f-mono); font-size: .58rem;
    letter-spacing: .2em; text-transform: uppercase; color: var(--est-panel-faint);
}
.est-hero-tick b {
    display: block; font-family: var(--f-display); font-size: 1.6rem;
    font-weight: 400; color: var(--gold-hi); letter-spacing: -.02em;
}

/* Tres caminos */
.paths { display: grid; grid-template-columns: repeat(3, 1fr); gap: 14px; }
.path-card {
    position: relative; overflow: hidden;
    background: var(--ink-2);
    border: 1px solid var(--line);
    border-radius: var(--r-lg);
    display: flex; flex-direction: column;
    transition: transform .55s var(--e-out), box-shadow .55s, border-color .45s;
}
.path-card:hover { transform: translateY(-6px); box-shadow: 0 26px 60px rgba(0,0,0,.16); border-color: var(--line-aqua); }
.path-media { aspect-ratio: 16 / 10; overflow: hidden; }
.path-media img {
    width: 100%; height: 100%; object-fit: cover;
    transition: transform 1.2s var(--e-out); filter: var(--img-card);
}
.path-card:hover .path-media img { transform: scale(1.07); }
.path-body { padding: 26px 26px 28px; display: flex; flex-direction: column; flex: 1; }
.path-num {
    font-family: var(--f-mono); font-size: .56rem;
    letter-spacing: .24em; text-transform: uppercase; color: var(--gold);
    margin-bottom: 12px;
}
.path-body h3 {
    font-family: var(--f-display); font-weight: 400;
    font-size: 1.5rem; line-height: 1.12; letter-spacing: -.02em;
    color: var(--txt-strong); margin-bottom: 12px;
}
.path-body p { font-size: .92rem; line-height: 1.66; color: var(--txt-dim); flex: 1; }
.path-list { margin-top: 18px; padding-top: 16px; border-top: 1px solid var(--line); }
.path-list li {
    display: flex; gap: 10px; align-items: flex-start;
    padding: 5px 0; font-size: .85rem; color: var(--txt);
}
.path-list i, .path-list svg { width: 14px; height: 14px; color: var(--gold); flex-shrink: 0; margin-top: 4px; }

/* Portafolio */
.prop-grid { display: grid; grid-template-columns: repeat(auto-fill, minmax(320px, 1fr)); gap: 16px; }
.prop-card {
    position: relative; overflow: hidden; text-align: left;
    background: var(--ink-2);
    border: 1px solid var(--line);
    border-radius: var(--r-lg);
    display: flex; flex-direction: column;
    transition: transform .55s var(--e-out), box-shadow .55s, border-color .45s;
}
.prop-card:hover { transform: translateY(-5px); box-shadow: 0 24px 56px rgba(0,0,0,.18); border-color: var(--line-aqua); }
.prop-card.is-hidden { display: none; }
.prop-media { position: relative; aspect-ratio: 4 / 3; overflow: hidden; }
.prop-media img {
    width: 100%; height: 100%; object-fit: cover;
    transition: transform 1.2s var(--e-out); filter: var(--img-card);
}
.prop-card:hover .prop-media img { transform: scale(1.07); }
.prop-mode {
    position: absolute; top: 13px; left: 13px;
    padding: 6px 13px; border-radius: 100px;
    background: rgba(11,22,32,.86); backdrop-filter: blur(8px);
    font-family: var(--f-mono); font-size: .54rem;
    letter-spacing: .18em; text-transform: uppercase; color: var(--gold-hi);
}
.prop-flag {
    position: absolute; top: 13px; right: 13px;
    padding: 6px 13px; border-radius: 100px;
    background: rgba(247,243,234,.92);
    font-family: var(--f-mono); font-size: .54rem;
    letter-spacing: .14em; text-transform: uppercase; color: #7C6220;
}
.prop-body { padding: 22px 24px 24px; display: flex; flex-direction: column; flex: 1; }
.prop-zone {
    font-family: var(--f-mono); font-size: .56rem;
    letter-spacing: .2em; text-transform: uppercase; color: var(--txt-faint);
    margin-bottom: 8px;
}
.prop-body h3 {
    font-family: var(--f-display); font-weight: 400;
    font-size: 1.38rem; line-height: 1.14; letter-spacing: -.018em; color: var(--txt-strong);
}
.prop-price {
    margin-top: 12px; font-family: var(--f-mono);
    font-size: .92rem; font-weight: 500; color: var(--gold); letter-spacing: -.01em;
}
:root[data-theme="light"] .prop-price { color: #8A6C22; }
.prop-specs {
    margin-top: 18px; padding-top: 15px; border-top: 1px solid var(--line);
    display: flex; gap: 16px; flex-wrap: wrap;
}
.prop-specs span {
    display: inline-flex; align-items: center; gap: 6px;
    font-family: var(--f-mono); font-size: .62rem; color: var(--txt-dim);
}
.prop-specs i, .prop-specs svg { width: 13px; height: 13px; color: var(--gold); }

/* Socios */
.partners { display: grid; grid-template-columns: repeat(4, 1fr); gap: 14px; }
.partner {
    border: 1px solid var(--line); border-radius: var(--r-lg);
    background: var(--ink-2); padding: 28px 24px;
    transition: transform .5s var(--e-out), box-shadow .5s;
}
.partner:hover { transform: translateY(-4px); box-shadow: 0 20px 48px rgba(0,0,0,.14); }
.partner-avatar {
    width: 58px; height: 58px; border-radius: 50%;
    background: linear-gradient(140deg, var(--est-panel), var(--est-panel-2));
    display: flex; align-items: center; justify-content: center;
    font-family: var(--f-display); font-size: 1.3rem; color: var(--gold-hi);
    margin-bottom: 20px;
}
.partner h3, .partner h4 {
    font-family: var(--f-display); font-weight: 400; font-size: 1.24rem;
    color: var(--txt-strong); letter-spacing: -.015em; margin-bottom: 6px;
}
.partner .role {
    font-family: var(--f-mono); font-size: .55rem;
    letter-spacing: .2em; text-transform: uppercase; color: var(--gold);
    margin-bottom: 14px; display: block;
}
.partner p { font-size: .87rem; line-height: 1.62; color: var(--txt-dim); }

/* Datos de inversión */
.invest {
    display: grid; grid-template-columns: repeat(4, 1fr);
    gap: 1px; background: var(--line);
    border: 1px solid var(--line); border-radius: var(--r-lg); overflow: hidden;
}
.invest-cell { background: var(--ink-2); padding: 30px 26px; }
.invest-cell b {
    display: block; font-family: var(--f-display); font-weight: 300;
    font-size: clamp(1.9rem, 3.2vw, 2.7rem); line-height: 1;
    letter-spacing: -.035em; color: var(--txt-strong); margin-bottom: 10px;
}
.invest-cell span {
    font-family: var(--f-mono); font-size: .56rem;
    letter-spacing: .18em; text-transform: uppercase; color: var(--txt-faint);
    display: block; margin-bottom: 8px;
}
.invest-cell p { font-size: .84rem; line-height: 1.58; color: var(--txt-dim); }

/* Aviso legal */
.legal-note {
    margin-top: 28px; padding: 20px 24px;
    border: 1px dashed var(--line-2); border-radius: var(--r-md);
    background: rgba(var(--rgb-sheen), .03);
    display: flex; gap: 14px; align-items: flex-start;
}
.legal-note i, .legal-note svg { width: 17px; height: 17px; color: var(--gold); flex-shrink: 0; margin-top: 3px; }
.legal-note p { font-size: .85rem; line-height: 1.66; color: var(--txt-dim); }

/* Ventaja combinada */
.combo {
    background: var(--est-panel); color: var(--est-panel-txt);
    border-radius: var(--r-xl);
    padding: clamp(34px, 4.5vw, 66px);
    position: relative; overflow: hidden;
}
.combo::before {
    content: ''; position: absolute; top: -140px; left: -100px;
    width: 380px; height: 380px; border-radius: 50%;
    background: radial-gradient(circle, rgba(201,162,75,.20), transparent 70%);
}
.combo-head { position: relative; z-index: 2; max-width: 40ch; }
.combo-head h3 {
    font-family: var(--f-display); font-weight: 300;
    font-size: clamp(1.8rem, 3.4vw, 2.9rem); line-height: 1.08;
    letter-spacing: -.028em; color: var(--est-panel-txt);
}
.combo-head h3 em { font-style: italic; color: var(--gold-hi); }
.combo-head p { margin-top: 18px; font-size: 1rem; line-height: 1.74; color: var(--est-panel-dim); }
.combo-grid {
    position: relative; z-index: 2;
    margin-top: 40px;
    display: grid; grid-template-columns: repeat(3, 1fr); gap: 1px;
    background: var(--est-panel-line);
    border: 1px solid var(--est-panel-line);
    border-radius: var(--r-md); overflow: hidden;
}
.combo-cell { background: var(--est-panel); padding: 26px 24px; }
.combo-cell i, .combo-cell svg { width: 20px; height: 20px; color: var(--gold-hi); margin-bottom: 14px; }
.combo-cell h3, .combo-cell h4 {
    font-family: var(--f-display); font-weight: 400; font-size: 1.15rem;
    color: var(--est-panel-txt); margin-bottom: 8px;
}
.combo-cell p { font-size: .86rem; line-height: 1.62; color: var(--est-panel-dim); }

@media (max-width: 1180px) {
    .paths { grid-template-columns: 1fr; }
    .partners { grid-template-columns: repeat(2, 1fr); }
    .invest { grid-template-columns: repeat(2, 1fr); }
    .combo-grid { grid-template-columns: 1fr; }
}
@media (max-width: 1024px) {
    .est-hero-grid { grid-template-columns: 1fr; min-height: auto; }
    .est-hero-media { aspect-ratio: 16 / 10; order: -1; }
    .est-hero-media::after { background: linear-gradient(to top, var(--est-panel) 2%, rgba(11,22,32,.3) 50%, transparent); }
    .est-hero-tick { margin-top: 30px; }
}
@media (max-width: 768px) {
    .prop-grid { grid-template-columns: 1fr; }
    .partners, .invest { grid-template-columns: 1fr; }
}

/* ============================================================
   Tira de fotos de la propiedad administrada
   Galeria horizontal con arrastre y anclaje, para que la seccion
   no crezca a lo alto: se recorre, no se apila.
   ============================================================ */

.tira {
    margin-top: clamp(28px, 3.5vw, 46px);
    overflow-x: auto;
    overscroll-behavior-x: contain;
    scroll-snap-type: x mandatory;
    -webkit-overflow-scrolling: touch;
    scrollbar-width: none;
    cursor: grab;
}
.tira::-webkit-scrollbar { display: none; }
.tira.is-drag { cursor: grabbing; scroll-snap-type: none; }
.tira-pista {
    display: flex; gap: 14px;
    padding: 4px clamp(20px, 4vw, 56px);
    width: max-content;
}
.tira-item {
    flex: 0 0 auto;
    width: clamp(230px, 30vw, 400px);
    aspect-ratio: 4 / 3;
    margin: 0;
    border-radius: var(--r-lg);
    overflow: hidden;
    background: var(--ink-2);
    scroll-snap-align: center;
    border: 1px solid var(--line);
}
.tira-item:first-child { width: clamp(300px, 42vw, 560px); aspect-ratio: 16 / 10; }
.tira-item img {
    width: 100%; height: 100%; object-fit: cover;
    /* Aqui la foto es el producto: se ensena a plena luz */
    filter: saturate(1.03);
    transition: transform 1.1s var(--e-out);
    -webkit-user-drag: none; user-select: none;
}
.tira-item:hover img { transform: scale(1.05); }
.tira-pie {
    margin-top: 16px;
    font-family: var(--f-mono); font-size: .6rem;
    letter-spacing: .18em; text-transform: uppercase; color: var(--txt-faint);
}

/* ============================================================
   Proyectos en obra
   ============================================================ */

.proy-grid {
    display: grid;
    grid-template-columns: repeat(auto-fill, minmax(300px, 1fr));
    gap: 16px;
}
.proy-card {
    display: flex; flex-direction: column;
    background: var(--ink-2);
    border: 1px solid var(--line);
    border-radius: var(--r-lg);
    overflow: hidden;
    transition: transform .55s var(--e-out), box-shadow .55s, border-color .45s;
}
.proy-card:hover {
    transform: translateY(-5px);
    border-color: var(--line-aqua);
    box-shadow: 0 24px 56px rgba(0,0,0,.20);
}
.proy-media {
    position: relative; display: block;
    aspect-ratio: 3 / 4; overflow: hidden;
    background: var(--ink-3);
}
.proy-media img {
    width: 100%; height: 100%; object-fit: cover; object-position: top center;
    transition: transform 1.2s var(--e-out);
}
.proy-card:hover .proy-media img { transform: scale(1.04); }
.proy-peso {
    position: absolute; left: 12px; bottom: 12px;
    display: inline-flex; align-items: center; gap: 7px;
    padding: 6px 12px; border-radius: 100px;
    background: rgba(11,22,32,.82); backdrop-filter: blur(8px);
    font-family: var(--f-mono); font-size: .54rem;
    letter-spacing: .14em; text-transform: uppercase; color: var(--gold-hi);
}
.proy-peso i, .proy-peso svg { width: 12px; height: 12px; }
.proy-body { padding: 22px 22px 24px; display: flex; flex-direction: column; flex: 1; }
.proy-zona {
    font-family: var(--f-mono); font-size: .56rem;
    letter-spacing: .2em; text-transform: uppercase;
    color: var(--txt-faint); margin-bottom: 8px;
}
.proy-body h3 {
    font-family: var(--f-display); font-weight: 400;
    font-size: 1.32rem; line-height: 1.14; letter-spacing: -.018em;
    color: var(--txt-strong); margin-bottom: 12px;
}
.proy-body p {
    font-size: .89rem; line-height: 1.62; color: var(--txt-dim);
    flex: 0 0 auto; margin-bottom: auto;
}
.proy-pie {
    margin-top: 20px; padding-top: 16px;
    border-top: 1px solid var(--line);
    display: flex; align-items: center; justify-content: space-between;
    gap: 12px; flex-wrap: wrap;
}
.proy-pie .link-arrow { font-size: .8rem; }

@media (max-width: 640px) {
    .proy-grid { grid-template-columns: 1fr; }
    .proy-media { aspect-ratio: 4 / 3; }
}

/* Categoria sin propiedades publicadas */
.prop-vacio {
    margin-top: 26px; padding: 26px 28px;
    border: 1px dashed var(--est-line, rgba(201,162,75,.28));
    border-radius: 16px;
    font-size: .95rem; line-height: 1.7; color: var(--txt-dim);
    max-width: 62ch;
}
