
/* General styles */

* {
    box-sizing: border-box;
}

@view-transition {
    navigation: auto;
}

::view-transition-old(root) {
    animation-duration: 0.4s;
}

::view-transition-new(root) {
    animation-duration: 0.4s;
}

html,
body {
    font-size: 16px;
    scroll-behavior: smooth;
}

body {
    font-family: 'Montserrat', sans-serif;
    font-weight: 300;
    background-color: #fff;
    --standard-padding: 1.5rem;
    --color-primary: #394d55;
    --color-primary-light: #56707a;
    --color-secondary: #f0efec;
    --nav-height: 7.5rem;
    --nav-shrink-time: 0.3s;
    --form-color: #66666d;
    --error-color: #b50000;
    --color-near-black: #252525;
    --field-side-padding: 0.7em;
    --field-vertical-padding: 0.7em;
    --color-gray-accent: #eeeeee;
    padding-top: 7.5rem;
    color: var(--color-primary);
    transition: padding-top var(--nav-shrink-time);
}

body.nav-shrunk {
    --nav-height: 3.5rem;
}

strong {
    font-weight: 600;
}

em {
    font-style: italic;
}

h2 {
    font-family: Spectral, serif;
    font-weight: 500;
    font-size: 1.75rem;
    line-height: 1.25;
    letter-spacing: 0.05em;
}

p {
    margin-top: 1em;
    line-height: 1.45;
}

ul {
    margin-top: 1rem;
}

li {
    list-style-type: disc;
    margin-left: 2.2em;
    padding-left: 0.4em;
    line-height: 1.65;
    margin-top: 0.3em;
}

ol > li {
    list-style-type: decimal;
    margin-left: 2em;
    padding-left: 0.8em;
}

a {
    color: var(--color-primary);
    text-decoration: none;
}

a.anchor {
    position: relative;
    pointer-events: none;
    top: calc(-1 * var(--nav-height) - 1rem);
}

.dynamic-scaled-image-outer {
    position: relative;
    overflow: hidden;
} 

.dynamic-scaled-image {
    position: absolute;
    left: 0;
    top: 0;
}

.centered {
    text-align: center;
    margin-left: auto;
    margin-right: auto;
}

@media screen and (min-width: 450px) {
    h2 {
        letter-spacing: 0.35em;
    }
}

@media screen and (min-width: 600px) {
    h2 {
        font-size: 2.25rem;
    }
}

@media screen and (min-width: 1600px) {
    html, body {
        font-size: 1.0vw;
    }
}


/* Loading icon */

.loading-icon {
    position: fixed;
    left: 0;
    top: 0;
    width: 100%;
    height: 100%;
    background-color: rgba(0, 0, 0, 0.07);
    z-index: 100;
    display: flex;
    flex-direction: row;
    justify-content: center;
    align-items: center;
    opacity: 0;
    pointer-events: none;
    transition: opacity 0.1s;
    transition-delay: 0s;
}

.loading-icon.visible {
    opacity: 1;
    pointer-events: all;
    transition-delay: 0.15s;
}

.loading-icon img {
    display: inline-block;
    width: 64px;
    background-color: white;
    padding: 8px;
    border-radius: 20px;
    box-shadow: 0 4px 8px 0 rgba(0, 0, 0, 0.12), 0 2px 4px 0 rgba(0, 0, 0, 0.08);
}


/* Toast messages */

.toast-messages {
    position: fixed;
    width: 100vw;
    left: 0;
    top: var(--nav-height);
    right: 0;
    text-align: center;
    z-index: 20;
}

.message-error,
.message-success {
    width: 90%;
    margin-left: auto;
    margin-right: auto;
    background-color: #e6e6e6;
    border: 1px solid #d9d9d9;
    color: #4f4f4f;
    border-radius: 0.375em;
    padding: 0.9em;
    padding-left: 2.7em;
    padding-right: 2.5em;
    box-shadow: 0 2px 4px 0 rgba(0, 0, 0, 0.10);
    margin-top: -8em;
    opacity: 0.0;
    text-align: left;
    position: relative;
    max-width: 35rem;
    line-height: 120%;
    transition: margin-top 0.2s, opacity 0.2s;
}

.toast-messages.visible .message-error,
.toast-messages.visible .message-success {
    margin-top: 1em;
    opacity: 1.0;
}

.message-error {}

.message-success {
    background-color: #a6e0c7;
    border-color: #8dc7ae;
    color: #0f5132;
}

.message-error {
    background-color: #f8d7da;
    border-color: #f5c2c7;
    color: #842029;
}

.message-success::before,
.message-error::before {
    content: ' ';
    background-repeat: no-repeat;
    background-position: center center;
    background-size: 1em;
    width: 1em;
    height: 1em;
    display: block;
    position: absolute;
    left: 1em;
    top: 1em;
}

.message-success::before {
    background-image: url(../images/icon_success.svg);
}

.message-error::before {
    background-image: url(../images/icon_error.svg);
}

.message-success::after,
.message-error::after {
    content: ' ';
    background-image: url(../images/close_x_black.svg);
    background-repeat: no-repeat;
    background-position: center center;
    background-size: 1.5em;
    width: 1.5em;
    height: 1.5em;
    display: block;
    position: absolute;
    right: 0.8em;
    top: 0.8em;
    opacity: 0.6;
    cursor: pointer;
}

.message-success:hover::after,
.message-error:hover::after {
    opacity: 1.0;
}


/* Form control styles - shared */

label {
    font-family: 'Montserrat', sans-serif;
    font-size: 1rem;
}

input[type=text],
input[type=email],
input[type=tel],
textarea,
select,
input[type=submit],
input[type=button],
button.btn,
a.btn {
    font-family: 'Montserrat', sans-serif;
    font-size: 1rem;
}

input[type=text],
input[type=email],
input[type=tel],
textarea {
    display: block;
    width: 100%;
}

input[type=submit],
input[type=button],
button.btn,
a.btn {
    cursor: pointer;
    display: inline-block;
    text-align: center;
}

textarea {
    resize: vertical;
    height: 16em;
}

.validation {
    color: var(--error-color);
    font-size: 0.75rem;
    margin-top: 0.4em;
}


/* Form control styles - boxy style */

.form-style-boxy input[type=text],
.form-style-boxy input[type=email],
.form-style-boxy input[type=tel],
.form-style-boxy textarea,
.form-style-boxy select,
.form-style-boxy input[type=submit],
.form-style-boxy input[type=button],
.form-style-boxy button.btn,
.form-style-boxy a.btn {
    border-radius: 0%;
    border: 0.1em solid var(--form-color);
    color: var(--form-color);
    padding: var(--field-vertical-padding) var(--field-side-padding);
    background-color: white;
    outline: 0.1em solid transparent;
    transition: outline-color 0.3s;
}

.form-style-boxy input[type=submit],
.form-style-boxy input[type=button],
.form-style-boxy button.btn,
.form-style-boxy a.btn {
    padding-left: 2.5em;
    padding-right: 2.5em;
    font-size: 0.875rem;
    letter-spacing: 0.25em;
}

.form-style-boxy a.btn.bold-border {
    border: 0.15em solid var(--color-primary);
    padding-left: 1.1em;
    padding-right: 1.1em;
    --field-vertical-padding: 0.9em;
}

.form-style-boxy input[type=text]:focus,
.form-style-boxy input[type=email]:focus,
.form-style-boxy input[type=tel]:focus,
.form-style-boxy textarea:focus,
.form-style-boxy input[type=submit]:focus,
.form-style-boxy input[type=button]:focus,
.form-style-boxy button.btn:focus {
    outline: 0.1em solid black;
}

.form-style-boxy .error input[type=text],
.form-style-boxy .error input[type=email],
.form-style-boxy .error input[type=tel],
.form-style-boxy .error textarea {
    border-color: var(--error-color);
    outline-color: var(--error-color);
}

@media (hover: hover) {
    .form-style-boxy input[type=submit],
    .form-style-boxy input[type=button],
    .form-style-boxy button.btn,
    .form-style-boxy a.btn {
        transition: background-color 0.3s, color 0.3s;
    }

    .form-style-boxy input[type=submit]:hover,
    .form-style-boxy input[type=button]:hover,
    .form-style-boxy button.btn:hover,
    .form-style-boxy a.btn:hover {
        color: white;
        background-color: var(--color-primary);
    }
}


/* Form control styles - bootstrap style */

.form-style-bootstrap {
    --form-text-color: var(--color-near-black);
    --form-border-color: #dee2e6;
    --form-primary-color: var(--color-primary);
    --form-primary-hover-color: var(--color-primary-light);
    --form-focused-border-color: #86b7fe;
    --form-focused-outline-color: #c2dbfe;
    --form-disabled-color: #e9ecef;
    --form-invalid-color: #dc3545;
}

.form-style-bootstrap label {
    display: block;
    margin-top: 0.6em;
    color: var(--form-text-color);
    -webkit-user-select: none;
    -moz-user-select: none;
    user-select: none;
}

.form-style-bootstrap input,
.form-style-bootstrap select,
.form-style-bootstrap textarea {
    transition: border-color .15s ease-in-out, box-shadow .15s ease-in-out;
}

.form-style-bootstrap input[type="text"],
.form-style-bootstrap input[type="password"],
.form-style-bootstrap input[type="email"],
.form-style-bootstrap input[type="tel"],
.form-style-bootstrap input[type="url"],
.form-style-bootstrap input[type="number"],
.form-style-bootstrap select,
.form-style-bootstrap textarea {
    display: block;
    width: 100%;
    margin-top: 0.5em;
    padding: .375em .75em;
    font-size: 1rem;
    font-weight: 300;
    font-family: inherit;
    line-height: 1.5;
    color: var(--form-text-color);
    background-color: white;
    background-clip: padding-box;
    border: 1px solid var(--form-border-color);
    border-radius: 0.375em;
    -webkit-appearance: none;
    -moz-appearance: none;
    appearance: none;
}

.form-style-bootstrap .ts-control input {
    width: auto;
}

.form-style-bootstrap .ts-wrapper {
    margin-top: 0.5em;
}

.form-style-bootstrap input[type="radio"],
.form-style-bootstrap input[type="checkbox"] {
    display: inline-block;
    vertical-align: top;
    width: 1em;
    height: 1em;
    font-size: 1rem;
    margin: 0;
    -webkit-appearance: none;
    -moz-appearance: none;
    appearance: none;
    border: 1px solid rgba(0, 0, 0, .25);
    background-color: #fff;
    background-repeat: no-repeat;
    background-size: contain;
}

.form-style-bootstrap input[type="text"]:disabled,
.form-style-bootstrap input[type="password"]:disabled,
.form-style-bootstrap input[type="email"]:disabled,
.form-style-bootstrap input[type="tel"]:disabled,
.form-style-bootstrap input[type="url"]:disabled,
.form-style-bootstrap input[type="number"]:disabled,
.form-style-bootstrap input[type="radio"]:disabled,
.form-style-bootstrap input[type="checkbox"]:disabled,
.form-style-bootstrap select:disabled,
.form-style-bootstrap textarea:disabled,
.form-style-bootstrap input[type="button"]:disabled,
.form-style-bootstrap input[type="submit"]:disabled,
.form-style-bootstrap button:disabled,
.form-style-bootstrap .btn:disabled,
.form-style-bootstrap .btn[disabled],
.form-style-bootstrap .btn:disabled:hover,
.form-style-bootstrap .btn[disabled]:hover {
    background-color: var(--form-disabled-color);
    border-color: var(--form-border-color);
    color: var(--form-text-color);
    opacity: 1;
    cursor: default;
}

.form-style-bootstrap input::placeholder,
.form-style-bootstrap select::placeholder,
.form-style-bootstrap textarea::placeholder {
    color: #aaa;
}

.form-style-bootstrap input[type="radio"] {
    border-radius: 50%;
    background-image: url("data:image/svg+xml,%3csvg xmlns='http://www.w3.org/2000/svg' viewBox='-4 -4 8 8'%3e%3ccircle r='2' fill='%23fff'/%3e%3c/svg%3e");
}

.form-style-bootstrap input[type="checkbox"] {
    border-radius: 0.25em;
    background-image: url("data:image/svg+xml,%3csvg xmlns='http://www.w3.org/2000/svg' viewBox='0 0 20 20'%3e%3cpath fill='none' stroke='%23fff' stroke-linecap='round' stroke-linejoin='round' stroke-width='3' d='m6 10 3 3 6-6'/%3e%3c/svg%3e");
}

.form-style-bootstrap input[type="radio"]:checked,
.form-style-bootstrap input[type="checkbox"]:checked {
    background-color: var(--form-primary-color);
    border-color: var(--form-primary-color);
}

.form-style-bootstrap select {
    padding: 0.375em 2.25em 0.375em 0.75em;
    background-image: url("data:image/svg+xml,%3csvg xmlns='http://www.w3.org/2000/svg' viewBox='0 0 16 16'%3e%3cpath fill='none' stroke='%23343a40' stroke-linecap='round' stroke-linejoin='round' stroke-width='2' d='m2 5 6 6 6-6'/%3e%3c/svg%3e");
    background-repeat: no-repeat;
    background-position: right .75em center;
    background-size: 16px 12px;
}

.form-style-bootstrap textarea {
    resize: vertical;
    min-height: calc(1.5em + .75rem + 2px);
}

.form-style-bootstrap input:focus,
.form-style-bootstrap .btn:focus,
.form-style-bootstrap button:focus,
.form-style-bootstrap select:focus,
.form-style-bootstrap textarea:focus {
    border-color: var(--form-focused-border-color);
    outline: 0;
    box-shadow: 0 0 0 0.25rem var(--form-focused-outline-color);
}

.form-style-bootstrap .checkbox-list-item {
    display: inline-block;
    margin-right: 2em;
    white-space: nowrap;
}

.form-style-bootstrap .checkbox-list-item input,
.form-style-bootstrap .checkbox-list-item label {
    margin-top: 0.7em;
    white-space: normal;
    line-height: 125%;
}

.form-style-bootstrap .checkbox-list-item input {
    margin-right: 0.3em;
}

.form-style-bootstrap .checkbox-list-item label {
    display: inline-block;
    vertical-align: top;
    margin-top: 0.6em;
}

.form-style-bootstrap .checkbox-list-item label input {
    margin-top: -0.15em;
    vertical-align: middle;
}

.form-style-bootstrap input[type="button"],
.form-style-bootstrap input[type="submit"],
.form-style-bootstrap button,
.form-style-bootstrap .btn,
.form-style-bootstrap .btn-primary {
    display: inline-block;
    padding: 0.375em 0.75em;
    margin-bottom: 0.15em;
    margin-top: 0.5em;
    font-family: inherit;
    font-size: 1em;
    font-weight: 400;
    line-height: 1.5;
    color: #444;
    text-align: center;
    text-decoration: none;
    vertical-align: middle;
    cursor: pointer;
    -webkit-user-select: none;
    -moz-user-select: none;
    user-select: none;
    border: 1px solid #444;
    border-radius: 0.375em;
    background-color: transparent;
    transition: color .15s ease-in-out, background-color .15s ease-in-out, border-color .15s ease-in-out, box-shadow .15s ease-in-out;
}

.form-style-bootstrap .btn-primary,
.form-style-bootstrap input[type="submit"].btn-primary,
.form-style-bootstrap input[type="button"].btn-primary,
.form-style-bootstrap button.btn-primary {
    color: white;
    background-color: var(--form-primary-color);
    border-color: var(--form-primary-color);
}

.form-style-bootstrap .validation {
    color: #dc3545;
    font-size: 0.875rem;
    margin-top: 0.4em;
}

.form-style-bootstrap .checkbox-list-item.error input,
.form-style-bootstrap input.error,
.form-style-bootstrap select.error,
.form-style-bootstrap textarea.error {
    border-color: #dc3545;
}

.form-style-bootstrap .checkbox-list-item.error input:focus,
.form-style-bootstrap input.error:focus,
.form-style-bootstrap select.error:focus,
.form-style-bootstrap textarea.error:focus {
    box-shadow: 0 0 0 0.25em rgb(220 53 69 / 25%);
}

.form-style-bootstrap .checkbox-list-item.error label {
    color: var(--form-invalid-color);
}

@media (hover: hover) {
    .form-style-bootstrap input[type="submit"]:hover,
    .form-style-bootstrap input[type="button"]:hover,
    .form-style-bootstrap button:hover,
    .form-style-bootstrap .btn:hover {
        color: white;
        background-color: #444;
    }

    .form-style-bootstrap .btn-primary:hover,
    .form-style-bootstrap input[type="submit"].btn-primary:hover,
    .form-style-bootstrap input[type="button"].btn-primary:hover,
    .form-style-bootstrap button.btn-primary:hover {
        background-color: var(--form-primary-hover-color);
        border-color: var(--form-primary-hover-color);
    }

    .form-style-bootstrap .checkbox-list-item input,
    .form-style-bootstrap .checkbox-list-item label,
    .form-style-bootstrap input[type=radio],
    .form-style-bootstrap input[type=checkbox] {
        cursor: pointer;
    }
}


/* Form controls - transparent style */

.form-style-white-transparent input,
.form-style-white-transparent textarea {
    background-color: transparent;
    color: white;
    border: none;
    border-bottom: 1px solid #acacac;
    transition: border-bottom-color 0.3s;
    font-size: 0.875rem;
    padding: var(--field-vertical-padding);
    padding-left: 0;
    padding-right: 0;
}

.form-style-white-transparent input::placeholder,
.form-style-white-transparent textarea::placeholder {
    color: white;
}

.form-style-white-transparent input:focus,
.form-style-white-transparent textarea:focus {
    outline: none;
    box-shadow: none;
    border-bottom: 1px solid white;
}

.form-style-white-transparent input.error,
.form-style-white-transparent textarea.error {
    border-bottom-color: var(--error-color);
}

.form-style-white-transparent a.btn-sliding-hover {
    color: white;
    border: none;
    font-weight: 600;
}

.form-style-white-transparent a.btn-sliding-hover span {
    color: white;
}


/* Form controls - minimal-on-white style */

.form-style-underline input,
.form-style-underline textarea,
.form-style-underline select {
    background-color: white;
    border: none;
    border-bottom: 1px solid black;
    transition: border-bottom-color 0.3s;
    font-size: 1rem;
    font-weight: 300;
    padding-left: 0;
    padding-right: 0;
    color: black;
    resize: none;
    padding-top: var(--field-vertical-padding);
    padding-bottom: var(--field-vertical-padding);
}

.form-style-underline input::placeholder,
.form-style-underline textarea::placeholder {
    color: black;
}

.form-style-underline input:focus,
.form-style-underline textarea:focus,
.form-style-underline select:focus {
    outline: none;
    box-shadow: none;
    border-bottom: 1px solid var(--color-primary-light);
}

.form-style-underline input:focus::placeholder,
.form-style-underline textarea:focus::placeholder,
.form-style-underline select:focus::placeholder {
    color: var(--color-primary-light);
}

.form-style-underline input.error,
.form-style-underline textarea.error,
.form-style-underline select.error {
    border-bottom-color: var(--error-color);
}


/* Floating-label fields */

.floating-label-field {
    position: relative;
    margin-top: 1.3em;
    --field-side-padding: 0.7em;
    --field-vertical-padding: 0.7em;
    font-size: 1rem;
}

.floating-label-field label {
    position: absolute;
    top: var(--field-vertical-padding);
    left: var(--field-side-padding);
    padding-top: 0.2em;
    transition: top 0.3s;
}

.floating-label-field.in-use label {
    top: -1.5em;
}

.floating-label-field.error label {
    color: var(--error-color);
}

.floating-label-field input {
    height: 100%;
}


/* Alternate button styles */

input.dark-button, 
.form-style-boxy input.dark-button, 
button.dark-button, 
.form-style-boxy button.dark-button, 
a.btn.dark-button,
.form-style-boxy a.btn.dark-button {
    background-color: var(--color-primary);
    color: white;
    padding-left: 1em;
    padding-right: 1em;
}

a.btn-sliding-hover {
    padding-top: 1.4em;
    padding-bottom: 1.3em;
    padding-left: 2.5em;
    padding-right: 2.5em;
    font-size: 0.75rem;
    font-weight: 400;
    letter-spacing: 0.2em;
    border: 1px solid var(--color-primary);
    color: var(--color-primary);
}

@media (hover: hover) {

    input.dark-button:hover, 
    .form-style-boxy input.dark-button:hover, 
    button.dark-button:hover, 
    .form-style-boxy button.dark-button:hover, 
    a.btn.dark-button:hover,
    .form-style-boxy a.btn.dark-button:hover {
        background-color: var(--color-primary-light);
    }

    a.btn-sliding-hover {
        position: relative;
        overflow: hidden;
        display: inline-block;
    }

    a.btn-sliding-hover span {
        color: var(--color-primary);
        position: relative;
        z-index: 10;
    }

    a.btn-sliding-hover::before {
        content: ' ';
        position: absolute;
        width: 100%;
        right: 100%;
        top: 0;
        bottom: 0;
        background-color: var(--color-primary);
        pointer-events: none;
        transition: right 0.4s;
    }

    a.btn-sliding-hover:hover::before {
        right: 0%;
    }

    a.btn-sliding-hover:hover span {
        color: white;
    }
}



/* Form layouts */

.layout-row {
    display: flex;
    flex-direction: row;
    flex-wrap: wrap;
    justify-content: space-between;
    --margin: 0.5rem;
    margin-left: calc(-1.0 * var(--margin));
    margin-right: calc(-1.0 * var(--margin));
}

.layout-row select {
    width: 100%;
}

.col-100, .col-50, .col-25 {
    margin-bottom: 0.8rem;
    margin-left: var(--margin);
    margin-right: var(--margin);
}

.col-100 {
    flex: 2 90%;
}

.col-50 {
    flex: 2 90%;
}

.col-25 {
    flex: 1 45%;
}

.field-note {
    line-height: 150%;
    font-style: italic;
    font-size: 0.875rem;
    color: #606060;
    margin-top: 0.5em;
    margin-left: 0.2em;
}

@media screen and (min-width: 550px) {
    .col-100 {
        flex: 4 90%;
    }

    .col-50 {
        flex: 2 45%;
    }

    .col-25 {
        flex: 1 21.4%;
    }
}


/* Popups framework */

.popup-slot {
    display: flex;
    position: fixed;
    align-items: center;
    justify-content: center;
    overflow-y: auto;
    overflow-x: hidden;
    top: 0;
    left: 0;
    width: 100%;
    height: 100%;
    background-color: rgba(0, 0, 0, 0.5);
    opacity: 0.0;
    pointer-events: none;
    transition: opacity 0.2s;
    z-index: 30;
}

.popup-slot.visible {
    opacity: 1.0;
    pointer-events: all;
}

.popup-inactive-area {
    display: none;
}

.popup {
    position: relative;
    max-height: 100%;
    box-sizing: border-box;
    margin: 1em;
    padding: 0.5em;
    width: 90%;
    transform: scale(0.0);
    transition: transform 0.2s;
}

.popup.visible {
    transform: scale(1.0);
}

.popup.instant-left {
    transition: none;
    transform: translateX(-100vw);
}

.popup.instant-right {
    transition: none;
    transform: translateX(100vw);
}

.popup.transition-left {
    transform: translateX(-100vw);
}

.popup.transition-right {
    transform: translateX(100vw);
}

.popup .close-x {
    position: absolute;
    background-image: url('data:image/svg+xml;base64,PHN2ZyB4bWxucz0iaHR0cDovL3d3dy53My5vcmcvMjAwMC9zdmciIHdpZHRoPSIyNCIgaGVpZ2h0PSIyNCIgdmlld0JveD0iMCAwIDI0IDI0Ij48cGF0aCBmaWxsPSIjZmZmIiBkPSJNMTkgNi40MUwxNy41OSA1IDEyIDEwLjU5IDYuNDEgNSA1IDYuNDEgMTAuNTkgMTIgNSAxNy41OSA2LjQxIDE5IDEyIDEzLjQxIDE3LjU5IDE5IDE5IDE3LjU5IDEzLjQxIDEyeiIvPjxwYXRoIGQ9Ik0wIDBoMjR2MjRIMHoiIGZpbGw9Im5vbmUiLz48L3N2Zz4=');
    background-size: contain;
    background-position: center center;
    border: 0.15em solid white;
    border-radius: 50%;
    right: 0;
    top: 0;
    font-size: 1.2rem;
    width: 1.7em;
    height: 1.7em;
    background-color: black;
    cursor: pointer;
    z-index: 40;
    transition: background-color 0.15s;
}

@media (hover: hover) {
    .popup .close-x:hover {
        background-color: #444;
    }
}

.prompt-popup {
    max-width: 26em;
}

.prompt-popup-inner {
    background-color: white;
    border-radius: 0.7em;
    padding: 1.7em;
    text-align: center;
}

.prompt-popup-inner p {
    margin-top: 0;
    margin-bottom: 0;
}

.prompt-popup-buttons input {
    margin-top: 0.9em;
    margin-left: 0.3em;
    margin-right: 0.3em;
}


/* Navigation */

.nav {
    --color-nav-fg: var(--color-primary);
    --color-nav-bg: var(--color-secondary);
    --expand-time: 0.25s;
    display: flex;
    flex-direction: row;
    justify-content: space-between;
    align-items: center;
    color: var(--color-nav-fg);
    background-color: var(--color-nav-bg);
    flex-wrap: wrap;
    box-sizing: border-box;
    position: fixed;
    left: 0;
    top: 0;
    right: 0;
    z-index: 30;
    max-height: 100vh;
    box-shadow: 0 2px 4px 0 rgba(0,0,0,0.05);
    overflow-x: hidden;
    transition: background-color var(--nav-shrink-time);
}

.nav-shrunk .nav {
    --color-nav-fg: var(--color-secondary);
    --color-nav-bg: var(--color-primary);
}

.nav-logo {
    height: var(--nav-height);
    display: flex;
    flex-direction: column;
    justify-content: center;
    align-items: flex-start;
    padding-left: var(--standard-padding);
}

.nav-logo .large-logo {
    width: 9rem;
}

.nav-logo .shrunken-logo {
    display: none;
}

.nav-logo .large-logo {
    opacity: 1.0;
    transition: opacity var(--nav-shrink-time);
}

.nav-shrunk .nav-logo .large-logo {
    display: none;
    opacity: 0.0;
}

.nav-logo .shrunken-logo {
    display: none;
    opacity: 0.0;
    width: 1.6rem;
    transition: opacity var(--nav-shrink-time);
}

.nav-shrunk .nav-logo .shrunken-logo {
    display: block;
    opacity: 1.0;
}

.nav-hamburger {
    height: var(--nav-height);
    display: flex;
    flex-direction: column;
    justify-content: center;
    align-items: flex-end;
    padding-right: var(--standard-padding);
    color: var(--color-nav-fg);
    transition: color var(--nav-shrink-time);
}

.nav-hamburger .hamburger {
    width: 3rem;
}

.nav-hamburger .close-x {
    width: 2.3rem;
    display: none;
}

.nav.mobile-expanded .hamburger {
    display: none;
}

.nav.mobile-expanded .close-x {
    display: inline-block;
}

.nav-links {
    max-height: 0;
    margin-top: 0;
    width: 100%;
    overflow: hidden;
    transition: max-height var(--expand-time), padding-top var(--expand-time), padding-bottom var(--expand-time);
    padding-left: var(--standard-padding);
    padding-right: var(--standard-padding);
    --nav-link-padding: 1rem;
}

.nav.mobile-expanded .nav-links {
    padding-top: var(--standard-padding);
    padding-bottom: var(--standard-padding);
    overflow-y: scroll;
    max-height: calc(100vh - var(--nav-height));
}

.nav-links .top-list-item {
    list-style-type: none;
    margin-left: 0;
    padding-left: 0;
    line-height: 1.0;
    margin-top: 0;
    border-top: 1px solid var(--color-nav-fg);
}

.nav-links .top-link {
    display: block;
    text-decoration: none;
    color: var(--color-nav-fg);
    padding-top: var(--nav-link-padding);
    padding-bottom: var(--nav-link-padding);
    letter-spacing: 0.15em;
}

.nav-links .has-submenu > .top-link,
.nav-links .has-submenu > .sub-link {
    position: relative;
}

.nav-links .has-submenu > .top-link::after,
.nav-links .has-submenu > .sub-link::after {
    content: ' ';
    position: absolute;
    top: 0;
    bottom: 0;
    right: 0;
    width: 1.4rem;
    background-image: url(../images/arrow_down.svg);
    background-position: center center;
    background-repeat: no-repeat;
    background-size: contain;
    transition: transform 0.2s;
    transform: rotate(0deg);
}

.nav-shrunk .nav-links .has-submenu > .top-link::after,
.nav-shrunk .nav-links .has-submenu > .sub-link::after {
    background-image: url(../images/arrow_down_white.svg?v=2);
}

.nav-links .has-submenu.mobile-expanded > .top-link::after,
.nav-links .has-submenu.mobile-expanded > .sub-link::after {
    transform: rotate(-180deg);
}

.nav-links .submenu,
.nav-links .submenu2 {
    margin-top: 0;
    overflow: hidden;
    max-height: 0;
    transition: max-height 0.2s;
}

.nav-links .sub-list-item,
.nav-links .sub2-list-item {
    list-style: none;
    margin: 0;
    padding-left: 0;
    margin-left: var(--nav-link-padding);
    line-height: 1.0;
    border-top: 1px solid var(--color-nav-fg);
}

.nav-links .sub-list-item:first-child,
.nav-links .sub2-list-item:first-child {
    border-top: none;
}

.nav-links .sub-link,
.nav-links .sub2-link {
    text-decoration: none;
    color: var(--color-nav-fg);
    padding-top: var(--nav-link-padding);
    padding-bottom: var(--nav-link-padding);
    display: block;
    letter-spacing: 0.15em;
}

.nav-links .current {
    font-weight: 600;
}

@media screen and (max-width: 899px) { /* Note: mobile only */
    .nav-links .top-list-item.mobile-expanded > .top-link,
    .nav-links .sub-list-item.mobile-expanded > .sub-link {
        border-bottom: 1px solid var(--color-nav-fg);
    }

    .nav-links .top-list-item.mobile-expanded > .submenu,
    .nav-links .sub-list-item.mobile-expanded > .submenu2 {
        max-height: 60rem;
    }
}

@media screen and (min-width: 900px) {
    .nav {
        flex-wrap: nowrap;
        overflow: visible;
    }
    
    .nav-logo { 
        cursor: pointer;
    }

    .nav-logo .large-logo {
        width: 100%;
    }

    .nav.mobile-expanded {
        padding-bottom: 0;
    }

    .nav-hamburger {
        display: none;
    }
    
    .nav-links {
        max-height: none;
        overflow: visible;
        display: flex;
        flex-direction: row;
        justify-content: center;
        align-items: center;
        gap: 2.4rem;
        transition: none;
        font-size: 0.875rem;
    }

    .nav-links .current {
        font-weight: inherit;
    }

    .nav-links .top-list-item {
        border: none;
        position: relative;
    }

    .nav-links .top-link {
        opacity: 1;
        display: inline-block;
        transition: color var(--nav-shrink-time);
    }

    .nav.mobile-expanded .nav-links {
        margin-top: 0;
        overflow: visible;
        max-height: none;
        padding-top: 0;
        padding-bottom: 0;
    }
    
    .nav-logo {
        padding-right: var(--standard-padding);
        transition: height var(--nav-shrink-time);
        width: 11rem;
        box-sizing: content-box;
    }

    .nav-links .top-link {
        position: relative;
    }

    .nav-links .top-link::after,
    .nav-links .has-submenu .top-link::after {
        content: ' ';
        --width: 0%;
        width: var(--width);
        display: block;
        height: 0.11rem;
        background-color: var(--color-primary);
        position: absolute;
        left: calc(0.5 * (100% - var(--width)));
        bottom: 0.5rem;
        background-image: none;
        transform: none;
        top: unset;
        right: unset;
        transition: width 0.6s, left 0.6s, background-color var(--nav-shrink-time);
    }

    .nav-shrunk .nav-links .top-link::after {
        background-color: var(--color-secondary);
    }

    .nav-links .top-link.current::after,
    .nav-links .desktop-expanded .top-link::after {
        --width: 100%;
    }

    .nav-links .submenu,
    .nav-links .submenu2 {
        max-height: none;
        pointer-events: none;
        overflow: visible;
        opacity: 0.0;
        transition: opacity 0.3s;
        box-shadow: 0 2px 4px 0 rgba(0,0,0,0.05);
    }

    .nav-links .submenu {
        position: absolute;
        top: 5.2rem;
        min-width: 15rem;
        left: 50%;
        transform: translateX(-50%);
    }

    .nav-links .desktop-expanded > .submenu,
    .nav-links .desktop-expanded > .submenu2 {
        opacity: 1.0;
        pointer-events: all;
    }

    .nav-shrunk .nav-links .submenu {
        top: 3.2rem;
    }

    .nav-links .has-submenu > .sub-link::after,
    .nav-links .has-submenu.mobile-expanded > .sub-link::after {
        transform: rotate(-90deg);
    }

    .nav-links .sub-list-item,
    .nav-links .sub-list-item:first-child,
    .nav-links .sub2-list-item,
    .nav-links .sub2-list-item:first-child {
        margin-left: 0;
        border-top: 1px solid #dfdfdf;
        line-height: 1.5;
    }

    .nav-shrunk .nav-links .sub-list-item,
    .nav-shrunk .nav-links .sub-list-item:first-child {
        border-top: 1px solid #56656a;
    }

    .nav-links .sub-link,
    .nav-links .sub2-link {
        text-align: center;
        color: var(--color-nav-fg);
        background-color: var(--color-nav-bg);
        padding-left: var(--nav-link-padding);
        padding-right: var(--nav-link-padding);
        padding-top: 0.5rem;
        padding-bottom: 0.5rem;
    }

    .nav-links .sub-link.current,
    .nav-links .sub2-link.current {
        font-weight: 600;
    }
    
    .sub-list-item.has-submenu {
        position: relative;
        overflow: visible;
    }
    
    .submenu2 {
        position: absolute;
        left: 100%;
        top: -1px;
        border-left: 1px solid #dfdfdf;
        min-width: 14rem;
    }

    .desktop-expanded > .submenu2 {
        max-height: 30rem;
    }
    
    @media (hover: hover) {
        .nav-links .top-link:hover::after {
            --width: 100%;
        }

        .nav-links .sub-link,
        .nav-links .sub2-link {
            transition: background-color 0.2s, color 0.2s;
        }

        .nav-links .sub-link:hover,
        .nav-links .sub2-link:hover {
            background-color: var(--color-primary);
            color: var(--color-secondary);
        }

        .nav-shrunk .nav-links .sub-link:hover,
        .nav-shrunk .nav-links .sub2-link:hover {
            background-color: #516268;
        }
    }
}

@media screen and (min-width: 1000px) {
    .nav {
        padding-left: 3rem;
        padding-right: 3rem;
    }
}


@media screen and (min-width: 1200px) {
    .nav {
        padding-left: 5rem;
        padding-right: 5rem;
    }
}


/* Footer contact form */

.footer-contact {
    background-color: black;
}

.footer-contact>img {
    filter: grayscale(1);
    opacity: 0.5;
}

.footer-contact-inner {
    position: relative;
    color: white;
    padding: var(--standard-padding);
    max-width: 50rem;
    margin-left: auto;
    margin-right: auto;
    --error-color: #ffc4c4;
}

.footer-contact-inner h2 {
    text-align: center;
    margin-top: 1.7rem;
    margin-bottom: 3rem;
}

.footer-contact-inner input {
    margin-bottom: 0.3rem;
}

.footer-contact-inner textarea {
    height: 7.4em;
}

.footer-contact .button-row {
}

.footer-contact-inner .validation {
    font-size: 0.75rem;
    font-weight: 500;
}

@media screen and (min-width: 700px) {
    .footer-contact-inner h2 {
    }
}

@media screen and (min-width: 1000px) {
    .footer-contact-inner {
        display: flex;
        flex-direction: column;
        justify-content: center;
        align-items: stretch;
        min-height: 35rem;
    }

    .footer-contact .button-row {
        padding-bottom: 1.7rem;
    }
}


/* Footer */

.footer {
    background-color: var(--color-secondary);
    padding: var(--standard-padding);
    padding-top: 6rem;
    padding-bottom: 5rem;
    font-size: 0.875rem;
}

.footer-inner {
    max-width: 45rem;
    margin-left: auto;
    margin-right: auto;
}

.footer img {
}

.footer-top-row {
    text-align: center;
    color: black;
}

.footer-logo {
    display: inline-block;
}

.footer-logo img {
    width: 13rem;
}

.footer-contact-info {
    margin-top: 4rem;
}

.footer h3 {
    font-family: Spectral, serif;
    font-size: 1.25rem;
    border-bottom: 1px solid #c0bfbd;
    padding-bottom: 0.8rem;
    font-weight: 500;
}

.footer-contact-groups {}

.footer-socials {
    display: flex;
    flex-direction: row;
    justify-content: center;
    align-items: center;
    gap: 0.6rem;
    margin-top: 1.3rem;
}

.footer-socials a {
    display: inline-block;
    width: 1.4rem;
}

.footer-socials img {
    filter: brightness(0.0);
}

@media (hover: hover) {
    .footer a {
        transition: color 0.2s;
    }

    .footer a:hover {
        color: var(--color-primary-light);
    }

    .footer-socials a img {
        transition: filter 0.1s;
    }

    .footer-socials a:hover img {
        filter: brightness(1.5);
    }
}

.footer-traditional-contact {
    display: flex;
    flex-direction: column;
    justify-content: flex-start;
    align-items: center;
    gap: 1rem;
    margin-top: 1rem;
}

.footer-traditional-contact>* {
    position: relative;
    padding-left: 1.7em;
}

.footer-traditional-contact>*::before {
    content: ' ';
    width: 1rem;
    height: 1rem;
    display: inline-block;
    background-position: center center;
    background-size: contain;
    background-repeat: no-repeat;
    position: absolute;
    left: 0;
    top: 0;
}

.footer .email-link {
    color: black;
    text-decoration: underline;
}

.footer .email-link::before {
    background-image: url(../images/icon_email.svg);
}

.footer .address-link {
    line-height: 1.3;
}

.footer .address-link::before {
    background-image: url(../images/map_placemark.svg);
}

.footer-nav {
    margin-top: 4rem;
}

.footer-nav h3 {}

.footer-nav-links {
    display: flex;
    flex-direction: column;
    justify-content: space-between;
    align-items: center;
    gap: 1rem;
    margin-top: 1.9rem;
}

.footer-nav-links a {
    display: inline-block;
    color: black;
    text-decoration: underline;
}


.accessibility-note,
.scraping-note {
    text-align: center;
    color: black;
}

.accessibility-note {
    margin-top: 4rem;
}

.accessibility-note a {
    color: inherit;
    text-decoration: underline;
}

.scraping-note {
}

.footer-bottom-row {
    color: black;
    margin-top: 2rem;
}

.footer-bottom-row p {
    text-align: center;
    margin-left: auto;
    margin-right: auto;
    max-width: 18rem;
}

.footer-bottom-row a {
    color: inherit;
    text-decoration: underline;
}

.mls-icons {
    display: flex;
    flex-direction: row;
    justify-content: center;
    align-items: center;
    margin-top: 1rem;
    gap: 1rem;
}

.mls-icons img {}

.mls-icons .equal-housing {
    width: 2.1rem;
}

.mls-icons .realtor-mls {
    width: 6.7rem;
}

@media screen and (min-width: 650px) {
    .footer-bottom-row p {
        max-width: none;
    }
}

@media screen and (min-width: 1000px) {
    .footer-inner {
        width: 90%;
        max-width: 65rem;
    }

    .footer-top-row {
        display: flex;
        flex-direction: row;
        justify-content: space-between;
        align-items: flex-start;
        text-align: left;
    }

    .footer-logo {
        margin-right: 3rem;
    }

    .footer-logo img {
        width: 10.5rem;
    }

    .footer-contact-info {
        margin-top: 0;
        flex-grow: 1;
    }

    .footer-contact-groups {
        display: flex;
        flex-direction: row;
        justify-content: flex-start;
        align-items: flex-start;
        margin-top: 1.3rem;
    }

    .footer-socials {
        margin-top: 0;
        margin-right: 7%;
    }

    .footer-traditional-contact {
        margin-top: 0;
        gap: 0.9rem;
        margin-right: 5%;
    }

    .footer .address-link::before {
        left: 0.3rem;
    }

    .footer-nav {
        margin-top: 0;
        flex-grow: 1;
    }

    .footer-nav-links {
        column-count: 2;
        display: block;
        margin-top: 1.2rem;
    }

    .footer-nav-links a {
        display: block;
        padding-bottom: 1.1rem;
    }
}

@media screen and (min-width: 1100px) {
    .footer-logo {
        margin-right: 5rem;
    }

    .footer-socials {
        margin-right: 15%;
    }
}


/* Social media icons */

.social-media-icons {
    position: fixed;
    top: 0;
    right: 0;
    bottom: 0;
    width: 1.6rem;
    padding-right: 0.2rem;
    display: flex;
    flex-direction: column;
    justify-content: center;
    align-items: stretch;
    gap: 0.7rem;
    pointer-events: none;
}

.social-media-icons a {
    pointer-events: all;
}

.social-media-icons img {
    width: 100%;
    filter: drop-shadow(0px 0px 2px #ffffffff);
}

@media (hover: hover) {
    .social-media-icons a {
        opacity: 1.0;
        transition: opacity 0.2s;
    }

    .social-media-icons a:hover {
        opacity: 0.6;
    }
}


/* Heros */

.hero {
    overflow: hidden;
    position: relative;
    height: 0;
    padding-top: 145%;
}

.hero.story {
    padding-top: 56.25%;
}

.hero.default-hero {
    padding-top: 115%;
}

.hero.contact-hero {
    padding-top: 115%;
}

.hero-image {
    position: absolute;
    left: 0%;
    top: 0%;
    right: 0%;
    bottom: 0%;
    display: block;
    width: 100%;
}

.listing-photos .hero-image {
    object-fit: contain;
    aspect-ratio: 3 / 2;
    background-color: var(--color-primary);
}

.hero-image img,
.hero-image video {
    position: absolute;
    left: 0%;
    top: 0%;
}

.color-overlay {
    position: absolute;
    left: 0;
    top: 0;
    right: 0;
    bottom: 0;
    opacity: 0.3;
}

.color-overlay.black {
    background-color: black;
}

.color-overlay.primary {
    background-color: var(--color-primary);
}

.color-overlay.dark {
    opacity: 70%;
}

.hero-text {
    position: absolute;
    left: 0;
    top: 0;
    right: 0;
    bottom: 0;
    display: flex;
    flex-direction: column;
    justify-content: center;
    align-items: center;
    opacity: 1.0;
    transition: opacity 0.5s;
}

.hero-text.hidden {
    opacity: 0.0;
    pointer-events: none;
}

.hero-text-inner {
    width: 90%;
    margin-left: auto;
    margin-right: auto;
    color: white;
    font-family: Spectral, serif;
    text-align: center;
}

.hero-text .play-arrow {
    width: 1.5rem;
    display: inline-block;
    margin-top: 0.6rem;
    filter: drop-shadow(0.1rem 0.1rem 3px #00000077);
    cursor: pointer;
}

@media (hover: hover) {
    .hero-text .play-arrow {
        transition: transform 0.2s;
        transform: scale(1.0);
    }

    .hero-text .play-arrow:hover {
        transform: scale(1.15);
    }
}

.overview .hero-image {background-color: var(--color-primary);}

.overview .hero-text-inner {
    max-width: 18rem;
}

.hero-opportunity .hero-text-inner {
    padding-bottom: 7rem;
}

.hero-text-inner > h1,
.hero-text-inner>h2 {
    text-shadow: 0.04em 0.04em 0.05em #00000070;
}

.hero-text-inner h1 {
    font-family: Spectral, serif;
    font-weight: 500;
    font-size: 2.25rem;
    line-height: 1.15;
    letter-spacing: 0.05em;
}

.hero-text-inner h2 {
    font-weight: 400;
    font-size: 1.5rem;
    margin-top: 0.3em;
    letter-spacing: normal;
}

.hero-text-inner .hero-button {
    display: inline-block;
    margin-top: 2.1rem;
    font-family: Montserrat, serif;
    text-decoration: none;
    color: var(--color-primary);
    letter-spacing: 0.1em;
    background-color: var(--color-secondary);
    padding: 1rem;
    width: 13em;
    font-weight: 400;
}

@media (hover: hover) {
    .hero-text-inner .hero-button {
        transition: color 0.3s, background-color 0.3s;
    }

    .hero-text-inner .hero-button:hover {
        color: var(--color-secondary);
        background-color: var(--color-primary);
    }
}

.hero-overlay-logo {
    width: 13rem;
    filter: drop-shadow(0.1rem 0.1rem 0.3rem #00000055);
}

@media screen and (min-width: 450px) {
    .hero,
    .hero.contact-hero,
    .hero.default-hero {
        padding-top: 32rem;
    }
    
    .overview .hero-text-inner {
        max-width: 25rem;
    }
}

@media screen and (min-width: 600px) {
    .hero-text-inner h1 {
        letter-spacing: 0.35em;
    }
}

@media screen and (min-width: 800px) {
    .overview .hero-text-inner {
        max-width: 51rem;
    }

    .hero-overlay-logo {
        width: 29vw;
        filter: drop-shadow(0.1vw 0.1vw 0.3vw #00000055);
    }
}

@media screen and (min-width: 1500px) {
    .hero,
    .hero.contact-hero,
    .hero.default-hero {
        padding-top: 38.3%;
    }
}


/* Two-column layouts */

.two-column-layout {overflow: hidden;}

.two-column-layout .image-column {
}

.two-column-layout .image-column.collaboration {
    height: 0;
    padding-top: 70%;
}

.two-column-layout .text-column {
    padding: var(--standard-padding);
    padding-top: 4rem;
    padding-bottom: 4rem;
    color: var(--color-primary);
}

.two-column-layout .text-column .section-opener h2 {
    text-align: left;
    margin-left: 0;
}

@media screen and (min-width: 800px) {
    .two-column-layout {
        display: flex;
        flex-direction: row;
        justify-content: center;
        align-items: center;
        gap: calc(1.5 * var(--standard-padding));
        padding-left: var(--standard-padding);
        padding-right: var(--standard-padding);
        max-width: calc(70rem - 2 * var(--standard-padding));
        margin-left: auto;
        margin-right: auto;
    }

    .two-column-layout .image-column {
    }

    .two-column-layout .image-column.collaboration {
        padding-top: 45%;
    }

    .two-column-layout .text-column {
        padding: 0;
    }
}

@media screen and (min-width: 1000px) {
    .two-column-layout .image-column.collaboration {
        padding-top: 35%;
    }
}


/* Shared elements */

.content-outer {
    padding: 2.5rem var(--standard-padding) 8rem;
    max-width: 72rem;
    margin-left: auto;
    margin-right: auto;
}

.breadcrumbs {
    font-size: 1rem;
    display: flex;
    flex-direction: row;
    justify-content: flex-start;
    align-items: center;
    gap: 0.5rem;
    flex-wrap: wrap;
}

.breadcrumbs a {
}

.breadcrumbs span {
    color: var(--color-near-black);
    line-height: 1.25;
}

.mls-disclaimer {
    margin-top: 5rem;
}

.mls-disclaimer img {
    display: inline-block;
    max-width: 100px;
}

.mls-disclaimer p {
    color: var(--color-near-black);
}

.listings-page .mls-disclaimer p {
    font-size: 0.875rem;
    font-weight: 400;
}

.listing-detail-page .mls-disclaimer p {
    text-transform: uppercase;
    font-size: 0.9rem;
    font-weight: 300;
}

.section-opener h2 {
    max-width: 12em;
    margin-left: auto;
    margin-right: auto;
    text-align: center;
}

.section-opener p {
    font-family: Spectral, serif;
    font-weight: 400;
    font-size: 1.125rem;
    line-height: 1.35;
    max-width: 25rem;
    margin-left: auto;
    margin-right: auto;
    text-align: center;
    color: var(--color-primary);
}

.section-opener p strong {
    font-weight: 700;
}

.section-opener.light h2 {
    color: var(--color-secondary);
}

.section-opener.light p {
    color: var(--color-secondary);
}

.split-intro-text {
    padding-left: var(--standard-padding);
    padding-right: var(--standard-padding);
    max-width: 33rem;
    margin-left: auto;
    margin-right: auto;
}

.split-intro-text h2 {
    margin-left: auto;
    margin-right: auto;
    text-align: center;
}

.split-intro-text p {
    font-family: Spectral, serif;
    font-weight: 400;
    font-size: 1.5rem;
    line-height: 1.25;
    margin-left: auto;
    margin-right: auto;
    text-align: center;
    color: var(--color-primary);
}

.split-intro-text p strong {
    font-weight: 700;
}

.button-row {
    text-align: center;
    padding-top: 3rem;
    padding-bottom: 3rem;
}

.video-placeholder {
    background-color: var(--color-secondary);
    color: var(--color-primary);
    display: flex;
    flex-direction: column;
    justify-content: center;
    align-items: center;
    height: 70vw;
}

.video-placeholder img {
    width: 3rem;
}

.video-placeholder span {
    display: block;
    margin-top: 0.5rem;
    font-weight: 300;
}

.video-thumbnail {
    background-color: var(--color-secondary);
    color: var(--color-primary);
    display: flex;
    flex-direction: column;
    justify-content: center;
    align-items: center;
    height: 70vw;
    position: relative;
    overflow: hidden;
}

@media (hover: hover) {
    .video-thumbnail {
        transform: scale(1.0);
        transition: transform 0.2s;
    }

    .video-thumbnail:hover {
        transform: scale(1.05);
    }
}

.video-thumbnail-background {
    position: absolute;
    left: 0;
    top: 0;
}

.video-thumbnail .play-arrow {
    width: 3rem;
    z-index: 10;
}

.video-thumbnail span {
    display: block;
    margin-top: 0.5rem;
    font-weight: 300;
    color: white;
    z-index: 10;
}

.light-button {
    text-decoration: none;
    display: block;
    margin-top: 3rem;
    border: 0.1em solid var(--color-primary);
    text-align: center;
    color: var(--color-primary);
    background-color: transparent;
    margin-left: auto;
    margin-right: auto;
    width: 90%;
    max-width: 17em;
    padding: 1rem;
}

.on-page-video {
    display: block;
    width: 90%;
    margin-top: 4rem;
    margin-left: auto;
    margin-right: auto;
}

.pagination {
    text-align: center;
}

.pagination a.btn {
    padding-left: 1em;
    padding-right: 1em;
    margin-top: 0.3rem;
}


@media (hover: hover) {
    .light-button {
        transition: color 0.3s, background-color 0.3s;
    }

    .light-button:hover {
        color: var(--color-secondary);
        background-color: var(--color-primary);
    }
}

@media screen and (min-width: 700px) {
    .section-opener h2 {
        max-width: none;
    }

    .section-opener p {
        font-size: 1.25rem;
        max-width: 53rem;
    }
}

@media screen and (min-width: 800px) {
    .video-placeholder {
        --width: 35vw;
        width: var(--width);
        height: calc(0.8 * var(--width));
    }

    .video-thumbnail {
        --width: 35vw;
        width: var(--width);
        height: calc(0.8 * var(--width));
    }

    .two-column-layout.upper .video-placeholder,
    .two-column-layout.upper .video-thumbnail {
        --width: var(--left-width);
    }

    .two-column-layout.lower .video-placeholder,
    .two-column-layout.lower .video-thumbnail {
        --width: var(--right-width);
    }

    .split-intro-text {
    max-width: 42rem;
    }
}

@media screen and (min-width: 1000px) {
    .split-intro-text {
        display: flex;
        flex-direction: row;
        justify-content: space-between;
        gap: 2rem;
        align-items: center;
        max-width: none;
        width: 93%;
        padding-left: 0;
        padding-right: 0;
    }

    .split-intro-text h2 {
        text-align: left;
        white-space: nowrap;
        margin-left: 0;
        margin-right: 0;
    }

    .split-intro-text p {
        text-align: right;
        margin-left: 0;
        margin-right: 0;
        margin-top: 0;
        max-width: 30rem;
    }
}

@media screen and (min-width: 1200px) {
    .video-placeholder,
    .video-thumbnail {
        --width: 26rem;
    }

    .split-intro-text p {
        max-width: 39rem;
    }
}


/* Overview - who we are */

.who-we-are {
}

@media screen and (min-width: 800px) {
    .who-we-are {
        padding-top: 5rem;
        padding-bottom: 5rem;
    }
}


/* Overview - looking for */

.looking-for {
    position: relative;
}

.looking-for-image-outer {
    position: absolute;
    left: 0;
    top: 0;
    right: 0;
    bottom: 0;
    overflow: hidden;
}

.looking-for-image-outer img {
    position: absolute;
    left: 0;
    top: 0;
}

.looking-for-content {
    position: relative;
    color: white;
    font-family: Spectral, serif;
    text-align: center;
    padding-top: 5rem;
    padding-bottom: 5rem;
    padding-left: var(--standard-padding);
    padding-right: var(--standard-padding);
    --color-card: #d7dcdd;
}

.ideal-profile-header {
    background-color: var(--color-card);
    font-family: Montserrat, serif;
    color: var(--color-primary);
    font-weight: 700;
    padding: 0.7em 1em;
    max-width: 23em;
    margin-left: auto;
    margin-right: auto;
    margin-top: 3rem;
    line-height: 1.2;
    letter-spacing: 0.1em;
}

.profile-cards {
    font-family: Montserrat, sans-serif;
    color: var(--color-primary);
    display: flex;
    flex-direction: row;
    flex-wrap: wrap;
    justify-content: center;
    align-items: stretch;
    gap: 0.9rem;
    margin-top: 2rem;
}

.profile-card {
    background-color: var(--color-card);
    width: 12em;
    padding: 1em 1em;
    padding-top: 2.3em;
    line-height: 1.3;
    position: relative;
    margin-top: 1.6rem;
    font-size: 0.875rem;
}

.profile-card strong {
    font-weight: 700;
    display: block;
}

.profile-card::after {
    --size: 3.2em;
    content: ' ';
    display: block;
    background-image: url(../images/icon_check_gray.svg);
    width: var(--size);
    height: var(--size);
    position: absolute;
    top: calc(-0.5 * var(--size));
    left: calc(0.5 * (100% - var(--size)));
}

@media screen and (min-width: 450px) {
    .profile-card {
        font-size: 1rem;
    }
}

@media screen and (min-width: 700px) {
    .profile-cards {
        max-width: 42rem;
        margin-left: auto;
        margin-right: auto;
    }
}

@media screen and (min-width: 1100px) {
    .profile-cards {
        max-width: none;
    }
}


/* Overview - why partner */

.why-partner {
    padding: var(--standard-padding);
    padding-top: 4rem;
    padding-bottom: 4rem;
}

.why-partner-intro {}

.why-partner-intro h2 {}

.why-partner-intro strong {}

.why-partner-features {}

.why-partner-feature {
    margin-top: 1.6rem;
    text-align: center;
    color: var(--color-primary);
}

.why-partner-feature img {
    width: 100%;
}

.why-partner-feature h3 {
    font-weight: 600;
    margin-top: 0.9em;
}

.why-partner-feature p {
    font-size: 0.875rem;
    padding-left: 1em;
    padding-right: 1em;
}

.why-partner-feature p span {
    display: block;
    margin-top: 0.1em;
}

.why-partner-feature a {
    color: black;
}

@media screen and (min-width: 375px) {
    .why-partner-features {
        display: flex;
        flex-direction: row;
        flex-wrap: wrap;
        justify-content: center;
        align-items: flex-start;
        gap: var(--standard-padding);
        margin-top: 1.6rem;
        max-width: 70rem;
        margin-left: auto;
        margin-right: auto;
    }

    .why-partner-feature {
        max-width: 21rem;
        margin-top: 0;
    }
}

@media screen and (min-width: 744px) {
    .why-partner-feature {
        margin-top: 1rem;
    }
}


/* Overview - what makes us different */

.what-different {
}

.what-different .image-column img {
    width: 100%;
}

@media screen and (min-width: 800px) {
    .what-different {
        padding-top: 4rem;
        padding-bottom: 4rem;
    }

    .what-different .image-column img {
        width: 45vw;
        max-width: 29rem;
    }
}


/* Overview - start conversation */

.start-conversation {
    position: relative;
    padding: var(--standard-padding);
    padding-top: 4rem;
    padding-bottom: 4rem;
}

.start-conversation.spacious {
    padding-top: 6rem;
    padding-bottom: 6rem;
}

.start-conversation-background {
    position: absolute;
    left: 0;
    top: 0;
    right: 0;
    bottom: 0;
    overflow: hidden;
}

.start-conversation-background img {
}

.start-conversation-foreground {
    position: relative;
    color: var(--color-secondary);
}

.cta-buttons {
    display: flex;
    flex-direction: column;
    justify-content: space-between;
    align-items: center;
    gap: 1.3rem;
    margin-top: 1.7rem;
}

.cta-buttons a {
    color: var(--color-secondary);
    text-decoration: none;
    display: block;
    border: 1px solid var(--color-secondary);
    text-align: center;
    padding-left: 2em;
    padding-right: 2em;
    font-size: 1rem;
    line-height: 1.25;
    letter-spacing: 0.15em;
    padding-top: 0.5em;
    padding-bottom: 0.5em;
    width: 100%;
    max-width: 19.8rem;
}

@media (hover: hover) {
    .cta-buttons a {
        background-color: transparent;
        transition: background-color 0.35s, color 0.35s;
    }

    .cta-buttons a:hover {
        background-color: var(--color-secondary);
        color: var(--color-primary);
    }
}

@media screen and (min-width: 700px) {
    .cta-buttons {
        flex-direction: row;
        flex-wrap: wrap;
        justify-content: center;
        align-items: stretch;
    }

    .cta-buttons a {
        height: 3.7em;
        display: flex;
        flex-direction: column;
        justify-content: center;
        align-items: center;
    }
}


/* Opportunity page */

.opportunity {
    padding-top: 4rem;
}

.opportunity .section-opener {
    padding-left: var(--standard-padding);
    padding-right: var(--standard-padding);
    padding-bottom: 2.5rem;
}

.opportunity .two-column-layout.lower .image-column img {
    width: 100%;
    display: block;
} 

.broker-requirements {
    padding: var(--standard-padding);
    padding-top: 4rem;
    padding-bottom: 4rem;
    background-color: var(--color-secondary);
}

.broker-requirements h2 {
    text-align: center;
}

.requirements-table {
    margin-top: 2rem;
    border-collapse: collapse;
    text-align: center;
    width: 100%;
    max-width: 44em;
    font-size: 0.875rem;
    margin-left: auto;
    margin-right: auto;
}

.requirements-table tr {}

.requirements-table th:first-child {
    border-right: 1px solid var(--color-secondary);
}

.requirements-table th, 
.requirements-table td {
    padding: 0.6em;
    line-height: 1.25;
    vertical-align: middle;
}

.requirements-table th:first-child, 
.requirements-table td:first-child {
    width: 49%;
}

.requirements-table th {
    font-weight: 600;
    color: var(--color-secondary);
    background-color: var(--color-primary);
    padding-top: 1em;
    padding-bottom: 1em;
}

.requirements-table td {
    border-bottom: 0.15em solid white;
    padding-top: 1.5em;
    padding-bottom: 1.5em;
}

.requirements-table h3 {
    font-weight: 600;
}

@media screen and (max-width: 800px) {
    .opportunity .two-column-layout.lower {
        display: flex;
        flex-direction: column;
    }

    .opportunity .two-column-layout.lower .text-column {
        order: 2;
    }

    .opportunity .two-column-layout.lower .image-column {
        order: 1;
    }
}
    
@media screen and (min-width: 800px) {
    .opportunity {
    }

    .opportunity .section-opener {
        padding-bottom: 1.5rem;
    }

    .opportunity .two-column-layout {
        --left-width: 37vw;
        --right-width: 47vw;
    }

    .opportunity .two-column-layout.upper .image-column {
        width: var(--left-width);
    }

    .opportunity .two-column-layout.upper .text-column {
        width: var(--right-width);
    }

    .opportunity .two-column-layout.lower .text-column {
        width: var(--left-width);
    }

    .opportunity .two-column-layout.lower .image-column {
        width: var(--right-width);
    }

    .opportunity .two-column-layout.upper {
        margin-top: 2.1rem;
    }

    .opportunity .two-column-layout.lower {
        margin-top: 4.7rem;
        margin-bottom: 5rem;
    }

    .broker-requirements {
    padding-top: 5rem;
    padding-bottom: 5rem;
    }

    .requirements-table {
        font-size: 1rem;
    }
}

@media screen and (min-width: 1200px) {
    .opportunity .two-column-layout {
        --left-width: 27.75rem;
        --right-width: 35.25rem;
    }
}
    

/* Founders section */

.founders {
    margin-top: 4rem;
}

.founders .section-opener {
    padding-left: var(--standard-padding);
    padding-right: var(--standard-padding);
}

.agent-carousel-outer {
    margin-top: 3rem;
}

.agent-carousel {
    overflow-x: scroll;
    overflow-y: hidden;
    display: flex;
    flex-direction: row;
    justify-content: space-between;
    --carousel-width: 100vw;
    --n-wide: 1;
    --slide-gap: 1rem;
    --slide-width: calc((var(--carousel-width) - ((1 + var(--n-wide)) * var(--slide-gap))) / var(--n-wide));
    --slide-aspect: 0.857;
    --slide-height: calc(var(--slide-width) / var(--slide-aspect));
    padding-left: var(--slide-gap);
    padding-right: var(--slide-gap);
    scroll-snap-type: x mandatory;
    scrollbar-width: none;
    gap: var(--slide-gap);
    position: relative;
    scroll-behavior: smooth;
}

.agent-carousel::-webkit-scrollbar { 
    display: none; 
}

.agent-carousel a {
    display: block;
    width: var(--slide-width);
    height: var(--slide-height);
    flex-shrink: 0;
    scroll-snap-align: center;
    background-position: top center;
    background-size: cover;
    overflow: hidden;
    position: relative;
    filter: grayscale(100%);
    transition: filter 0.4s ease-in;
}

.agent-info {
    position: absolute;
    width: 100%;
    left: 0;
    bottom: -5rem;
    right: 0;
    color: white;
    text-decoration: none;
    text-align: center;
    background-image: linear-gradient(to bottom, transparent, #00000094);
    padding-bottom: 1rem;
    padding-top: 1rem;
    transition: bottom 0.3s;
}

.agent-info strong {
    text-transform: uppercase;
    display: block;
    font-size: 1.35rem;
    font-weight: 500;
}

.agent-info span {
    text-transform: uppercase;
    display: block;
    margin-top: 0.5em;
    font-size: 0.875rem;
}

.agent-carousel a.selected {
    filter: grayscale(0%);
}

.agent-carousel a.selected .agent-info {
    bottom: 0;
}

.agent-carousel-outer .arrow-left,
.agent-carousel-outer .arrow-right {
    display: none;
}

@media (hover: hover) {
    .agent-carousel a:hover {
        filter: grayscale(0%);
    }

    .agent-carousel a:hover .agent-info {
        bottom: 0;
    }
}

@media screen and (min-width: 500px) {
    .agent-carousel {
        --n-wide: 2;
        margin-left: var(--slide-gap);
    }

    .agent-carousel a {
        scroll-snap-align: start;
    }
}

@media screen and (min-width: 800px) {
    .agent-carousel {
        --n-wide: 3;
        margin-left: 0;
    }

    .agent-carousel a {
        scroll-snap-align: center;
    }
}

@media screen and (min-width: 900px) {
    .agent-carousel-outer {
        --arrow-margin: 3rem;
        position: relative;
    }

    .agent-carousel {
        --carousel-width: calc(100vw - 2 * var(--arrow-margin));
        --slide-width: calc((var(--carousel-width) - ((var(--n-wide) - 1) * var(--slide-gap))) / var(--n-wide));
        width: var(--carousel-width);
        margin-left: auto;
        margin-right: auto;
        padding-left: 0;
        padding-right: 0;
    }

    .agent-carousel-outer .arrow-left,
    .agent-carousel-outer .arrow-right {
        display: block;
        position: absolute;
        top: 0;
        bottom: 0;
        height: 100%;
        width: var(--arrow-margin);
        text-indent: -9999px;
        overflow: hidden;
        background-image: url(../images/carousel_arrow.svg);
        background-repeat: no-repeat;
        background-position: left center;
        background-size: 60%;
        opacity: 0.2;
        transition: opacity 0.5s;
        z-index: 10;
    }

    .agent-carousel-outer .arrow-left {
        left: 0;
    }

    .agent-carousel-outer .arrow-right {
        right: 0;
        transform: rotate(180deg);
    }

    .agent-carousel-outer .arrow-left:hover,
    .agent-carousel-outer .arrow-right:hover {
        opacity: 0.5;
    }
}

@media screen and (min-width: 1000px) {
    .agent-carousel {
        --n-wide: 4;
    }

    .agent-carousel a {
        scroll-snap-align: start;
    }
}


/* Story - pledge */

.pledge {
    margin-top: 4rem;
    padding: var(--standard-padding);
    padding-bottom: 7rem;
}

.pledge-icons {
    display: flex;
    flex-direction: row;
    flex-wrap: wrap;
    justify-content: space-around;
    gap: 0.8rem;
    align-items: center;
    max-width: 55rem;
    margin-left: auto;
    margin-right: auto;
    margin-top: 2rem;
}

.pledge-icon {
    text-align: center;
    width: 13rem;
    display: block;
    margin-top: 1rem;
}

.pledge-icon img {
    width: 100%;
}

.pledge-icon strong {
    display: block;
    margin-top: 0.5em;
    font-size: 0.875rem;
    line-height: 1.25;
}

@media screen and (min-width: 800px) {
    .pledge-icon {
        width: 15rem;
    }

    .pledge-icon strong {
        font-size: 1rem;
    }
}


/* Contact page */

.contact {
    padding-top: 4rem;
    padding-bottom: 4rem;
    padding-left: var(--standard-padding);
    padding-right: var(--standard-padding);
}

.contact-form {
    width: 100%;
    max-width: 41rem;
    margin-left: auto;
    margin-right: auto;
    margin-top: 3rem;
}
.contact-columns {
    margin-top: 3rem;
}

.contact-column-left {
    text-align: center;
}

.contact-column-left h2 {
    font-size: 1.75rem;
    margin-top: 2.5rem;
}

.contact-column-left a {}

.contact-column-left p {
    margin-top: 0.5rem;
}

.contact-column-left br {
}

.contact-column-right {
}

.contact-form {
}

.contact-form .submit-row {
    text-align: center;
}

.content-outer.contact-page {
    width: 90%;
    margin-left: auto;
    margin-right: auto;
}

@media screen and (min-width: 800px) {
    .content-outer.contact-page {
        width: 95%;
        max-width: 58rem;
    }

    .contact-columns {
        display: flex;
        flex-direction: row;
        justify-content: space-between;
        align-items: flex-start;
        gap: 3rem;
    }
    
    .contact-column-left {
        text-align: left;
    }

    .contact-column-left h2 {
        font-size: 1.5rem;
        margin-top: 4rem;
    }

    .contact-column-left h2:first-child {
        margin-top: 1rem;
    }

    .contact-column-right {
        flex-grow: 1;
    }

    .contact-form {
        margin-top: 0;
    }

    .contact-form .submit-row {
        text-align: left;
    }
}


/* Text animations */

.text-clip {
    overflow: hidden;
    display: inline-block;
}

span.anim-slideup {
    display: inline-block;
}

.anim-slidedown {
    animation-name: slideDown;
    animation-duration: 1.8s;
    animation-play-state: paused;
    animation-iteration-count: 1;
}

.anim-slidedown.playing {
    animation-play-state: running;
}

@keyframes slideDown {
    0% {
        opacity: 0.0;
        transform: translateY(-1rem);
    }

    50% {
        opacity: 0.0;
        transform: translateY(-1rem);
    }

    100% {
        opacity: 1.0;
        transform: translateY(0em);
    }
}

.anim-slideup {
    animation-name: slideUp;
    animation-duration: 0.8s;
    animation-play-state: paused;
    animation-iteration-count: 1;
}

.anim-slidedown {
    animation-name: slideDown;
    animation-duration: 1.8s;
    animation-play-state: paused;
    animation-iteration-count: 1;
}

.anim-slideleft {
    animation-name: slideLeft;
    animation-duration: 0.8s;
    animation-play-state: paused;
    animation-iteration-count: 1;
}

.anim-slideright {
    animation-name: slideRight;
    animation-duration: 0.8s;
    animation-play-state: paused;
    animation-iteration-count: 1;
}

.anim-fadein {
    animation-name: fadeIn;
    animation-duration: 0.8s;
    animation-play-state: paused;
    animation-iteration-count: 1;
}

.playing {
    animation-play-state: running;
}

@keyframes slideUp {
    from {
        opacity: 0.0;
        transform: translateY(2em);
    }
    
    to {
        opacity: 1.0;
        transform: translateY(0em);
    }
}

@keyframes slideDown {
    0% {
        opacity: 0.0;
        transform: translateY(-1rem);
    }

    50% {
        opacity: 0.0;
        transform: translateY(-1rem);
    }
    
    100% {
        opacity: 1.0;
        transform: translateY(0em);
    }
}

@keyframes slideLeft {
    from {
        opacity: 0.0;
        transform: translateX(2em);
    }
    
    to {
        opacity: 1.0;
        transform: translateX(0em);
    }
}

@keyframes slideRight {
    from {
        opacity: 0.0;
        transform: translateX(-2em);
    }
    
    to {
        opacity: 1.0;
        transform: translateX(0em);
    }
}

@keyframes fadeIn {
    from {
        opacity: 0.0;
    }
    
    to {
        opacity: 1.0;
    }
}


/* Video popups */

.aspect-16-9 {
    --aspect: calc(16.0 / 9.0);
}

.popup.video-popup {
    width: calc(min(95%, var(--aspect) * 95vh));
}

.video-popup-inner {
    background-color: #333333;
    border-radius: 0.5rem;
    padding: 0.6rem;
    box-sizing: content-box;
}

.video-popup-inner video {
    width: 100%;
}


/* Team member detail page */

.agent-detail-page {
    --border-width: 0.7rem;
}

.agent-columns {}

.agent-bio-column::before {
    content: ' ';
    display: block;
    width: 100%;
    background-color: var(--color-gray-accent);
    height: var(--border-width);
    position: absolute;
    top: 0;
}

.agent-bio-column::after {
    content: ' ';
    display: block;
    width: 100%;
    background-color: var(--color-gray-accent);
    height: var(--border-width);
    position: absolute;
    bottom: 0;
}

.agent-bio-column {
    color: var(--color-near-black);
    font-size: 1rem;
    margin-top: 2.8rem;
    padding-top: 2.8rem;
    padding-bottom: 3rem;
    position: relative;
}

.agent-bio-column p {
    line-height: 1.8;
}

.agent-bio-column span {}

.agent-bio-column ul {}

.agent-bio-column li {
}

.agent-bio-column em {
    font-style: italic;
}

.agent-bio-column a {
    text-decoration: underline;
    color: var(--color-primary);
}

.agent-bio-column b {
    font-weight: 700;
}
.agent-details-column {
    margin-top: 3rem;
    max-width: 22rem;
    margin-left: auto;
    margin-right: auto;
}

.agent-photo {
    width: 100%;
    display: block;
    box-sizing: border-box;
    border: var(--border-width) solid var(--color-gray-accent);
}

.agent-stats {
    display: flex;
    flex-direction: column;
    justify-content: space-between;
    align-items: center;
    gap: 1.8rem;
    margin-top: 1.9rem;
}

.agent-stat {
    display: flex;
    flex-direction: row;
    justify-content: center;
    gap: 0.6rem;
}

.agent-stat img {
    width: 0.9rem;
}

.agent-stat a,
.agent-stat span {
    color: #666666;
    font-size: 1rem;
}

.agent-stat a {
    text-decoration: none;
}

.agent-stat span {
    line-height: 1.45;
    max-width: 14rem;
    display: inline-block;
}

.agent-social-media-links {
    display: flex;
    flex-direction: row;
    justify-content: center;
    align-items: center;
    gap: 1rem;
}

.agent-social-media-link {
    background-color: var(--color-primary);
    display: block;
    --size: 2rem;
    width: var(--size);
    height: var(--size);
    border-radius: 50%;
    display: flex;
    flex-direction: row;
    justify-content: center;
    align-items: center;
}

.agent-social-media-link img {
    width: 73%;
}

@media (hover: hover) {
    .agent-social-media-link {
        opacity: 1.0;
        transition: opacity 0.2s;
    }

    .agent-social-media-link:hover {
        opacity: 0.7;
    }
}

@media screen and (min-width: 750px) {
    .agent-bio-column::before {
        width: 50%;
        left: 0;
    }

    .agent-bio-column::after {
        width: 50%;
        right: 0;
    }
}

@media screen and (min-width: 900px) {
    .agent-columns {
        display: flex;
        flex-direction: row;
        justify-content: space-between;
        align-items: flex-start;
        gap: 2.1rem;
        margin-top: 2.5rem;
        --details-width: 22rem;
    }
    
    .agent-bio-column {
        order: 1;
        margin-top: 0;
        width: calc(100% - var(--details-width));
    }

    .agent-details-column {
        order: 0;
        width: var(--details-width);
        flex-grow: 1;
        margin-top: 0;
        margin-left: 0;
        margin-right: 0;
    }
}


/* About, Meet the Team */

.agent-search-bar {
    margin-top: 3rem;
    text-align: center;
}

.agent-search-form {
    display: flex;
    flex-direction: row;
    justify-content: center;
    align-items: stretch;
    gap: 0.7rem;
    max-width: 24rem;
    margin-left: auto;
    margin-right: auto;
}

.agent-search-form .floating-label-field {
    margin-top: 0;
    flex-grow: 1;
}

.agent-search-bar option {
    color: white;
    background-color: var(--color-primary);
    font-weight: 300;
    line-height: 1.5;
}

.agent-list {
    margin-top: 2rem;
    max-width: 40rem;
    margin-left: auto;
    margin-right: auto;
}

.agent-list-row {
    margin-bottom: 6rem;
}

.agent-image-column {
    display: block;
}

.agent-image-column img {
    width: 100%;
    display: block;
}

.agent-info-column {
    color: black;
    margin-top: 1.8rem;
}

.agent-info-column h2 {
    text-transform: uppercase;
    font-family: 'Montserrat', sans-serif;
    font-size: 2rem;
    letter-spacing: 0.05em;
}

.agent-info-column h2 strong {
    font-weight: 700;
}

.agent-info-column h2 span {
    font-weight: 400;
}

.agent-info-column h3 {
    font-family: 'Montserrat', sans-serif;
    font-size: 1.5rem;
    text-transform: uppercase;
    font-weight: 400;
    line-height: 1.3;
    margin-top: 0.2rem;
}

.agent-info-column p {
    line-height: 1.6;
    font-size: 0.9rem;
    margin-top: 2rem;
}

.agent-buttons {
    margin-top: 1.8rem;
    display: flex;
    flex-direction: row;
    justify-content: flex-start;
    align-items: center;
    gap: 2rem;
}

.agent-list-contact {
    background-color: var(--color-gray-accent);
    padding: 1.2rem;
    margin-top: 1.3rem;
    display: flex;
    flex-direction: row;
    flex-wrap: wrap;
    justify-content: flex-start;
    gap: 1.6rem;
}

.no-results-message {
    text-align: center;
}

@media screen and (min-width: 1000px) {
    .agent-search-bar {
        display: flex;
        flex-direction: row;
        justify-content: center;
        align-items: stretch;
        gap: 7rem;
    }

    .agent-search-bar > .floating-label-field {
        margin-top: 0;
    }

    .agent-search-form {
        margin-left: 0;
        margin-right: 0;
    }

    .agent-list {
        max-width: 58rem;
        margin-top: 4rem;
    }

    .agent-list-row {
        display: flex;
        flex-direction: row;
        justify-content: space-between;
        align-items: stretch;
        gap: 4rem;
    }

    .agent-list-row:nth-child(even) {
    }

    .agent-list-row:nth-child(even) .agent-image-column {
        order: 2;
    }

    .agent-list-row:nth-child(even) .agent-info-column {
        order: 1;
    }

    .agent-list-row:nth-child(even) .agent-heading {
        text-align: right;
    }

    .agent-image-column {
        width: 20rem;
        flex-grow: 0;
        flex-shrink: 0;
    }
    
    @media (hover: hover) {
        .agent-image-column {
            overflow: hidden;
        }

        .agent-image-column img {
            transition: transform 0.6s;
            transform: scale(1.0);
        }

        .agent-image-column:hover img {
            transform: scale(1.1);
        }
    }

    .agent-info-column {
        margin-top: 0;
        flex-grow: 1;
        display: flex;
        flex-direction: column;
        justify-content: space-between;
    }

    .agent-info-column p {
        margin-top: 0;
        text-align: justify;
    }

    .agent-buttons {
        margin-top: 0;
    }

    .agent-list-row:nth-child(even) .agent-buttons {
        justify-content: flex-end;
    }

    .agent-list-row:nth-child(even) .agent-buttons > a.btn {
        order: 2;
        margin-left: auto;
    }

    .agent-list-row:nth-child(even) .agent-buttons > .agent-social-media-links {
        order: 1;
    }

    .agent-list-contact {
        margin-top: 0;
    }

    .agent-info-column h2 {
        font-size: 3rem;
        line-height: 1.1;
    }

    .agent-info-column h3 {
        font-size: 1.75rem;
    }
}

@media screen and (min-width: 1200px) {
    .agent-list {
        max-width: 64rem;
    }
}


/* Home - brokerage stats */

.brokerage-stats {
    background-color: var(--color-primary);
    color: white;
    padding: var(--standard-padding);
    padding-top: 4rem;
    padding-bottom: 4rem;
    text-align: center;
}

.brokerage-stats h2 {
    line-height: 1.0;
}

.stats-top-heading {}

.brokerage-stats-row {
    margin-top: 4rem;
}

.brokerage-stat {
    margin-top: 3.5rem;
}

.brokerage-stat span {
    display: block;
    font-family: Spectral, serif;
    font-size: 1.5rem;
    letter-spacing: 0.15em;
}

.brokerage-stat em {
    display: block;
    margin-top: 1.1rem;
    font-style: italic;
    font-size: 1.125rem;
    font-weight: 400;
}

.brokerage-stat-divider {
    display: none;
}

.stats-bottom-heading {
    margin-top: 5rem;
}

@media screen and (min-width: 500px) {
    .brokerage-stats {
        padding-top: 3rem;
        padding-bottom: 3rem;
    }

    .brokerage-stats h2 {
    }

    .stats-top-heading {}

    .brokerage-stats-row {}

    .brokerage-stat {}

    .brokerage-stat span {
        font-size: 1.75rem;
    }

    .brokerage-stat em {
        font-size: 1.25rem;
    }

    .stats-bottom-heading {
        max-width: 25.5rem;
        margin-left: auto;
        margin-right: auto;
    }
}

@media screen and (min-width: 600px) {
    .stats-bottom-heading {
        max-width: 33rem;
    }
}

@media screen and (min-width: 1000px) {
    .brokerage-stats {
        padding-bottom: 4rem;
    }

    .brokerage-stats h2 {
        max-width: none;
    }

    .stats-top-heading {}

    .brokerage-stats-row {
        display: flex;
        flex-direction: row;
        justify-content: space-between;
        align-items: stretch;
        margin-left: auto;
        margin-right: auto;
        max-width: 73rem;
    }

    .brokerage-stat {
        margin-top: 0;
        flex-grow: 1;
        flex-shrink: 1;
        padding-top: 1rem;
        padding-bottom: 1rem;
    }

    .brokerage-stat span {
    }

    .brokerage-stat em {
    }

    .stats-bottom-heading {
    }

    .brokerage-stat-divider {
        display: block;
        width: 1px;
        flex-grow: 0;
        flex-shrink: 0;
        background-color: #8a9397;
    }
}


/* Home - featured properties */

.homepage-featured-properties {
    padding: var(--standard-padding);
    padding-top: 4rem;
    text-align: center;
}

.homepage-featured-properties h2 {
    text-align: center;
}

.homepage-property-grid {
    margin-top: 4rem;
    display: flex;
    flex-direction: column;
    justify-content: space-between;
    align-items: stretch;
    gap: 1.4rem;
}

.homepage-property {
    display: block;
    height: 0;
    padding-top: 80%;
}

.homepage-property img {
}

.homepage-property-overlay {
    position: absolute;
    left: 0;
    top: 0;
    right: 0;
    bottom: 0;
    background-image: linear-gradient(to bottom,  rgba(0,0,0,0) 0%,rgba(0,0,0,0.17) 26%,rgba(0,0,0,0.38) 58%,rgba(0,0,0,0.65) 100%);
    color: white;
    text-align: center;
    display: flex;
    flex-direction: column;
    justify-content: flex-end;
    align-items: center;
    font-weight: 400;
}

.homepage-property-address {
    line-height: 1.1;
    font-size: 1.125rem;
}

.homepage-property-address br {}

.homepage-property-price {
    margin-top: 0.4rem;
}

.homepage-property-explore {
    margin-top: 0.5rem;
    opacity: 0.0;
    letter-spacing: 0.1em;
    position: relative;
    top: 0.8rem;
}

.homepage-featured-properties .button-row {
    margin-top: 2rem;
}

@media (hover: hover) {
    .homepage-property img {
        transform: scale(1.0);
        transition: transform 0.5s;
    }

    .homepage-property .homepage-property-explore {
        padding-bottom: 0rem;
        padding-top: 0rem;
        transition: padding-bottom 0.5s, opacity 0.5s;
    }

    .homepage-property:hover img {
        transform: scale(1.07);
    }

    .homepage-property:hover .homepage-property-explore {
        padding-bottom: 2rem;
        opacity: 1.0;
    }
}

@media screen and (min-width: 770px) {
    .homepage-property-grid {
        --gap: var(--standard-padding);
        flex-direction: row;
        flex-wrap: wrap;
        gap: var(--gap);
    }

    .homepage-property {
        --width: calc(0.5 * (100% - var(--gap)));
        width: var(--width);
        padding-top: calc(0.8 * var(--width));
    }
}

@media screen and (min-width: 1000px) {
    .homepage-property {
        --width: calc(0.33 * (100% - (2 * var(--gap))));
    }
}

@media screen and (min-width: 1200px) {
    .homepage-property-grid {
        width: 88%;
        margin-left: auto;
        margin-right: auto;
    }
}


/* Home - communities map */

.communities-map {}

.communities-map-sidebar {
    padding: var(--standard-padding);
    margin-left: auto;
    margin-right: auto;
    max-width: 19.5rem;
}

.communities-map-sidebar h2 {
    text-transform: uppercase;
    font-weight: 800;
    font-size: 2rem;
    letter-spacing: 0em;
}

.communities-map-sidebar span {
    font-size: 0.75rem;
    border-bottom: 1px solid var(--color-primary);
    display: block;
    width: 10rem;
    font-weight: 400;
    letter-spacing: 0.15em;
    padding-bottom: 0.6rem;
    margin-bottom: 0.6rem;
}

.communities-map-sidebar ul {
    column-count: 1;
}

.communities-map-sidebar li {
    list-style-type: none;
    margin-top: 0.2em;
    position: relative;
    margin-left: 1.3em;
    font-size: 1rem;
    padding-left: 0;
}

.communities-map-sidebar li::before {
    content: ' ';
    background-image: url(../images/map_placemark.svg);
    display: block;
    width: 1em;
    height: 1em;
    background-repeat: no-repeat;
    background-position: center center;
    background-size: contain;
    position: absolute;
    left: 0.3em;
    top: 0.5em;
    transition: filter 0.3s;
}

.communities-map-sidebar li.selected::before {
    filter: brightness(0) saturate(100%) invert(70%);
}

.communities-map-sidebar a {
    text-transform: uppercase;
    color: black;
    font-size: 87.5%;
    display: inline-block;
    padding: 0.3em 0.5em;
    padding-left: 1.9em;
    transition: color 0.3s, background-color 0.3s;
}

.communities-map-sidebar li.selected a {
    color: white;
    background-color: var(--color-primary);
}

.map-outer {
    position: relative;
    --left-crop: 63vw;
    width: 100%;
    height: calc((100vw + var(--left-crop)) * (798.0 / 1600.0));
    overflow: hidden;
}

.map-inner {
    position: absolute;
    left: calc(-1.0 * var(--left-crop));
    top: 0;
    bottom: 0;
    width: calc(100vw + var(--left-crop));
}

.map-inner > * {
    position: absolute;
    left: 0;
    top: 0;
    right: 0;
    bottom: 0;
}

.map-image {
    width: 100%;
}

.map-outer svg {
    width: 100%;
}

.map-outer polygon {
    opacity: 0.0;
    cursor: pointer;
}

.map-hovers {
    pointer-events: none;
    width: 100%;
}

.map-hover {
    position: absolute;
    z-index: 20;
    transition: transform 0.4s;
    font-size: 1.5vw;
    left: -100%;
    transform: scale(1.0);
}

.map-hover.selected {
    transform: scale(1.1);
}

.dev-mode .map-hover.selected {
    opacity: 0.9;
    transform: scale(1.0);
}

.map-hover img {
    width: 100%;
    opacity: 0.0;
    transition: opacity 0.4s;
}

.map-hover.selected img {
    opacity: 1.0;
}

.map-hover-label {
    position: absolute;
    text-align: center;
    width: 12em;
    left: 0%;
    top: 0%;
}

.map-hover-label,
.sub-label {
    text-transform: uppercase;
    color: white;
    font-weight: 500;
    text-shadow: 0em 0.0em 0.3em black;
}

.map-hover-label .pointer-line {
    display: block;
    width: 1.8em;
    height: 0.15em;
    background-color: white;
    position: absolute;
    box-shadow: 0 0.1em 0.2em 0 rgba(0, 0, 0, 1.8);
}

.map-hover.labels-hidden {
    opacity: 0.0;
}

.map-hover[data-map-target="seattle"] {
    width: 10.5%;
    left: 53.5%;
    top: 38.6%;
}

.map-hover[data-map-target="bellevue"] {
    width: 7.3%;
    left: 65.9%;
    top: 49.8%;
}

.map-hover[data-map-target="west-bellevue"] {
    width: 3.1%;
    left: 63.5%;
    top: 50.4%;
}

.map-hover[data-map-target="west-bellevue"] .pointer-line {
    left: 17%;
    top: 9%;
    transform: rotate(15deg);
}

.map-hover[data-map-target="mercer-island"] {
    width: 2.4%;
    left: 63.6%;
    top: 62.7%;
}

.map-hover.selected[data-map-target="mercer-island"] {
    transform: scale(1.3);
}

.map-hover[data-map-target="kirkland"] {
    width: 5.8%;
    left: 63.7%;
    top: 37.2%;
}

.map-hover.selected[data-map-target="kirkland"] {
    transform: scale(1.2);
}

.map-hover[data-map-target="woodinville-redmond"] {
    width: 12.7%;
    left: 67.9%;
    top: 24.8%;
}

.map-hover[data-map-target="edmonds-shoreline"] {
    width: 5.6%;
    left: 55.3%;
    top: 12.6%;
}


.map-hover.selected[data-map-target="edmonds-shoreline"] {
    transform: scale(1.15);
}

.map-hover[data-map-target="bothell-kenmore"] {
    width: 9.4%;
    left: 60.2%;
    top: 17.1%;
}
.map-hover[data-map-target="sammamish-issaquah"] {
    width: 13.2%;
    left: 72%;
    top: 52%;
}
.map-hover[data-map-target="renton-newcastle"] {
    width: 11.3%;
    left: 64%;
    top: 68.7%;
}

.map-hover[data-map-target="seattle"] img {
}

.map-hover[data-map-target="seattle"] .map-hover-label {
    left: 0.9%;
    top: 24.9%;
}
.map-hover[data-map-target="bellevue"] img {}
.map-hover[data-map-target="bellevue"] .map-hover-label {
    top: 64%;
    left: -15%;
    font-size: 90%;
}
.map-hover[data-map-target="west-bellevue"] img {}
.map-hover[data-map-target="west-bellevue"] .map-hover-label {
    font-size: 90%;
    left: 10%;
    top: 44%;
}

.map-hover[data-map-target=west-bellevue].selected {
    transform: scale(4.0);
}

.map-hover[data-map-target=west-bellevue].selected .map-hover-label {
    opacity: 0.0;
    font-size: 2vw;
}

.map-hover[data-map-target="mercer-island"] img {
}

.map-hover[data-map-target="mercer-island"] .map-hover-label {
    left: -340%;
    top: 46%;
    font-size: 90%;
}

.map-hover[data-map-target="mercer-island"] .pointer-line {
    left: 75%;
    top: 21%;
}

.map-hover[data-map-target="kirkland"] img {}
.map-hover[data-map-target="kirkland"] .map-hover-label {
    left: -43%;
    top: 17%;
    font-size: 90%;
}
.map-hover[data-map-target="woodinville-redmond"] img {}
.map-hover[data-map-target="woodinville-redmond"] .map-hover-label {
    left: -4%;
    top: 29%;
    font-size: 89%;
}
.map-hover[data-map-target="edmonds-shoreline"] img {}
.map-hover[data-map-target="edmonds-shoreline"] .map-hover-label {
    font-size: 73%;
    text-shadow: none;
    color: black;
    left: -126%;
    top: 76%;
}
.map-hover[data-map-target="bothell-kenmore"] img {}
.map-hover[data-map-target="bothell-kenmore"] .map-hover-label {
    font-size: 90%;
    top: 44%;
    left: 4%;
}
.map-hover[data-map-target="sammamish-issaquah"] img {}
.map-hover[data-map-target="sammamish-issaquah"] .map-hover-label {
    font-size: 90%;
    left: 8.3%;
    top: 58%;
}
.map-hover[data-map-target="renton-newcastle"] img {}
.map-hover[data-map-target="renton-newcastle"] .map-hover-label {
    font-size: 90%;
    top: 41%;
    left: 0%;
}

.sub-label {
    font-size: 22%;
    position: absolute;
    left: 0%;
    top: 0%;
    opacity: 0.0;
    transition: opacity 0.4s;
}

.selected .sub-label {
    opacity: 1.0;
}

.sub-label.hunts-point {
    left: 26%;
    top: 30%;
}

.sub-label.yarrow-point {
    left: 54%;
    top: 14%;
}

.sub-label.medina {
    top: 58%;
    left: 6%;
}

.sub-label.clyde-hill {
    top: 44%;
    left: 50%;
}

@media screen and (min-width: 500px) {
    .communities-map-sidebar {
        max-width: 31rem;
    }

    .communities-map-sidebar ul {
        column-count: 2;
    }
}

@media screen and (min-width: 800px) {
    .communities-map {
        position: relative;
    }

    .communities-map-sidebar ul {
        column-count: 1;
    }

    .communities-map-sidebar {
        margin-left: 0;
        margin-right: 0;
        padding: 0;
        position: absolute;
        left: 7%;
        top: 7%;
        z-index: 20;
        max-width: 23vw;
    }

    .communities-map-sidebar h2 {
        font-size: 4.9vw;
    }

    .communities-map-sidebar span {
        font-size: 1.3vw;
        width: 19em;
    }

    .communities-map-sidebar ul {}

    .communities-map-sidebar li {
        font-size: 1.4vw;
    }

    .communities-map-sidebar a {}

    .map-outer {
        --left-crop: 0vw;
    }

    .map-outer>* {}

    .map-image {}

    .map-outer svg {}

    .map-outer polygon {}

    .map-hovers {}

    .map-hover {
        font-size: 1vw;
    }

    .map-hover img {}

    .map-hover-label {}

    .with-sub {}

    .map-hover-label br {}

    .map-hover-sub-labels {
        font-size: 100%;
    }

    .sub-label {}

    .sub-label br {}
}


/* Homepage featured communities grid */

.homepage-featured-communities {
    --gap: 1rem;
    text-align: center;
    padding: var(--gap);
}

.homepage-featured-communities h2 {
    margin-top: 4rem;
    margin-left: auto;
    margin-right: auto;
}

.communities-grid {
    --n-wide: 1;
    margin-top: 5rem;
    display: flex;
    flex-direction: row;
    flex-wrap: wrap;
    justify-content: space-between;
    align-items: center;
    gap: var(--gap);
}

.communities-cell {
    --width: calc((100% - var(--gap) * (var(--n-wide) - 1)) / var(--n-wide));
    width: var(--width);
    padding-top: calc(0.59 * var(--width));
    display: block;
    position: relative;
    overflow: hidden;
}

.communities-cell img {
    position: absolute;
    left: 0;
    top: 0;
    right: 0;
    bottom: 0;
    object-fit: cover;
    width: 100%;
}

.communities-cell span {
    position: absolute;
    left: 0;
    top: 0;
    right: 0;
    bottom: 0;
    width: 100%;
    background-color: rgba(0,0,0,0.3);
    display: flex;
    justify-content: center;
    align-items: center;
    font-weight: 500;
    color: white;
    text-decoration: none;
    letter-spacing: 0.2em;
    font-size: 1.25rem;
}

.homepage-featured-communities .button-row {
    margin-top: 2rem;
}

@media (hover: hover) {
    .communities-cell span {
        transition: background-color 0.5s;
    }

    .communities-cell:hover span {
        background-color: rgba(0,0,0,0.7);
    }

    .communities-cell:hover span::after {
        content: 'EXPLORE MORE';
        display: block;
        position: absolute;
        top: 77%;
        font-size: 0.875rem;
        font-weight: 300;
        letter-spacing: 0.1em;
    }
}

@media screen and (min-width: 650px) {
    .communities-grid {
        --n-wide: 2;
    }
}

@media screen and (min-width: 1000px) {
    .communities-grid {
        --n-wide: 3;
    }
}


/* Homepage - about us */

.homepage-about-us {
    background-color: var(--color-secondary);
}

.homepage-about-us-image {
    padding-top: 100%;
}

.homepage-about-us-text {
    padding: var(--standard-padding);
    text-align: center;
    width: 80%;
    margin-left: auto;
    margin-right: auto;
}

.homepage-about-us-text h2 {
    margin-top: 1rem;
    font-size: 2rem;
}

.homepage-about-us-text p {
    color: var(--color-near-black);
    margin-top: 1.5em;
    font-weight: 400;
    line-height: 1.65;
    font-size: 0.875rem;
    max-width: 35rem;
    margin-left: auto;
    margin-right: auto;
}

@media screen and (min-width: 600px) {
    .homepage-about-us-text h2 {
    }
}

@media screen and (min-width: 950px) {
    .homepage-about-us {
        display: flex;
        flex-direction: row;
        justify-content: space-between;
        align-items: stretch;
    }

    .homepage-about-us-image {
        width: 50%;
        padding-top: 0;
    }

    .homepage-about-us-text {
        width: 50%;
        box-sizing: border-box;
        padding: 3.2rem;
        --vertical-padding: calc(min(8rem, 0.20 * (100vw - 850px)));
        padding-top: var(--vertical-padding);
        padding-bottom: var(--vertical-padding);
    }
}


/* Community detail */

.content-outer.community-detail-page {
}

.community-frame {
    margin-top: 2rem;
    --color-border: #0a0606;
    border: 1px solid var(--color-border);
    position: relative;
    --text-padding: 1.4rem;
}

.community-frame>img {
    width: calc(100% + 2px);
    border-bottom: 1px solid var(--color-border);
    position: relative;
    left: -1px;
    top: -1px;
}

.community-blurb-outer>h2 {
    text-align: center;
    margin-top: 3.6rem;
    padding-left: 0.7rem;
    padding-right: 0.7rem;
}

.community-blurb {
    color: var(--color-near-black);
    font-size: 0.875rem;
    font-weight: 400;
    line-height: 1.5;
    padding: var(--text-padding);
    padding-top: 2.7rem;
}

.community-detailed-intro {
    padding: var(--text-padding);
    color: var(--color-near-black);
    font-size: 0.875rem;
    font-weight: 400;
}

.community-detail-row {
    margin-bottom: 4rem;
}

.community-detail-row .photo-column {
    width: 100%;
    display: block;
}

.community-detail-row .text-column {}

.community-detail-row h2 {
    color: var(--color-primary);
    text-align: center;
    margin-top: 2.5rem;
}

.community-detail-row p {
    margin-top: 1.6em;
}

.community-detail-row ul {}

.community-detail-row li {
    margin-top: 0.7em;
}

.community-listings {
    padding: var(--text-padding);
}

@media screen and (min-width: 900px) {
    .content-outer.community-detail-page {
        --photo-outset: 3rem;
        --side-padding: calc(var(--photo-outset) + var(--standard-padding));
        padding-left: var(--side-padding);
        padding-right: var(--side-padding);
        max-width: none;
    }

    .content-outer.community-detail-page .breadcrumbs {
        margin-left: calc(-1 * var(--photo-outset));
    }

    .community-frame {
        margin-top: calc(2rem + var(--photo-outset));
    }

    .community-frame>img {
        border-bottom: none;
        left: calc(-1 * var(--photo-outset));
        top: calc(-1 * var(--photo-outset));
        width: 66%;
        max-width: 38rem;
        float: left;
    }

    .community-blurb-outer>h2 {
        margin-top: 3rem;
    }

    .community-blurb {
    }

    .community-blurb::after {
        content: ' ';
        clear: left;
        display: block;
    }

    .community-detailed-intro {
    }

    .community-detail-row {
        display: flex;
        flex-direction: row;
        justify-content: space-between;
        align-items: flex-start;
        margin-top: 6rem;
    }

    .community-detail-row:first-child {
        margin-top: 3rem;
    }

    .community-detail-row .photo-column {
        width: 50%;
        height: 33vw;
        object-fit: cover;
    }

    .community-detail-row .text-column {
        flex-shrink: 1;
        padding-left: 3rem;
        padding-right: 3rem;
    }

    .community-detail-row:nth-child(odd) .photo-column {
        order: 2;
    }

    .community-detail-row:nth-child(odd) .text-column {
        order: 1;
    }

    .community-detail-row h2 {
        margin-top: 0rem;
        letter-spacing: 0.05em;
    }

    .community-detail-row p {
    }

    .community-detail-row ul {}

    .community-detail-row li {
    }
}

@media screen and (min-width: 1300px) {
    .content-outer.community-detail-page {
    }

    .community-frame {
    }

    .community-frame>img {
    }

    .community-blurb-outer>h2 {
    }

    .community-blurb-outer {
    }

    .community-blurb {
    }

    .community-detail-row {
        align-items: center;
        justify-content: space-around;
    }

    .community-detail-row .text-column > * {
        max-width: 27rem;
        margin-left: auto;
        margin-right: auto;
    }
}


/* Listings thumbnail grids */

.content-outer.listings-page {
    max-width: none;
}

.content-outer.listings-page .pagination {
    margin-top: 3rem;
}

.listings-grid-map {
    aspect-ratio: 1.0;
    margin-top: 1.7rem;
    z-index: 10;
}

.no-matching-listings {
    background-color: var(--color-secondary);
    text-transform: uppercase;
    letter-spacing: 0.2em;
    font-weight: 200;
    font-size: 1.75rem;
    text-align: center;
    line-height: 1.2;
    padding: 2rem;
    border-radius: 0.5rem;
}

.no-matching-listings .dark-button {
    margin-top: 1rem;
}

.listings-thumbs {
    display: flex;
    flex-direction: column;
    justify-content: space-between;
    align-items: stretch;
    --listings-gap: 1rem;
    gap: var(--listings-gap);
    margin-top: 2rem;
}

.listings-thumb-image-outer {
    position: absolute;
    left: 0;
    top: 0;
    right: 0;
    bottom: 0;
}


.listings-thumb {
    --listing-content-padding: 3vw;
    font-size: 4.1vw;
    cursor: pointer;
    overflow: hidden;
    background-color: var(--color-near-black);
}

.community-listings .listings-thumb {
    font-size: 3.7vw;
}

.listings-thumb-main {
    position: relative;
    padding-top: 75%;
    background-color: black;
}

.listings-thumb-overlay {
    position: absolute;
    left: 0;
    top: 0;
    right: 0;
    bottom: 0;
    background-image: linear-gradient(to bottom,  rgba(0,0,0,0) 0%,rgba(0,0,0,0.17) 26%,rgba(0,0,0,0.38) 58%,rgba(0,0,0,0.65) 100%);
    color: white;
    padding: var(--listing-content-padding);
    display: flex;
    flex-direction: column;
    justify-content: space-between;
    text-shadow: 0em 0em 0.1em black;
    font-weight: 400;
}

.listings-thumb-top {
    display: flex;
    flex-direction: row;
    justify-content: space-between;
    align-items: flex-start;
    gap: 1em;
}

.listing-thumb-address {
    text-transform: uppercase;
}

.listing-thumb-address div:first-child {
    font-size: 125%;
}

.listing-thumb-address div:last-child {
    margin-top: 0.3em;
    font-size: 90%;
}

.listings-thumb-status {
    background-color: #008852;
    text-transform: uppercase;
    text-shadow: none;
    font-size: 75%;
    padding: 0.4em;
    text-align: center;
    line-height: 1.2;
}

.listings-thumb-status.closed {
    background-color: #FF0000;
}

.listings-thumb-status.pending,
.listings-thumb-status.pending-backup-offer-requested {
    background-color: #C5C500;
}

.listings-thumb-price {
    margin-top: auto;
    font-size: 125%;
    font-weight: 600;
}

.listings-thumb-bottom {
    display: flex;
    flex-direction: row;
    justify-content: space-between;
    align-items: center;
    margin-top: 0.7em;
}

.listings-thumb-stats {
    display: flex;
    flex-direction: row;
    justify-content: flex-start;
    align-items: flex-start;
    gap: 0.7em;
    font-size: 65%;
    font-weight: 300;
}

.listings-thumb-stats .listing-stat {
    display: flex;
    flex-direction: column;
    justify-content: space-between;
    align-items: center;
    gap: 0.5em;
}

.listings-thumb-stats .listing-stat.left-aligned {
    align-items: flex-start;
}

.listings-thumb-stats .listing-stat strong {
    font-weight: 400;
}

.listings-thumb-stats .listing-stat span {
}

.listings-thumb-media {
    margin-left: auto;
    font-size: 65%;
}

.photo-count {
}

.virtual-tour-link {
    color: white;
}

.photo-count,
.virtual-tour-link {
    display: flex;
    flex-direction: row;
    justify-content: flex-end;
    align-items: center;
    gap: 0.4em;
    white-space: nowrap;
}

.photo-count::before,
.virtual-tour-link::before {
    content: ' ';
    display: inline-block;
    width: 1.6em;
    height: 1.6em;
    background-size: contain;
    background-repeat: no-repeat;
}

.photo-count::before {
    background-image: url(../images/icon_camera_white.svg);
}

.virtual-tour-link::before {
    background-image: url(../images/icon_play_white.svg);
}

.listings-thumb-footer {
    color: white;
    padding: var(--listing-content-padding);
    font-size: 85%;
}

.listings-thumb-footer .upper {
    display: flex;
    flex-direction: row;
    justify-content: flex-start;
    align-items: center;
    gap: 1em;
}

.listings-thumb-footer .upper img {
    width: 4em;
}

.listings-thumb-footer .upper p {
    margin-top: 0;
}

.listings-thumb-footer .upper br {}

.listings-thumb-footer > p {
    margin-top: 0.6em;
}

.listings-thumb-footer .open-house-label {
    color: #01e087;
}

.community-listings .pagination {
    margin-top: 2.3rem;
}

.listings-thumb.highlight-animation {
    animation-name: listing-thumb-highlight;
    animation-play-state: running;
    animation-duration: 3s;
    animation-iteration-count: 1;
    animation-timing-function: ease-in;
}

@keyframes listing-thumb-highlight {
    from {
        outline: 0.8rem solid #688947;
    }

    to {
        outline: 0.1rem solid transparent;
    }
}

@media (hover: hover) {
    .listings-thumb .listings-thumb-image-outer img {
        transform: scale(1.0);
        transition: transform 0.4s;
    }

    .listings-thumb:hover .listings-thumb-image-outer img {
        transform: scale(1.07);
    }

    .listings-thumb {
        transition: background-color 0.4s;
    }

    .listings-thumb:hover {
        background-color: #454545;
    }
}

@media screen and (min-width: 500px) {
    .listings-grid-map {
        aspect-ratio: 2.5;
    }
}

@media screen and (min-width: 800px) {
    .listings-grid-map {
        aspect-ratio: auto;
        height: 20rem;
    }

    .listings-thumbs {
        flex-direction: row;
        flex-wrap: wrap;
        justify-content: flex-start;
    }

    .listings-thumb {
        --listing-content-padding: 1.5vw;
        font-size: 2vw;
        cursor: pointer;
        width: calc(0.5 * (100% - var(--listings-gap)));
    }

    .community-listings .listings-thumb {
        font-size: 1.9vw;
    }
}

@media screen and (min-width: 1000px) {
    .listings-thumb {
        --listing-content-padding: 1rem;
        font-size: 1.25rem;
    }

    .community-listings .listings-thumb {
        font-size: 1.25rem;
    }
}

@media screen and (min-width: 1400px) {
    .listings-thumb {
        width: calc((1.0 / 3.0) * (100% - (2 * var(--listings-gap))));
    }

    .community-listings .listings-thumb {
        font-size: 1.125rem;
    }
}


/* Listing search / sort bar */

.listings-filter-sort-bar {
    display: flex;
    flex-direction: column;
    justify-content: space-between;
    align-items: flex-end;
    margin-top: 3rem;
    gap: 1rem;
}

.custom-dropdown {
    color: var(--color-near-black);
    font-weight: 400;
    position: relative;
    display: inline-block;
}

.dropdown-head {
    display: inline-flex;
    justify-content: space-between;
    align-items: center;
    gap: 0.2rem;
    cursor: pointer;
    border: 0;
    background-color: transparent;
    font-family: Montserrat, sans-serif;
    letter-spacing: 0.1em;
    color: var(--color-primary);
    font-size: 0.875rem;
}

.dropdown-head::after {
    content: ' ';
    background-image: url(../images/arrow_down.svg);
    width: 1.4rem;
    height: 1.4rem;
    background-position: center center;
    background-size: contain;
    position: relative;
    top: -0.05rem;
    transform: rotate(0deg);
    transition: transform 0.2s;
}

.expanded .dropdown-head::after {
    transform: rotate(180deg);
}

.dropdown-body {
    overflow: hidden;
    overflow-y: auto;
    max-height: 0;
    transition: max-height 0.3s, opacity 0.1s;
    position: absolute;
    right: 0;
    top: 1.8rem;
    z-index: 20;
    background-color: white;
    box-shadow: 0 4px 8px 0 rgba(0,0,0,0.12), 0 2px 4px 0 rgba(0,0,0,0.08);
    opacity: 0.0;
    pointer-events: none;
    border-radius: 0.2rem;
    padding: 0.5rem;
}

.dropdown-body.listings-search-options {
    width: 16rem;
    overflow-y: hidden;
    padding: 1rem;
}

.expanded .dropdown-body {
    max-height: 25rem;
    opacity: 1.0;
    pointer-events: all;
}

.listings-search-options .checkbox-list {
    display: flex;
    flex-direction: column;
    justify-content: space-between;
    align-items: flex-start;
    gap: 0.3rem;
}

.listings-search-options .checkbox-list label {
    cursor: pointer;
    margin-top: 0.1rem;
}

.listings-search-options .checkbox-list.error label {
    color: var(--error-color);
}

.listings-search-options .dark-button {
    width: 100%;
    text-align: center;
    margin-top: 1rem;
}

.listings-sort-options {
    width: 14.8rem;
}

.dropdown-option {
    display: block;
    padding-top: 0.5em;
    padding-bottom: 0.5em;
    padding-left: 0.5em;
    padding-right: 0.5em;
}

.dropdown-option.selected {
    background-color: var(--color-primary);
    color: white;
}

@media (hover: hover) {
    .dropdown-option {
        background-color: white;
        color: var(--color-primary);
        transition: background-color 0.2s, color 0.2s;
    }

    .dropdown-option:hover {
        background-color: var(--color-primary);
        color: white;
    }
}

@media screen and (min-width: 400px) {
    .listings-filter-sort-bar {
        flex-direction: row;
        justify-content: flex-end;
        align-items: center;
        gap: 2rem;
    }
}

@media screen and (min-width: 500px) {
    .listings-filter-sort-bar {
        gap: 3rem;
    }
}


/* Listing detail page - carousel */

.hero.listing-photos {
    padding-top: 66.67%;
}

.hero-slide {
    position: absolute;
    width: 100%;
    left: 0;
    top: 0;
    right: 0;
    bottom: 0;
    overflow: hidden;
    opacity: 0.0;
    transition: opacity 0.5s ease-in-out;
    pointer-events: none;
}

.hero-slide.faded-in {
    opacity: 1.0;
    pointer-events: all;
}

.hero-slide.instant-on {
    transition: none;
    opacity: 1.0;
    pointer-events: all;
}

.hero-slide.instant-off {
    transition: none;
    opacity: 0.0;
}

.hero-overlay {
    position: absolute;
    width: 100%;
    left: 0;
    top: 0;
    right: 0;
    bottom: 0;
    pointer-events: none;
}

.hero.listing-photos .hero-overlay {
    background-color: rgba(0, 0, 0, 0.4);
}

.hero-arrows {
    position: absolute;
    width: 100%;
    left: 0;
    top: 0;
    right: 0;
    bottom: 0;
    display: flex;
    flex-direction: row;
    justify-content: space-between;
    align-items: center;
    pointer-events: none;
}

.hero-arrows a {
    pointer-events: all;
    background-color: #0000005c;
    background-image: url(../images/carousel_arrow_left.svg);
    background-repeat: no-repeat;
    background-position: 32% center;
    background-size: calc(0.1 * var(--size));
    overflow: hidden;
    text-indent: -9999px;
    --size: 6rem;
    width: calc(0.55 * var(--size));
    height: var(--size);
    display: block;
    border-top-right-radius: var(--size);
    border-bottom-right-radius: var(--size);
}

.hero-arrows a:first-child {
    padding-left: 3%;
}

.hero-arrows a:last-child {
    transform: rotate(180deg);
    padding-right: 3%;
}

.scroll-notice {
    display: none;
}

.listing-thumbnail-band {
    display: none;
}

@media (hover: hover) {
    .scroll-notice > a {
        opacity: 0.7;
        transition: opacity 0.3s;
    }

    .scroll-notice > a:hover {
        opacity: 1.0;
    }
}

@media (hover: hover) {
    .hero-arrows a {
        transition: background-color 0.4s;
    }

    .hero-arrows a:hover {
        background-color: #000000b5;
    }
}

@media screen and (min-width: 700px) {
    .scroll-notice {
        display: flex;
        position: absolute;
        left: 0;
        top: 0;
        right: 0;
        bottom: 0;
        justify-content: center;
        align-items: flex-end;
    }

    .scroll-notice > a {
        color: white;
        font-weight: 600;
        font-size: 1rem;
        margin-bottom: 1.9rem;
        pointer-events: all;
        display: flex;
        flex-direction: column;
        justify-content: space-between;
        align-items: center;
        gap: 1rem;
    }

    .scroll-notice > a > span {
        display: inline-block;
        width: 1.7rem;
        height: 1.9rem;
        background-image: url(../images/carousel_arrow_left.svg);
        background-repeat: no-repeat;
        background-position: center center;
        position: relative;
        transform: rotate(-90deg);
        top: -0.5rem;
    }

    .scroll-notice > a > span::after {
        content: ' ';
        display: inline-block;
        background-image: url(../images/carousel_arrow_left.svg);
        background-repeat: no-repeat;
        background-position: center center;
        position: absolute;
        left: -0.8rem;
        top: 0px;
        right: 0.8rem;
        bottom: 0;
    }
    
    .listing-thumbnail-band {
        position: relative;
        display: block;
        background-color: var(--color-primary);
        overflow: hidden;
        --thumb-gap: 1px;
        --thumb-aspect: 1.7;
        --thumb-count: 7;
        --thumb-width: calc((100vw - (var(--thumb-gap) * (var(--thumb-count) - 1))) / var(--thumb-count));
        --thumb-height: calc(var(--thumb-width) / var(--thumb-aspect));
        height: var(--thumb-height);
    }

    .listing-thumbnail-band-inner {
        display: flex;
        justify-content: space-between;
        align-items: center;
        gap: var(--thumb-gap);
        background-color: white;
        position: relative;
        height: var(--thumb-height);
        width: calc(var(--photo-count) * var(--thumb-width) + (var(--thumb-gap) * (var(--photo-count) - 1)));
    }

    .listing-thumbnail-band-inner img {
        display: block;
        width: var(--thumb-width);
        object-fit: cover;
        aspect-ratio: var(--thumb-aspect);
        position: relative;
        opacity: 0.6;
        transition: opacity 0.4s;
        cursor: pointer;
    }

    .listing-thumbnail-band-inner img.active {
        opacity: 1.0;
    }
}

@media screen and (min-width: 900px) {
    .hero.listing-photos {
    }

    .hero-arrows a {
        --size: 8rem;
        background-size: calc(0.13 * var(--size));
    }
}


/* Listing detail page - key details / top */

.content-outer.listing-detail-page {
    max-width: 38rem;
}

.listing-key-details {
    margin-top: 2rem;
}

.key-details-left {
}

.listing-broker-details {}

.mls-broker-details {
    font-size: 1rem;
    display: flex;
    justify-content: space-between;
    align-items: center;
    gap: 1rem;
    max-width: 33rem;
}

.mls-broker-details .mls-icon {
    width: 3rem;
}

.mls-broker-details p {
    margin-top: 0;
    text-transform: uppercase;
    line-height: 1.2;
}

.listing-detail-page h2 {
    font-weight: 700;
    font-family: Montserrat, sans-serif;
    font-size: 2.25rem;
    color: black;
    text-transform: uppercase;
    line-height: 1.0;
    margin-top: 2rem;
    letter-spacing: 0;
}

.key-details-left h3 {
    text-transform: uppercase;
    font-size: 1.5rem;
    margin-top: 0.7rem;
    font-weight: 400;
    color: #727272;
}

.listing-number {
    font-size: 1.25rem;
    color: black;
    margin-top: 0.7rem;
}

.listing-stats {
    border-top: 1px solid var(--color-gray-accent);
    margin-top: 2.4rem;
    padding-top: 2.4rem;
    display: flex;
    justify-content: flex-start;
    align-items: center;
    flex-wrap: wrap;
    font-size: 1.5rem;
    color: black;
}

.listing-stats .listing-stat {
    display: flex;
    justify-content: flex-start;
    align-items: center;
    margin-bottom: 0.6em;
}

.listing-stats .listing-stat strong {
    display: inline-block;
    width: 5em;
}

.listing-stats .listing-stat span {
    display: inline-block;
    width: 5em;
}

.buttons-left {
    display: flex;
    flex-wrap: wrap;
    justify-content: center;
    align-items: flex-start;
    gap: 1rem;
    margin-top: 1.8rem;
}

.key-details-right {
    background-color: var(--color-primary);
    color: white;
    padding: 1.7rem;
    margin-top: 3rem;
    max-width: 22rem;
    margin-left: auto;
    margin-right: auto;
}

.key-details-right .price {
    font-size: 2.25rem;
    font-weight: 400;
}

.stats-right {
    margin-top: 1.2rem;
    display: flex;
    flex-direction: column;
    justify-content: space-between;
    align-items: flex-start;
    gap: 1rem;
}

.stats-right .stat {}

.stats-right .stat span {
    font-size: 0.875rem;
    display: block;
}

.stats-right .stat strong {
    display: block;
    text-transform: uppercase;
    font-weight: 500;
    margin-top: 0.4rem;
}

.buttons-right {
    display: flex;
    flex-direction: column;
    justify-content: space-between;
    align-items: stretch;
    margin-top: 1.5rem;
    gap: 0.8rem;
    text-align: center;
}

.listing-key-details .btn {
    letter-spacing: 0.25em;
    font-size: 0.875rem;
    padding-top: 0.9em;
    padding-bottom: 0.9em;
    padding-left: 1.5em;
    padding-right: 1.5em;
    line-height: 1.2;
}

.sharing-buttons {
    display: flex;
    justify-content: space-between;
    align-items: center;
    gap: 1rem;
    margin-top: 1.4rem;
}

.sharing-buttons strong {
    font-size: 1.125rem;
}

.sharing-buttons>a {
    border: 1px solid white;
    border-radius: 50%;
    display: flex;
    justify-content: center;
    align-items: center;
    width: 1.9rem;
    padding: 0.2rem;
    aspect-ratio: 1;
}

.sharing-buttons>a img {
    width: 82%;
}

.facebook {}

.facebook img {}

.linkedin {}

.linkedin img {}

.twitter {}

.twitter img {}

.email {}

.email img {}

.listing-open-houses {
    background-color: var(--color-primary);
    color: white;
    padding: 1.5rem;
    padding-bottom: 1.1rem;
    margin-top: 2.2rem;
    margin-bottom: -0.4rem;
}

.listing-open-houses h2 {
    color: white;
    font-size: 1.25rem;
    margin-top: 0;
}

.listing-open-houses ul {
    margin-top: 0;
}

.listing-open-houses > ul {
    margin-top: 0.8rem;
}

.listing-open-houses li {
    list-style-type: none;
    margin-left: 0;
    padding-left: 0;
    margin-top: 0.6em;
}

.listing-open-houses li.with-details {
    margin-top: 1.5rem;
}

.open-house-details {
    margin-left: 2rem;
}

.open-house-details li {
}


@media screen and (min-width: 900px) {
    .buttons-left {
    justify-content: flex-start;
    }

    .key-details-right {
        padding: 2.8rem;
        padding-bottom: 4rem;
    }
}


@media screen and (min-width: 900px) {
    .listing-key-details {
        display: flex;
        justify-content: space-between;
        align-items: flex-start;
        gap: 2rem;
        margin-top: 3.4rem;
    }

    .key-details-left {
        margin-left: 0;
        margin-right: 0;
        max-width: none;
    }

    .key-details-right {
        margin-top: 0;
        margin-left: 0;
        margin-right: 0;
        flex-grow: 1;
        max-width: 24rem;
    }
    
    .stats-right {
        flex-wrap: wrap;
        flex-direction: row;
    }

    .content-outer.listing-detail-page {
        max-width: 65rem;
    }
}


/* Listing detail page - about / stats */

.listing-about {
    margin-top: 4rem;
}

.listing-about h2 {}

.listing-about p {
    margin-top: 2rem;
    line-height: 1.55;
}

.listing-details {
}

.listing-details h2 {
}

.detail-group {}

.group-heading {
    text-transform: uppercase;
    letter-spacing: 0.25em;
    border-bottom: 1px dashed var(--color-gray-accent);
    padding-top: 0.6em;
    padding-bottom: 0.6em;
    display: flex;
    justify-content: space-between;
    align-items: center;
    margin-top: 1.6rem;
    line-height: 1.3;
}

.group-heading::after {
    content: '+';
    font-weight: 400;
    font-size: 1.25rem;
}

.expanded .group-heading::after {
    content: '-';
}

.details-heading-row {
    display: flex;
    flex-wrap: wrap;
    justify-content: space-between;
    align-items: flex-end;
}

.details-heading-row .btn {margin-top: 1rem;}

.detail-items {
    overflow: hidden;
    max-height: 0;
    transition: max-height 0.3s;
    display: flex;
    flex-direction: column;
    justify-content: space-between;
    align-items: stretch;
    gap: 1rem;
    padding-top: 1rem;
}

.expanded .detail-items {
    max-height: 200rem;
}

.detail-item {
    display: flex;
    flex-direction: column;
    justify-content: space-between;
    align-items: flex-start;
    gap: 0.5rem;
    border-bottom: 1px dashed var(--color-gray-accent);
    padding-bottom: 0.8rem;
    line-height: 1.3;
}

.detail-item strong {}

.detail-item span {
}

.detail-item a {
    text-decoration: underline;
}

@media screen and (min-width: 450px) {
    .detail-items {
    }

    .detail-item {
        flex-direction: row;
        justify-content: flex-start;
    }

    .detail-item strong {
        display: inline-block;
        width: 13em;
        flex-shrink: 0;
    }

    .detail-item span {
    }
}


@media screen and (min-width: 900px) {
    .detail-items {
        flex-direction: row;
        flex-wrap: wrap;
        gap: 0;
        padding-top: 0;
    }
    
    .expanded .detail-items {
        max-height: 80rem;
    }

    .detail-item {
        flex-grow: 1;
        padding-top: 0.9em;
    }

    .detail-item span {
        width: 13em;
    }

    .listing-about {
    }

    .listing-about h2 {}

    .listing-about p {
        font-size: 1.25rem;
        max-width: 44em;
    }
}


/* Generic article styling */

.content-outer.article-page {
    max-width: 47rem;
    padding-top: 3.5rem;
}

.content-outer.wide-article-page {
    max-width: 47rem;
    padding-top: 3.5rem;
}

.article {
    margin-top: 4rem;
    color: var(--color-near-black);
}

.article::after {
    content: ' ';
    display: block;
    clear: both;
}

.article h2 {
    text-transform: uppercase;
    color: var(--color-primary);
    margin-bottom: 0.8em;
}

.article h2.plain {
    font-family: inherit;
    text-transform: none;
    letter-spacing: 0;
    font-weight: 600;
    color: var(--color-near-black);
    font-size: 1.5rem;
}

.article p {
    line-height: 1.55;
}

.article a {
    font-weight: 500;
}

.article-video {
    position: relative;
    padding-top: 56.25%;
    margin-top: 2rem;
    margin-bottom: 2rem;
}

.article-video iframe {
    position: absolute;
    inset: 0;
    width: 100%;
    height: 100%;
    border: 0;
}

.article h3 {
    font-weight: 700;
    margin-top: 1.4em;
}

.article img.right-floated {
    display: block;
    width: 100%;
    margin-top: 1.5rem;
}

.article img.left-floated {
    display: block;
    width: 100%;
    margin-bottom: 1.5rem;
}

.article ul {
    margin-top: 1.5rem;
}

.article li {
}

.article ul li ul {
    margin-top: 0;
}

.article ul li ul li {
    list-style-type: circle;
    margin-left: 1.5em;
}

.article .button-row {
    padding-top: 2rem;
}

.dual-column-layout {
}

.dual-column-layout .left-column {
}

.dual-column-layout .right-column {
    margin-top: 2rem;
}

.dual-column-layout img {
    width: 100%;
}

.arrow-404 {
    width: 4rem;
    display: block;
    margin-left: auto;
    margin-right: auto;
    margin-top: 0;
    opacity: 0.7;
    position: relative;
    top: 2.5rem;
}

@media screen and (min-width: 800px) {
    .article img.right-floated {
        width: 50%;
        float: right;
        margin-left: 1.5rem;
        margin-bottom: 1.5rem;
        margin-top: 0;
    }

    .article img.left-floated {
        width: 50%;
        float: left;
        margin-right: 1.5rem;
        margin-bottom: 1.5rem;
        margin-top: 0;
    }

    .article ul li ul li {
        margin-left: 2.2em;
    }
}

@media screen and (min-width: 1000px) {
    .content-outer.article-page {
        width: 90%;
        max-width: 56rem;
        font-size: 1.125rem;
    }

    .content-outer.wide-article-page {
        width: 90%;
        max-width: 80rem;
        font-size: 1.125rem;
    }

    .article {
    }

    .article h2 {
    }

    .article p {
    }

    .article h3 {
    }

    .article ul {
    }

    .article li {
    }

    .dual-column-layout {
    display: flex;
    flex-direction: row;
    justify-content: space-between;
    align-items: flex-start;
    gap: 2.5rem;
    }

    .dual-column-layout .left-column {
    width: 50%;
    flex-shrink: 0;
    }

    .dual-column-layout .right-column {
        margin-top: 0rem;
    }

    .dual-column-layout img {
    }
}


/* Social media page */

.social-media-page-outer {
    margin-top: 2.7rem;
}

.youtube-heading-outer {
    text-align: center;
    margin-top: 2rem;
    font-size: 1.25rem;
}
.youtube-channel-heading {
    display: inline-flex;
    justify-content: space-between;
    gap: 0.3rem;
    align-items: center;
    font-weight: 600;
}

.youtube-channel-heading img {
    width: 2em;
}

@media (hover: hover) {
    .youtube-channel-heading {
        opacity: 1.0;
        transition: opacity 0.3s;
    }

    .youtube-channel-heading:hover {
        opacity: 0.7;
    }
}

.video-grid {
    display: flex;
    flex-direction: column;
    justify-content: space-between;
    align-items: stretch;
    --gap: 0.8rem;
    gap: var(--gap);
    margin-top: 2.4rem;
}

.video-thumb {
    display: block;
    background-color: black;
    color: white;
    position: relative;
    aspect-ratio: 1.4;
}

.video-thumb img {
    display: block;
    width: 100%;
    height: 100%;
    object-fit: cover;
}

.video-thumb-overlay {
    position: absolute;
    left: 0;
    top: 0;
    right: 0;
    bottom: 0;
    display: flex;
    flex-direction: column;
    justify-content: center;
    align-items: flex-start;
    padding: 0.9rem;
    background-color: rgba(0, 0, 0, 0.4);
    overflow: hidden;
    font-size: 5vw;
}

.video-thumb-overlay::after {
    content: ' ';
    width: 1.6em;
    aspect-ratio: 1.1;
    background-image: url(../images/icon_youtube_white.svg);
    background-repeat: no-repeat;
    background-position: center center;
    background-size: contain;
    position: absolute;
    right: 1em;
    bottom: 1em;
}

.video-title {
    font-size: 100%;
    margin-top: 6.1em;
    white-space: nowrap;
}

.video-age {
    font-size: 70%;
    margin-top: 0.8em;
}

@media screen and (min-width: 700px) {
    .social-media-page-outer {
    }

    .video-grid {
        flex-direction: row;
        flex-wrap: wrap;
        --n-wide: 2;
    }

    .video-thumb {
        width: calc((100% - (var(--n-wide) - 1) * var(--gap)) / var(--n-wide));
    }

    .video-thumb img {
    }

    .video-thumb-overlay {
        font-size: 2.6vw;
    }

    .video-thumb-overlay::after {
    }

    .video-title {
    }

    .video-age {
    }
}

@media screen and (min-width: 1000px) {
    .video-grid {
        --n-wide: 3;
    }

    .video-thumb-overlay {
        font-size: 1.3rem;
    }
}


/* Maps */

.map-number-marker > div {
    background-color: var(--color-primary);
    color: var(--color-secondary);
    display: flex;
    justify-content: center;
    align-items: center;
    height: 100%;
    font-weight: 700;
    border-radius: 5px;
    border: 1px solid #7c8285;
    position: relative;
    top: -19px;
    /* filter: drop-shadow(1px 2px 3px #00000040); */
}

.map-number-marker > div::after {
    content: ' ';
    background-color: inherit;
    border: inherit;
    width: 9px;
    height: 9px;
    position: absolute;
    top: 23px;
    transform: rotate(45deg);
    z-index: 10;
    border-left: none;
    border-top: none;
}


/* Listings contact area & map */

.listing-contact-map-outer {
    background-color: #f5f5f5;
    padding: var(--standard-padding);
    padding-top: 6rem;
}

.listing-form-outer {
    background-color: white;
    padding: 1rem;
    padding-top: 5rem;
    padding-bottom: 4rem;
    position: relative;
    box-shadow: 0 0 0.4rem 0 rgba(0, 0, 0, 0.05);
}

.listing-form-outer .paper-shadow {
    width: 100%;
    position: absolute;
    left: 0;
    right: 0;
    top: 99.7%;
    transform: rotate(0.6deg);
}

.interested-title {
    font-size: 1.25rem;
    color: var(--color-primary);
    font-weight: 400;
}

.listing-form-outer h3 {
    font-weight: 700;
    text-transform: uppercase;
    font-size: 2.25rem;
    margin-top: 0.5rem;
}

.listing-form-outer form {
    margin-top: 2rem;
}

.white-minimal-field {}

.textarea-with-image-button {
    position: relative;
}

.textarea-with-image-button input[type=image] {
    width: 1.9rem;
    position: absolute;
    right: 1.7rem;
    bottom: 0.3rem;
    background-color: transparent;
    border-bottom: none;
}

.listing-map-outer {
    margin-top: 3rem;
}

.listing-map {
    height: 22rem;
}

.listing-map .leaflet-marker-icon {
    filter: hue-rotate(161deg);
}

.listing-map .leaflet-tile-pane {
    filter: grayscale(1.0) brightness(1.1);
}

.listing-map .leaflet-control-attribution {
    filter: grayscale(0.8);
}

.listing-map .leaflet-control-attribution {
    white-space: nowrap;
}

@media (hover: hover) {
    .textarea-with-image-button input[type=image]:hover {
        filter: brightness(1.0);
        transition: filter 0.3s;
    }

    .textarea-with-image-button input[type=image]:hover {
        filter: brightness(0.0);
    }
}

@media screen and (min-width: 900px) {
    .listing-contact-map-outer {
        padding-left: 3rem;
        padding-right: 3rem;
        padding-top: 4rem;
    }

    .listing-contact-map {
        position: relative;
        aspect-ratio: 1.5;
    }
    
    .listing-form-outer form {
        display: flex;
        flex-direction: column;
        justify-content: space-between;
        flex-grow: 1;
    }

    .listing-form-outer .message-row {
        flex-grow: 1;
    }

    .listing-form-outer .message-row textarea {
        height: 100%;
    }

    .listing-form-outer {
        position: absolute;
        left: 0;
        top: 5%;
        bottom: 5%;
        width: 52%;
        z-index: 20;
        box-sizing: border-box;
        display: flex;
        flex-direction: column;
        justify-content: stretch;
        align-items: stretch;
        padding-left: 1rem;
        padding-right: 1rem;
    }

    .listing-map-outer {
        position: absolute;
        right: 0;
        top: 0;
        bottom: 0;
        width: 62%;
        z-index: 10;
        margin-top: 0;
    }

    .listing-map {
        height: 100%;
    }
}

@media screen and (min-width: 1100px) {
    .listing-contact-map {
        aspect-ratio: auto;
        height: 39rem;
        width: 63rem;
        margin-left: auto;
        margin-right: auto;
    }

    .listing-form-outer {
        padding-left: 2rem;
        padding-right: 2rem;
    }
}


/* Listing browse arrows */

.listing-browse-arrows {
    display: flex;
    justify-content: space-between;
    align-items: stretch;
    flex-wrap: wrap;
    margin-top: 3rem;
    gap: 1rem;
    padding-bottom: 2rem;
}

.listing-browse-arrows > a {
    background-color: transparent;
    padding-top: 0.8em;
    padding-bottom: 0.8em;
}

.listing-browse-arrows .arrow-left,
.listing-browse-arrows .arrow-right {
    text-indent: -9999px;
    background-repeat: no-repeat;
    background-position: center center;
    background-size: 1.3rem;
    padding-left: 1.3rem !important;
    padding-right: 1.3rem !important;
}

.listing-browse-arrows .arrow-left {
    order: 1;
    background-image: url(../images/arrow_left.svg?v=2);
}

.listing-browse-arrows .back-button {
    order: 3;
    margin-left: auto;
    margin-right: auto;
}

.listing-browse-arrows .arrow-right {
    margin-left: auto;
    order: 2;
    background-image: url(../images/arrow_right.svg?v=2);
}

@media (hover: hover) {
    .listing-browse-arrows .arrow-left span,
    .listing-browse-arrows .arrow-right span {
        color: var(--color-primary);
    }

    .listing-browse-arrows .arrow-left:hover span,
    .listing-browse-arrows .arrow-right:hover span {
        color: var(--color-primary);
    }

    .listing-browse-arrows .arrow-left:hover,
    .listing-browse-arrows .arrow-right:hover{
        background-color: #bdbdbd;
    }
}

@media screen and (min-width: 470px) {
    .listing-browse-arrows .arrow-left {
        order: 1;
    }

    .listing-browse-arrows .back-button {
        order: 2;
        margin-left: 0;
        margin-right: 0;
    }

    .listing-browse-arrows .arrow-right {
        margin-left: 0;
    }
}

@media screen and (min-width: 700px) {
    .listing-browse-arrows {
        align-items: center;
        overflow: hidden;
    }

    .listing-browse-arrows .back-button {
        padding-top: 1.2em;
        padding-bottom: 1.2em;
    }

}

@media screen and (min-width: 900px) {
    .listing-browse-arrows .arrow-left,
    .listing-browse-arrows .arrow-right {
        position: relative;
        text-indent: 0;
        height: 2.5rem;
    }

    .listing-browse-arrows .arrow-left span,
    .listing-browse-arrows .arrow-right span {
        position: absolute;
        text-indent: 0;
        white-space: nowrap;
    }

    .listing-browse-arrows .arrow-left span {
        left: 3.6rem;
    }

    .listing-browse-arrows .arrow-right span {
        right: 3.6rem;
    }
}


/* Property Search */

.content-outer.property-search {
}

.property-search-form {
    margin-top: 1.7rem;
}

.property-search-form .btn-primary {
    width: 100%;
}

.property-search-form .checkbox-list {
    margin-top: 0.4em;
}

.property-search-form .checkbox-list.vertical {
    display: flex;
    flex-direction: column;
    justify-content: space-between;
    align-items: flex-start;
}

@media screen and (min-width: 700px) {
    .content-outer.property-search {
        width: 90%;
        max-width: 54rem;
    }
}


/* Press */

.press-articles {
    margin-top: 5rem;
    display: flex;
    flex-direction: column;
    align-items: stretch;
    justify-content: space-between;
    gap: 5rem;
}

.press-article {
    display: flex;
    flex-direction: column;
    justify-content: space-between;
    align-items: stretch;
    gap: 1.8rem;
}

.press-article img {
    width: 100%;
    border: 1px solid var(--color-secondary);
}

.press-article span {
    font-weight: 700;
    font-size: 1.875rem;
    line-height: 1.2;
}

@media screen and (min-width: 550px) {
    .press-articles {
        gap: 3rem;
    }

    .press-article {
        flex-direction: row;
        align-items: center;
    }

    .press-article img {
        width: 50%;
        max-width: 20rem;
    }

    .press-article span {
    }
}


/* Film page */

.film-section {
    margin-top: 3rem;
    margin-bottom: 3rem;
}

.film-intro {
    text-align: center;
}

.film-intro h2 {}

.film-intro p {}

.film-thumbnails {
    margin-top: 3rem;
    border-top: 1px solid #b3b3b3;
    padding-top: 3rem;
    display: flex;
    flex-direction: row;
    justify-content: space-between;
    flex-wrap: wrap;
    align-items: center;
    gap: 2rem;
}

.film-thumbnail {
    display: block;
}

.film-thumbnail-image {
    position: relative;
}

.thumbnail-play-overlay {
    position: absolute;
    left: 0;
    top: 0;
    right: 0;
    bottom: 0;
    display: flex;
    flex-direction: row;
    justify-content: center;
    align-items: center;
    overflow: hidden;
    text-indent: -9999px;
    --icon-size: 5rem;
}

.thumbnail-play-overlay::before {
    content: ' ';
    width: calc(0.85 * var(--icon-size));
    height: calc(0.85 * var(--icon-size));
    border-radius: 50%;
    background-color: #ffffff4f;
    position: absolute;
}

.thumbnail-play-overlay::after {
    content: ' ';
    width: var(--icon-size);
    height: var(--icon-size);
    background-image: url(../images/icon_play_white_plain.png);
    background-size: 1.2rem;
    background-repeat: no-repeat;
    background-position: 56% center;
    border-radius: 50%;
    border: 1px solid #ffffffa6;
}

.film-thumbnail-image img {
    display: block;
    width: 100%;
    aspect-ratio: 4 / 3;
    object-fit: cover;
}

.film-thumbnail strong {
    font-family: Spectral, serif;
    text-transform: uppercase;
    display: block;
    color: var(--color-primary);
    text-align: center;
    line-height: 1.1;
    font-weight: 500;
    margin-top: 1rem;
}

.video-popup-backdrop {
    position: fixed;
    left: 0;
    top: 0;
    right: 0;
    bottom: 0;
    background-color: #00000085;
    z-index: 40;
    display: flex;
    justify-content: center;
    align-items: center;
    pointer-events: none;
    opacity: 0.0;
    transition: opacity 0.3s;
}

.video-popup-backdrop.visible {
    opacity: 1.0;
    pointer-events: all;
}

.auto-videopopup {
    --border-width: 15px;
    width: calc(min(95vw, (16 / 9) * 95vh));
    height: calc(min(95vh, (9 / 16) * 95vw));
}

#VideoPopup .close-x {
    z-index: 10;
}

.videopopup01 {
    background-color: #333333;
    box-shadow: 0 2px 4px 0 rgba(0, 0, 0, 0.10);
    padding: var(--border-width);
    border-radius: 4px;
    transition: transform 0.2s;
}

.videopopup01.visible {
    transform: scale(1.0);
}

.videopopup05 {
    padding-top: 56.25%;
    position: relative;
}

.videopopup06 {
    width: 100%;
    height: 100%;
    position: absolute;
    left: 0px;
    top: 0px;
    right: 0px;
    bottom: 0px;
}

@media (hover: hover) {
    .film-thumbnail .film-thumbnail-image::after {
        content: ' ';
        position: absolute;
        left: 0;
        top: 0;
        right: 0;
        bottom: 0;
        background-color: var(--color-primary);
        opacity: 0.0;
        transition: opacity 0.5s;
    }

    .film-thumbnail:hover .film-thumbnail-image::after {
        opacity: 0.4;
    }
}

@media screen and (min-width: 800px) {
    .film-section {
        margin-top: 5rem;
    }

    .film-thumbnails {
        align-items: flex-start;
        gap: 0.5rem;
        margin-top: 6rem;
        padding-top: 3rem;
    }

    .film-thumbnail {
        width: 49%;
        margin-top: 1rem;
    }

    .film-thumbnail strong {
        font-size: 0.875rem;
    }

    .film-intro {
        display: flex;
        flex-direction: row;
        justify-content: space-between;
        align-items: flex-start;
        gap: 2rem;
        color: var(--color-near-black);
        width: 90%;
        margin-left: auto;
        margin-right: auto;
    }

    .film-intro h2 {
        text-align: right;
        font-size: 1.875rem;
        letter-spacing: 0.15em;
    }

    .film-intro p {
        margin-top: 0;
        text-align: left;
        font-size: 0.875rem;
        font-weight: 400;
    }
}


/* Testimonials */

.testimonials {
    margin-top: 4rem;
}

.top-testimonial {}

.testimonial {
    border: 0.5rem solid var(--color-gray-accent);
    cursor: pointer;
}

.testimonial-top {
    padding: 1rem;
    padding-top: 2rem;
    padding-bottom: 3rem;
}
.testimonial-quote-outer {
}

.testimonial-quote-mark {
    display: block;
    width: 5rem;
    height: 5rem;
    margin-left: auto;
    margin-right: auto;
    overflow: hidden;
    background-image: url(../images/icon_quote_blue.png);
    background-size: contain;
    background-repeat: no-repeat;
    background-position: center center;
    flex-shrink: 0;
}

.testimonial-quote-outer p {
    color: var(--color-near-black);
    font-weight: 400;
    font-size: 1.25rem;
    margin-top: 1.5rem;
}

.testimonial-quote-outer p span.full {
    display: none;
}

.testimonial-quote-outer p span.truncated {
    display: block;
}

.expanded .testimonial-quote-outer p span.full {
    display: block;
}

.expanded .testimonial-quote-outer p span.truncated {
    display: none;
}

.testimonial-top-links {
    margin-top: 3rem;
    letter-spacing: 0.15em;
    text-decoration: underline;
    font-size: 1rem;
}

.read-more-link {
    font-weight: 600;
    color: var(--color-near-black);
    transition: opacity 0.3s;
    opacity: 1.0;
}

.expanded .read-more-link {
    opacity: 0.0;
}

.testimonial-stars {
    display: flex;
    align-items: center;
    justify-content: flex-start;
    gap: 0.3rem;
    margin-top: 1rem;
}

.testimonial-stars img {
    width: 1.4rem;
}

.testimonial-bottom {
    color: white;
    background-color: var(--color-primary);
    padding: 3rem 1rem;
    font-weight: 400;
    font-size: 1.25rem;
    display: flex;
    justify-content: flex-start;
    align-items: center;
    gap: 1rem;
    line-height: 1.25;
}

.testimonial-bottom span {}

.testimonial-bottom .testimonial-quote-mark {
    background-image: url(../images/icon_quote.png);
    margin-left: 0;
    margin-right: 0;
}

.other-testimonials {
    margin-top: 2rem;
    display: flex;
    flex-direction: column;
    justify-content: space-between;
    align-items: stretch;
    gap: 2rem;
}

@media screen and (min-width: 800px) {
    .other-testimonials {
        flex-direction: row;
        align-items: stretch;
    }

    .other-testimonials .testimonial {
        display: flex;
        flex-direction: column;
        justify-content: space-between;
        width: 50%;
    }
    
    .testimonial-top {
        padding-left: 3rem;
        padding-right: 3rem;
    }

    .top-testimonial .testimonial-top {
        padding-top: 3rem;
    }
    
    .top-testimonial .testimonial-quote-outer {
        display: flex;
        flex-direction: row;
        justify-content: space-between;
        gap: 3rem;
        align-items: flex-start;
    }

    .top-testimonial .testimonial-quote-outer p {
        margin-top: 0;
    }
}


/* Concierge sections */

.concierge-nav-bar {
    display: flex;
    flex-wrap: wrap;
    justify-content: center;
    gap: 1em;
    align-items: flex-start;
    margin-top: 3rem;
    max-width: 43rem;
    margin-left: auto;
    margin-right: auto;
    font-size: 1rem;
}

.concierge-nav-link {
    display: flex;
    flex-direction: column;
    justify-content: space-between;
    align-items: center;
    width: 10em;
    gap: 1em;
    padding: 0.5em;
    border: 2px solid transparent;
    transition: border-color 0.3s;
}

.concierge-nav-link.current {
    border-color: var(--color-primary);
}

.concierge-nav-link svg {
    width: 5rem;
}

.concierge-nav-link span {
    display: block;
    text-align: center;
    line-height: 1.4;
    text-transform: uppercase;
    font-weight: 400;
}

.concierge-article {
    display: none;
}

.concierge-article.visible {
    display: block;
}

.concierge-article-arrows {
    display: flex;
    flex-direction: row;
    justify-content: center;
    align-items: center;
    gap: 1.7rem;
    margin-top: 2rem;
}

.previous-arrow {
}

.next-arrow {
}

.previous-arrow,
.next-arrow {
    max-width: 0;
    transition: max-width 0.3s;
    overflow: hidden;
    white-space: nowrap;
}

.previous-arrow.visible,
.next-arrow.visible {
    max-width: 7em;
}

.previous-arrow::before,
.next-arrow::after {
    content: ' ';
    width: 0rem;
    height: 0.8rem;
    display: inline-block;
    background-position: center center;
    background-repeat: no-repeat;
    background-size: contain;
    overflow: hidden;
    transition: width 0.3s;
}

.previous-arrow.visible::before,
.next-arrow.visible::after {
    width: 4rem;
}

.previous-arrow::before {
    background-image: url(../images/arrow_thin_prev.png);
}

.next-arrow::after {
    background-image: url(../images/arrow_thin_next.png);
}

.arrow-divider {
    width: 0px;
    background-color: #e3e3e3;
    height: 1.3rem;
}

.arrow-divider.visible {
    width: 1px;
}

@media (hover: hover) {
    .concierge-nav-link:hover {
        border-color: var(--color-primary);
    }
}

@media screen and (min-width: 800px) {
    .concierge-nav-bar {
        max-width: none;
        font-size: 1rem;
        justify-content: space-between;
        align-items: stretch;
    }

    .concierge-nav-link {
        width: 14%;
        justify-content: flex-start;
        padding-top: 1em;
    }

    .concierge-nav-link svg {
        width: 3rem;
    }

    .concierge-nav-link span {}
}


/* Communities landing page */

.communities-page {
}

.communities-page-grid {
    --gap: 2.4rem;
    --n-wide: 1;
    margin-top: 2rem;
    display: flex;
    flex-direction: row;
    flex-wrap: wrap;
    justify-content: space-between;
    align-items: center;
    gap: var(--gap);
}

.communities-page-cell {
    --width: calc((100% - var(--gap) * (var(--n-wide) - 1)) / var(--n-wide));
    width: var(--width);
    padding-top: calc(0.59 * var(--width));
    display: block;
    position: relative;
    overflow: hidden;
}

.communities-page-cell img {
    position: absolute;
    left: 0;
    top: 0;
    right: 0;
    bottom: 0;
    object-fit: cover;
    width: 100%;
}

.communities-page-cell span {
    position: absolute;
    left: 0;
    top: 0;
    right: 0;
    bottom: 0;
    width: 100%;
    background-color: rgba(0,0,0,0.3);
    display: flex;
    justify-content: center;
    align-items: center;
    font-weight: 500;
    color: white;
    text-decoration: none;
    letter-spacing: 0.2em;
    font-size: 1.25rem;
    text-align: center;
}

@media (hover: hover) {
    .communities-page-cell span {
        transition: background-color 0.5s;
    }

    .communities-page-cell:hover span {
        background-color: rgba(0,0,0,0.7);
    }

    .communities-page-cell:hover span::after {
        content: 'EXPLORE MORE';
        display: block;
        position: absolute;
        top: 77%;
        font-size: 0.875rem;
        font-weight: 300;
        letter-spacing: 0.1em;
    }
}

@media screen and (min-width: 650px) {
    .communities-page-grid {
        --n-wide: 2;
    }
}


/* Schedule a showing popup */

.schedule-popup {
}

.schedule-popup-inner {max-width: 59rem;}

.boxy-popup {
    background-color: white;
    margin-left: auto;
    margin-right: auto;
    position: relative;
}

.boxy-popup .close-button {
    position: absolute;
    background-image: url(../images/close_x_black.svg);
    background-size: contain;
    background-position: center center;
    background-color: transparent;
    font-size: 1.2rem;
    width: 1.7em;
    height: 1.7em;
    right: 1rem;
    top: 1rem;
    cursor: pointer;
    z-index: 40;
}

.schedule-popup-content {
    padding: 3rem;
}

.schedule-popup-content h2 {
    text-align: center;
}

.schedule-popup-content form {
    margin-top: 1.5rem;
}

.schedule-popup-content textarea {height: 5rem;}

.schedule-popup-bottom {
}

.schedule-popup-bottom p {
}

.schedule-popup .buttons-outer {
    text-align: center;
    margin-top: 1.7rem;
}

.schedule-popup-content .layout-row {
    align-items: flex-end;
}

.schedule-popup .dark-button {
    padding-left: 3em;
    padding-right: 3em;
}

@media (hover: hover) {
    .boxy-popup .close-button {
        transition: opacity 0.3s;
        opacity: 1.0;
    }

    .boxy-popup .close-button:hover {
        background-color: transparent;
        opacity: 0.5;
    }
}