/* Fondo vectorial aéreo de SOL. El contenido conserva prioridad visual. */
.public-body {
    position: relative;
    isolation: isolate;
    background: #f8fbf8;
}

.public-body::before {
    content: "";
    position: fixed;
    inset: 0;
    z-index: 0;
    pointer-events: none;
    background: url('/imagenes/fondo-vista-frontal-lotificacion-boscosa.svg') center / cover no-repeat;
    opacity: .075;
}

.public-body > * {
    position: relative;
    z-index: 1;
}

/* El acceso a las secciones permanece disponible durante la exploración del sitio. */
.public-body main { padding-top: 82px; }
.public-body .public-nav {
    position: fixed;
    inset: 0 0 auto;
    z-index: 20;
    width: 100%;
    max-width: none;
    margin: 0;
    padding-left: max(30px, calc((100vw - 1260px) / 2));
    padding-right: max(30px, calc((100vw - 1260px) / 2));
    border-bottom: 1px solid #e2ebe4;
    box-shadow: 0 7px 20px #173c2910;
}

.pricing-grid article {
    min-height: 370px;
    display: flex;
    flex-direction: column;
    padding: 0;
    overflow: hidden;
}

.pricing-grid article:last-child {
    grid-column: auto;
    background: #fff;
    border-color: #dce9df;
}

.pricing-grid strong {
    font-size: 13px;
}

.pricing-card-header {
    display: flex;
    flex-direction: column;
    min-height: 172px;
    padding: 21px 20px 17px;
    border-bottom: 1px solid #dce9df;
    background: #f1f8f2;
}

.pricing-card-header > span {
    margin-top: 10px;
    color: #236a4e;
    font-size: 23px;
    font-weight: 750;
}

.pricing-card-header > span small {
    font-size: 11px;
}

.pricing-card-detail {
    flex: 1;
    padding: 17px 20px 19px;
    background: #fff;
}

.pricing-card-detail h3 {
    margin: 0 0 10px;
    color: #315d49;
    font-size: 12px;
    letter-spacing: .08em;
    text-transform: uppercase;
}

.pricing-card-detail ul {
    display: grid;
    gap: 7px;
    margin: 0;
    padding: 0;
    color: #6d8275;
    font-size: 12px;
    line-height: 1.4;
    list-style: none;
}

.pricing-card-detail li::before {
    margin-right: 7px;
    color: #2d8a63;
    content: none;
    font-weight: 750;
}

.pricing-check-icon { display: inline-block; width: 14px; height: 14px; margin-right: 7px; color: #2d8a63; vertical-align: -.2em; }

.pricing-unit {
    display: block;
    margin-top: 10px;
    padding-top: 11px;
    border-top: 1px solid #dce9df;
    color: #6d8275;
    font-size: 12px;
    font-weight: 700;
}

.public-map-demo { padding-top: 42px; }
.public-demo-layout { display: grid; grid-template-columns: minmax(0, 1.55fr) minmax(270px, .65fr); gap: 18px; align-items: stretch; }
.public-demo-map-wrap, .public-demo-detail { border: 1px solid #dbe8de; border-radius: 14px; background: #fff; box-shadow: 0 14px 32px #1e4e3510; overflow: hidden; }
.public-demo-toolbar { min-height: 54px; padding: 11px 13px 11px 18px; display: flex; justify-content: space-between; align-items: center; gap: 12px; border-bottom: 1px solid #e3ede5; color: #4d6c5b; font-size: 12px; }
.public-demo-toolbar i { display: inline-block; width: 8px; height: 8px; margin-right: 7px; border-radius: 50%; background: #2e8a62; box-shadow: 0 0 0 4px #e2f4e8; }
.public-demo-toolbar b { color: #276b4c; }
.public-demo-controls { display: flex; gap: 5px; }
.public-demo-controls button { width: 29px; height: 29px; display: grid; place-items: center; border: 1px solid #d6e5da; border-radius: 7px; background: #fff; color: #1c684a; font: 700 17px/1 Arial, sans-serif; cursor: pointer; }
.public-demo-controls button:hover { background: #edf7ef; border-color: #99c8a7; }
#public-estate-map { display: block; width: 100%; height: 410px; background: #edf4eb; cursor: grab; touch-action: none; }
#public-estate-map.is-dragging { cursor: grabbing; }
.public-demo-ground { fill: #edf4eb; }
.public-demo-lot { fill: #dcefdc; stroke: #75a883; stroke-width: 1.2; vector-effect: non-scaling-stroke; cursor: pointer; transition: fill .16s; }
.public-demo-lot:hover, .public-demo-lot:focus { fill: #b9dfbf; outline: none; }
.public-demo-lot.is-selected { fill: #f1c448; stroke: #176645; stroke-width: 2.5; }
.public-demo-hint { margin: 0; padding: 11px 17px; border-top: 1px solid #e4ede6; color: #74877c; font-size: 11px; }
.public-demo-detail { padding: 25px 23px; display: flex; flex-direction: column; }
.public-demo-detail .badge { align-self: flex-start; margin-bottom: 21px; }
.public-demo-detail .eyebrow { margin-bottom: 8px; }
.public-demo-detail h3 { margin: 0 0 22px; font-size: 28px; color: #1b523c; }
.public-demo-detail dl { margin: 0; }
.public-demo-detail dl > div { display: flex; justify-content: space-between; gap: 12px; padding: 12px 0; border-top: 1px solid #e4ede6; }
.public-demo-detail dt { color: #778a80; font-size: 12px; }
.public-demo-detail dd { margin: 0; color: #264e3d; font-size: 12px; font-weight: 700; text-align: right; }
.public-demo-detail p { margin: auto 0 0; padding-top: 18px; color: #71847a; font-size: 12px; line-height: 1.7; }

.public-cta .eyebrow {
    margin-bottom: 12px;
    font-size: 15px;
    letter-spacing: 2.5px;
}

.public-cta h2 {
    font-size: 34px;
}

/* Lectura cómoda en la página pública. */
.public-body .eyebrow { font-size: 11px; }
.public-nav nav a,
.public-footer a { font-size: 13px; }
.public-checks li { font-size: 13px; }
.public-card-top { font-size: 14px; }
.public-mini-stats small,
.public-mini-stats span { font-size: 10px; }
.public-card-list { font-size: 12px; }
.public-proof strong { font-size: 13px; }
.public-proof span { font-size: 12px; }
.public-section-heading { max-width: none; }
.public-section-heading p,
.public-operation p,
.public-contact p { max-width: none; font-size: 15px; text-align: justify; }
.public-features p { font-size: 12px; }
.public-operation-list strong { font-size: 13px; }
.public-operation-list small { font-size: 12px; }
.public-whatsapp { font-size: 15px; }
.public-contact small { font-size: 11px; }
.public-actions .button { font-size: 12px; }

@media (max-width: 760px) {
    .public-body main { padding-top: 68px; }
    .public-body .public-nav { padding-left: 16px; padding-right: 16px; }
    .public-cta .eyebrow { font-size: 13px; }
    .public-cta h2 { font-size: 28px; }
    .public-section-heading p,
    .public-operation p,
    .public-contact p { font-size: 14px; }
    .public-map-demo { padding-top: 24px; }
    .public-demo-layout { grid-template-columns: 1fr; }
    #public-estate-map { height: 330px; }
}

@media (max-width: 980px) {
    .public-demo-layout { grid-template-columns: 1fr; }
    .public-demo-detail { min-height: 0; }
}

/* Tarjetas de planes: bloques compactos, con jerarquía clara entre precio e inclusiones. */
.pricing-grid article {
    min-height: 0;
    border-radius: 16px;
    box-shadow: 0 14px 28px #173c2910;
    transition: transform .18s ease, box-shadow .18s ease;
}

.pricing-grid article:hover { transform: translateY(-5px); box-shadow: 0 20px 36px #173c2920; }

.pricing-card-header {
    min-height: 148px;
    padding: 23px 22px 19px;
    border-bottom: 0;
    background: radial-gradient(circle at 88% 8%, #d4ead8 0 20px, transparent 21px), linear-gradient(135deg, #eff8f0, #dcefe0);
}

.pricing-card-header > span { color: #1e6145; font-size: 25px; }

.pricing-unit {
    margin-top: auto;
    padding: 10px 11px;
    border: 1px solid #cde2d2;
    border-radius: 8px;
    background: #fff;
    color: #466b58;
    font-size: 11px;
}

.pricing-card-detail { padding: 19px 22px 21px; }
.pricing-card-detail h3 { margin-bottom: 12px; }
.pricing-card-detail ul { font-size: 11px; }

/* Los datos de suscripción se leen en una sola fila y en el orden operativo: lotes, plan y funciones. */
.subscription-selection > .form-grid {
    grid-template-columns: repeat(3, minmax(0, 1fr));
    gap: 0 16px;
}
.subscription-selection > .form-grid > .field { grid-column: auto; }

/* El fondo público permanece visible también bajo la navegación y el cierre de página. */
.public-footer,
.registration-page .public-nav,
.registration-page .public-footer { background: transparent; }

.public-footer { border-top-color: #dbe8de; }
.public-footer-login { margin-left: auto; min-height: 36px; padding: 9px 15px; font-size: 12px; }
.registration-page .public-nav { border-bottom-color: transparent; box-shadow: none; }
.registration-page .public-nav::after { content: ""; position: absolute; inset: auto 0 0; height: 1px; background: linear-gradient(90deg, transparent, #dbe8de 18%, #dbe8de 82%, transparent); }
.registration-page .public-actions { margin-left: auto; }
/* El encabezado del registro es fijo; el contenido debe iniciar debajo de su altura real. */
.registration-page .registration-main { margin-top: 0; padding-top: 116px; }
.registration-page .registration-form { padding: 28px; border-radius: 18px; background: #ffffffd9; box-shadow: 0 18px 40px #173c2912; }
.registration-form fieldset { min-width: 0; margin: 0; padding: 22px 0; border: 0; border-bottom: 1px solid #dce9df; }
.registration-form fieldset:first-of-type { padding-top: 4px; }
.registration-form fieldset:last-of-type { padding-bottom: 0; border-bottom: 0; }
.registration-form legend { padding: 0; color: #1b523c; font-size: 20px; font-weight: 750; }
.registration-form .hint { margin: 7px 0 18px; }
.registration-form .registration-confirmation { padding-top: 24px; }
.registration-footer { margin-top: auto; }

/* Estados deterministas para la demostración pública del plano. */
.public-demo-lot.status-disponible { fill: #dcefdc; stroke: #569668; }
.public-demo-lot.status-reservado { fill: #f8e5ae; stroke: #c9962f; }
.public-demo-lot.status-vendido { fill: #dfd8ee; stroke: #9277bd; }
.public-demo-lot.status-bloqueado { fill: #dce3e1; stroke: #879892; }
.public-demo-lot:hover, .public-demo-lot:focus { stroke: #1c684a; stroke-width: 2.2; outline: none; }
.public-demo-detail .badge.status-disponible { background: #e7f5e9; color: #28714b; }
.public-demo-detail .badge.status-reservado { background: #fff5db; color: #94630f; }
.public-demo-detail .badge.status-vendido { background: #eee9f8; color: #694b9b; }
.public-demo-detail .badge.status-bloqueado { background: #edf1f0; color: #5d7069; }

@media (max-width: 760px) {
    .subscription-selection > .form-grid { grid-template-columns: 1fr; }
    .registration-page .registration-main { padding-top: 84px; }
    .registration-page .registration-form { padding: 20px; }
    .registration-form legend { font-size: 18px; }
    .public-footer { flex-wrap: wrap; }
    .public-footer-login { margin-left: auto; }
}

/* La composición pública aprovecha el 80 % de la pantalla y reserva un margen uniforme del 10 %. */
.public-body .public-nav { padding-left: 10vw; padding-right: 10vw; }
.public-hero,
.public-proof,
.public-section,
.public-cta,
.public-contact,
.public-footer { max-width: 80vw; }
.public-proof,
.public-cta { margin-left: auto; margin-right: auto; }
.public-section { padding-left: 0; padding-right: 0; }
.public-operation { padding-left: 10vw; padding-right: 10vw; }
.public-contact { padding-left: 0; padding-right: 0; }
.public-footer { padding-left: 0; padding-right: 0; }

@media (max-width: 760px) {
    .public-section { padding-left: 0; padding-right: 0; }
    .public-contact { padding-left: 0; padding-right: 0; }
}
