@import url('https://fonts.googleapis.com/css2?family=DM+Sans:wght@400;500;600;700&family=Syne:wght@600;700;800&display=swap');

:root {
    font-family: 'DM Sans', sans-serif;
    color: #16343a;
    background: #f4f7f5;
    font-synthesis: none;
    text-rendering: optimizeLegibility;
    -webkit-font-smoothing: antialiased;
    --ink: #16343a;
    --muted: #718488;
    --line: #dbe5e2;
    --mint: #b9e8d4;
    --deep: #1c5d55;
    --coral: #e8795c
}

* {
    box-sizing: border-box
}

body {
    margin: 0;
    min-width: 320px
}

button,
input,
select {
    font: inherit
}

.topbar {
    height: 76px;
    padding: 0 max(28px, calc((100vw - 1240px)/2));
    display: flex;
    align-items: center;
    justify-content: space-between;
    background: #fff;
    border-bottom: 1px solid var(--line)
}

.brand {
    display: flex;
    align-items: center;
    gap: 11px;
    color: var(--ink);
    text-decoration: none;
    font: 700 20px 'Syne', sans-serif
}

.brand-mark {
    display: grid;
    place-items: center;
    width: 34px;
    height: 34px;
    border-radius: 10px 10px 10px 2px;
    background: var(--deep);
    color: #fff;
    font: 800 13px 'Syne', sans-serif
}

.topbar-note {
    color: var(--muted);
    font-size: 13px;
    display: flex;
    align-items: center;
    gap: 8px
}

.topbar-note i {
    width: 7px;
    height: 7px;
    border-radius: 50%;
    background: #62c293
}

.shell {
    width: min(900px, calc(100% - 48px));
    margin: 0 auto;
    padding: 58px 0 70px
}

.intro {
    margin-bottom: 38px
}

.eyebrow {
    color: var(--coral);
    font-size: 11px;
    font-weight: 700;
    letter-spacing: 1.7px;
    margin: 0 0 12px
}

.intro h1 {
    font: 800 clamp(28px, 3.5vw, 40px)/1.02 'Syne', sans-serif;
    letter-spacing: -1.5px;
    margin: 0 0 16px
}

.intro-copy {
    color: var(--muted);
    font-size: 16px;
    margin: 0
}

.panel,
.booking-result {
    background: #fff;
    border: 1px solid var(--line);
    border-radius: 16px
}

.panel {
    padding: 27px 30px 30px;
    margin-bottom: 18px
}

.panel-heading {
    display: flex;
    justify-content: space-between;
    align-items: start;
    margin-bottom: 25px;
    gap: 20px
}

.panel-heading>div {
    display: flex;
    align-items: center;
    gap: 12px
}

.section-number {
    display: grid;
    place-items: center;
    width: 29px;
    height: 29px;
    border-radius: 9px;
    background: #e6f5ed;
    color: var(--deep);
    font-size: 12px;
    font-weight: 700
}

.panel h2 {
    margin: 0;
    font: 700 19px 'Syne', sans-serif;
    letter-spacing: -.4px
}

.panel-heading p {
    margin: 6px 0 0;
    color: var(--muted);
    font-size: 12px;
    text-align: right
}

.field-grid {
    display: grid;
    gap: 20px 15px
}

.field-grid.three {
    grid-template-columns: repeat(3, 1fr)
}

.field-grid.two {
    grid-template-columns: repeat(2, 1fr)
}

.full-width {
    grid-column: 1 / -1
}

label {
    display: grid;
    gap: 8px;
    color: var(--ink);
    font-size: 12px;
    font-weight: 700
}

input,
select {
    width: 100%;
    border: 1px solid #ccd9d5;
    border-radius: 8px;
    padding: 12px 13px;
    color: var(--ink);
    background: #fbfdfc;
    outline: 0;
    transition: border .2s, box-shadow .2s
}

input:focus,
select:focus {
    border-color: #62b494;
    box-shadow: 0 0 0 3px #b9e8d455
}

.service-options {
    display: grid;
    grid-template-columns: repeat(3, 1fr);
    gap: 10px;
    margin-bottom: 24px
}

.service-option {
    position: relative;
    display: flex;
    align-items: center;
    gap: 11px;
    border: 1px solid var(--line);
    border-radius: 10px;
    padding: 13px 12px;
    cursor: pointer;
    transition: .2s
}

.service-option:hover {
    border-color: #9acdb8
}

.service-option input {
    position: absolute;
    opacity: 0;
    width: 1px
}

.service-option.selected {
    border-color: #71c3a2;
    background: #f0faf5
}

.service-icon {
    width: 28px;
    height: 28px;
    display: grid;
    place-items: center;
    background: #e1f3e9;
    color: var(--deep);
    border-radius: 8px;
    font-size: 17px
}

.service-option strong,
.service-option small {
    display: block
}

.service-option strong {
    font-size: 12px
}

.service-option small {
    color: var(--muted);
    font-size: 10px;
    margin-top: 3px;
    line-height: 1.3
}

.field-hint {
    color: var(--muted);
    font-size: 10px;
    font-weight: 400;
    line-height: 1.3
}

.radio-dot {
    margin-left: auto;
    border: 1px solid #b5c9c2;
    border-radius: 50%;
    width: 14px;
    height: 14px;
    flex: 0 0 auto
}

.selected .radio-dot {
    border: 4px solid var(--deep)
}

.form-actions {
    display: flex;
    justify-content: flex-end;
    gap: 12px;
    padding-top: 4px
}

.form-actions button {
    border: 0;
    border-radius: 8px;
    padding: 12px 18px;
    cursor: pointer;
    font-weight: 700;
    font-size: 12px
}

.secondary {
    background: transparent;
    color: var(--muted)
}

.primary {
    background: var(--deep);
    color: #fff;
    box-shadow: 0 6px 14px #1c5d5530
}

.primary span {
    font-size: 18px;
    margin-left: 8px;
    vertical-align: -1px
}

.booking-result {
    margin-top: 24px;
    padding: 30px
}

.result-heading {
    display: flex;
    align-items: center;
    gap: 13px
}

.result-heading h2 {
    margin: 0;
    font: 700 24px 'Syne', sans-serif
}

.result-heading .eyebrow {
    margin: 0 0 4px
}

.result-check {
    display: grid;
    place-items: center;
    width: 38px;
    height: 38px;
    border-radius: 50%;
    background: #e1f3e9;
    color: var(--deep);
    font-weight: 700
}

.result-copy {
    color: var(--muted);
    font-size: 13px;
    margin: 13px 0 22px
}

.result-grid {
    display: grid;
    grid-template-columns: repeat(3, 1fr);
    gap: 14px 20px
}

.result-grid p {
    display: grid;
    gap: 5px;
    margin: 0;
    color: var(--muted);
    font-size: 11px
}

.result-grid strong {
    color: var(--ink);
    font-size: 11px
}

.result-grid span {
    color: var(--ink);
    font-size: 13px
}

.toast {
    position: fixed;
    bottom: 24px;
    left: 50%;
    padding: 13px 18px;
    border-radius: 8px;
    color: #fff;
    background: var(--deep);
    box-shadow: 0 10px 30px #16343a33;
    transform: translate(-50%, 80px);
    opacity: 0;
    transition: .3s;
    font-size: 13px
}

.toast.show {
    transform: translate(-50%, 0);
    opacity: 1
}

@media(max-width:850px) {
    .service-options {
        grid-template-columns: repeat(2, 1fr)
    }
}

@media(max-width:600px) {
    .topbar {
        padding: 0 20px
    }

    .topbar-note {
        display: none
    }

    .shell {
        width: min(100% - 30px, 540px);
        padding-top: 35px
    }

    .panel {
        padding: 22px 18px
    }

    .panel-heading {
        display: block
    }

    .panel-heading p {
        text-align: left;
        margin: 10px 0 0 41px
    }

    .field-grid.three,
    .field-grid.two {
        grid-template-columns: 1fr;
        gap: 16px
    }

    .service-options {
        grid-template-columns: 1fr
    }

    .service-option small {
        display: inline;
        margin-left: 5px
    }

    .form-actions {
        justify-content: stretch
    }

    .form-actions button {
        flex: 1;
        padding-inline: 10px
    }

    .booking-result {
        padding: 22px 18px
    }

    .result-grid {
        grid-template-columns: repeat(2, 1fr)
    }
}