.psam-tool {
    --psam-green: #087a3b;
    --psam-green-dark: #055d2d;
    --psam-green-soft: #eaf5ef;
    --psam-charcoal: #252a27;
    --psam-muted: #67716b;
    --psam-border: #dce2de;
    --psam-panel: #f5f7f6;
    --psam-danger: #a72d2d;
    --psam-warning: #8a6116;
    width: 100%;
    color: var(--psam-charcoal);
    font: inherit;
}

.psam-tool *,
.psam-tool *::before,
.psam-tool *::after {
    box-sizing: border-box;
}

.psam-progress {
    display: grid;
    grid-template-columns: auto minmax(20px, 1fr) auto minmax(20px, 1fr) auto minmax(20px, 1fr) auto;
    align-items: center;
    gap: 10px;
    margin: 0 0 24px;
}

.psam-progress-item {
    display: flex;
    align-items: center;
    gap: 8px;
    color: var(--psam-muted);
    white-space: nowrap;
}

.psam-progress-item span {
    display: inline-grid;
    width: 30px;
    height: 30px;
    place-items: center;
    border: 2px solid var(--psam-border);
    border-radius: 50%;
    background: #fff;
    font-weight: 700;
}

.psam-progress-item strong {
    font-size: 14px;
    font-weight: 600;
}

.psam-progress-item.is-current,
.psam-progress-item.is-complete {
    color: var(--psam-green-dark);
}

.psam-progress-item.is-current span,
.psam-progress-item.is-complete span {
    border-color: var(--psam-green);
    background: var(--psam-green);
    color: #fff;
}

.psam-progress-item.is-complete span::before {
    content: "✓";
}

.psam-progress-item.is-complete span {
    font-size: 0;
}

.psam-progress-item.is-complete span::before {
    font-size: 15px;
}

.psam-progress-line {
    height: 2px;
    background: var(--psam-border);
}

.psam-card {
    margin: 0 0 22px;
    border: 1px solid var(--psam-border);
    border-radius: 10px;
    background: #fff;
    padding: 24px;
}

.psam-step-heading {
    display: flex;
    align-items: flex-start;
    gap: 13px;
}

.psam-step-number {
    display: inline-grid;
    flex: 0 0 36px;
    width: 36px;
    height: 36px;
    place-items: center;
    border-radius: 50%;
    background: var(--psam-green);
    color: #fff;
    font-weight: 700;
}

.psam-step-heading h3 {
    margin: 1px 0 5px;
    font-size: 22px;
    line-height: 1.25;
}

.psam-step-heading p {
    margin: 0;
    color: var(--psam-muted);
}

.psam-search-card .psam-step-heading {
    margin-bottom: 20px;
}

.psam-label {
    display: block;
    margin: 0 0 7px;
    font-weight: 600;
}

.psam-search-host,
.psam-place-autocomplete {
    display: block;
    width: 100%;
}

.psam-place-autocomplete {
    min-height: 50px;
    border: 1px solid #bfc9c2;
    border-radius: 6px;
    background: #fff;
}

.psam-place-autocomplete::part(input) {
    min-height: 48px;
    padding: 11px 13px;
    font: inherit;
}

.psam-search-selection {
    margin: 12px 0 0;
    padding: 10px 12px;
    border-left: 4px solid var(--psam-green);
    background: var(--psam-green-soft);
    color: var(--psam-green-dark);
    font-weight: 600;
}

.psam-map-heading {
    display: flex;
    align-items: flex-start;
    justify-content: space-between;
    gap: 20px;
    margin-bottom: 18px;
}

.psam-expand-button {
    flex: 0 0 auto;
    appearance: none;
    border: 0;
    background: transparent;
    color: var(--psam-green-dark);
    cursor: pointer;
    font: inherit;
    font-weight: 600;
    padding: 7px;
}

.psam-expand-button:hover,
.psam-expand-button:focus-visible {
    text-decoration: underline;
}

.psam-toolbar {
    display: flex;
    flex-wrap: wrap;
    gap: 9px;
    margin: 0 0 12px;
}

.psam-button {
    appearance: none;
    min-height: 45px;
    border: 1px solid #bfc9c2;
    border-radius: 5px;
    background: #fff;
    color: var(--psam-charcoal);
    cursor: pointer;
    font: inherit;
    font-weight: 600;
    line-height: 1.15;
    padding: 11px 15px;
    text-transform: none;
}

.psam-button:hover:not(:disabled),
.psam-button:focus-visible:not(:disabled) {
    border-color: var(--psam-green);
    color: var(--psam-green-dark);
}

.psam-button-primary {
    border-color: var(--psam-green);
    background: var(--psam-green);
    color: #fff;
}

.psam-button-primary:hover:not(:disabled),
.psam-button-primary:focus-visible:not(:disabled) {
    border-color: var(--psam-green-dark);
    background: var(--psam-green-dark);
    color: #fff;
}

.psam-button-danger {
    color: var(--psam-danger);
}

.psam-button:disabled {
    cursor: not-allowed;
    opacity: 0.45;
}

.psam-status {
    display: flex;
    align-items: center;
    gap: 10px;
    min-height: 44px;
    margin: 0 0 12px;
    border-radius: 5px;
    background: var(--psam-panel);
    padding: 10px 13px;
}

.psam-status-dot {
    flex: 0 0 10px;
    width: 10px;
    height: 10px;
    border-radius: 50%;
    background: var(--psam-green);
}

.psam-status[data-state="loading"] .psam-status-dot,
.psam-status[data-state="drawing"] .psam-status-dot,
.psam-status[data-state="editing"] .psam-status-dot {
    animation: psam-pulse 1.2s infinite ease-in-out;
}

.psam-status[data-state="error"] {
    background: #f9eded;
    color: var(--psam-danger);
}

.psam-status[data-state="error"] .psam-status-dot {
    background: var(--psam-danger);
}

.psam-status[data-state="warning"] {
    background: #fbf4e7;
    color: var(--psam-warning);
}

.psam-status[data-state="warning"] .psam-status-dot {
    background: var(--psam-warning);
}

@keyframes psam-pulse {
    0%, 100% { opacity: 0.4; transform: scale(0.85); }
    50% { opacity: 1; transform: scale(1); }
}

.psam-map-wrap {
    position: relative;
}

.psam-map {
    width: 100%;
    height: 610px;
    border: 1px solid var(--psam-border);
    border-radius: 6px;
    background: #e8ecea;
    overflow: hidden;
}

.psam-map-tip {
    position: absolute;
    left: 50%;
    bottom: 18px;
    transform: translateX(-50%);
    max-width: calc(100% - 30px);
    border-radius: 999px;
    background: rgba(25, 31, 28, 0.9);
    color: #fff;
    padding: 9px 15px;
    text-align: center;
    font-size: 14px;
    font-weight: 600;
    pointer-events: none;
}

.psam-results {
    display: grid;
    grid-template-columns: repeat(4, minmax(0, 1fr));
    gap: 12px;
    margin-top: 20px;
}

.psam-result {
    min-width: 0;
    border: 1px solid var(--psam-border);
    border-radius: 6px;
    background: var(--psam-panel);
    padding: 15px;
}

.psam-result span {
    display: block;
    margin-bottom: 5px;
    color: var(--psam-muted);
    font-size: 14px;
}

.psam-result strong {
    display: block;
    overflow-wrap: anywhere;
    color: var(--psam-green-dark);
    font-size: 20px;
    line-height: 1.2;
}

.psam-review-card[aria-disabled="true"] .psam-results {
    opacity: 0.48;
}

.psam-validation {
    margin-top: 14px;
    border-left: 4px solid var(--psam-danger);
    background: #f9eded;
    color: var(--psam-danger);
    padding: 11px 13px;
    font-weight: 600;
}

.psam-disclaimer {
    margin: 16px 0 0;
    color: var(--psam-muted);
    font-size: 14px;
}

.psam-debug {
    margin-top: 18px;
    border: 1px dashed #abb7af;
    border-radius: 6px;
    padding: 12px;
}

.psam-debug summary {
    cursor: pointer;
    font-weight: 600;
}

.psam-debug textarea {
    display: block;
    width: 100%;
    margin-top: 10px;
    border: 1px solid var(--psam-border);
    border-radius: 4px;
    background: #f7f7f7;
    padding: 10px;
    font-family: Consolas, Monaco, monospace;
    font-size: 12px;
    resize: vertical;
}

.psam-setup-message {
    border-left: 4px solid var(--psam-danger, #a72d2d);
    background: #f5f7f6;
    padding: 13px 15px;
}

.psam-tool.has-map-error .psam-map {
    height: 190px;
}

html.psam-map-open,
body.psam-map-open {
    overflow: hidden !important;
    overscroll-behavior: none !important;
}

/* Expanded mode is re-parented directly under <body> by JavaScript.
 * This deliberately escapes Flatsome/UX Builder stacking contexts so no
 * page section, form, sticky header or later content can paint over the map. */
body > .psam-tool.is-expanded {
    position: fixed !important;
    inset: 0 !important;
    z-index: 2147483000 !important;
    width: 100vw !important;
    max-width: none !important;
    height: 100vh !important;
    height: 100dvh !important;
    margin: 0 !important;
    overflow: hidden !important;
    background: #fff !important;
    padding: 16px !important;
    isolation: isolate;
}

/* In expanded mode the map workspace is the only visible part of the tool. */
.psam-tool.is-expanded > .psam-progress,
.psam-tool.is-expanded > .psam-search-card,
.psam-tool.is-expanded > .psam-estimate-card,
.psam-tool.is-expanded > .psam-enquiry-card,
.psam-tool.is-expanded > .psam-debug {
    display: none !important;
}

.psam-tool.is-expanded .psam-map-card {
    display: flex;
    height: calc(100vh - 32px);
    height: calc(100dvh - 32px);
    min-height: 0;
    margin: 0;
    overflow: hidden;
    flex-direction: column;
    padding: 16px;
}

.psam-tool.is-expanded .psam-map-heading {
    margin-bottom: 10px;
}

.psam-tool.is-expanded .psam-map-heading .psam-step-heading p {
    display: none;
}

.psam-tool.is-expanded .psam-map-wrap {
    flex: 1 1 auto;
    min-height: 420px;
}

.psam-tool.is-expanded .psam-map {
    height: 100%;
    min-height: 420px;
}

@media (max-width: 820px) {
    .psam-progress {
        grid-template-columns: repeat(3, minmax(0, 1fr));
        gap: 7px;
    }

    .psam-progress-line {
        display: none;
    }

    .psam-progress-item {
        flex-direction: column;
        gap: 5px;
        text-align: center;
        white-space: normal;
    }

    .psam-progress-item strong {
        font-size: 12px;
        line-height: 1.2;
    }

    .psam-card {
        padding: 18px;
    }

    .psam-map-heading {
        display: block;
    }

    .psam-expand-button {
        margin: 10px 0 0 47px;
    }

    .psam-toolbar {
        display: grid;
        grid-template-columns: repeat(2, minmax(0, 1fr));
    }

    .psam-button {
        width: 100%;
    }

    .psam-map {
        height: 500px;
    }

    .psam-results {
        grid-template-columns: repeat(2, minmax(0, 1fr));
    }
}

@media (max-width: 480px) {
    .psam-card {
        padding: 15px;
        border-radius: 7px;
    }

    .psam-step-heading h3 {
        font-size: 19px;
    }

    .psam-step-number {
        flex-basis: 32px;
        width: 32px;
        height: 32px;
    }

    .psam-toolbar {
        grid-template-columns: 1fr;
    }

    .psam-map {
        height: 440px;
    }

    .psam-results {
        grid-template-columns: 1fr;
        gap: 8px;
    }

    .psam-tool.is-expanded {
        padding: 0;
    }

    .psam-tool.is-expanded .psam-map-card {
        min-height: 100vh;
        border: 0;
        border-radius: 0;
        padding: 10px;
    }

    .psam-tool.is-expanded .psam-map-heading .psam-step-heading {
        display: none;
    }

    .psam-tool.is-expanded .psam-expand-button {
        margin: 0 0 0 auto;
    }
}

@media (prefers-reduced-motion: reduce) {
    .psam-status-dot {
        animation: none !important;
    }
}


.psam-estimate-card .psam-step-heading { margin-bottom: 20px; }
.psam-estimate-questions { display:grid; grid-template-columns:1fr 1fr; gap:14px 20px; margin-bottom:20px; }
.psam-estimate-questions label { font-weight:600; }
.psam-estimate-questions select { display:block; width:100%; margin-top:7px; min-height:46px; border:1px solid #bfc9c2; border-radius:5px; padding:9px 11px; background:#fff; font:inherit; }
.psam-check { display:flex; align-items:flex-start; gap:9px; font-weight:500 !important; padding-top:8px; }
.psam-check input { margin-top:3px; }
.psam-estimate-options { display:grid; grid-template-columns:repeat(2,minmax(0,1fr)); gap:14px; }
.psam-estimate-option { border:1px solid var(--psam-border); border-radius:8px; padding:18px; background:var(--psam-panel); }
.psam-estimate-option.is-fast { border-color:var(--psam-green); background:var(--psam-green-soft); }
.psam-estimate-option span { display:block; font-weight:700; margin-bottom:7px; }
.psam-estimate-option strong { display:block; color:var(--psam-green-dark); font-size:25px; line-height:1.2; }
.psam-estimate-option p { margin:8px 0 0; color:var(--psam-muted); }
.psam-estimate-caveat { margin-top:16px; border-left:4px solid var(--psam-warning); background:#fff8e8; padding:13px 15px; }
.psam-estimate-caveat p { margin:5px 0 0; font-size:14px; }
@media (max-width:820px){ .psam-progress{grid-template-columns:repeat(4,minmax(0,1fr));} .psam-estimate-questions,.psam-estimate-options{grid-template-columns:1fr;} }

/* Version 0.2.1 presentation refinements */
.psam-tool {
    max-width: 1180px;
    margin: 36px auto 56px;
    padding: 0 20px;
}

.psam-progress {
    margin-bottom: 18px;
    padding: 0 4px;
    grid-template-columns: auto minmax(26px, 1fr) auto minmax(26px, 1fr) auto minmax(26px, 1fr) auto;
}

.psam-progress-item strong {
    font-size: 13px;
}

.psam-card {
    margin-bottom: 18px;
    padding: 20px 22px;
    border-radius: 8px;
}

.psam-search-card {
    padding-bottom: 22px;
}

.psam-search-card .psam-step-heading,
.psam-estimate-card .psam-step-heading {
    margin-bottom: 15px;
}

.psam-step-heading {
    gap: 11px;
}

.psam-step-number {
    flex-basis: 32px;
    width: 32px;
    height: 32px;
    font-size: 15px;
}

.psam-step-heading h3 {
    margin-top: 0;
    font-size: 21px;
}

.psam-step-heading p {
    font-size: 15px;
    line-height: 1.5;
}

.psam-label {
    margin-bottom: 6px;
}

.psam-place-autocomplete,
.psam-place-autocomplete::part(input) {
    min-height: 46px;
}

.psam-place-autocomplete::part(input) {
    padding: 9px 12px;
}

.psam-map-heading {
    margin-bottom: 14px;
}

.psam-toolbar {
    margin-bottom: 10px;
}

.psam-button {
    min-height: 42px;
    padding: 9px 14px;
}

.psam-status {
    min-height: 40px;
    margin-bottom: 10px;
    padding: 8px 12px;
    font-size: 14px;
}

.psam-map {
    height: 560px;
}

.psam-results {
    margin-top: 16px;
}

.psam-result {
    padding: 13px 14px;
}

.psam-estimate-questions {
    margin-bottom: 16px;
}

.psam-estimate-option {
    padding: 16px;
}

@media (max-width: 900px) {
    .psam-tool {
        margin-top: 24px;
        padding: 0 14px;
    }

    .psam-progress {
        grid-template-columns: repeat(4, minmax(0, 1fr));
        gap: 6px;
    }

    .psam-progress-line {
        display: none;
    }

    .psam-progress-item {
        min-width: 0;
        flex-direction: column;
        gap: 4px;
        text-align: center;
        white-space: normal;
    }

    .psam-progress-item strong {
        font-size: 11px;
        line-height: 1.2;
    }
}

@media (max-width: 600px) {
    .psam-tool {
        margin: 16px auto 36px;
        padding: 0 10px;
    }

    .psam-card {
        padding: 16px;
    }

    .psam-progress-item strong {
        display: none;
    }

    .psam-progress-item span {
        width: 28px;
        height: 28px;
        margin: 0 auto;
    }

    .psam-map-heading {
        display: flex;
        align-items: flex-start;
    }

    .psam-expand-button {
        margin: 0;
        padding: 5px 0 5px 8px;
        font-size: 13px;
    }

    .psam-map {
        height: 430px;
    }
}

/* v0.2.2: Keep Google Places address text readable when themes apply light input text. */
.psam-tool .psam-search-host,
.psam-tool .psam-place-autocomplete,
.psam-tool gmp-place-autocomplete {
    color: #333333 !important;
    background-color: #ffffff !important;
    -webkit-text-fill-color: #333333 !important;
    color-scheme: light;
}

.psam-tool .psam-place-autocomplete::part(input),
.psam-tool gmp-place-autocomplete::part(input) {
    color: #333333 !important;
    background-color: #ffffff !important;
    -webkit-text-fill-color: #333333 !important;
    caret-color: #333333 !important;
    opacity: 1 !important;
}

.psam-tool .psam-place-autocomplete::part(input)::placeholder,
.psam-tool gmp-place-autocomplete::part(input)::placeholder {
    color: #777777 !important;
    -webkit-text-fill-color: #777777 !important;
    opacity: 1 !important;
}

/* Fallback for browser/API variants that expose a normal input element. */
.psam-tool .psam-search-host input,
.psam-tool .psam-place-autocomplete input,
.psam-tool gmp-place-autocomplete input {
    color: #333333 !important;
    background-color: #ffffff !important;
    -webkit-text-fill-color: #333333 !important;
    caret-color: #333333 !important;
}

.psam-tool .psam-search-host input::placeholder,
.psam-tool .psam-place-autocomplete input::placeholder,
.psam-tool gmp-place-autocomplete input::placeholder {
    color: #777777 !important;
    -webkit-text-fill-color: #777777 !important;
    opacity: 1 !important;
}


/* v0.2.4: Address-location guidance and draggable marker support. */
.psam-search-help {
    margin: 9px 0 0;
    color: #5f6662;
    font-size: 13px;
    line-height: 1.45;
}

.psam-search-selection {
    margin-top: 9px;
}


/* v0.2.5: Keep the drawing controls visible while the user works on the map. */
.psam-control-dock {
    position: sticky;
    top: 10px;
    z-index: 30;
    margin: 0 0 12px;
    border: 1px solid var(--psam-border);
    border-radius: 8px;
    background: rgba(255, 255, 255, 0.97);
    box-shadow: 0 8px 22px rgba(25, 45, 34, 0.12);
    padding: 10px;
    backdrop-filter: blur(6px);
}

.psam-control-dock .psam-toolbar {
    margin-bottom: 8px;
}

.psam-control-dock .psam-status {
    margin-bottom: 0;
}

@media (max-width: 680px) {
    .psam-control-dock {
        top: 6px;
        padding: 8px;
    }

    .psam-control-dock .psam-toolbar {
        display: grid;
        grid-template-columns: repeat(2, minmax(0, 1fr));
    }

    .psam-control-dock .psam-button {
        width: 100%;
        padding-left: 9px;
        padding-right: 9px;
        font-size: 14px;
    }

    .psam-control-dock .psam-button-primary {
        grid-column: 1 / -1;
    }
}

/* v0.2.6: Desktop map workspace with a persistent side control panel. */
.psam-map-workspace {
    display: grid;
    grid-template-columns: minmax(0, 3fr) minmax(270px, 1fr);
    align-items: start;
    gap: 18px;
}

.psam-map-workspace .psam-map-wrap {
    min-width: 0;
}

.psam-map-workspace .psam-map {
    height: clamp(620px, 64vw, 760px);
    min-height: 620px;
}

.psam-control-panel {
    position: sticky;
    top: 16px;
    z-index: 20;
    border: 1px solid var(--psam-border);
    border-radius: 8px;
    background: #fff;
    padding: 16px;
}

.psam-control-panel h4 {
    margin: 0 0 11px;
    color: var(--psam-charcoal);
    font-size: 17px;
    line-height: 1.25;
}

.psam-control-panel .psam-toolbar {
    display: grid;
    grid-template-columns: 1fr;
    gap: 8px;
    margin: 0 0 12px;
}

.psam-control-panel .psam-button {
    width: 100%;
    min-height: 43px;
    text-align: center;
}

.psam-control-panel .psam-status {
    align-items: flex-start;
    min-height: 0;
    margin: 0 0 16px;
    font-size: 13px;
    line-height: 1.4;
}

.psam-control-panel .psam-status-dot {
    margin-top: 4px;
}

.psam-live-measurements {
    border-top: 1px solid var(--psam-border);
    padding-top: 15px;
}

.psam-control-panel .psam-results {
    grid-template-columns: repeat(2, minmax(0, 1fr));
    gap: 8px;
    margin: 0;
}

.psam-control-panel .psam-result {
    padding: 10px;
}

.psam-control-panel .psam-result span {
    margin-bottom: 3px;
    font-size: 12px;
    line-height: 1.25;
}

.psam-control-panel .psam-result strong {
    font-size: 17px;
}

.psam-control-panel .psam-validation {
    margin-top: 12px;
    font-size: 13px;
}

.psam-control-panel .psam-disclaimer {
    margin-top: 12px;
    font-size: 12px;
    line-height: 1.4;
}

/* The older floating dock is no longer used in this layout. */
.psam-map-card .psam-control-dock {
    position: static;
    margin: 0;
    border: 0;
    box-shadow: none;
    padding: 0;
}

.psam-tool.is-expanded .psam-map-workspace {
    flex: 1 1 auto;
    display: grid;
    grid-template-columns: minmax(0, 1fr) 300px;
    min-height: 0;
}

.psam-tool.is-expanded .psam-map-wrap,
.psam-tool.is-expanded .psam-map {
    min-height: 0;
    height: 100%;
}

.psam-tool.is-expanded .psam-control-panel {
    top: 0;
    max-height: calc(100vh - 88px);
    overflow: auto;
}

@media (max-width: 980px) {
    .psam-map-workspace {
        grid-template-columns: 1fr;
    }

    .psam-map-workspace .psam-map {
        height: 600px;
        min-height: 0;
    }

    .psam-control-panel {
        position: sticky;
        top: 6px;
        order: -1;
    }

    .psam-control-panel .psam-toolbar {
        grid-template-columns: repeat(3, minmax(0, 1fr));
    }

    .psam-control-panel .psam-button-primary {
        grid-column: auto;
    }

    .psam-live-measurements {
        margin-top: 2px;
    }

    .psam-control-panel .psam-results {
        grid-template-columns: repeat(4, minmax(0, 1fr));
    }

    .psam-tool.is-expanded .psam-map-workspace {
        grid-template-columns: 1fr;
    }

    .psam-tool.is-expanded .psam-control-panel {
        max-height: none;
    }
}

@media (max-width: 680px) {
    .psam-map-workspace .psam-map {
        height: 500px;
    }

    .psam-control-panel {
        padding: 10px;
    }

    .psam-control-panel h4 {
        font-size: 15px;
    }

    .psam-control-panel .psam-toolbar {
        grid-template-columns: repeat(2, minmax(0, 1fr));
    }

    .psam-control-panel .psam-button-primary {
        grid-column: 1 / -1;
    }

    .psam-control-panel .psam-results {
        grid-template-columns: repeat(2, minmax(0, 1fr));
    }
}

/* v0.3.3 — aligned estimate questions and Pinpoint-green checkboxes */
.psam-estimate-questions {
    display: block;
    margin-bottom: 22px;
}

.psam-estimate-site {
    display: block;
    max-width: 760px;
    font-weight: 700;
}

.psam-estimate-site select {
    margin-bottom: 22px;
}

.psam-requirements {
    border-top: 1px solid var(--psam-border);
    padding-top: 20px;
}

.psam-requirements-heading {
    margin-bottom: 14px;
}

.psam-requirements-heading h4 {
    margin: 0 0 5px;
    color: var(--psam-text);
    font-size: 18px;
    line-height: 1.3;
}

.psam-requirements-heading p {
    margin: 0;
    color: var(--psam-muted);
    font-size: 14px;
    line-height: 1.55;
}

.psam-requirement-grid {
    display: grid;
    grid-template-columns: repeat(3, minmax(0, 1fr));
    gap: 14px;
    align-items: stretch;
}

.psam-requirement {
    display: flex;
    align-items: flex-start;
    gap: 12px;
    min-height: 132px;
    margin: 0;
    padding: 16px;
    border: 1px solid var(--psam-border);
    border-radius: 8px;
    background: var(--psam-panel);
    cursor: pointer;
    font-weight: 400;
}

.psam-requirement:hover {
    border-color: #9eb7aa;
    background: #fbfdfc;
}

.psam-requirement:has(input:checked) {
    border-color: var(--psam-green);
    background: var(--psam-green-soft);
}

.psam-requirement input[type="checkbox"] {
    flex: 0 0 auto;
    width: 20px;
    height: 20px;
    margin: 2px 0 0;
    accent-color: var(--psam-green) !important;
    cursor: pointer;
}

.psam-requirement-copy {
    display: block;
    min-width: 0;
}

.psam-requirement-copy strong {
    display: block;
    margin: 0 0 6px;
    color: var(--psam-text);
    font-size: 15px;
    line-height: 1.35;
}

.psam-requirement-copy small {
    display: block;
    color: var(--psam-muted);
    font-size: 13px;
    line-height: 1.5;
    font-weight: 400;
}

@media (max-width: 980px) {
    .psam-requirement-grid {
        grid-template-columns: 1fr;
    }

    .psam-requirement {
        min-height: 0;
    }
}

/* v0.4.0 — service-specific estimate workflow */
.psam-service-selector {
    max-width: 760px;
    margin: 0 0 22px;
}

.psam-service-selector label,
.psam-field {
    display: block;
    color: var(--psam-text);
    font-weight: 700;
}

.psam-service-selector select,
.psam-field select,
.psam-field input[type="number"] {
    display: block;
    width: 100%;
    min-height: 48px;
    margin-top: 7px;
    padding: 10px 12px;
    color: var(--psam-text) !important;
    -webkit-text-fill-color: var(--psam-text) !important;
    background: #fff !important;
    border: 1px solid #bfc9c2;
    border-radius: 6px;
    font: inherit;
    box-sizing: border-box;
}

.psam-service-panels {
    margin: 0 0 20px;
}

.psam-service-panel {
    padding: 20px;
    border: 1px solid var(--psam-border);
    border-radius: 9px;
    background: #fbfcfb;
}

.psam-service-panel[hidden] {
    display: none !important;
}

.psam-service-panel-heading {
    margin: 0 0 18px;
}

.psam-service-panel-heading h4 {
    margin: 0 0 6px;
    color: var(--psam-text);
    font-size: 19px;
    line-height: 1.3;
}

.psam-service-panel-heading p {
    max-width: 900px;
    margin: 0;
    color: var(--psam-muted);
    font-size: 14px;
    line-height: 1.6;
}

.psam-question-grid {
    display: grid;
    grid-template-columns: repeat(2, minmax(0, 1fr));
    gap: 16px 20px;
    align-items: stretch;
}

.psam-question-grid .psam-requirement {
    min-height: 0;
}

.psam-compact-requirement {
    align-self: end;
    min-height: 74px !important;
}

.psam-manual-panel {
    border-color: #d6a22a;
    background: #fff8e8;
}

.psam-estimate-basis {
    min-height: 46px;
    margin: 0 0 16px;
    padding: 12px 14px;
    border-left: 4px solid var(--psam-green);
    background: var(--psam-green-soft);
    color: var(--psam-text);
    font-size: 14px;
    line-height: 1.55;
}

.psam-estimate-basis:empty {
    display: none;
}

@media (max-width: 820px) {
    .psam-question-grid {
        grid-template-columns: 1fr;
    }

    .psam-service-panel {
        padding: 16px;
    }
}

/* v0.4.3 — keep the map visible and usable on phones and tablets. */
@media (max-width: 980px) {
    .psam-map-workspace {
        display: flex;
        flex-direction: column;
        gap: 10px;
    }

    .psam-control-panel {
        position: static;
        top: auto;
        order: -1;
        z-index: auto;
        padding: 10px;
        box-shadow: none;
    }

    .psam-control-panel .psam-toolbar {
        display: grid;
        grid-template-columns: repeat(2, minmax(0, 1fr));
        gap: 8px;
        margin-bottom: 8px;
    }

    /* On a small screen, only show actions that can currently be used. */
    .psam-control-panel .psam-button:disabled {
        display: none;
    }

    .psam-control-panel .psam-button,
    .psam-control-panel .psam-button-primary {
        grid-column: auto;
        min-height: 44px;
    }

    .psam-control-panel .psam-status {
        margin-bottom: 0;
    }

    /* The full figures are repeated in the review section below the map. */
    .psam-control-panel .psam-live-measurements,
    .psam-control-panel > .psam-disclaimer {
        display: none;
    }

    .psam-map-workspace .psam-map {
        width: 100%;
        height: min(68vh, 560px);
        min-height: 380px;
        max-height: 560px;
    }
}

@media (max-width: 680px) {
    .psam-map-card {
        padding: 12px;
    }

    .psam-map-heading {
        margin-bottom: 10px;
    }

    .psam-control-panel {
        padding: 8px;
    }

    .psam-control-panel h4 {
        margin-bottom: 7px;
        font-size: 15px;
    }

    .psam-control-panel .psam-toolbar {
        grid-template-columns: repeat(2, minmax(0, 1fr));
    }

    .psam-control-panel .psam-button {
        min-height: 42px;
        padding: 9px 8px;
        font-size: 14px;
    }

    .psam-control-panel .psam-status {
        min-height: 40px;
        padding: 8px 10px;
        font-size: 13px;
    }

    .psam-map-workspace .psam-map {
        height: 62vh;
        min-height: 350px;
        max-height: 500px;
    }
}

/* Short mobile landscape screens need a shallower map and very compact controls. */
@media (max-width: 980px) and (orientation: landscape) and (max-height: 620px) {
    .psam-map-card {
        padding: 10px;
    }

    .psam-map-heading {
        margin-bottom: 7px;
    }

    .psam-map-heading .psam-step-heading p {
        display: none;
    }

    .psam-control-panel {
        padding: 7px;
    }

    .psam-control-panel > h4 {
        display: none;
    }

    .psam-control-panel .psam-toolbar {
        display: flex;
        flex-wrap: wrap;
        gap: 6px;
        margin-bottom: 6px;
    }

    .psam-control-panel .psam-button {
        flex: 1 1 135px;
        width: auto;
        min-height: 38px;
        padding: 7px 9px;
        font-size: 13px;
    }

    .psam-control-panel .psam-status {
        min-height: 36px;
        padding: 7px 9px;
        font-size: 12px;
    }

    .psam-map-workspace .psam-map {
        height: 58vh;
        min-height: 260px;
        max-height: 390px;
    }
}

/* Expanded mobile mode gives the map most of the available screen. */
@media (max-width: 980px) {
    .psam-tool.is-expanded .psam-map-workspace {
        display: flex;
        flex: 1 1 auto;
        flex-direction: column;
        min-height: 0;
    }

    .psam-tool.is-expanded .psam-control-panel {
        flex: 0 0 auto;
        order: -1;
    }

    .psam-tool.is-expanded .psam-map-wrap {
        flex: 1 1 auto;
        min-height: 0;
    }

    .psam-tool.is-expanded .psam-map-workspace .psam-map {
        height: 100%;
        min-height: 320px;
        max-height: none;
    }
}

/* v0.4.4 — reliable mobile map-first workspace.
 * The map stays visible while only the currently usable controls float over
 * its lower edge. This replaces the v0.4.3 controls-first mobile layout.
 */
@media (max-width: 980px) {
    .psam-map-workspace {
        position: relative;
        display: block;
        width: 100%;
        min-width: 0;
        min-height: 0;
    }

    .psam-map-workspace .psam-map-wrap {
        position: relative;
        display: block;
        width: 100%;
        min-width: 0;
    }

    .psam-map-workspace .psam-map {
        display: block !important;
        width: 100% !important;
        height: 68vh;
        height: 68svh;
        min-height: 420px;
        max-height: 650px;
        visibility: visible !important;
        opacity: 1 !important;
    }

    .psam-control-panel {
        position: absolute;
        top: auto;
        right: 10px;
        bottom: max(10px, env(safe-area-inset-bottom));
        left: 10px;
        z-index: 40;
        width: auto;
        max-height: 44%;
        overflow: auto;
        overscroll-behavior: contain;
        padding: 9px;
        border-color: rgba(190, 201, 194, 0.95);
        background: rgba(255, 255, 255, 0.96);
        box-shadow: 0 8px 24px rgba(20, 40, 29, 0.18);
        -webkit-backdrop-filter: blur(8px);
        backdrop-filter: blur(8px);
    }

    .psam-control-panel > h4,
    .psam-control-panel .psam-live-measurements,
    .psam-control-panel > .psam-disclaimer {
        display: none !important;
    }

    .psam-control-panel .psam-toolbar {
        display: grid;
        grid-template-columns: repeat(2, minmax(0, 1fr));
        gap: 7px;
        margin: 0 0 7px;
    }

    .psam-control-panel .psam-button:disabled {
        display: none !important;
    }

    .psam-control-panel .psam-button,
    .psam-control-panel .psam-button-primary {
        grid-column: auto;
        width: 100%;
        min-height: 42px;
        padding: 8px 9px;
        font-size: 14px;
    }

    .psam-control-panel .psam-button-primary {
        grid-column: 1 / -1;
    }

    .psam-control-panel .psam-status {
        min-height: 38px;
        margin: 0;
        padding: 7px 9px;
        font-size: 12px;
        line-height: 1.35;
    }

    .psam-control-panel .psam-validation {
        margin-top: 7px;
        padding: 8px 9px;
        font-size: 12px;
    }

    .psam-map-tip {
        bottom: 126px;
    }

    .psam-tool.is-expanded .psam-map-card {
        min-height: 100svh;
    }

    .psam-tool.is-expanded .psam-map-workspace {
        position: relative;
        display: block;
        flex: 1 1 auto;
        min-height: 0;
    }

    .psam-tool.is-expanded .psam-map-wrap {
        height: 100%;
        min-height: 0;
    }

    .psam-tool.is-expanded .psam-map-workspace .psam-map {
        height: 100% !important;
        min-height: 420px;
        max-height: none;
    }

    .psam-tool.is-expanded .psam-control-panel {
        position: absolute;
        right: 10px;
        bottom: max(10px, env(safe-area-inset-bottom));
        left: 10px;
        max-height: 42%;
    }
}

@media (max-width: 680px) {
    .psam-map-card {
        padding: 10px;
    }

    .psam-map-workspace .psam-map {
        height: 66vh;
        height: 66svh;
        min-height: 400px;
        max-height: 590px;
    }

    .psam-control-panel {
        right: 7px;
        bottom: max(7px, env(safe-area-inset-bottom));
        left: 7px;
        max-height: 46%;
        padding: 7px;
    }

    .psam-control-panel .psam-toolbar {
        gap: 6px;
        margin-bottom: 6px;
    }

    .psam-control-panel .psam-button,
    .psam-control-panel .psam-button-primary {
        min-height: 40px;
        padding: 7px 8px;
        font-size: 13px;
    }

    .psam-control-panel .psam-status {
        min-height: 36px;
        padding: 6px 8px;
        font-size: 12px;
    }
}

@media (max-width: 980px) and (orientation: landscape) and (max-height: 620px) {
    .psam-map-heading {
        margin-bottom: 5px;
    }

    .psam-map-heading .psam-step-heading p {
        display: none;
    }

    .psam-map-workspace .psam-map {
        height: 72vh;
        height: 72svh;
        min-height: 270px;
        max-height: 430px;
    }

    .psam-control-panel {
        right: 8px;
        bottom: max(8px, env(safe-area-inset-bottom));
        left: 8px;
        max-height: 40%;
        padding: 6px;
    }

    .psam-control-panel .psam-toolbar {
        display: flex;
        flex-wrap: nowrap;
        gap: 5px;
        margin: 0;
    }

    .psam-control-panel .psam-button,
    .psam-control-panel .psam-button-primary {
        flex: 1 1 0;
        grid-column: auto;
        width: auto;
        min-width: 0;
        min-height: 36px;
        padding: 6px;
        font-size: 12px;
    }

    .psam-control-panel .psam-status {
        display: none;
    }

    .psam-map-tip {
        bottom: 62px;
    }
}


/* v0.4.5 — fixed lease-plan site survey inclusion */
.psam-included-service {
    display: flex;
    align-items: flex-start;
    gap: 12px;
    min-height: 74px;
    margin: 0;
    padding: 16px;
    border: 1px solid var(--psam-green);
    border-radius: 8px;
    background: var(--psam-green-soft);
}

.psam-included-service-icon {
    display: inline-flex;
    flex: 0 0 22px;
    align-items: center;
    justify-content: center;
    width: 22px;
    height: 22px;
    margin-top: 1px;
    border-radius: 50%;
    background: var(--psam-green);
    color: #fff;
    font-size: 14px;
    font-weight: 800;
    line-height: 1;
}


/* v0.5 verified-estimate gate */
.psam-verification{margin-top:24px;padding:22px;border:1px solid var(--psam-border);border-radius:9px;background:#f8faf9}
.psam-verification .psam-question-grid{margin-top:15px}
.psam-verification input[type="text"],.psam-verification input[type="email"],.psam-verification input[type="tel"]{width:100%;min-height:48px;margin-top:7px;border:1px solid #bfc9c2;border-radius:6px;background:#fff;color:#252a27!important;-webkit-text-fill-color:#252a27!important;padding:10px 12px;font:inherit}
.psam-consent-row{display:flex;align-items:flex-start;gap:11px;margin-top:16px;padding:14px;border:1px solid #bfc9c2;border-radius:7px;background:#fff;cursor:pointer}
.psam-consent-row input{flex:0 0 auto;margin-top:3px;accent-color:var(--psam-green)}
.psam-consent-row.is-optional{background:var(--psam-green-soft);border-color:#a9cfb9}
.psam-verification-actions{margin-top:18px}.psam-code-panel{display:flex;align-items:flex-end;gap:12px;margin-top:16px}.psam-code-panel .psam-field{flex:1;margin:0}.psam-code-panel input{letter-spacing:.2em;font-size:20px;font-weight:700}
.psam-verification-message{min-height:24px;margin-top:13px;font-weight:600}.psam-verification-message[data-state="error"]{color:var(--psam-danger)}.psam-verification-message[data-state="success"]{color:var(--psam-green-dark)}.psam-verification-message[data-state="warning"]{color:var(--psam-warning)}
.psam-verified-estimate{margin-top:22px}
@media(max-width:700px){.psam-verification{padding:17px}.psam-code-panel{display:block}.psam-code-panel .psam-button{width:100%;margin-top:10px}}

/* v0.6.0 private quotation workflow */
.psam-private-review-note {
    margin-top: 22px;
    padding: 16px 18px;
    border-left: 4px solid #00843d;
    background: #f2f8f4;
    color: #263238;
}
.psam-private-review-note strong { color: #006b31; }
.psam-private-review-note p { margin: 6px 0 0; }
.psam-cf7-marketing {
    margin: 18px 0;
    padding: 14px 16px;
    border: 1px solid #d8e0dc;
    border-radius: 8px;
    background: #f8faf9;
}
.psam-cf7-marketing label {
    display: flex;
    align-items: flex-start;
    gap: 10px;
    margin: 0;
    font-weight: 400;
}
.psam-cf7-marketing input[type="checkbox"] {
    flex: 0 0 auto;
    margin-top: 3px;
    accent-color: #00843d;
}
.psam-cf7-marketing strong { color: #00843d; }

/* v0.6.7 — hard isolation for expanded map mode.
 * These rules intentionally sit last so older responsive rules cannot make
 * the expanded card taller than the viewport or expose later form content. */
body > .psam-tool.is-expanded {
    box-sizing: border-box !important;
}

body > .psam-tool.is-expanded > .psam-map-card {
    display: flex !important;
    width: 100% !important;
    height: calc(100vh - 32px) !important;
    height: calc(100dvh - 32px) !important;
    min-height: 0 !important;
    max-height: calc(100dvh - 32px) !important;
    overflow: hidden !important;
}

body > .psam-tool.is-expanded .psam-map-workspace,
body > .psam-tool.is-expanded .psam-map-wrap {
    min-height: 0 !important;
}


/* v0.7.0 — optional map route and compact two-column quotation form */
.psam-intro-card {
    display: flex;
    align-items: center;
    justify-content: space-between;
    gap: 28px;
    margin: 0 0 20px;
    padding: 22px 24px;
    border: 1px solid #cfe2d6;
    border-radius: 9px;
    background: #f4faf6;
}
.psam-intro-copy { max-width: 790px; }
.psam-intro-copy h2 { margin: 0 0 8px; color: var(--psam-charcoal); font-size: 25px; line-height: 1.25; }
.psam-intro-copy p { margin: 6px 0 0; color: var(--psam-muted); line-height: 1.55; }
.psam-intro-copy p strong { color: var(--psam-charcoal); font-weight: 600; }
.psam-skip-map-button {
    flex: 0 0 auto;
    min-height: 46px;
    border: 1px solid var(--psam-green);
    border-radius: 5px;
    background: #fff;
    color: var(--psam-green-dark);
    cursor: pointer;
    font: inherit;
    font-size: 13px;
    font-weight: 700;
    line-height: 1.2;
    padding: 12px 16px;
    text-transform: uppercase;
}
.psam-skip-map-button:hover,
.psam-skip-map-button:focus-visible { background: var(--psam-green); color: #fff; }


.psam-enquiry-card { padding: 24px 28px 28px; }
.psam-enquiry-card .psam-step-heading { margin-bottom: 18px; }
.psam-cf7-form { margin-top: 16px; }
.psam-cf7-form .wpcf7-form { width: 100%; }
.psam-cf7-form .wpcf7-form > * { min-width: 0; }
.psam-cf7-form .wpcf7-form p { margin-top: 0; margin-bottom: 0; }
.psam-cf7-form label { display:block; width:100%; margin:0; font-weight:600; color:#263238; }
.psam-cf7-form input[type="text"],
.psam-cf7-form input[type="email"],
.psam-cf7-form input[type="tel"],
.psam-cf7-form input[type="file"],
.psam-cf7-form textarea,
.psam-cf7-form select {
    width:100% !important;
    max-width:100% !important;
    margin-top:7px;
    color:#263238 !important;
    -webkit-text-fill-color:#263238 !important;
    background:#fff !important;
    border:1px solid #cbd5d0;
    border-radius:6px;
    min-height:48px;
    padding:10px 12px;
    box-sizing:border-box;
}
.psam-cf7-form textarea { min-height:96px; resize:vertical; }
.psam-cf7-form .wpcf7-checkbox {
    display:flex;
    flex-wrap:wrap;
    gap:9px 18px;
    margin:7px 0 4px;
}
.psam-cf7-form .wpcf7-checkbox .wpcf7-list-item {
    display:inline-flex;
    align-items:center;
    margin:0;
    padding:8px 11px;
    border:1px solid #d8e0dc;
    border-radius:6px;
    background:#fff;
}
.psam-cf7-form .wpcf7-checkbox label { display:inline-flex; align-items:center; gap:7px; font-weight:500; }
.psam-cf7-form input[type="checkbox"] { accent-color:var(--psam-green); }
.psam-cf7-form .quote-submit {
    width:100% !important;
    max-width:100% !important;
    min-height:50px;
    margin-top:4px;
    border:0;
    border-radius:6px;
    background:#00843d !important;
    color:#fff !important;
    padding:0 26px;
    font-weight:700;
    cursor:pointer;
}
.psam-cf7-form .wpcf7-response-output { margin:18px 0 0 !important; border-radius:6px; }
.psam-cf7-form .psam-cf7-marketing { margin:0; }

/* v0.7.5 — plugin-owned Step 5 form layout.
 * Field wrappers are classified once while the Step 5 card is hidden, then
 * this single grid controls the visible form. */
.psam-estimate-actions {
    display:flex;
    justify-content:flex-end;
    margin-top:20px;
}
.psam-continue-enquiry {
    min-width:230px;
}

@media (min-width:820px) {
    .psam-cf7-form .wpcf7-form.psam-layout-ready {
        display:grid !important;
        grid-template-columns:minmax(0,1fr) minmax(0,1fr) !important;
        gap:16px 24px !important;
        align-items:start !important;
    }

    .psam-cf7-form .wpcf7-form.psam-layout-ready > * {
        grid-column:1 / -1 !important;
        min-width:0 !important;
        width:auto !important;
    }

    .psam-cf7-form .wpcf7-form.psam-layout-ready > .psam-form-half {
        grid-column:auto !important;
    }

    .psam-cf7-form .wpcf7-form.psam-layout-ready > .psam-form-full {
        grid-column:1 / -1 !important;
    }
}

@media (max-width:819px) {
    .psam-intro-card { display:block; padding:18px; }
    .psam-intro-copy h2 { font-size:22px; }
    .psam-skip-map-button { width:100%; margin-top:16px; }
    .psam-enquiry-card { padding:19px 17px 22px; }
    .psam-estimate-actions { display:block; }
    .psam-continue-enquiry { width:100%; min-width:0; }
    .psam-cf7-form .wpcf7-form { display:block !important; }
    .psam-cf7-form .wpcf7-form > * { margin-bottom:15px; }
    .psam-cf7-form .wpcf7-checkbox { display:grid; grid-template-columns:1fr; gap:8px; }
}


/* v0.7.5 — canonical five-step progress layout */
@media (min-width:901px) {
    .psam-progress {
        grid-template-columns:auto minmax(20px,1fr) auto minmax(20px,1fr) auto minmax(20px,1fr) auto minmax(20px,1fr) auto !important;
    }
}
@media (max-width:900px) {
    .psam-progress { grid-template-columns:repeat(5,minmax(0,1fr)) !important; }
    .psam-progress-line { display:none; }
}
.psam-progress-item span {
    flex:0 0 30px;
    width:30px;
    min-width:30px;
    max-width:30px;
    height:30px;
    min-height:30px;
    border-radius:50%;
}
@media (max-width:600px) {
    .psam-progress-item span {
        flex-basis:28px;
        width:28px;
        min-width:28px;
        max-width:28px;
        height:28px;
        min-height:28px;
    }
}

/* v0.7.6 — align only the Upload Plans / How Did You Hear About Us pair. */
@media (min-width:820px) {
    .psam-cf7-form .wpcf7-form.psam-layout-ready > [data-psam-form-field="project-files"],
    .psam-cf7-form .wpcf7-form.psam-layout-ready > [data-psam-form-field="enquiry-source"] {
        margin:0 !important;
        min-height:150px !important;
        padding:20px 24px 22px !important;
        border:1px solid #d8e0dc !important;
        border-radius:8px !important;
        background:#fff !important;
        box-sizing:border-box !important;
        align-self:stretch !important;
    }

    .psam-cf7-form .wpcf7-form.psam-layout-ready > [data-psam-form-field="project-files"] label,
    .psam-cf7-form .wpcf7-form.psam-layout-ready > [data-psam-form-field="enquiry-source"] label {
        margin:0 !important;
    }
}


/* v0.7.8 — mobile form-only route.
 * Phones skip polygon drawing entirely and open the existing Step 5 form.
 * Desktop/tablet map behaviour is intentionally unchanged. */
.psam-enquiry-copy-mobile { display:none; }

@media (max-width:767px) {
    .psam-tool.is-mobile-form-only > .psam-intro-card,
    .psam-tool.is-mobile-form-only > .psam-progress,
    .psam-tool.is-mobile-form-only > .psam-search-card,
    .psam-tool.is-mobile-form-only > .psam-map-card,
    .psam-tool.is-mobile-form-only > .psam-estimate-card {
        display:none !important;
    }

    .psam-tool.is-mobile-form-only > .psam-enquiry-card {
        display:block !important;
        margin-top:0;
    }

    .psam-tool.is-mobile-form-only .psam-enquiry-copy-desktop { display:none !important; }
    .psam-tool.is-mobile-form-only .psam-enquiry-copy-mobile { display:block !important; }
}

@media (max-width:767px) {
    .psam-tool.is-mobile-form-only .psam-enquiry-card .psam-step-number {
        display:none !important;
    }
}

/* v0.7.9 — mobile Project Details textarea readability only. */
@media (max-width:767px) {
    .psam-cf7-form textarea[name="project-details"] {
        min-height: 180px !important;
        height: 180px !important;
    }
}

/* v0.7.13 — allow clients to remove an accidentally selected upload before submission. */
.psam-cf7-form .psam-file-actions {
    display:flex;
    align-items:center;
    flex-wrap:wrap;
    gap:8px 12px;
    margin-top:10px;
}
.psam-cf7-form .psam-remove-file {
    min-height:36px;
    margin:0 !important;
    padding:7px 14px !important;
    border:1px solid #b8c5be !important;
    border-radius:6px !important;
    background:#fff !important;
    color:#333 !important;
    font-size:14px !important;
    font-weight:600 !important;
    line-height:1.2 !important;
    text-transform:none !important;
    cursor:pointer;
}
.psam-cf7-form .psam-remove-file:hover,
.psam-cf7-form .psam-remove-file:focus {
    border-color:#01793b !important;
    color:#01793b !important;
}
.psam-cf7-form .psam-remove-file[hidden] {
    display:none !important;
}
.psam-cf7-form .psam-file-status {
    font-size:13px;
    line-height:1.35;
    color:#5e6862;
}
@media (max-width:767px) {
    .psam-cf7-form .psam-file-actions {
        align-items:flex-start;
        flex-direction:column;
    }
}



/* v0.7.14 — keep genuine phones in form-only mode after portrait/landscape rotation.
 * The decision is made in JavaScript using the physical screen short side and a
 * coarse pointer, rather than viewport width. These rules deliberately sit last
 * so a landscape phone cannot inherit the desktop map or two-column form rules. */
.psam-phone-only {
    display:none !important;
}
html.psam-phone-form-only .psam-desktop-only {
    display:none !important;
}
html.psam-phone-form-only .psam-phone-only {
    display:block !important;
}

.psam-tool.is-mobile-form-only > .psam-intro-card,
.psam-tool.is-mobile-form-only > .psam-progress,
.psam-tool.is-mobile-form-only > .psam-search-card,
.psam-tool.is-mobile-form-only > .psam-map-card,
.psam-tool.is-mobile-form-only > .psam-estimate-card {
    display:none !important;
}
.psam-tool.is-mobile-form-only > .psam-enquiry-card {
    display:block !important;
    margin-top:0 !important;
}
.psam-tool.is-mobile-form-only .psam-enquiry-copy-desktop {
    display:none !important;
}
.psam-tool.is-mobile-form-only .psam-enquiry-copy-mobile {
    display:block !important;
}
.psam-tool.is-mobile-form-only .psam-enquiry-card .psam-step-number {
    display:none !important;
}
.psam-tool.is-mobile-form-only .psam-cf7-form .wpcf7-form.psam-layout-ready {
    display:block !important;
}
.psam-tool.is-mobile-form-only .psam-cf7-form .wpcf7-form.psam-layout-ready > * {
    width:100% !important;
    min-width:0 !important;
    margin-bottom:15px !important;
}
.psam-tool.is-mobile-form-only .psam-cf7-form textarea[name="project-details"] {
    min-height:180px !important;
    height:180px !important;
}
