/* Integración funcional sobre el diseño original entregado por Aldea Nativa. */
.whatsapp-float {
    position: fixed;
    z-index: 100;
    right: 24px;
    bottom: 24px;
    display: grid;
    width: 58px;
    height: 58px;
    place-items: center;
    border-radius: 50%;
    color: #fff;
    background: #25d366;
    box-shadow: 0 12px 28px rgba(16, 84, 44, .28);
    transition: transform .2s ease, box-shadow .2s ease;
}
.whatsapp-float:hover { transform: translateY(-3px); box-shadow: 0 16px 34px rgba(16, 84, 44, .35); }
.whatsapp-float svg { width: 29px; fill: currentColor; }

.public-wizard-page { min-height: 100vh; background: var(--green-dark); }
.public-wizard-page .whatsapp-float { width: 54px; height: 54px; }
.public-wizard-shell {
    display: grid;
    min-height: 100vh;
    grid-template-columns: minmax(360px, 43%) minmax(680px, 57%);
}
.public-wizard-intro {
    position: sticky;
    top: 0;
    display: flex;
    height: 100vh;
    flex-direction: column;
    justify-content: center;
    padding: clamp(44px, 4vw, 72px);
    color: var(--white);
    background: var(--green-dark);
}
.public-wizard-intro h1 { max-width: 610px; margin: 20px 0 34px; font-family: var(--serif); font-size: clamp(58px, 4.7vw, 82px); font-weight: 400; letter-spacing: -.025em; line-height: .98; }
.public-wizard-intro > p:not(.kicker) { max-width: 560px; color: rgba(255,255,255,.68); font-size: clamp(15px, 1.15vw, 20px); font-weight: 400; line-height: 1.75; }
.public-wizard-assurances { display: grid; gap: 18px; margin-top: 28px; }
.public-wizard-assurances div { display: grid; grid-template-columns: 52px 1fr; gap: 18px; align-items: start; }
.public-wizard-assurances span { display: grid; width: 46px; height: 46px; place-items: center; border: 1px solid rgba(255,255,255,.25); border-radius: 50%; color: #e8d2b5; font-size: 23px; }
.public-wizard-assurances p { margin: 0; color: rgba(255,255,255,.6); }
.public-wizard-assurances strong { display: block; color: var(--white); font-size: 16px; font-weight: 400; }
.public-wizard-panel { min-height: 100vh; padding: clamp(38px, 5vw, 82px); background: var(--cream); }
.public-wizard-panel form { max-width: 1060px; margin-inline: auto; }
.wizard-top { display: grid; grid-template-columns: 1fr 38%; gap: 45px; align-items: center; padding-bottom: 42px; border-bottom: 1px solid var(--line); }
.wizard-top span { display: block; color: var(--brown); font-size: 12px; font-weight: 700; letter-spacing: .16em; text-transform: uppercase; }
.wizard-top strong { display: block; margin-top: 12px; color: var(--green-dark); font-family: var(--serif); font-size: 38px; font-weight: 400; line-height: 1; }
.wizard-progress { height: 4px; background: #dedfd8; }
.wizard-progress span { display: block; width: 25%; height: 100%; background: var(--brown); transition: width .3s ease; }
.wizard-step { padding: 70px 0 48px; }
.wizard-step[hidden] { display: none; }
.wizard-step h2 { margin-bottom: 12px; color: var(--green-dark); font-size: clamp(48px, 4vw, 68px); font-weight: 400; }
.wizard-step > p { margin-bottom: 44px; color: var(--muted); font-size: 18px; }
.wizard-choice-grid { display: grid; grid-template-columns: repeat(3, 1fr); gap: 18px; }
.wizard-choice-grid.formats-choice-grid { grid-template-columns: repeat(2, 1fr); }
.wizard-choice {
    min-height: 180px;
    padding: 30px;
    border: 1px solid var(--line);
    border-radius: 0;
    color: var(--green-dark);
    background: var(--white);
    text-align: left;
    cursor: pointer;
    transition: border-color .2s ease, color .2s ease, background .2s ease;
}
.wizard-choice:hover { border-color: var(--brown); }
.wizard-choice.selected { color: var(--white); background: var(--green); border-color: var(--green); }
.wizard-choice strong, .wizard-choice small { display: block; }
.wizard-choice strong { margin-top: 44px; font-size: 17px; font-weight: 400; }
.wizard-choice small { margin-top: 6px; color: var(--muted); font-size: 13px; }
.wizard-choice.selected small { color: rgba(255,255,255,.7); }
.wizard-choice-icon { color: var(--brown); font-family: var(--serif); font-size: 34px; line-height: 1; }
.wizard-choice.selected .wizard-choice-icon { color: #e7ceb0; }
.formats-choice-grid .wizard-choice { min-height: 140px; }
.formats-choice-grid .wizard-choice strong { margin-top: 15px; }
.wizard-fields { display: grid; grid-template-columns: repeat(2, 1fr); gap: 28px 30px; }
.wizard-field { display: grid; gap: 10px; color: var(--green-dark); font-size: 14px; font-weight: 700; }
.wizard-field-full { grid-column: 1 / -1; }
.wizard-field input, .wizard-field textarea {
    width: 100%;
    min-height: 76px;
    padding: 18px 22px;
    border: 1px solid var(--line);
    border-radius: 0;
    outline: 0;
    color: var(--ink);
    background: var(--white);
    font: 400 20px/1.4 var(--sans);
}
.wizard-field textarea { min-height: 175px; resize: vertical; }
.wizard-field input:focus, .wizard-field textarea:focus { border-color: var(--brown); box-shadow: 0 0 0 5px rgba(170,131,88,.1); }
.wizard-field-validation, .wizard-error, .validation-summary-errors { color: #a13f34; font-size: 12px; }
.wizard-consent { display: flex; gap: 12px; align-items: start; margin-top: 28px; color: var(--muted); font-size: 13px; }
.wizard-consent input { margin-top: 5px; accent-color: var(--green); }
.wizard-actions { display: flex; align-items: center; justify-content: space-between; gap: 18px; padding-top: 40px; border-top: 1px solid var(--line); }
.wizard-actions button { min-width: 190px; min-height: 54px; padding: 0 24px; border: 1px solid var(--green); border-radius: 0; color: var(--white); background: var(--green); font: 600 11px var(--sans); letter-spacing: .07em; text-transform: uppercase; cursor: pointer; }
.wizard-actions button:disabled { opacity: .28; cursor: default; }
.wizard-actions .wizard-back { min-width: auto; border-color: transparent; color: var(--muted); background: transparent; }
.wizard-actions .wizard-submit { margin-left: auto; }
.public-wizard-back-home { min-height: 44px; display: inline-flex; align-items: center; align-self: flex-start; margin-bottom: 24px; padding: 10px 0; color: rgba(255,255,255,.72); font-size: 10px; font-weight: 400; letter-spacing: .08em; text-decoration: none; text-transform: uppercase; }
.public-wizard-back-home:focus-visible { outline: 2px solid #ead5b6; outline-offset: 4px; }
.wizard-empty { padding: 22px; border: 1px solid var(--line); color: var(--muted); background: var(--white); }

.quote-callout { color: var(--white); background: var(--brown); }
.quote-callout-grid { display: grid; grid-template-columns: 1.2fr .8fr; gap: 80px; align-items: center; }
.quote-callout h2 { max-width: 760px; font-weight: 400; }
.quote-callout-grid > div:first-child > p:last-child { max-width: 680px; color: rgba(255,255,255,.78); font-weight: 400; }
.quote-points { padding-left: 50px; border-left: 1px solid rgba(255,255,255,.32); }
.quote-points p { display: grid; gap: 3px; margin: 0; padding: 20px 0; border-bottom: 1px solid rgba(255,255,255,.22); }
.quote-points strong { font-weight: 400; }
.quote-points span { color: rgba(255,255,255,.72); }
.quote-points .button { margin-top: 28px; color: var(--green-dark); background: var(--white); }

.public-confirmation-page { min-height: 100vh; background: var(--cream); }
.confirmation-shell { display: grid; min-height: 100vh; grid-template-columns: 54% 46%; }
.confirmation-image { position: relative; min-height: 100vh; overflow: hidden; color: var(--white); background: var(--green-dark); }
.confirmation-image > img { position: absolute; inset: 0; width: 100%; height: 100%; object-fit: cover; }
.confirmation-image-overlay { position: absolute; inset: 0; background: linear-gradient(180deg, rgba(25,31,20,.34), rgba(25,31,20,.12) 45%, rgba(25,31,20,.78)); }
.confirmation-brand { position: absolute; z-index: 1; top: 42px; left: 48px; }
.confirmation-image-copy { position: absolute; z-index: 1; right: 48px; bottom: 52px; left: 48px; max-width: 620px; }
.confirmation-image-copy > p:last-child { margin: 0; font-family: var(--serif); font-size: clamp(38px, 4vw, 62px); font-weight: 400; line-height: 1.02; }
.confirmation-content { position: relative; display: flex; align-items: center; padding: 86px clamp(48px, 6vw, 112px); background: var(--cream); }
.confirmation-back { position: absolute; top: 42px; right: clamp(48px, 6vw, 112px); color: var(--muted); font-size: 10px; letter-spacing: .1em; text-transform: uppercase; }
.confirmation-message { width: 100%; max-width: 650px; margin-inline: auto; }
.confirmation-check { display: grid; width: 64px; height: 64px; margin-bottom: 32px; place-items: center; border: 1px solid var(--brown); border-radius: 50%; color: var(--brown); font-family: var(--serif); font-size: 34px; }
.confirmation-message h1 { margin: 12px 0 28px; color: var(--green-dark); font-family: var(--serif); font-size: clamp(56px, 5.2vw, 86px); font-weight: 400; letter-spacing: -.035em; line-height: .94; }
.confirmation-lead { max-width: 590px; margin-bottom: 34px; color: var(--muted); font-size: 16px; line-height: 1.8; }
.confirmation-formats { display: grid; gap: 4px; margin-bottom: 14px; padding: 18px 0; border-top: 1px solid var(--line); }
.confirmation-formats span, .confirmation-reference span { color: var(--brown); font-size: 9px; font-weight: 600; letter-spacing: .14em; text-transform: uppercase; }
.confirmation-formats strong { color: var(--green-dark); font-family: var(--serif); font-size: 24px; font-weight: 400; }
.confirmation-reference { display: grid; gap: 6px; padding: 20px 0; border-top: 1px solid var(--line); border-bottom: 1px solid var(--line); }
.confirmation-reference strong { color: var(--green-dark); font-size: 20px; font-weight: 500; letter-spacing: .08em; }
.confirmation-reference small { color: var(--muted); font-size: 11px; }
.confirmation-actions { display: flex; flex-wrap: wrap; gap: 12px; margin-top: 34px; }
.confirmation-actions .button { min-width: 170px; }

@media (max-width: 980px) {
    .confirmation-shell { grid-template-columns: 1fr; }
    .confirmation-image { min-height: 48vh; }
    .confirmation-content { min-height: 52vh; }
}
@media (max-width: 620px) {
    .confirmation-brand { top: 26px; left: 24px; }
    .confirmation-image-copy { right: 24px; bottom: 30px; left: 24px; }
    .confirmation-content { padding: 82px 24px 64px; }
    .confirmation-back { top: 28px; right: 24px; }
    .confirmation-message h1 { font-size: 52px; }
    .confirmation-actions { display: grid; }
}

@media (max-width: 1050px) {
    .public-wizard-shell { grid-template-columns: 1fr; }
    .public-wizard-intro { position: relative; height: auto; min-height: 520px; }
    .public-wizard-intro h1 { font-size: 72px; }
    .public-wizard-assurances { grid-template-columns: repeat(3, 1fr); }
    .quote-callout-grid { grid-template-columns: 1fr; gap: 45px; }
    .quote-points { padding-left: 0; border-left: 0; }
}
@media (max-width: 700px) {
    .public-wizard-intro, .public-wizard-panel { padding: 72px 22px 48px; }
    .public-wizard-intro h1 { font-size: 58px; }
    .public-wizard-assurances { grid-template-columns: 1fr; }
    .wizard-top { grid-template-columns: 1fr; gap: 24px; }
    .wizard-choice-grid, .wizard-choice-grid.formats-choice-grid, .wizard-fields { grid-template-columns: 1fr; }
    .wizard-field-full { grid-column: auto; }
    .wizard-step { padding-top: 48px; }
    .wizard-actions { flex-wrap: wrap; }
    .wizard-actions button { min-width: 145px; }
    .public-wizard-back-home { margin-bottom: 18px; }
}
.portal-preview-banner { position: fixed; z-index: 1000; top: 0; right: 0; left: 0; display: flex; justify-content: space-between; padding: 12px 24px; color: #fff; background: #aa8358; }
.portal-preview-banner a { color: #fff; }
.portal-preview { padding-top: 45px; }
