.contact-layout {
    display:grid;
    gap:40px;
    padding-bottom:80px
}
.contact-aside>p {
    font-size:.94rem;
    margin-top:22px;
    margin-bottom:28px
}
.contact-direct {
    display:grid;
    gap:12px
}
.contact-direct a {
    display:flex;
    align-items:center;
    justify-content:space-between;
    border:1px solid var(--line);
    padding:16px 18px;
    border-radius:8px;
    min-height:58px;
    font-size:.9rem
}
.contact-direct a:hover {
    background:var(--white)
}
.contact-direct small {
    display:block;
    font-size:.65rem;
    color:var(--muted)
}
.contact-aside .contact-note {
    font-size:.8rem;
    margin-top:28px
}
.contact-form {
    background:var(--white);
    border:1px solid var(--line);
    border-radius:var(--radius);
    padding:26px 22px
}
.contact-form fieldset {
    border:0;
    padding:0;
    margin:0 0 30px;
    min-width:0
}
.contact-form legend {
    font-size:1.12rem;
    line-height:1.4;
    letter-spacing:-.035em;
    margin-bottom:20px;
    padding:0
}
.contact-form legend>span {
    color:var(--accent);
    font-size:.65rem;
    letter-spacing:.05em;
    margin-right:12px
}
.field-grid {
    display:grid;
    gap:22px
}
.field {
    display:grid;
    gap:8px;
    font-size:.8rem
}
.field input,.field textarea,.field select {
    width:100%;
    padding:13px 14px;
    border:1px solid var(--line);
    border-radius:6px;
    background:var(--paper);
    color:var(--ink);
    font-size:16px;
    line-height:1.5;
    min-height:52px
}
.field textarea {
    resize:vertical;
    min-height:165px
}
.field input::placeholder,.field textarea::placeholder {
    color:#75786f;
    font-size:.85rem
}
.field small,.field-help {
    font-size:.7rem;
    color:var(--muted)
}
.field [aria-invalid=true] {
    border-color:var(--accent)
}
.field-error {
    color:var(--accent);
    font-size:.74rem
}
.service-choices {
    display:flex;
    flex-wrap:wrap;
    gap:10px;
    margin-bottom:22px
}
.service-choice {
    position:relative;
    cursor:pointer
}
.service-choice input {
    position:absolute;
    opacity:0;
    inset:0;
    width:100%;
    height:100%;
    margin:0;
    cursor:pointer
}
.service-choice span {
    display:block;
    padding:11px 14px;
    border:1px solid var(--line);
    border-radius:6px;
    font-size:.75rem;
    min-height:45px
}
.service-choice input:checked+span {
    background:var(--ink);
    color:var(--white);
    border-color:var(--ink)
}
.service-choice input:focus-visible+span {
    outline:3px solid var(--accent);
    outline-offset:4px
}
.field-wide {
    margin-top:22px
}
.message-counter {
    text-align:right;
    font-variant-numeric:tabular-nums
}
.form-privacy-note {
    font-size:.69rem;
    line-height:1.65;
    max-width:470px;
    margin-top:16px
}
.form-privacy-note a {
    text-decoration:underline;
    text-underline-offset:3px
}
.form-alert {
    padding:18px 20px;
    border-radius:8px;
    margin-bottom:25px;
    font-size:.85rem
}
.form-alert.error {
    background:#fff0ed;
    border:1px solid #d99991;
    color:#8d2828
}
.form-alert.success {
    background:#e4efff;
    border:1px solid #a1ab7e;
    color:var(--ink)
}
.form-alert ul {
    list-style:disc;
    padding-left:20px;
    margin-top:8px
}
.form-alert a {
    text-decoration:underline
}
.hp-field {
    position:absolute;
    left:-10000px;
    width:1px;
    height:1px;
    overflow:hidden
}
.optional-quote {
    border-top:1px solid var(--line);
    margin-top:5px;
    margin-bottom:28px
}
.optional-quote summary {
    padding:18px 0;
    font-size:.8rem;
    min-height:50px
}
.optional-quote .field {
    margin-top:10px
}
.quote-summary {
    padding:20px;
    background:#e4efff;
    border-radius:8px;
    margin-bottom:25px;
    font-size:.86rem
}
.quote-summary strong {
    display:block
}
.quote-summary small {
    display:block;
    margin-top:8px;
    color:var(--muted)
}
.contact-form .button {
    width:100%
}
.form-intro {
    font-size:.78rem;
    margin-bottom:25px
}
@media(min-width:620px) {
    .field-grid {
        grid-template-columns:repeat(2,minmax(0,1fr))
    }
    .contact-form {
        padding:36px
    }
    .contact-form .button {
        width:auto;
        min-width:230px
    }
}
@media(min-width:1000px) {
    .contact-layout {
        grid-template-columns:1fr 1.65fr;
        gap:9%;
        align-items:start
    }
    .contact-form {
        padding:42px
    }
    .contact-aside {
        position:sticky;
        top:calc(var(--header) + 35px)
    }
}
.contact-aside h2 {
    font-size:clamp(1.75rem,3vw,2.5rem)
}
.contact-form {
    border-radius:6px;
    box-shadow:0 8px 30px #14395406
}
.service-choice input:checked+span {
    background:var(--accent);
    border-color:var(--accent)
}
.contact-form legend {
    font-weight:600;
    font-size:1.2rem
}
