/* RTD project page — enquiry widget (v1)
   Our lead form for static project pages: inline in the valuation section, and as a modal.
   Namespaced under .sfl. Colours follow the page's own palette (canopy / mist / stone). */

:root {
    --sfl-ink: #10291c;
    --sfl-ink-soft: #1c3a2a;
    --sfl-mist: #edf0ea;
    --sfl-line: #dfe4dc;
    --sfl-stone: #6f7a71;
    --sfl-paper: #ffffff;
    --sfl-danger: #9b3b1c;
    --sfl-font: var(--font-archivo, system-ui, -apple-system, "Segoe UI", sans-serif);

    /* Theme tokens the shared phone-input and lead-otp widgets read. */
    --background: #ffffff;
    --foreground: #10291c;
    --card: #ffffff;
    --popover: #ffffff;
    --border: #dfe4dc;
    --muted: #edf0ea;
    --muted-foreground: #6f7a71;
    --primary: #10291c;
    --primary-foreground: #edf0ea;
    --accent: #edf0ea;
    --ring: #1c3a2a;
    --radius: 10px;
}

.sfl-close:focus-visible,
.sfl-submit:focus-visible {
    outline: 2px solid var(--sfl-paper);
    outline-offset: 2px;
    box-shadow: 0 0 0 5px var(--sfl-ink);
}

/* ---------------------------------------------------------------- modal */

.sfl-lock {
    overflow: hidden;
}

.sfl-overlay {
    position: fixed;
    inset: 0;
    z-index: 900; /* below the OTP modal (1000), above everything on the page */
    display: flex;
    align-items: center;
    justify-content: center;
    padding: 16px;
    background: rgba(16, 41, 28, .55);
    -webkit-backdrop-filter: blur(2px);
    backdrop-filter: blur(2px);
    font-family: var(--sfl-font);
}

    .sfl-overlay[hidden] {
        display: none;
    }

.sfl-dialog {
    position: relative;
    width: 100%;
    max-width: 460px;
    max-height: calc(100vh - 32px);
    max-height: calc(100dvh - 32px);
    overflow-y: auto;
    padding: 26px 24px 20px;
    border-radius: 16px;
    background: var(--sfl-paper);
    color: var(--sfl-ink);
    box-shadow: 0 24px 70px rgba(10, 24, 16, .4);
}

.sfl-close {
    position: absolute;
    top: 10px;
    right: 10px;
    width: 36px;
    height: 36px;
    border: 0;
    border-radius: 999px;
    background: transparent;
    color: var(--sfl-stone);
    font-size: 24px;
    line-height: 1;
    cursor: pointer;
}

    .sfl-close:hover {
        background: var(--sfl-mist);
    }

.sfl-title {
    margin: 0 36px 6px 0;
    font: 800 22px/1.2 var(--sfl-font);
    font-stretch: 125%;
}

.sfl-sub {
    margin: 0 0 18px;
    font-size: 14.5px;
    line-height: 1.5;
    color: var(--sfl-stone);
}

.sfl-block {
    font-family: var(--sfl-font);
    color: var(--sfl-ink);
}

.sfl-form {
    display: grid;
    gap: 14px;
}

    .sfl-form[hidden] {
        display: none;
    }

.sfl-actions {
    display: flex;
}

    .sfl-actions .sfl-submit {
        width: 100%;
    }

/* ---- inline form in the page's valuation section: wider, so fields pair up */

@media (min-width: 640px) {
    .sfl-block--valuation .sfl-form {
        grid-template-columns: repeat(6, 1fr);
        column-gap: 16px;
        gap: 16px;
    }

        .sfl-block--valuation .sfl-form > * {
            grid-column: 1 / -1;
        }

    .sfl-block--valuation .sfl-field--phone {
        grid-column: 1 / span 3;
    }

    .sfl-block--valuation .sfl-field--email {
        grid-column: 4 / span 3;
    }
}

.sfl-block--valuation .sfl-actions .sfl-submit {
    width: auto;
    padding: 0 26px;
}

.sfl-block--valuation .sfl-thanks {
    padding: 20px;
    border: 1px solid var(--sfl-line);
    border-radius: 10px;
    text-align: left;
}

    .sfl-block--valuation .sfl-thanks p {
        margin-bottom: 0;
    }

.sfl-done {
    padding: 0 28px;
}

.sfl-field {
    display: grid;
    gap: 6px;
    font-size: 14px;
    font-weight: 600;
}

    .sfl-field span i {
        font-style: normal;
        font-weight: 400;
        color: var(--sfl-stone);
    }

    .sfl-field input,
    .sfl-field textarea {
        width: 100%;
        box-sizing: border-box;
        padding: 10px 12px;
        border: 1px solid var(--sfl-line);
        border-radius: 10px;
        background: var(--sfl-paper);
        color: var(--sfl-ink);
        font: 400 16px/1.4 var(--sfl-font); /* 16px keeps iOS from zooming the page */
    }

    .sfl-field textarea {
        resize: vertical;
        min-height: 76px;
    }

        .sfl-field input:focus,
        .sfl-field textarea:focus {
            outline: 2px solid var(--sfl-ink-soft);
            outline-offset: 1px;
        }

    /* The phone widget wraps its input and draws the border itself. */
    .sfl-field .sfp input {
        border: 0;
        outline: 0;
    }

.sfl-hp {
    position: absolute;
    left: -9999px;
    width: 1px;
    height: 1px;
    opacity: 0;
}

.sfl-consent {
    display: grid;
    grid-template-columns: auto 1fr;
    gap: 10px;
    align-items: start;
    font-size: 13px;
    line-height: 1.5;
    color: var(--sfl-ink);
}

    .sfl-consent input {
        width: 18px;
        height: 18px;
        margin: 1px 0 0;
        accent-color: var(--sfl-ink);
    }

    .sfl-consent a {
        color: inherit;
        text-decoration: underline;
    }

.sfl-error {
    margin: 0;
    font-size: 13.5px;
    font-weight: 600;
    color: var(--sfl-danger);
}

    .sfl-error[hidden] {
        display: none;
    }

.sfl-submit {
    min-height: 46px;
    border: 0;
    border-radius: 999px;
    background: var(--sfl-ink);
    color: var(--sfl-mist);
    font: 600 16px/1 var(--sfl-font);
    cursor: pointer;
}

    .sfl-submit:hover {
        background: var(--sfl-ink-soft);
    }

    .sfl-submit[disabled] {
        opacity: .65;
        cursor: not-allowed;
    }

    .sfl-submit[aria-busy] {
        cursor: progress;
    }

.sfl-thanks {
    padding: 18px 0 6px;
    text-align: center;
}

    .sfl-thanks[hidden] {
        display: none;
    }

    .sfl-thanks h3 {
        margin: 0 0 6px;
        font: 800 20px/1.2 var(--sfl-font);
    }

    .sfl-thanks p {
        margin: 0 0 16px;
        font-size: 14.5px;
        line-height: 1.5;
        color: var(--sfl-stone);
    }

.sfl-preview-note {
    justify-self: start;
    margin: 0;
    padding: 4px 10px;
    border-radius: 999px;
    background: #fbf5e6;
    color: #5c3f0b;
    font-size: 12.5px;
    font-weight: 600;
}

.sfl-agent {
    margin: 16px 0 0;
    padding-top: 12px;
    border-top: 1px solid var(--sfl-line);
    font-size: 12.5px;
    line-height: 1.5;
    color: var(--sfl-stone);
}

@media (max-width: 420px) {
    .sfl-dialog {
        padding: 22px 18px 16px;
    }
}

@media (prefers-reduced-motion: no-preference) {
    .sfl-overlay:not([hidden]) .sfl-dialog {
        animation: sfl-rise .18s ease-out;
    }
}

@keyframes sfl-rise {
    from {
        opacity: 0;
        transform: translateY(10px);
    }
}
