/* Metropolis Font */
@font-face {
  font-family: 'Metropolis';
  src: url('../fonts/Metropolis-Regular.eot');
  src: url('../fonts/Metropolis-Regular.eot?#iefix') format('embedded-opentype'),
       url('../fonts/Metropolis-Regular.woff2') format('woff2'),
       url('../fonts/Metropolis-Regular.woff') format('woff'),
       url('../fonts/Metropolis-Regular.ttf') format('truetype');
  font-weight: normal;
  font-style: normal;
  font-display: swap;
}

/* Dark theme variables (matching clients.css) */
:root {
  --dark-bg-primary: #0f172a;
  --dark-bg-secondary: #1e293b;
  --dark-bg-tertiary: #334155;
  --dark-text-primary: #f8fafc;
  --dark-text-secondary: #cbd5e1;
  --dark-border: #475569;
  --primary-color: #58a6ff;
}

/* Metropolis on portal text only — never on body * (breaks Font Awesome icons) */
body.customers,
body.clients {
  font-family: "Metropolis", -apple-system, BlinkMacSystemFont, "Segoe UI", Roboto, sans-serif !important;
}

/* Font Awesome 6 (Perfex customer theme loads fontawesome + solid) */
body.customers .fa,
body.customers .fas,
body.customers .far,
body.customers .fal,
body.customers .fa-solid,
body.customers .fa-regular,
body.customers .login_icon,
body.customers i[class*="fa-"] {
  font-family: "Font Awesome 6 Free" !important;
  font-style: normal !important;
  font-weight: 900 !important;
  font-variant: normal !important;
  text-rendering: auto !important;
  -webkit-font-smoothing: antialiased !important;
  -moz-osx-font-smoothing: grayscale !important;
  display: inline-block !important;
  line-height: 1 !important;
}

body.customers .fab,
body.customers .fa-brands {
  font-family: "Font Awesome 6 Brands" !important;
  font-weight: 400 !important;
}

body.customers .far,
body.customers .fa-regular {
  font-weight: 400 !important;
}

/* Client portal: horizontal top navbar (Perfex theme). Do NOT use admin sidebar layout here. */
body.customers .navbar.navbar-default.header {
    position: relative !important;
    top: auto !important;
    left: auto !important;
    width: 100% !important;
    max-width: 100% !important;
    height: auto !important;
    min-height: 60px !important;
    z-index: 1030 !important;
    margin: 0 !important;
    background-color: var(--dark-bg-secondary) !important;
    border-right: 0 !important;
    border-bottom: 1px solid var(--dark-border) !important;
}

body.customers .navbar.navbar-default.header .container {
    width: 100% !important;
}

/* Flex row: brand + nav share one vertical center line (desktop) */
@media (min-width: 768px) {
    body.customers .navbar.navbar-default.header .container {
        display: flex !important;
        flex-wrap: nowrap !important;
        align-items: center !important;
        justify-content: space-between !important;
        min-height: 60px !important;
    }

    body.customers .navbar.navbar-default.header .navbar-header {
        float: none !important;
        display: flex !important;
        align-items: center !important;
        flex: 0 0 auto !important;
        margin: 0 !important;
    }

    body.customers .navbar.navbar-default.header .navbar-collapse {
        float: none !important;
        display: flex !important;
        flex: 1 1 auto !important;
        align-items: center !important;
        justify-content: flex-end !important;
        width: auto !important;
        border-top: 0 !important;
        clear: none !important;
        padding: 0 !important;
        box-shadow: none !important;
    }

    body.customers .navbar.navbar-default.header .navbar-nav {
        display: flex !important;
        flex-direction: row !important;
        align-items: center !important;
        float: none !important;
        margin: 0 !important;
    }

    body.customers .navbar.navbar-default.header .navbar-nav > li {
        float: none !important;
        display: flex !important;
        align-items: center !important;
    }
}

body.customers .navbar.navbar-default.header .navbar-header {
    float: left;
}

body.customers .navbar.navbar-default.header .navbar-collapse {
    border-top: 0 !important;
    clear: none !important;
}

/* Override Perfex theme line-height: 85px on nav links */
body.customers .navbar-default .navbar-nav > li > a,
body.customers .navbar.navbar-default.header .navbar-nav > li > a {
    color: var(--dark-text-secondary) !important;
    display: inline-flex !important;
    align-items: center !important;
    line-height: 1.35 !important;
    height: auto !important;
    padding: 8px 12px !important;
    margin-right: 2px;
    white-space: nowrap;
    border-radius: 6px !important;
}

body.customers .navbar.navbar-default.header .navbar-nav > li.customers-nav-item-login > a {
    display: inline-flex !important;
    align-items: center !important;
    line-height: 1.35 !important;
    padding: 8px 16px !important;
    margin-left: 8px !important;
    background: var(--primary-color) !important;
    color: #ffffff !important;
    border-radius: 6px !important;
}

body.customers .navbar.navbar-default.header .navbar-nav > li.customers-nav-item-login > a:hover,
body.customers .navbar.navbar-default.header .navbar-nav > li.customers-nav-item-login > a:focus {
    background: #4a9ae8 !important;
    color: #ffffff !important;
}

body.customers .navbar.navbar-default.header .navbar-nav > li > a:hover,
body.customers .navbar.navbar-default.header .navbar-nav > li > a:focus {
    background: var(--dark-bg-tertiary) !important;
    color: var(--dark-text-primary) !important;
}

body.customers .navbar.navbar-default.header .navbar-nav > li.active > a,
body.customers .navbar.navbar-default.header .navbar-nav > li.active > a:hover,
body.customers .navbar.navbar-default.header .navbar-nav > li.active > a:focus {
    background: rgba(88, 166, 255, 0.18) !important;
    color: var(--dark-text-primary) !important;
}

body.customers .navbar.navbar-default.header .navbar-brand,
body.customers .navbar.navbar-default.header a.navbar-brand.logo-text {
    color: var(--dark-text-primary) !important;
    display: inline-flex !important;
    align-items: center !important;
    padding: 0 16px 0 24px !important;
    margin: 0 !important;
    line-height: 1.2 !important;
    height: auto !important;
    min-height: 60px !important;
    float: none !important;
}

body.customers .navbar.navbar-default.header a.navbar-brand img {
    display: block !important;
    height: 34px !important;
    width: auto !important;
    margin: 0 !important;
}

/* Mobile: brand + hamburger on one row, stacked menu below */
@media (max-width: 767px) {
    body.customers .navbar.navbar-default.header .navbar-header {
        display: flex !important;
        align-items: center !important;
        justify-content: space-between !important;
        width: 100% !important;
        float: none !important;
        padding: 12px 15px !important;
    }

    body.customers .navbar.navbar-default.header .navbar-brand,
    body.customers .navbar.navbar-default.header a.navbar-brand.logo-text {
        min-height: 0 !important;
        padding: 0 !important;
        flex: 1 1 auto !important;
    }

    body.customers .navbar.navbar-default.header .navbar-toggle {
        float: none !important;
        margin: 0 0 0 12px !important;
        order: 2 !important;
    }

    body.customers .navbar.navbar-default.header .navbar-collapse {
        width: 100% !important;
        clear: both !important;
        border-top: 1px solid var(--dark-border) !important;
        margin: 0 !important;
        padding: 0 !important;
    }

    body.customers .navbar.navbar-default.header .navbar-nav {
        margin: 0 !important;
        padding: 8px 0 !important;
    }

    body.customers .navbar.navbar-default.header .navbar-nav > li > a {
        line-height: 1.5 !important;
        padding: 10px 18px !important;
        display: flex !important;
        width: 100% !important;
    }

    body.customers .navbar.navbar-default.header .navbar-nav > li.customers-nav-item-login {
        padding: 8px 15px 12px !important;
    }

    body.customers .navbar.navbar-default.header .navbar-nav > li.customers-nav-item-login > a {
        margin-left: 0 !important;
        width: auto !important;
        display: inline-flex !important;
    }
}

/* Files / Calendar row under header */
body.customers ul.submenu.customer-top-submenu {
    display: inline-block !important;
    float: right !important;
    margin-top: 18px !important;
    margin-bottom: 22px !important;
    padding-top: 0 !important;
    clear: right !important;
}

body.customers ul.submenu.customer-top-submenu li a {
    color: var(--dark-text-secondary) !important;
    font-size: 15px !important;
}

body.customers ul.submenu.customer-top-submenu li a:hover,
body.customers ul.submenu.customer-top-submenu li a:focus {
    color: var(--dark-text-primary) !important;
}

body.customers .navbar.navbar-default.header .navbar-toggle .icon-bar {
    background-color: var(--dark-text-primary) !important;
}

/* Main content must not sit under a faux sidebar */
body.customers #wrapper {
    margin-left: 0 !important;
    padding-left: 0 !important;
    width: 100% !important;
    flex: 1 1 auto !important;
}

body.customers #wrapper #content {
    margin-top: 0 !important;
}

/* Primary buttons */
.btn-primary, 
.available_time_info.hwp {
    background: var(--primary-color) !important;
    border-color: var(--primary-color) !important;
    color: white !important;
}

body .cb-form-wrapper h4,
body #appointments-form h4 {
    color: var(--dark-text-primary) !important;
}

body #wrapper .btn-primary,
body .btn-pfxcbsubmit {
    background: var(--primary-color) !important;
    border-color: var(--primary-color) !important;
}

body .cb-form-wrapper {
    top: calc(100% - 93.5%) !important;
    background: var(--dark-bg-secondary) !important;
    border: 1px solid var(--dark-border) !important;
}

/* Button hover states */
body .btn-pfxcbsubmit:focus,
body .btn-pfxcbsubmit:active,
body .btn-pfxcbsubmit:hover,
body #wrapper .btn-primary.active.focus,
body #wrapper .btn-primary.active:focus,
body #wrapper .btn-primary.active:hover,
body #wrapper .btn-primary:active.focus,
body #wrapper .btn-primary:active:focus,
body #wrapper .btn-primary:active:hover,
body #wrapper .open > .dropdown-toggle.btn-primary.focus,
body #wrapper .open > .dropdown-toggle.btn-primary:focus,
body #wrapper .open > .dropdown-toggle.btn-primary:hover {
    background: rgba(88, 166, 255, 0.9) !important;
    border-color: rgba(88, 166, 255, 0.9) !important;
}

/* Dropdown menus */
body #perfex-callbacks-form .dropdown-menu > li > a:focus, 
body #perfex-callbacks-form .dropdown-menu > li > a:hover {
    background: var(--dark-bg-tertiary) !important;
    color: var(--primary-color) !important;
}

body #perfex-callbacks-form .message_wrapper div.inner.open ul li a > span {
    color: var(--dark-text-primary) !important;
}

/* Appointment forms */
body.appointments-external-form .form-group input {
    background: var(--dark-bg-secondary) !important;
    border-color: var(--dark-border) !important;
    color: var(--dark-text-primary) !important;
}

body.appointments-external-form .form-group input:focus {
    background: var(--dark-bg-secondary) !important;
    border-color: var(--primary-color) !important;
    color: var(--dark-text-primary) !important;
    box-shadow: 0 0 0 0.2rem rgba(88, 166, 255, 0.25) !important;
}

body.appointments-external-form,
body.appointments-external-form #wrapper {
    background: var(--dark-bg-primary) !important;
}

body .cb-form-wrapper {
    background: var(--dark-bg-secondary) !important;
    border: 1px solid var(--dark-border) !important;
    color: var(--dark-text-primary) !important;
}

body .main_wrapper {
    background: var(--dark-bg-secondary) !important;
    margin-top: 47px;
    color: var(--dark-text-primary) !important;
}

body.customers .navbar.navbar-default.header .container ul.nav.navbar-nav.navbar-right {
    margin-right: 0 !important;
}

/* Additional client portal styling */
body #wrapper {
    background: var(--dark-bg-primary) !important;
    color: var(--dark-text-primary) !important;
}

/* Form controls */
.form-control {
    background: var(--dark-bg-secondary) !important;
    color: var(--dark-text-primary) !important;
    border: 1px solid var(--dark-border) !important;
}

.form-control:focus {
    background: var(--dark-bg-secondary) !important;
    color: var(--dark-text-primary) !important;
    border-color: var(--primary-color) !important;
    box-shadow: 0 0 0 0.2rem rgba(88, 166, 255, 0.25) !important;
}

/* Labels */
label {
    color: var(--dark-text-primary) !important;
}

/* Select dropdowns */
select.form-control {
    background: var(--dark-bg-secondary) !important;
    color: var(--dark-text-primary) !important;
    border: 1px solid var(--dark-border) !important;
}

/* Textarea */
textarea.form-control {
    background: var(--dark-bg-secondary) !important;
    color: var(--dark-text-primary) !important;
    border: 1px solid var(--dark-border) !important;
}

/* Modal styling */
.modal-content {
    background: var(--dark-bg-secondary) !important;
    color: var(--dark-text-primary) !important;
    border: 1px solid var(--dark-border) !important;
}

.modal-header {
    background: var(--dark-bg-tertiary) !important;
    border-bottom: 1px solid var(--dark-border) !important;
}

.modal-footer {
    background: var(--dark-bg-tertiary) !important;
    border-top: 1px solid var(--dark-border) !important;
}

/* Close button */
.close {
    color: var(--dark-text-primary) !important;
    opacity: 0.8;
}

.close:hover {
    color: var(--dark-text-primary) !important;
    opacity: 1;
}

/* Additional client portal styling to match admin theme */

/* Content wrapper */
body .content-wrapper,
body .main-content {
    background: var(--dark-bg-primary) !important;
    color: var(--dark-text-primary) !important;
}

/* Client specific panels and cards */
body .client-dashboard .panel,
body .client-dashboard .card {
    background: var(--dark-bg-secondary) !important;
    border: 1px solid var(--dark-border) !important;
}

/* Client navigation menu */
body .client-nav,
body .client-menu {
    background: var(--dark-bg-secondary) !important;
}

body .client-nav a,
body .client-menu a {
    color: var(--dark-text-primary) !important;
}

body .client-nav a:hover,
body .client-menu a:hover {
    background: var(--dark-bg-tertiary) !important;
    color: var(--primary-color) !important;
}

/* Client tables and data */
body .client-data-table {
    background: var(--dark-bg-secondary) !important;
    color: var(--dark-text-primary) !important;
}

/* Client forms */
body .client-form .form-group label {
    color: var(--dark-text-primary) !important;
}

/* Client invoices and documents */
body .invoice-preview,
body .document-preview {
    background: var(--dark-bg-secondary) !important;
    color: var(--dark-text-primary) !important;
    border: 1px solid var(--dark-border) !important;
}

/* Item long description: same inline #424242 as admin; align with Note/Terms readability */
body .table.items td.description span[style*="#424242"],
body .table.items td.description span[style*="color:#424242"],
body .table.items td.description span[style*="color: #424242"],
body .table[class*="items-preview"] td.description span[style*="#424242"] {
    color: #cbd5e1 !important;
}

/* Company name from format_organization_info(): inline color:black */
body.customers b.company-name-formatted,
body.customers .company-name-formatted,
body.clients b.company-name-formatted,
body.clients .company-name-formatted {
    color: #e2e8f0 !important;
}

/* Client portal footer */
body .client-footer,
body .portal-footer {
    background: var(--dark-bg-secondary) !important;
    color: var(--dark-text-secondary) !important;
    border-top: 1px solid var(--dark-border) !important;
}

/* Client portal text colors */
body.customers h1,
body.customers h2,
body.customers h3,
body.customers h4,
body.customers h5,
body.customers h6,
body.clients h1,
body.clients h2,
body.clients h3,
body.clients h4,
body.clients h5,
body.clients h6 {
    color: var(--dark-text-primary) !important;
}

body.customers .section-heading,
body.customers .section-heading-open-ticket,
body.customers h4.section-heading,
body.customers .tw-text-neutral-700 {
    color: var(--dark-text-primary) !important;
}

body.customers .section-heading-open-ticket,
body.customers h4.section-heading {
    margin-top: 0 !important;
    margin-bottom: 12px !important;
    padding-left: 4px !important;
}
hr {
    border-top: 1px solid #475569;
}

body.customers h4.section-heading {
 margin-bottom: 0px !important;
}
body.customers #wrapper > .container:first-of-type,
body.customers #wrapper #content > .container {
    padding-top: 8px !important;
}

/* ===============================================
   BOOTSTRAP-SELECT (client portal) — match admin dark theme
   =============================================== */
body.customers .bootstrap-select.form-control,
body.customers .bootstrap-select.bs3 {
    border: none !important;
    padding: 0 !important;
    background: transparent !important;
    box-shadow: none !important;
    height: auto !important;
}

body.customers .bootstrap-select > .dropdown-toggle.btn-default {
    background: var(--dark-bg-secondary) !important;
    border: 1px solid var(--dark-border) !important;
    color: var(--dark-text-primary) !important;
    padding: 7px 28px 7px 12px !important;
    min-height: 36px !important;
    line-height: 1.4 !important;
    box-shadow: none !important;
    border-radius: 6px !important;
}

body.customers .bootstrap-select > .dropdown-toggle.btn-default:hover,
body.customers .bootstrap-select > .dropdown-toggle.btn-default:focus,
body.customers .bootstrap-select.open > .dropdown-toggle.btn-default {
    background: var(--dark-bg-secondary) !important;
    border-color: var(--primary-color) !important;
    color: var(--dark-text-primary) !important;
    outline: 0 !important;
    box-shadow: 0 0 0 2px rgba(88, 166, 255, 0.18) !important;
}

body.customers .bootstrap-select .filter-option,
body.customers .bootstrap-select .filter-option-inner,
body.customers .bootstrap-select .filter-option-inner-inner {
    color: var(--dark-text-primary) !important;
    padding: 0 !important;
    line-height: 1.4 !important;
}

body.customers .bootstrap-select .dropdown-menu {
    background-color: rgb(30, 41, 59) !important;
    background: rgb(30, 41, 59) !important;
    border: 1px solid var(--dark-border) !important;
    box-shadow: 0 10px 28px rgba(0, 0, 0, 0.45) !important;
    margin-top: 4px !important;
    padding: 4px 0 !important;
    border-radius: 6px !important;
}

body.customers .bootstrap-select .dropdown-menu > li > a {
    color: var(--dark-text-primary) !important;
    padding: 7px 14px !important;
    background: transparent !important;
}

body.customers .bootstrap-select .dropdown-menu > li > a:hover,
body.customers .bootstrap-select .dropdown-menu > li > a:focus,
body.customers .bootstrap-select .dropdown-menu > li.selected > a,
body.customers .bootstrap-select .dropdown-menu > li.active > a {
    background: rgba(88, 166, 255, 0.22) !important;
    color: #fff !important;
    outline: none !important;
}

body.customers .bootstrap-select .bs-searchbox .form-control {
    background: var(--dark-bg-secondary) !important;
    border: 1px solid var(--dark-border) !important;
    color: var(--dark-text-primary) !important;
    margin: 6px 8px !important;
    padding: 6px 10px !important;
    width: calc(100% - 16px) !important;
}

body.customers .bootstrap-select .bs-actionsbox,
body.customers .bootstrap-select .bs-donebutton {
    border-color: var(--dark-border) !important;
}

/* Datetimepicker spacing (open ticket / calendar fields) */
body.customers .xdsoft_datetimepicker {
    margin-top: 6px !important;
    z-index: 10050 !important;
}

/* FullCalendar (clients/calendar) — toolbar not flush against panel top */
body.customers #calendar .fc-header-toolbar,
body.customers #calendar .fc-toolbar {
    margin-top: 10px !important;
    margin-bottom: 14px !important;
    padding-top: 4px !important;
    gap: 8px !important;
}

body.customers #calendar .fc-toolbar-title {
    color: var(--dark-text-primary) !important;
}

body.customers #calendar .fc-button {
    background: var(--dark-bg-tertiary) !important;
    border: 1px solid var(--dark-border) !important;
    color: var(--dark-text-primary) !important;
}

body.customers #calendar .fc-button:hover,
body.customers #calendar .fc-button:focus {
    background: var(--dark-bg-secondary) !important;
    color: var(--dark-text-primary) !important;
}

body.customers #calendar .fc-scrollgrid,
body.customers #calendar .fc-col-header-cell,
body.customers #calendar .fc-daygrid-day {
    border-color: var(--dark-border) !important;
}

body.customers #calendar .fc-col-header-cell-cushion {
    color: var(--dark-text-primary) !important;
}

/* Primary / default buttons — readable hover (Open Ticket, Save, etc.) */
body.customers .btn.btn-primary,
body.customers a.btn.btn-primary,
body.customers .btn-primary {
    color: #ffffff !important;
}

body.customers .btn.btn-primary:hover,
body.customers .btn.btn-primary:focus,
body.customers a.btn.btn-primary:hover,
body.customers a.btn.btn-primary:focus,
body.customers .btn-primary:hover,
body.customers .btn-primary:focus {
    color: #ffffff !important;
    background: #4a9ae8 !important;
    border-color: #4a9ae8 !important;
}

body.customers .btn.btn-default:hover,
body.customers .btn.btn-default:focus {
    color: var(--dark-text-primary) !important;
}

/* Content links only — not headings or nav labels */
body.customers #wrapper a:not(.btn):not(.navbar-brand):not(.dropdown-toggle) {
    color: var(--primary-color) !important;
}

body.customers #wrapper a:not(.btn):not(.navbar-brand):not(.dropdown-toggle):hover,
body.customers #wrapper a:not(.btn):not(.navbar-brand):not(.dropdown-toggle):focus {
    color: #93c5fd !important;
}

body.customers .text-muted,
body.customers a.text-muted {
    color: var(--dark-text-secondary) !important;
}

body.customers a.text-muted:hover {
    color: var(--dark-text-primary) !important;
}

/* Bootstrap / profile dropdown menus — explicit slate background */
body.customers .dropdown-menu,
body.customers ul.dropdown-menu,
body.customers .navbar-nav .dropdown-menu,
body.customers .navbar-nav .open .dropdown-menu,
body.customers .dropdown-menu.fadeIn,
body.customers .dropdown-menu.animated {
    background-color: rgb(30, 41, 59) !important;
    background: rgb(30, 41, 59) !important;
    border: 1px solid var(--dark-border) !important;
    box-shadow: 0 10px 28px rgba(0, 0, 0, 0.45) !important;
}

body.customers .dropdown-menu > li > a,
body.customers .dropdown-menu li a {
    color: var(--dark-text-primary) !important;
    background: transparent !important;
    padding: 8px 16px !important;
}

body.customers .dropdown-menu > li > a:hover,
body.customers .dropdown-menu > li > a:focus,
body.customers .dropdown-menu > li.active > a {
    background: rgba(88, 166, 255, 0.18) !important;
    color: var(--dark-text-primary) !important;
}

body.customers .dropdown-menu .divider {
    background-color: var(--dark-border) !important;
}

/* DataTables "Show X entries" bootstrap-select */
body.customers .dataTables_length .bootstrap-select.form-control {
    width: auto !important;
    min-width: 72px !important;
}

body.customers .dataTables_filter input.form-control {
    background: var(--dark-bg-secondary) !important;
    border: 1px solid var(--dark-border) !important;
    color: var(--dark-text-primary) !important;
    box-shadow: none !important;
}

/* Single ticket: message / reply panels (override Perfex .client-reply cream #fefce8) */
body.customers .client-reply,
body.customers .panel_s.client-reply,
body.customers .client-reply .panel-body,
body.customers .panel_s.client-reply > .panel-body {
    background: rgb(27 36 52) !important;
    color: var(--dark-text-primary) !important;
    border-color: var(--dark-border) !important;
}

body.customers .panel_s.client-reply > .panel-heading,
body.customers .panel_s.client-reply > .panel-footer {
    background: rgb(27 36 52) !important;
    color: var(--dark-text-secondary) !important;
    border-color: var(--dark-border) !important;
}

/* Staff ticket messages in the thread (right column, not the add-reply form) */
body.customers .col-md-8 > .panel_s:not(.single-ticket-reply-area),
body.customers .col-md-8 > .panel_s:not(.single-ticket-reply-area) > .panel-body,
body.customers .col-md-8 > .panel_s:not(.single-ticket-reply-area) > .panel-footer {
    background: rgb(27 36 52) !important;
    color: var(--dark-text-primary) !important;
}

body.customers .col-md-8 > .panel_s:not(.single-ticket-reply-area) .border-right {
    border-right-color: var(--dark-border) !important;
}

body.customers .col-md-8 > .panel_s:not(.single-ticket-reply-area) .text-muted {
    color: var(--dark-text-secondary) !important;
}
