* {
    box-sizing:border-box;
}

html {
    color-scheme:light;
}

body {
    margin:0;
    background:#f8f7f2;
    color:#303831;
    font:16px/1.6 -apple-system,BlinkMacSystemFont,"Segoe UI",sans-serif;
}

button,input {
    font:inherit;
}

.wrapper {
    width:min(1120px,calc(100% - 40px));
    margin-inline:auto;
}

.site-header {
    display:flex;
    align-items:center;
    gap:15px;
    padding-block:26px;
    border-bottom:1px solid #dcdfd4;
}

.site-mark {
    display:grid;
    place-items:center;
    width:44px;
    height:44px;
    border:1px solid #879581;
    color:#35513f;
    font:28px Georgia,serif;
    border-radius:50%;
}

.site-name,.site-city {
    margin:0;
    line-height:1.45;
}

.site-name {
    font-weight:600;
    font-size:15px;
}

.site-city {
    color:#697165;
    font-size:14px;
}

.header-note {
    display:none;
}

.intro {
    padding-top:55px;
    max-width:920px;
}

.eyebrow {
    font-size:11px;
    letter-spacing:.16em;
    text-transform:uppercase;
    color:#526b54;
    font-weight:700;
    margin:0 0 18px;
}

h1 {
    font:normal clamp(34px,5vw,56px)/1.15 Georgia,"Times New Roman",serif;
    letter-spacing:-.025em;
    margin:0 0 22px;
    color:#263c2e;
}

.lead {
    color:#636b61;
    margin:0 0 34px;
    max-width:540px;
}

.desktop-break {
    display:none;
}

form {
    display:grid;
    gap:18px;
}

.field {
    min-width:0;
}

label {
    display:block;
    font-size:14px;
    font-weight:600;
    margin-bottom:7px;
}

input[type=text] {
    width:100%;
    height:54px;
    padding:12px 15px;
    background:#fffefb;
    color:#303831;
    border:1px solid #b9c0b2;
    border-radius:5px;
}

button {
    display:flex;
    align-items:center;
    justify-content:center;
    gap:11px;
    min-height:54px;
    padding:12px 29px;
    background:#34543e;
    color:white;
    border:1px solid #34543e;
    border-radius:5px;
    font-weight:600;
    cursor:pointer;
}

button:hover {
    background:#263f2e;
}

button:disabled {
    opacity:.7;
    cursor:wait;
}

button svg {
    fill:none;
    stroke:currentColor;
    stroke-width:1.8;
    stroke-linecap:round;
}

:focus-visible {
    outline:3px solid #738944;
    outline-offset:4px;
}

input:focus {
    outline:2px solid #738944;
    outline-offset:2px;
}

.form-hint {
    font-size:13px;
    color:#636b61;
    margin:14px 0 0;
}

#search-status {
    min-height:26px;
    margin:22px 0 10px;
    color:#35513f;
}

#search-status.error {
    color:#8d302e;
}

#results-title:focus {
    outline:none;
}

#search-results {
    min-height:230px;
    outline-offset:8px;
}

.initial-state {
    border-top:1px solid #dcdfd4;
    padding:34px 0 54px;
}

.small-rule {
    display:block;
    width:26px;
    height:2px;
    background:#8b9b7c;
    margin-bottom:20px;
}

.initial-state h2 {
    font:24px Georgia,serif;
    margin:0 0 10px;
}

.initial-state p {
    font-size:14px;
    color:#636b61;
    margin:0;
}

.results-heading {
    display:flex;
    flex-wrap:wrap;
    align-items:baseline;
    justify-content:space-between;
    gap:16px;
    border-top:1px solid #dcdfd4;
    padding-top:24px;
    margin-bottom:20px;
}

.results-heading h2 {
    font:25px Georgia,serif;
    margin:0;
}

.results-heading p {
    font-size:13px;
    color:#636b61;
    margin:0;
}

.limit-note,.empty-state {
    font-size:14px;
    color:#636b61;
}

.empty-state {
    padding:24px 0;
}

table {
    width:100%;
    border-collapse:collapse;
    text-align:left;
}

thead {
    display:none;
}

tbody,tr,td {
    display:block;
}

tr {
    padding:18px 0;
    border-top:1px solid #dcdfd4;
}

td {
    display:flex;
    justify-content:space-between;
    gap:20px;
    font-size:14px;
    padding:3px 0;
    overflow-wrap:anywhere;
}

td[data-label]:before {
    content:attr(data-label);
    color:#636b61;
    flex-shrink:0;
}

.person-name {
    display:block;
    font-size:17px;
    font-weight:600;
    margin-bottom:10px;
}

footer {
    display:flex;
    flex-direction:column;
    flex-wrap:wrap;
    gap:8px 24px;
    border-top:1px solid #dcdfd4;
    margin-top:42px!important;
    padding-block:24px 32px;
    color:#636b61;
    font-size:12px;
}

.footer-credit {
    color:inherit;
    text-decoration:underline;
    text-underline-offset:3px;
    overflow-wrap:anywhere;
}

.footer-credit:hover {
    color:#34543e;
}

.visually-hidden {
    position:absolute;
    width:1px;
    height:1px;
    padding:0;
    margin:-1px;
    overflow:hidden;
    clip:rect(0,0,0,0);
    white-space:nowrap;
    border:0;
}

.skip-link {
    position:absolute;
    top:-100px;
    left:20px;
    background:#fff;
    padding:10px;
    z-index:2;
}

.skip-link:focus {
    top:10px;
}

@media(min-width:640px) {
    .wrapper {
        width:min(1120px,calc(100% - 80px));
    }
    .intro {
        padding-top:70px;
    }
    form {
        grid-template-columns:1fr 1fr auto;
        align-items:end;
        gap:20px;
    }
    .header-note {
        display:block;
        margin-left:auto;
        font-size:12px;
        color:#636b61;
    }
    .desktop-break {
        display:block;
    }
    footer {
        flex-direction:row;
        justify-content:space-between;
    }
    .footer-credit {
        flex-basis:100%;
        text-align:right;
    }
}

@media(min-width:900px) {
    .site-header {
        padding-block:30px;
    }
    .intro {
        padding-top:80px;
    }
    thead {
        display:table-header-group;
    }
    tbody {
        display:table-row-group;
    }
    tr {
        display:table-row;
    }
    td,th {
        display:table-cell;
        padding:20px 14px;
        font-size:14px;
    }
    th {
        color:#636b61;
        font-size:12px;
        font-weight:500;
        padding-block:12px;
        background:#efefe7;
    }
    td:first-child,th:first-child {
        padding-left:18px;
    }
    .person-name {
        display:table-cell;
        font-size:16px;
        width:32%;
        margin:0;
    }
    td[data-label]:before {
        display:none;
    }
    footer {
        margin-top:64px!important;
    }
}

@media(prefers-reduced-motion:no-preference) {
    button {
        transition:background .15s;
    }
}

