/* ========================================================================== */
/* Fonts */

@font-face
{
    font-family: Montserrat-Regular;
    src: url('/fonts/Montserrat/Montserrat-Regular.ttf');
    font-display: block;
}

@font-face
{
    font-family: Montserrat-Medium;
    src: url('/fonts/Montserrat/Montserrat-Medium.ttf');
    font-display: block;
}

@font-face
{
    font-family: Montserrat-Bold;
    src: url('/fonts/Montserrat/Montserrat-Bold.ttf');
    font-display: block;
}

/* ========================================================================== */
/* Variables */

:root
{
    --white:                #FFFFFF;
    --black:                #000000;
    
    --paper-white:          #FDFDFD;
    --fill-gray:            #F0F0F0;
    --button-hover-gray:    #EEEEEE;
    --table-section-gray:   #E0E0E0;
    --table-border-gray:    #DDDDDD;
    --border-gray:          #CCCCCC;
    --disabled-gray:        #A0A0A0;
    --text-gray:            #505050;
    
    --red:                  #F44336;
    --amber:                #FFC107;
    --yellow:               #FCDB00;
    --green:                #47A64A;
    --blue:                 #227EBF; /* HSB:205 82  75 */
    --link-blue:            #00528C; /* HSB:205 100 55 */
    --nav-blue:             #0061A6; /* HSB:205 100 65 */
    --tag-blue:             #DAE7F0; /* HSB:205 09  94 */
    
    --max-page-width:       1400px;
    --border-radius:        5px;
    --box-shadow:           0 2px 6px 0 rgba(0, 0, 0, 0.2);
}

/* ========================================================================== */
/* General */

*
{
    box-sizing: border-box;
}

a
{
    text-decoration: none;
    cursor: pointer;
    color: inherit;
}

b, strong
{
    font-family: Montserrat-Medium, sans-serif;
    font-weight: normal;
}

body
{
    display: flex;
    position: relative;
    flex-flow: column;
    align-items: center;
    width: 100%;
    height: 100%;
    margin: 0;
    overflow-y: scroll;
    overflow-x: auto;
    scroll-behavior: smooth;
    font-family: Montserrat-Regular, sans-serif;
    font-size: 17px;
    text-size-adjust: none;
    -webkit-text-size-adjust: none;
    color: var(--black);
    background-color: var(--paper-white);
}

button, .button
{
    display: flex;
    position: relative;
    justify-content: center;
    align-items: center;
    gap: 6px;
    width: min-content;
    height: 2.2em;
    margin: 0;
    padding: 0em 0.75em;
    text-align: center;
    font: inherit;
    line-height: 1;
    white-space: nowrap;
    color: inherit;
    background-color: var(--paper-white);
    border: 1px solid var(--disabled-gray);
    border-radius: var(--border-radius);
    outline: none;
    cursor: pointer;
    user-select: none;
}

button:hover, .button:hover
{
    background-color: var(--button-hover-gray);
}

button.navigation, .button.navigation
{
    border-color: var(--blue);
}

button.navigation:hover, .button.navigation:hover
{
    background-color: var(--button-hover-gray);
}

button.block, .button.block
{
    width: 100%;
}

button.delete, .button.delete
{
    border-color: var(--red);
}

button.delete:hover, .button.delete:hover
{
    color: var(--paper-white);
    background-color: var(--red);
}

button.inquire, .button.inquire
{
    border-width: 2px;
    border-radius: var(--border-radius);
    background-color: var(--tag-blue);
    border-color: var(--blue);
}

button.inquire:hover, .button.inquire:hover
{
    background-color: color-mix(in srgb, var(--tag-blue), var(--blue) 10%);
}

button.log-out, .button.log-out
{
    color: var(--black);
    border-color: var(--amber);
}

button.log-out:hover, .button.log-out:hover
{
    background-color: var(--amber);
}

button.mini, .button.mini
{
    font-size: 12px;
}

button.navigation svg, .button.navigation svg
{
    stroke: var(--black);
    stroke-width: 2px;
}

button.navigation:disabled, .button.navigation:disabled
{
    color: var(--disabled-gray);
    background-color: var(--paper-white);
    border-color: var(--disabled-gray);
    cursor: default;
}

button.navigation:disabled svg, .button.navigation:disabled svg
{
    stroke: var(--disabled-gray);
}

button.remove, .button.remove
{
    height: 2em;
    padding: 0em 0.7em;
    background-color: var(--paper-white);
    border-color: var(--red);
}

button.remove:hover, .button.remove:hover
{
    background-color: var(--button-hover-gray);
}

button.save, .button.save
{
    color: var(--paper-white);
    background-color: var(--green);
    border-color: var(--green);
}

button.save:hover, .button.save:hover
{
    background-color: color-mix(in srgb, var(--green), white 10%);
}

button.set, .button.set
{
    height: 2em;
    padding: 0em 0.7em;
    border-color: var(--green);
}

button.set:hover, .button.set:hover
{
    background-color: var(--button-hover-gray);
}

button div.progress-bar
{
    position: absolute;
    top: 0;
    left: 0;
    width: 0%;
    height: 100%;
    background-color: color-mix(in srgb, var(--green), black 10%);
    transition: width 0.3s;
}

button span.text
{
    position: relative;
}

div.admin-business-hours
{
    display: grid;
    grid-template-columns: minmax(100px, 200px) minmax(100px, 390px);
    gap: 10px;
}

div.admin-social-media
{
    display: grid;
    grid-template-columns: 125px minmax(100px, 465px);
    align-items: center;
    gap: 10px;
}

div.admin-social-media select
{
    display: block;
    width: 100%;
}

div.contact-card
{
    display: flex;
    flex-flow: row wrap;
    align-items: flex-start;
    gap: 20px;
    position: relative;
    width: fit-content;
    max-width: 100%;
    margin: auto;
    padding: 20px;
    font-size: 16px;
    border-top: 25px solid var(--blue);
    border-radius: var(--border-radius);
    box-shadow: var(--box-shadow);
    overflow: hidden;
}

div.contact-card .picture
{
    max-width: 100%;
    height: auto;
    border-radius: var(--border-radius);
}

div.contact-card .info
{
    display: flex;
    flex-flow: column;
    gap: 1em;
    width: fit-content;
}

div.contact-card .info .contact
{
    display: flex;
    flex-flow: column;
    gap: 2px;
    width: fit-content;
}

div.contact-card .info .contact .name
{
    font-size: 17px;
}

div.contact-card .info .business-hours
{
    display: grid;
    grid-template-columns: repeat(2, max-content);
    column-gap: 1em;
}

div.contact-card .info .social-media-links
{
    display: grid;
    grid-template-columns: repeat(5, max-content);
    align-items: center;
    gap: 15px;
}

div.admin-address
{
    display: flex;
    flex-flow: column;
    gap: 8px;
}

div.admin-address .item
{
    display: flex;
    flex-flow: column;
    gap: 2px;
}

footer
{
    display: flex;
    flex-flow: column;
    align-items: center;
    width: 100%;
    font-size: 15px;
    background-color: var(--fill-gray);
}

footer .content
{
    display: flex;
    flex-flow: column;
    gap: 25px;
    width: 100%;
    max-width: var(--max-page-width);
    padding: 25px;
}

footer .content .contact
{
    display: flex;
    flex-flow: row;
    align-items: flex-start;
    justify-content: space-evenly;
    gap: 25px;
}

footer .content .contact.column
{
    flex-flow: column;
    align-items: center;
}

footer .content .contact section
{
    display: flex;
    flex-flow: column;
    align-items: center;
    gap: 1em;
}

footer .content .contact section .logo
{
    margin-bottom: -0.25em;
}

footer .content .contact section .group
{
    display: flex;
    flex-flow: column;
    align-items: center;
}

footer .content .contact section .group .name
{
    font-size: 16px;
}

footer .content .contact section .group a
{
    display: inline-block;
}

footer .content .contact section .business-hours
{
    display: grid;
    grid-template-columns: repeat(2, max-content);
    column-gap: 1em;
    justify-items: center;
}

footer .content .contact section .social-media-links
{
    display: flex;
    flex-flow: row wrap;
    align-items: center;
    gap: 15px;
}

footer .content .copyright
{
    display: flex;
    flex-flow: column;
    align-items: center;
    font-size: 15px;
}

h1, h2, h3
{
    font-family: Montserrat-Medium, sans-serif;
    font-weight: normal;
}

h1:first-child, h2:first-child, h3:first-child
{
    margin-top: 0;
}

h1
{
    font-size: 20px;
}

h2
{
    font-size: 18px;
}

h3
{
    font-size: inherit;
}

header
{
    display: flex;
    position: relative;
    flex-flow: row;
    justify-content: center;
    width: 100%;
    box-shadow: var(--box-shadow);
    z-index: 1;
}

header nav
{
    display: flex;
    position: relative;
    flex-flow: row;
    justify-content: space-between;
    align-items: center;
    width: 100%;
    max-width: var(--max-page-width);
    padding: 15px 25px;
    font-family: Montserrat-Medium, sans-serif;
    user-select: none;
}

header nav .logo-title
{
    display: flex;
    position: relative;
    flex-flow: row;
    align-items: center;
    gap: 10px;
    font-family: Montserrat-Bold, sans-serif;
}

header nav .logo-title .title
{
    white-space: nowrap;
}

header nav .menu
{
    display: flex;
    position: relative;
    flex-flow: row;
    justify-content: space-between;
    align-items: center;
    gap: 25px;
}

header nav .menu .dropdown
{
    display: block;
    position: relative;
}

header nav .logo-title .title,
header nav .menu .menu-item,
header nav .menu .dropdown .dropdown-title
{
    display: flex;
    position: relative;
    flex-flow: row;
    align-items: center;
    height: 30px;
}

header nav .logo-title,
header nav .menu .menu-item,
header nav .menu .dropdown .dropdown-title
{
    padding: 0;
    background-color: inherit;
    border: none;
    cursor: pointer;
}

header nav .menu .dropdown .dropdown-menu
{
    display: none;
    position: absolute;
    width: min-content;
    min-width: 110px;
    white-space: nowrap;
    background-color: var(--paper-white);
    border-radius: var(--border-radius);
    box-shadow: var(--box-shadow);
    overflow: hidden;
}

header nav .menu .dropdown .dropdown-menu.right
{
    right: 0px;
}

header nav .menu .dropdown .dropdown-menu .dropdown-menu-item
{
    display: block;
    padding: 8px 14px;
    border-bottom: 1px solid var(--border-gray);
    font-size: 14px;
}

header nav .menu .dropdown .dropdown-menu .dropdown-menu-item:last-child
{
    border: none;
}

header nav .menu .menu-item:hover,
header nav .menu .menu-item.active,
header nav .menu .dropdown .dropdown-title:hover,
header nav .menu .dropdown .dropdown-title.active,
header nav .menu .dropdown .dropdown-menu .dropdown-menu-item:hover,
header nav .menu .dropdown .dropdown-menu .dropdown-menu-item.active,
nav.overlay .menu .menu-item.hoverable:hover,
nav.overlay .menu .menu-item.active,
nav.overlay .menu .submenu .submenu-item:hover,
nav.overlay .menu .submenu .submenu-item.active
{
    color: var(--nav-blue);
}

header nav .menu .dropdown .dropdown-menu .dropdown-menu-item:hover
{
    background-color: var(--fill-gray);
}

header nav .overlay-menu-icon
{
    display: none;
    stroke: var(--black);
    stroke-width: 4px;
    cursor: pointer;
}

hr
{
    margin: 0 auto;
}

html
{
    height: 100%;
}

img
{
    display: block;
    user-select: none;
    touch-action: manipulation;
}

img.page
{
    max-width: 100%;
    height: auto;
    margin-bottom: 1em;
    border-radius: var(--border-radius);
}

img.page.float-left
{
    float: left;
    max-width: 50%;
    margin-right: 1em;
}

img.page.center
{
    margin-left: auto;
    margin-right: auto;
}

img.page.center:last-child
{
    margin-bottom: 0;
}

img.page.float-right
{
    float: right;
    max-width: 50%;
    margin-left: 1em;
}

input
{
    font: inherit;
}

input[type='checkbox'], input[type='radio']
{
    margin: 2px;
    accent-color: var(--nav-blue);
}

input[type='date'] {width: 165px;}
input[type='time'] {width: 125px;}

input.currency {width: 80px;}

input.short-field  {width: 100%; min-width: 100px; max-width: 100px;}
input.medium-field {width: 100%; min-width: 100px; max-width: 225px;}
input.long-field   {width: 100%; min-width: 100px; max-width: 600px;}
input.full-field   {width: 100%; min-width: 100px;}

label
{
    user-select: none;
}

main
{
    display: flex;
    flex-flow: column;
    flex: 1;
    position: relative;
    width: 100%;
    max-width: var(--max-page-width);
    padding: 25px;
}

main.offline
{
    display: flex;
    flex-flow: column;
    align-items: center;
    width: 100%;
    max-width: 100%;
    background-color: var(--fill-gray);
}

main.offline .container
{
    display: flex;
    flex-flow: column;
    align-items: center;
    gap: 15px;
    width: 100%;
    max-width: 600px;
    margin-top: 20vh;
}

main.offline .container .text
{
    text-align: center;
}

main.offline .container .text ol,
main.offline .container .text ul
{
    text-align: left;
}

main.offline .card
{
    display: block;
    width: 350px;
    max-width: 100%;
    margin-top: 20vh;
    background-color: var(--paper-white);
    border-radius: var(--border-radius);
    box-shadow: var(--box-shadow);
    overflow: hidden;
}

main.offline .card .header
{
    padding: 10px 15px;
    font-family: Montserrat-Medium, sans-serif;
    font-size: 19px;
    color: var(--paper-white);
    background-color: var(--blue);
}

main.offline .card .body
{
    padding: 15px;
}

main p a
{
    text-decoration: underline;
    color: var(--link-blue);
}

main section
{
    display: block;
    position: relative;
    width: 100%;
    margin: 0;
    clear: both;
}

main section + section
{
    margin-top: 25px;
}

main section:has(table)
{
    overflow-x: auto;
}

nav.overlay
{
    display: none;
    position: relative;
    z-index: 0;
    width: 100%;
    height: 100%;
    padding: 25px;
    background-color: var(--paper-white);
    user-select: none;
}

nav.overlay .menu
{
    font-family: Montserrat-Medium, sans-serif;
    white-space: nowrap;
}

nav.overlay .menu .menu-item
{
    display: flex;
    justify-content: flex-start;
    width: 100%;
    height: min-content;
    margin-top: 5px;
    margin-bottom: 0;
    padding-top: 5px;
    padding-bottom: 5px;
    font-size: 19px;
}

nav.overlay .menu .menu-item:first-child
{
    margin-top: 0;
}

nav.overlay .menu .submenu
{
    margin-left: 20px;
}

nav.overlay .menu .submenu .submenu-item
{
    display: flex;
    justify-content: flex-start;
    width: 100%;
    height: min-content;
    margin-top: 5px;
    margin-bottom: 0;
    padding-top: 3px;
    padding-bottom: 3px;
    font-size: 17px;
}

nav.overlay .menu button
{
    padding: 0;
    border: 0;
    line-height: normal;
    background-color: inherit;
}

nav.page
{
    display: flex;
    flex-flow: row;
    justify-content: space-between;
    align-items: center;
    margin-bottom: 15px;
}

nav.page .info
{
    text-align: center;
}

nav.pagination
{
    display: flex;
    flex-flow: row;
    justify-content: center;
    align-items: center;
    gap: 25px;
    margin-top: 25px;
}

nav.page select, nav.pagination select
{
    height: 2.2em;
    padding: 0em 0.75em;
    font: inherit;
    white-space: nowrap;
    color: inherit;
    background-color: var(--paper-white);
    border: 1px solid var(--blue);
    border-radius: var(--border-radius);
    outline: none;
}

nav.pagination button, nav.pagination .button
{
    width: 120px;
}

p
{
    margin: 0;
}

p + p
{
    margin-top: 1em;
}

select
{
    width: min-content;
    font: inherit;
    user-select: none;
}

table
{
    width: 100%;
    background-color: var(--fill-gray);
    border-color: var(--table-border-gray);
    border-spacing: 0;
    border-collapse: separate;
    border-radius: var(--border-radius);
}

table th
{
    color: var(--paper-white);
    background-color: var(--blue);
}

table tr:first-child th:first-child
{
    border-left: 1px solid var(--blue);
    border-top-left-radius: var(--border-radius);
}

table tr:first-child th:last-child
{
    border-right: 1px solid var(--blue);
    border-top-right-radius: var(--border-radius);
}

table td
{
    border-bottom: 1px solid var(--table-border-gray);
}

table td:first-child
{
    border-left: 1px solid var(--table-border-gray);
}

table td:last-child
{
    border-right: 1px solid var(--table-border-gray);
}

table tr:last-child td:first-child
{
    border-bottom-left-radius: var(--border-radius);
}

table tr:last-child td:last-child
{
    border-bottom-right-radius: var(--border-radius);
}

table th, table td
{
    padding: 8px;
    text-align: left;
    vertical-align: top;
}

table th:first-child, table td:first-child
{
    padding-left: 12px;
}

table th:last-child, table td:last-child
{
    padding-right: 12px;
}

table th.min
{
    width: 1px;
}

table th.standard
{
    width: 12%;
}

table th.open-house
{
    width: 130px;
}

table td.address
{
    max-width: 500px;
}

table th.price, table td.price
{
    width: 13%;
    white-space: nowrap;
}

table th.item, table td.item
{
    width: 25%;
}

table th.analytics-main, table td.analytics-main
{
    width: auto;
}

table th.analytics-views, table td.analytics-views
{
    width: 150px;
    text-align: right;
}

table th.analytics-date-last-visited, table td.analytics-date-last-visited
{
    width: 300px;
    text-align: right;
}

table td.analytics-date-last-visited
{
    white-space: nowrap;
}

table td.section
{
     background-color: var(--table-section-gray);
}

table.admin-picture-cards td.main
{
    padding: 15px;
}

table.striped tbody tr:nth-child(odd)
{
    background-color: var(--paper-white);
}

table.striped tbody tr:nth-child(even)
{
    background-color: var(--fill-gray);
}

table .action
{
    display: flex;
    flex-flow: row;
    justify-content: center;
    gap: 10px;
    padding: 10px;
}

table .logo-container
{
    display: flex;
    position: relative;
    justify-content: center;
    align-items: center;
    width: 160px;
    height: 160px;
    border: 1px solid var(--border-gray);
    overflow: hidden;
}

table .image-container
{
    display: flex;
    position: relative;
    justify-content: center;
    align-items: center;
    aspect-ratio: 1.5;
    width: 100%;
    border: 1px solid var(--border-gray);
    overflow: hidden;
}

table .logo-container img,
table .image-container img
{
    max-width: 100%;
    max-height: 100%;
    object-fit: contain;
}

textarea
{
    width: 100%;
    font: inherit;
}

ul.note
{
    padding-left: 25px;
    font-size: 13px;
}

ul.note li
{
    margin-bottom: 8px;
}

.align-center
{
    text-align: center;
}

.align-left
{
    text-align: left;
}

.align-right
{
    text-align: right;
}

.box-shadow
{
    box-shadow: var(--box-shadow);
}

.confidential, .no-data
{
    color: var(--text-gray);
}

.display
{
    display: block;
    width: 100%;
    margin: 90px auto;
    font-size: 26px;
    text-align: center;
}

.display.no-pictures
{
    font-size: 20px;
}

.hidden
{
    display: none;
}

.inline
{
    display: inline;
}

.nowrap
{
    white-space: nowrap;
}

.hcontainer
{
    display: flex;
    flex-flow: row wrap;
    align-items: center;
    gap: 10px;
}

.hcontainer.no-row-wrap
{
    flex-flow: row;
}

.open-house-time
{
    display: flex;
    flex-flow: row;
    align-items: center;
    gap: 5px;
}

.vcontainer
{
    display: flex;
    flex-flow: column;
    gap: 8px;
}

.status-tag
{
    display: inline-block;
    padding: 0.20em 0.45em;
    text-align: center;
    border-radius: var(--border-radius);
}

.status-tag.active, .status-tag.logged-in
{
    color: var(--paper-white);
    background-color: var(--green);
}

.status-tag.pending, .status-tag.today
{
    background-color: var(--yellow);
}

.status-tag.sold, .status-tag.inactive, .status-tag.disabled, .status-tag.logged-out
{
    color: var(--paper-white);
    background-color: var(--disabled-gray);
}

.wrap
{
    word-break: break-all;
}

/* ========================================================================== */
/* Listing Card Grid */

div.listing-card-grid
{
    display: grid;
    width: 100%;
    grid-template-columns: 1fr 1fr;
    gap: 25px;
    justify-content: center;
    align-content: center;
}

div.listing-card-grid .listing-card
{
    display: block;
    font-size: 16px;
    color: black;
    background-color: white;
    border-radius: var(--border-radius);
    box-shadow: var(--box-shadow);
    overflow: hidden;
}

div.listing-card-grid .listing-card .image-container
{
    display: flex;
    position: relative;
    justify-content: center;
    align-items: center;
    aspect-ratio: 1.5;
    width: 100%;
    background-color: var(--fill-gray);
    overflow: hidden;
}

div.listing-card-grid .listing-card .image-container img
{
    display: block;
    position: absolute;
    max-width: 100%;
    max-height: 100%;
    object-fit: contain;
}

div.listing-card-grid .listing-card .image-container img[src='']
{
    display: none;
}

div.listing-card-grid .listing-card .image-container .open-house-tag
{
    display: block;
    position: absolute;
    left: 15px;
    top: 15px;
    padding: 5px 9px;
    border-radius: var(--border-radius);
    font-family: Montserrat-Medium, sans-serif;
    font-size: 14px;
    background-color: var(--fill-gray);
    opacity: 75%;
}

div.listing-card-grid .listing-card .status-container
{
    padding: 10px;
    text-align: center;
    background-color: var(--fill-gray);
}

div.listing-card-grid .listing-card .info-container
{
    display: flex;
    flex-flow: column;
    gap: 12px;
    padding: 15px;
}

div.listing-card-grid .listing-card .info-container .address-container
{
    display: flex;
    min-height: 40px;
    flex-flow: column;
    justify-content: center;
    text-align: center;
    overflow: hidden;
}

div.listing-card-grid .listing-card .info-container .address-container .street
{
    font-family: Montserrat-Medium, sans-serif;
    font-size: 18px;
}

div.listing-card-grid .listing-card .info-container .address-container .city-state-country
{
    font-family: Montserrat-Regular, sans-serif;
}

div.listing-card-grid .listing-card .info-container .price-container
{
    display: flex;
    flex-flow: column;
    justify-content: center;
    min-height: 40px;
    text-align: center;
    overflow: hidden;
}

div.listing-card-grid .listing-card .info-container .price-container .price
{
}

/* ========================================================================== */
/* Property Details */

div.property-details
{
    display: flex;
    position: relative;
    flex-flow: column;
    gap: 15px;
}

div.property-details .gallery
{
    display: block;
    position: relative;
    width: 100%;
    aspect-ratio: 1.5;
    border-radius: var(--border-radius);
    box-shadow: var(--box-shadow);
    overflow: hidden;
    cursor: default;
    user-select: none;
}

div.property-details .gallery .slide
{
    display: flex;
    position: relative;
    justify-content: center;
    align-items: center;
    width: 100%;
    height: 100%;
    background-color: var(--fill-gray);
}

div.property-details .gallery .slide img
{
    display: block;
    max-width: 100%;
    max-height: 100%;
    object-fit: contain;
}

div.property-details .gallery .slide img[src='']
{
    display: none;
}

div.property-details .gallery .slide .slide-number
{
    position: absolute;
    right: 10px;
    bottom: 10px;
    padding: 8px 10px;
    border-radius: var(--border-radius);
    font-size: 13px;
    color: white;
    background-color: var(--black);
    opacity: 45%;
}

div.property-details .gallery .scroll-button svg
{
    stroke: var(--paper-white);
    stroke-width: 2px;
}

div.property-details .gallery .scroll-button
{
    display: flex;
    position: absolute;
    justify-content: center;
    align-items: center;
    top: 50%;
    translate: 0% -50%;
    width: 40px;
    height: 60px;
    padding: 0;
    border: none;
    border-radius: var(--border-radius);
    background-color: var(--black);
    opacity: 45%;
    cursor: pointer;
    touch-action: manipulation;
}

div.property-details .gallery .scroll-button.previous
{
    left: 10px;
}

div.property-details .gallery .scroll-button.next
{
    right: 10px;
}

div.property-details .gallery .scroll-button:hover
{
    opacity: 60%;
}

div.property-details .info-container
{
    display: flex;
    flex-flow: row wrap;
    justify-content: space-between;
    gap: 15px;
}

div.property-details .info-container .left-container
{
    display: flex;
    flex-flow: column;
    gap: 10px;
    white-space: nowrap;
}

div.property-details .info-container .left-container .address
{
}

div.property-details .info-container .left-container .address .street
{
    font-family: Montserrat-Medium, sans-serif;
    font-size: 20px;
}

div.property-details .info-container .left-container .address .city-state-country
{
    font-size: 18px;
}

div.property-details .info-container .left-container .status-price
{
}

div.property-details .info-container .left-container .status-price .status
{
}

div.property-details .info-container .left-container .status-price .price
{
    font-size: 18px;
    white-space: nowrap;
}

div.property-details .info-container .left-container .represent
{
}

div.property-details .info-container .right-container
{
    width: min-content;
    height: min-content;
    padding: 6px 12px;
    white-space: nowrap;
    background-color: var(--tag-blue);
    border-radius: var(--border-radius);
    cursor: default;
}

div.property-details .info-container .right-container .header
{
    font-size: 15px;
}

div.property-details .info-container .right-container .body
{
    font-size: 18px;
}

div.property-details .info-tag-container
{
    display: flex;
    flex-flow: row wrap;
    gap: 15px;
}

div.property-details .info-tag-container .info-tag
{
    display: block;
    width: min-content;
    padding: 6px 12px;
    white-space: nowrap;
    background-color: var(--tag-blue);
    border-radius: var(--border-radius);
    cursor: default;
}

div.property-details .info-tag-container .info-tag .value
{
    display: inline;
    font-family: Montserrat-Medium, sans-serif;
    font-size: 16px;
}

div.property-details .info-tag-container .info-tag .units
{
    display: inline;
    font-size: 13px;
}

div.property-details .property-description
{
}

div.property-details .external-content-container
{
    position: relative;
    margin: 10px 75px;
    border-radius: var(--border-radius);
    box-shadow: var(--box-shadow);
    overflow: hidden;
    user-select: none;
}

div.property-details .external-content-container .aspect-ratio-container
{
    position: relative;
    width: 100%;
    aspect-ratio: 1.5;
    border-radius: var(--border-radius);
}

div.property-details .external-content-container .aspect-ratio-container iframe
{
    position: absolute;
    width: 100%;
    height: 100%;
    border: none;
    border-radius: var(--border-radius);
}

div.property-details .listing-agent-container
{
    font-size: 14px;
    color: var(--text-gray);
}

div.property-details .mls-id-container
{
    font-size: 14px;
    color: var(--text-gray);
}

div.property-details .inquire-button
{
    display: flex;
    justify-content: center;
    align-items: center;
}

/* ========================================================================== */
/* Admin Picture Card Grid */

div.admin-picture-card-grid
{
    display: grid;
    width: 100%;
    grid-template-columns: 1fr 1fr 1fr 1fr;
    gap: 15px;
    user-select: none;
}

div.admin-picture-card-grid:has(.no-pictures)
{
    grid-template-columns: 1fr;
}

div.admin-picture-card-grid .picture-card
{
    display: flex;
    position: relative;
    justify-content: center;
    align-items: center;
    aspect-ratio: 1.5;
    background-color: var(--fill-gray);
    border-radius: var(--border-radius);
    box-shadow: var(--box-shadow);
    overflow: hidden;
}

div.admin-picture-card-grid .picture-card img
{
    position: absolute;
    max-width: 100%;
    max-height: 100%;
    object-fit: contain;
}

div.admin-picture-card-grid .picture-card img[src='']
{
    display: none;
}

div.admin-picture-card-grid .picture-card .picture-number
{
    display: flex;
    position: absolute;
    justify-content: center;
    align-items: center;
    top: 0;
    left: 0;
    width: 38px;
    height: 38px;
    padding: 0;
    font-size: 16px;
    white-space: nowrap;
    color: white;
    background-color: var(--black);
    opacity: 50%;
}

div.admin-picture-card-grid .picture-card button svg
{
    stroke: var(--paper-white);
    stroke-width: 2px;
}

div.admin-picture-card-grid .picture-card .move-button
{
    display: flex;
    position: absolute;
    justify-content: center;
    align-items: center;
    top: 50%;
    translate: 0% -50%;
    width: 38px;
    height: 38px;
    padding: 0;
    border: none;
    border-radius: 0;
    background-color: var(--black);
    opacity: 50%;
    cursor: pointer;
    touch-action: manipulation;
}

div.admin-picture-card-grid .picture-card .move-button.left
{
    left: 0;
}

div.admin-picture-card-grid .picture-card .move-button.right
{
    right: 0;
}

div.admin-picture-card-grid .picture-card .move-button:hover
{
    background-color: var(--blue);
    opacity: 70%;
}

div.admin-picture-card-grid .picture-card .delete-button
{
    display: flex;
    position: absolute;
    justify-content: center;
    align-items: center;
    top: 0;
    right: 0;
    width: 38px;
    height: 38px;
    padding: 0;
    border: none;
    border-radius: 0;
    line-height: 0;
    background-color: var(--black);
    opacity: 50%;
    cursor: pointer;
    touch-action: manipulation;
}

div.admin-picture-card-grid .picture-card .delete-button:hover
{
    background-color: var(--red);
    opacity: 70%;
}

div.admin-picture-card-grid .picture-card .upload-progress
{
    display: flex;
    position: absolute;
    top: 50%;
    left: 50%;
    translate: -50% -50%;
    padding: 10px;
    justify-content: center;
    align-items: center;
    font-size: 24px;
    line-height: 1;
    white-space: nowrap;
    color: white;
    background-color: var(--black);
    opacity: 70%;
}

div.admin-picture-card-grid-header
{
    display: flex;
    flex-flow: row;
    justify-items: center;
    gap: 15px;
    margin-top: 25px;
    margin-bottom: 25px;
    padding: 5px 8px;
    background-color: var(--fill-gray);
    border: 1px solid var(--border-gray);
}

div.admin-picture-card-grid-footer
{
    display: flex;
    flex-flow: column;
    align-items: center;
    margin-top: 25px;
    padding: 15px;
    background-color: var(--fill-gray);
    border: 1px solid var(--border-gray);
}

/* ========================================================================== */
/* Analytics */

div.chart-card
{
    padding: 15px;
    border-radius: var(--border-radius);
    box-shadow: var(--box-shadow);
}

div.chart-card .header-container
{
    display: flex;
    flex-flow: row;
    align-items: baseline;
    gap: 5px;
}

div.chart-card .header-container .info
{
    font-size: 15px;
}

div.chart-card canvas
{
    max-width: 100%;
    max-height: 450px;
}

div.chart-card .no-data
{
    width: 100%;
    aspect-ratio: 1.85;
}

div.chart-card-group
{
    display: grid;
    grid-template-columns: 1fr 1fr 1fr;
    gap: 25px;
}

/* ========================================================================== */
/* Login Card */

form.login-card
{
    display: block;
    width: 300px;
    max-width: 100%;
    margin: 10vh auto;
    border-radius: var(--border-radius);
    overflow: hidden;
    box-shadow: var(--box-shadow);
}

form.login-card .header
{
    font-family: Montserrat-Medium, sans-serif;
    font-size: 19px;
    padding: 10px 20px;
    color: var(--paper-white);
    background-color: var(--blue);
}

form.login-card .body
{
    padding: 20px;
}

form.login-card .body .message
{
    display: none;
    margin-bottom: 20px;
    font-family: Montserrat-Medium, sans-serif;
    color: var(--red);
}

form.login-card .body input
{
    display: block;
    width: 100%;
    margin-bottom: 20px;
    padding: 8px;
    border: 1px solid var(--border-gray);
    border-radius: var(--border-radius);
    overflow: hidden;
}

form.login-card .body button
{
    width: 100%;
    color: var(--paper-white);
    background-color: var(--blue);
    border-color: var(--blue);
    border-radius: var(--border-radius);
}

form.login-card .body button:hover
{
    opacity: 90%;
}

form.login-card .body button:active
{
    opacity: 100%;
}

/* ========================================================================== */
/* Solo Card */

div.solo-card
{
    display: block;
    width: 350px;
    max-width: 100%;
    margin: 90px auto;
    border-radius: var(--border-radius);
    box-shadow: var(--box-shadow);
    overflow: hidden;
}

div.solo-card .header
{
    padding: 10px 15px;
    font-family: Montserrat-Medium, sans-serif;
    font-size: 19px;
    color: var(--paper-white);
    background-color: var(--blue);
}

div.solo-card .body
{
    padding: 15px;
}

/* ========================================================================== */
/* Help Dialog */

dialog
{
    width: 450px;
    padding: 0;
    border: none;
    border-radius: var(--border-radius);
    box-shadow: var(--box-shadow);
    overflow: auto;
}

dialog div.header
{
    display: flex;
    flex-flow: row;
    align-items: center;
    justify-content: space-between;
    padding: 8px 8px 8px 15px;
    background-color: var(--blue);
}

dialog div.header div.title
{
    font-family: Montserrat-Medium, sans-serif;
    font-size: 19px;
    color: var(--paper-white);
}

dialog div.header button
{
    width: min-content;
    height: min-content;
    padding: 5px;
}

dialog div.header button svg
{
    stroke: var(--text-gray);
    stroke-width: 3px;
}

dialog div.body
{
    padding: 15px;
}

dialog div.body div.business-hours
{
    display: grid;
    grid-template-columns: repeat(2, max-content);
    column-gap: 1em;
}

/* ========================================================================== */
/* Top Dialog */

dialog.top
{
    position: relative;
    width: 100%;
    margin: 0;
    color: var(--paper-white);
    box-shadow: none;
}

dialog.top div.header
{
    background-color: inherit;
}

dialog.top div.body
{
    padding-top: 0;
    padding-bottom: 8px;
}

dialog.top + dialog.top
{
    margin-top: 20px;
}

/* ========================================================================== */
/* Notice Dialog */

dialog.top.notice
{
    background-color: var(--blue);
}

/* ========================================================================== */
/* Error Dialog */

dialog.top.error
{
    background-color: var(--red);
}

/* ========================================================================== */
/* Media Rules */

@media (max-width: 1200px)
{
    div.admin-picture-card-grid
    {
        grid-template-columns: 1fr 1fr 1fr;
    }
}

@media (max-width: 1000px)
{
    div.admin-picture-card-grid
    {
        grid-template-columns: 1fr 1fr;
    }
    
    div.chart-card-group
    {
        grid-template-columns: 1fr 1fr;
    }
}

@media (max-width: 800px)
{
    header nav .menu
    {
        display: none;
    }
    
    header nav .overlay-menu-icon
    {
        display: block;
    }
    
    div.listing-card-grid,
    div.admin-picture-card-grid
    {
        grid-template-columns: 1fr;
    }
    
    div.property-details .info-container
    {
        flex-flow: column;
    }
    
    div.property-details .external-content-container
    {
        margin-left: 0;
        margin-right: 0;
    }
    
    div.chart-card-group
    {
        grid-template-columns: 1fr;
    }
    
    div.contact-card
    {
        flex-flow: column;
    }
    
    footer .content .contact
    {
        display: flex;
        flex-flow: column;
        align-items: center;
        gap: 25px;
    }
}
