/*
 * Clients module styles.
 * Ported (and trimmed) from uniquestays_crm_temp/css/style.css — only the
 * client-list/content classes are kept. Header, sidebar, filter-drawer and
 * modal chrome from the mockup are intentionally left out since this app
 * already has its own header/sidebar; importing those would have collided
 * with and overridden them. The one real collision found (`.dashboard`,
 * already used by every module's `<section class="section dashboard">`)
 * was renamed to `.client-dashboard`.
 */

:root {
    --color1: #A43E43;
    --color2: #6f2a2e;
    --green: #30b260;
    --orange: #e69d3e;
    --red2: #e63e3eeb;
    --gray: #707070;
    --dark: #3e3e3e;
}

.img_bck {
    background: url(../img/pattern_background.png), #fff;
}

.right_col {
    /* padding: 20px 0 60px; */
    padding: 0px 0px 0px 0px;
}

.client-num {
    font-size: 18px;
    font-weight: 700;
    color: var(--color2);
    margin: 2px 0px;
    display: flex;
    align-items: center;
    gap: 10px;
}

/* Flags the Order dropdown when it's overriding the default
   priority/budget/name sort (Newest/Oldest picked instead). Combined-class
   selector (not just .order-active) so this beats .wb-ele-dashboard's own
   `background: #fff !important` below — same specificity + !important on
   both means source order alone would otherwise decide, and
   .wb-ele-dashboard comes later in this file. */
.wb-ele-dashboard.order-active {
    background-color: var(--color1) !important;
    color: #fff;
}

.clients-toolbar {
    display: flex;
    flex-wrap: wrap;
    align-items: center;
    gap: 8px;
    padding: 6px 0;
}

/* Bootstrap's .row defaults to align-items: stretch, which forces this
   column to the height of its sibling (.col-lg-8's filters wrap onto more
   lines than this one's single row of buttons) — leaving the extra
   stretched height as blank space below .header-actions instead of
   actually centering it. Center the columns on the row's cross-axis
   instead so each is only as tall as its own content. */
.clients-toolbar-row {
    align-items: center;
}

@media (min-width: 993px) {
    .clients-toolbar-row {
        flex-wrap: nowrap;
    }
    .clients-toolbar-row > .col-lg-8 {
        flex: 0 1 auto;
        max-width: 100%;
        width: auto;
        min-width: 0;
    }
    .clients-toolbar-row > .col-lg-4 {
        flex: 0 0 auto;
        max-width: 100%;
        width: auto;
        margin-left: auto;
    }
}

.toolbar-actions {
    display: flex;
    align-items: center;
    gap: 4px;
    background: #f0f0f0;
    border: 1px solid #e0e0e0;
    border-radius: 8px;
    padding: 4px 6px;
}
.toolbar-icon-btn {
    width: 32px;
    height: 32px;
    padding: 0 !important;
    display: inline-flex;
    align-items: center;
    justify-content: center;
    border-radius: 6px !important;
    font-size: 13px;
    border: none !important;
    background: transparent !important;
    color: #555 !important;
    transition: background .15s ease, color .15s ease;
}
.toolbar-icon-btn:hover { background: #fff !important; color: var(--color1) !important; box-shadow: 0 1px 4px rgba(0,0,0,.12); }

.btn-gray { color: #444; background: #ebebeb; border: 1px solid #d8d8d8; }
.btn-gray:hover { background: #dedede; color: #222; border-color: #c8c8c8; box-shadow: 0 3px 8px rgba(0,0,0,.12); transform: translateY(-1px); }

.btn_primary { background-color: var(--color1); color: #fff; border: 1px solid var(--color1); box-shadow: 0 2px 6px rgba(11,89,150,.28); }
.btn_primary:hover { background-color: var(--color2); border-color: var(--color2); color: #fff; box-shadow: 0 4px 14px rgba(11,89,150,.38); }

.md_btn { font-size: 12px; padding: 6px 14px; border-radius: 6px; }
.md_btn:hover { filter: brightness(1.05); }

.header-actions { display: flex; align-items: center; justify-content: center; gap: 8px; flex-wrap: wrap; }
.header-actions .md_btn { display: inline-flex; align-items: center; justify-content: center; gap: 6px; margin: 0; }
.header-actions .dropdown-item,
.dash-content .dropdown-item {
  display: flex;
  align-items: center;
  gap: 8px;
}
.options-btn { display: inline-flex; align-items: center; gap: 6px; }

.toolbar-filters {
    display: flex;
    flex-wrap: wrap;
    align-items: stretch;
    gap: 14px;
}
.toolbar-filters .radioBtnDiv {
    display: inline-flex;
    flex-wrap: wrap;
    background: #f0f0f0;
    border: 1px solid #e0e0e0;
    border-radius: 8px;
    padding: 6px;
    gap: 2px;
}
.toolbar-filters .radioBtnDiv label {
    display: inline-flex;
    align-items: center;
    gap: 5px;
    font-size: 12px;
    font-weight: 500;
    padding: 5px 11px;
    margin: 0;
    border-radius: 6px;
    cursor: pointer;
    background: transparent;
    color: #555;
    transition: background .15s ease, color .15s ease, box-shadow .15s ease;
    white-space: nowrap;
}
.toolbar-filters .radioBtnDiv label input[type=radio] { display: none; }
.toolbar-filters .radioBtnDiv label:has(input[type=radio]:checked) {
    background: var(--color1);
    color: #fff;
    box-shadow: 0 1px 5px rgba(11,89,150,.35);
}
.toolbar-filters .radioBtnDiv label:not(:has(input:checked)):hover { background: #e2e2e2; color: #333; }
.toolbar-filters .radioBtnDiv label:has(input[type=radio]:checked) i.bi-envelope-exclamation-fill {
    color: #fff !important;
}

.toolbar-filters .radioBtnDiv label.has-new-clients {
    position: relative;
    color: #dc3545;
    animation: shake_anim 1.5s infinite;
}
/* Ported verbatim from the old CRM's webroot/css/style.css (same names,
   same keyframe steps) — alarm_anim pulses the background between --color1
   and white, shake_anim wiggles the label via rotate. Only paired together
   on the unchecked state below (see its comment) — the checked state's
   white text would go invisible against alarm_anim's white midpoint. */
@keyframes alarm_anim {
    0% { background-color: var(--color1); }
    50% { background-color: #fff; }
    100% { background-color: var(--color1); }
}
@keyframes shake_anim {
    0%, 100% { transform: rotate(-5deg); }
    10%, 30% { transform: rotate(10deg); }
    20%, 40% { transform: rotate(-5deg); }
    41% { transform: rotate(0deg); }
    100% { transform: rotate(0deg); }
}
/* Ported from the old CRM's .notify (templates/layout/admin.php's
   lbl.prepend('<span class="notify">'+count+'</span>')) — same green,
   same "beat" scale pulse, now driven by hasNewClients/newLeadsUnseenCount. */
.notify {
    display: inline-block;
    position: absolute;
    top: -8px;
    left: -6px;
    min-width: 16px;
    height: 16px;
    line-height: 16px;
    padding: 0 3px;
    background: #30b260;
    border-radius: 3px;
    color: #fff;
    font-size: 11px;
    font-weight: 700;
    text-align: center;
    animation: notify-beat 1s infinite ease-in-out;
}
@keyframes notify-beat {
    0%, 100% { transform: scale(1); }
    50% { transform: scale(1.25); }
}
.toolbar-filters .radioBtnDiv label.has-new-clients:not(:has(input:checked)) {
    background: rgba(220, 53, 69, .1);
    /* alarm_anim pulses background-color to white at its midpoint — safe
       here since this state's text stays red, but added only to the
       unchecked state: the checked state's text is white (see below), and
       pulsing its background to white too would make the label vanish. */
    animation: alarm_anim 1s infinite, shake_anim 1.5s infinite;
}
/* :has(input:checked) above has higher specificity than .has-new-clients
   alone, so it silently wins and hides the red — override it explicitly. */
.toolbar-filters .radioBtnDiv label.has-new-clients:has(input:checked) {
    background: #dc3545;
    color: #fff;
    box-shadow: 0 1px 5px rgba(220,53,69,.45);
}
@keyframes new-clients-shake {
    0%, 80%, 100% { transform: translateX(0); }
    82% { transform: translateX(-3px); }
    84% { transform: translateX(3px); }
    86% { transform: translateX(-3px); }
    88% { transform: translateX(3px); }
    90% { transform: translateX(0); }
}

.alarm-heart {
    cursor: pointer;
    color: #aaa;
    font-size: 14px;
}
.alarm-heart-set {
    color: #dc3545;
}
.alarm-heart-disabled {
    cursor: default;
    opacity: .5;
}
.alarm-heart-due {
    color: #dc3545;
    animation: new-clients-shake 3s ease-in-out infinite;
}
.info-note-block {
    display: block;
    font-size: 12.5px;
    color: #888;
    background: #fafafa;
    border: 1px dashed #e0e0e0;
    border-radius: 10px;
    padding: 10px 12px;
    margin-bottom: 14px;
}
.due-now-dismiss {
    font-size: 8px;
    margin-left: 4px;
    vertical-align: middle;
}

.tags-filter-btn { border-radius: 8px; padding: 9px 10px; font-size: 12px; }
.tags-filter-item { display: flex; align-items: center; gap: 6px; padding: 4px 6px; cursor: pointer; font-size: 13px; white-space: nowrap; }
.tags-filter-item input[type=checkbox] { margin: 0; flex-shrink: 0; }
.chev { font-size: 9px; margin-left: 2px; }

.my-clients-toggle {
    display: inline-flex;
    align-items: center;
    gap: 6px;
    font-size: 12px;
    font-weight: 500;
    padding: 6px 12px;
    border-radius: 8px;
    border: 1px solid #e0e0e0;
    background: #f7f7f7;
    color: #555;
    cursor: pointer;
    transition: background .15s ease, color .15s ease;
}
.my-clients-toggle input { display: none; }
.my-clients-toggle:has(input:checked) { background: var(--color1) !important; border-color: var(--color1) !important; color: #fff; }
.my-clients-avatar { width: 20px; height: 20px; border-radius: 50%; object-fit: cover; border: 2px solid transparent; transition: border-color .15s ease; }

/* Header avatar next to "Clients (N)" — see CLIENT_LIST_SELECTED_USER_AVATAR.md */
.header-user-avatar { width: 45px; height: 45px; object-fit: cover; border: 2px solid var(--color1); border-radius: 7px !important; }

/* Client list card (renamed from the mockup's bare `.dashboard` to avoid
   colliding with the existing `.section.dashboard` used app-wide) */
.client-dashboard {
    border: 1px solid #e4e4e4;
    border-radius: 10px;
    box-shadow: 0 2px 10px rgba(0,0,0,.06);
    overflow: hidden;
    margin: 10px 0;
    font-family: inherit;
    background: #fff;
}

.dash-head {
    background: #fafafa;
    border-bottom: 1px solid #ebebeb;
    padding: 10px;
    display: flex;
    align-items: center;
    flex-wrap: wrap;
    justify-content: space-between;
    gap: 10px;
}
.flex-gap-10 { display: flex; gap: 10px; flex-wrap: wrap; }

.wb-ele-dashboard {
    background: #fff !important;
    border: 1px solid #c7c7c7 !important;
    border-radius: 8px !important;
    font-size: 13px !important;
    height: 36px !important;
    padding: 0 10px 0 30px !important;
}
select.wb-ele-dashboard { padding-left: 12px !important; }

.position-relative > i.doSearch { position: absolute; left: 10px; top: 8.5px; color: #999; font-size: 13px; pointer-events: none; }

.order-note-text { font-size: 11px; text-align: center; }

.dash-content .columns-titles { background-color: #f5f5f5; border-bottom: 2px solid #e0e0e0; padding: 0; }
.dash-content .columns-titles .row { display: flex !important; flex-wrap: nowrap; }
.dash-content .columns-titles .hideMob { padding: 10px 0; }
.dash-content .columns-titles .title { display: flex !important; align-items: center; gap: 6px; color: var(--color2); font-size: 12px; font-weight: 700; letter-spacing: .4px; text-transform: uppercase; white-space: nowrap; }

.client { border-top: 1px solid #eee; }
.client:nth-child(odd) .client-row { background: url(../img/pattern_background.png), #f7f7f7; }
.client-row { padding: 10px 6px; }
.client-row:hover { background: #fbfbfb; }

.dash-content .client-row .info { border-right: 1px solid #f0f0f0; padding: 10px 8px; overflow: hidden; }
.dash-content .client-row .info.overflow-visible { overflow: visible; }
.dash-content .client-row .info:last-child { border-right: none; }
.info .row:not(.m-1) { margin-left: 0; margin-right: 0; }
.hideMob { display: block; }
.hideWeb { display: none !important; }
@media (max-width: 992px) {
    .hideMob { display: none !important; }
    .hideWeb { display: block !important; }
    .info .title { font-weight: 700; color: var(--gray); font-size: 12px; text-transform: uppercase; }
    .title.hideWeb { text-align: center; }
    .dash-content .client-row .info { border-right: none; border-bottom: 1px solid #f5f5f5; padding: 8px 4px; }
    .clients-toolbar { flex-direction: column; align-items: flex-start; gap: 6px; padding: 8px 0; }
    .toolbar-actions { width: 100%; justify-content: center; }
    .toolbar-filters { width: 100%; }
    .toolbar-filters .radioBtnDiv { width: 100%; justify-content: flex-start; }
    .toolbar-filters .radioBtnDiv label { flex: 1 1 auto; justify-content: center; font-size: 11px; padding: 6px 8px; }

    .dash-head .flex-gap-10 { flex-wrap: nowrap; overflow-x: auto; -webkit-overflow-scrolling: touch; }
    .dash-head .flex-gap-10 .position-relative { flex: 0 0 auto; }

    /* Filter fieldset: 3 fields per row instead of one long scrollable row;
       the leftover field(s) on the last row center themselves. */
    .dash-head .flex-gap-10.disable-wrap { flex-wrap: wrap; overflow-x: visible; justify-content: center; }
    .dash-head .flex-gap-10.disable-wrap .position-relative { flex: 0 0 calc((100% - 20px) / 3); }
    .dash-head .flex-gap-10.disable-wrap .position-relative input.wb-ele-dashboard,
    .dash-head .flex-gap-10.disable-wrap .position-relative select.wb-ele-dashboard { width: 100% !important; }

    .dash-content .client-row .info.d-flex .title.hideWeb { flex: 1 0 100%; }

    .action-toggles { justify-content: center; }
}

.note-flex-start { display: flex; justify-content: flex-start; }
.priority { display: flex; font-size: 12px; align-items: center; gap: 10px; margin-bottom: 4px; }
.priority > div.gray, .priority > div.low, .priority > div.med, .priority > div.high {
    width: 12px; height: 12px; border-radius: 50%; flex-shrink: 0;
}
.priority div.gray { background-color: #888; }
.priority div.low  { background-color: #eaff00; }
.priority div.med  { background-color: #ff9d00; }
.priority div.high { background-color: red; }
.priority a { font-weight: 700; color: var(--color2); }

/* Small inline actions (Reallocate / Revoke reallocation request) — plain
   `.small` anchors read as static text against this theme's muted card
   copy, so give them an explicit underline + hover state to signal they're
   clickable. */
.link-action { text-decoration: underline; cursor: pointer; color: #177b91; margin-top: 3px; }
.link-action:hover { color: var(--color2); text-decoration: underline; }
.link-action.disabled { opacity: .5; pointer-events: none; }
.link-action-danger { color: #dc3545; }
.link-action-danger:hover { color: #a52834; }

.priority-dot { width: 12px; height: 12px; border-radius: 50%; display: inline-block; vertical-align: middle; }
.priority-dot.gray { background-color: #888; }
.priority-dot.low  { background-color: #eaff00; }
.priority-dot.med  { background-color: #ff9d00; }
.priority-dot.high { background-color: red; }

.title.mb-1 { font-weight: 700; font-size: 16px; }
.redColor { color: var(--red2); font-size: 11px; }
.greenText { color: #198754 !important; }
.greyText { color: #ccc !important; }
.badgeInfo { display: inline-block; font-size: 10px; font-weight: 700; background: #f0f0f0; color: #888; border-radius: 4px; padding: 1px 5px; letter-spacing: .4px; vertical-align: middle; }
.ctr-sun-icon { color: var(--orange); }
.ctr-moon-icon { color: #556; }

.dash-content .client-row p, .dash-content .client-row .title { font-weight: 700; font-size: 12px; align-items: center; gap: 4px; margin: 0; }
.dash-content .client-row .title {
    font-size: 14px;
    font-weight: 700;
    color: #222;
    cursor: pointer;
}
.dash-content .client-row p { font-size: 14px; color: #555; margin-bottom: 3px; }
.dash-content .client-row p i { color: #aaa; width: 13px; text-align: center; font-size: 11px; margin-right: 3px; flex-shrink: 0; }
.dash-content .client-row p .bi-envelope { color: #4a9fe0; }
.dash-content .client-row p .bi-telephone { color: #30b260; }
.dash-content .client-row p .bi-flag { color: #e88a31; }
.dash-content .client-row p .country-flag-icon { display: inline-block; margin-right: 0px !important; margin-left: 3px; margin-bottom: 2px; font-size: 12px; flex-shrink: 0; vertical-align: middle; }
.dash-content .client-row p .bi-asterisk { color: #9b59b6; }
.dash-content .client-row p a { color: #555; transition: color .12s; }
.dash-content .client-row p a:hover { color: var(--color1); }

/* Placed after the shared "margin: 0" rule above (same specificity) so this
   mobile override actually wins the cascade instead of being reset by it. */
@media (max-width: 992px) {
    .dash-content .client-row .title { margin-bottom: 15px; }
}

.inline_chkbx { display: inline-flex; align-items: center; margin-right: 8px; font-size: 10px; }
.checkbox { display: flex; align-items: center; gap: 4px; }

/* Country of interest (Turkey/Cyprus/UAE/KSA) checkboxes on each client row —
   small pill toggles instead of the plain inline_chkbx list so an unchecked
   target market still reads clearly as an available, clickable option. */
.country-target-group { display: flex; flex-wrap: wrap; gap: 4px; }
.country-target-chip {
    display: inline-flex;
    align-items: center;
    gap: 4px;
    padding: 2px 7px 2px 5px;
    font-size: 11px;
    color: #777;
    background: #f4f5f7;
    border: 1px solid #e5e7eb;
    border-radius: 12px;
    cursor: pointer;
    transition: background .12s, border-color .12s, color .12s;
}
.country-target-chip input[type="checkbox"] { margin: 0; accent-color: #198754; }
.country-target-chip:hover { border-color: #c9cdd4; }
.country-target-chip:has(input:checked) {
    background: #e9f7ef;
    border-color: #a3ddc0;
    color: #198754;
    font-weight: 600;
}
.country-target-chip .country-flag-icon { margin: 0 !important; font-size: 11px; }

body.dark .country-target-chip { background: rgba(255,255,255,0.04); border-color: rgba(255,255,255,0.08); color: var(--text-muted); }
body.dark .country-target-chip:has(input:checked) { background: rgba(25,135,84,0.18); border-color: rgba(25,135,84,0.45); color: #6fd39d; }

.sm-txt {
    font-size: 12px;
    font-weight: 700;
    text-transform: uppercase;
    letter-spacing: .3px;
    color: #6c757d;
    margin-top: 8px;
    margin-bottom: 2px;
    display: flex;
    align-items: center;
    gap: 4px;
}

.wb-ele {
    background-color: #fff;
    border: 1px solid #c7c7c7;
    display: flex;
    align-items: center;
    gap: 10px;
    border-radius: 8px;
    font-size: 12px;
    height: 35px;
    min-height: 35px;
    white-space: nowrap;
    overflow: hidden;
    width: 100%;
    color: #333;
    justify-content: space-between;
    padding: 4px 8px;
    transition: border-color .2s ease, box-shadow .2s ease, background-color .2s ease;
}
select.wb-ele { width: 100%; }
.wb-ele.allocated { border-color: #198754; background: #f0fff5; }

/* EditClientModal.vue's Priority dropdown toggle button only — not
   .wb-ele.allocated (shared by every advisor select's green "allocated"
   tint elsewhere), just this one button's height. */
.wb-ele.priority-toggle-btn { height: 38px; }
.wb-ele.redBorder { border-color: var(--red2); }

/* Booking Date box (Clients/index.vue) — center its content either way,
   whether it's showing a date or the "No bookings yet" placeholder, instead
   of .wb-ele's default space-between (built for icon-left/value-right rows,
   not a single centered value/message). A booked date is a "you're all set"
   state, not a warning, regardless of how soon/overdue it is — same flat
   green as .wb-ele.allocated (rgb(240, 255, 245)) instead of the old
   redColor/text-warning conditional coloring. */
.wb-ele-booking-date { justify-content: center; }
.wb-ele-booking-date.has-date { background-color: rgb(240, 255, 245); color: #000; }

/* Non-editable advisor display (e.g. Field/After Sale for anyone without
   canEditBucket() rights) — same box as .wb-ele so it still reads as a
   select-shaped field, just visually muted/non-interactive instead of
   borderless plain text. */
.wb-ele-readonly {
    background-color: #f5f5f5;
    border: 1px solid #e0e0e0;
    display: flex;
    align-items: center;
    justify-content: center;
    text-align: center;
    gap: 10px;
    border-radius: 8px;
    font-size: 12px;
    height: 35px;
    min-height: 35px;
    white-space: nowrap;
    overflow: hidden;
    width: 100%;
    color: #666;
    padding: 4px 8px;
}

input[type="datetime-local"].wb-ele {
    border-radius: 8px !important;
    -webkit-appearance: none;
    appearance: none;
}

input[type="datetime-local"].wb-ele::-webkit-calendar-picker-indicator {
    margin-right: 20px;
}

.wb-ele-note{
    font-size: 12px;
    color: #444;
    border: 1px solid #ebebeb;
    border-radius: 6px;
    background: #fafafa;
    padding: 6px 10px;
    line-height: 1.5;
    cursor: pointer;
    transition: border-color .15s, background .15s;
    max-height: 60px;
    overflow: hidden;
}
 .wb-ele-note  p 
 {
color: #444 !important;
font-size: 12px !important;
font-weight: 500 !important;
 }

.wb-ele-note:hover { border-color: #c7c7c7; background: #fff; }
.wb-ele-note p { margin: 0; }

.dueNowBadge {
    display: inline-block;
    background: #dc3545;
    color: #fff;
    font-weight: 700;
    font-size: 10px;
    letter-spacing: .4px;
    border-radius: 4px;
    padding: 1px 6px;
    vertical-align: middle;
    margin-left: 6px;
}

.inlineElement .sm-txt { margin-top: 10px; }
.inlineElement .sm-txt:first-child { margin-top: 0; }

.listDisabled { cursor: not-allowed; pointer-events: none; opacity: .2; }

.noData { font-size: 14px; color: #d73b35; text-align: center; border: 1px solid rgba(0,0,0,.31); padding: 16px; border-radius: 6px; }

.inside-shadow {
    background: #fafafa;
    box-shadow: inset 0 3px 8px rgba(0,0,0,.06);
    border-top: 2px solid #f0f0f0;
    padding: 16px 20px;
    border-radius: 0 0 6px 6px;
    max-height: 600px;
    overflow-y: auto;
}

.note.index-note { border: 1px solid #eee; border-radius: 8px; padding: 12px; margin-bottom: 8px; background: #fff; }
.note .box-heading { display: flex; justify-content: space-between; align-items: center; }
.note_div_a {
    display: flex;
    gap: 5px;
    flex-direction: column;
    justify-content: center;
    align-items: center;
    border-right: 2px solid #cdcdcd;
    font-size: 12px;
}
.note_div_a small { color: #999; display: block; }
.note_div_b , .note_div_b div p { font-size: 13px; line-height: 1.5; color: #444; margin-left: 10px !important; margin-right: 10px !important; flex: 1; }
.note_div_b p { margin: 0; }
.note_div_b p + p { margin-top: 4px; }
.note_div_c { display: flex; flex-direction: column; gap: 4px; text-align: center; }

@media (max-width: 768px) {
    .note_div_a { flex-direction: row; border-right: none; border-bottom: 2px solid #cdcdcd; margin-bottom: 12px; margin-top: 15px; padding-right: 0; }
    .note.index-note .box-heading { display: block; }
}

.small_btn { border: none; border-radius: 5px; padding: 3px 10px; font-size: 12px; font-weight: 500; letter-spacing: .2px; color: #fff; transition: background-color .2s ease, transform .1s ease; }
.small_btn:hover { transform: translateY(-1px); }
.small_btn.icon-only { display: inline-flex; align-items: center; justify-content: center; width: 22px; height: 22px; padding: 0; }
.grayBg { background-color: #ccc; color: #333; }
.orangeBg { background-color: var(--orange); color: #fff; }
.darkRedBg { background-color: var(--color1); color: #fff; border: 1px solid var(--color1); box-shadow: 0 1px 4px rgba(11,89,150,.22); }

.tag-chip { display: inline-flex; align-items: center; gap: 6px; background: #eee; border-radius: 14px; padding: 4px 10px; font-size: 12px; margin: 2px; }
.tag-chip i { color: var(--red2); cursor: pointer; }

.ctr-sun-icon { color: #ff6a00 !important; font-size: .82em; margin-left: 4px; cursor: default; }
.ctr-moon-icon { color: #1565c0 !important; font-size: .82em; margin-left: 4px; cursor: default; }

.client-checkbox {
    appearance: none;
    -webkit-appearance: none;
    width: 16px;
    height: 16px;
    margin: 0;
    border: 1px solid #ced4da;
    border-radius: 5px !important;
    background-color: #fff;
    flex-shrink: 0;
    cursor: pointer;
    position: relative;
    vertical-align: middle;
    transition: background-color .15s ease, border-color .15s ease;
}

.client-checkbox:checked {
    background-color: var(--color1);
    border-color: var(--color1);
}

.client-checkbox:checked::after {
    content: '';
    position: absolute;
    left: 5px;
    top: 1px;
    width: 4px;
    height: 8px;
    border: solid #fff;
    border-width: 0 2px 2px 0;
    transform: rotate(45deg);
}

.action-toggles { display: flex; gap: 6px; margin-top: 8px; flex-wrap: wrap; justify-content: center; }
.action-toggle {
    display: inline-flex;
    align-items: center;
    gap: 4px;
    /* vw shrinks in CSS-px terms as the browser's page zoom goes up (more
       zoom = fewer CSS px fit the window), unlike px/em/rem which scale
       1:1 with zoom — so this pill stays compact instead of ballooning at
       125%/150%+ zoom. Clamped so it never goes illegible or oversized. */
    font-size: clamp(9px, 0.75vw, 11px);
    font-weight: 600;
    padding: 0.35em 0.8em;
    border-radius: 20px;
    border: 1px solid #e0e0e0;
    background: #f7f7f7;
    color: #555;
    cursor: pointer;
    transition: background .15s ease, color .15s ease, border-color .15s ease;
}
.action-toggle input { display: none; }
.action-toggle.is-done { background: var(--green) !important; border-color: var(--green) !important; color: #fff; cursor: default; }

/* AI MSG / Brainstorm / Profile — the three AI-related action-toggle
   buttons (see Clients/index.vue) get their own accent instead of the
   plain grey pill every other action-toggle (Called/Spoken/Tags) uses. */
.action-toggle-ai {
    background-color: #a54247;
    color: #fff;
    border-color: #a54247;
    border-radius: 10% !important;
}
.action-toggle.is-disabled { cursor: not-allowed; opacity: 0.6; }

.field-unset { background-color: #fdecea !important; border-color: #f5c2c7 !important; }
.unset-hint { display: inline-flex; align-items: center; gap: 3px; font-size: 11px; font-weight: 600; color: #dc3545; text-transform: none; letter-spacing: normal; }

.copyable { cursor: copy; }

.spin { display: inline-block; animation: spin 1s linear infinite; }
@keyframes spin { from { transform: rotate(0deg); } to { transform: rotate(360deg); } }

.due-now-alert {
  display: inline-flex !important;
  width: fit-content;
  align-items: center;
  gap: 4px;
  font-size: 11px !important;
  line-height: 1.2 !important;
  font-weight: 700;
  color: #fff !important;
  background-color: #dc3545 !important;
  border: none !important;
  border-radius: 4px !important;
  padding: 2px 6px !important;
  margin: 0 0 2px !important;
  animation: due-now-shake 2.5s ease-in-out infinite;
}
.due-now-alert i { font-size: 10px; }
@keyframes due-now-shake {
  0%, 84%, 100% { transform: translateX(0); }
  87% { transform: translateX(-2px); }
  90% { transform: translateX(2px); }
  93% { transform: translateX(-2px); }
  96% { transform: translateX(2px); }
}

.notes-toggle { cursor: pointer; }
.notes-toggle .wb-ele-note { padding-right: 26px; }
.notes-toggle.collapsed .wb-ele-note { min-height: 65px; }
.notes-toggle-chevron {
    position: absolute;
    top: 50%;
    right: 8px;
    transform: translateY(-50%);
    color: #999;
    font-size: 11px;
    transition: transform .2s ease;
}
.notes-toggle:not(.collapsed) .notes-toggle-chevron { transform: translateY(-50%) rotate(180deg); }
.copyable:hover { text-decoration: underline dotted; text-decoration-color: #999; }
