.pv-client-portal,.pv-client-portal *{box-sizing:border-box}.pv-client-portal{max-width:920px;margin:36px auto;padding:0 18px;color:#1f2937;font-family:-apple-system,BlinkMacSystemFont,"Segoe UI",Roboto,Arial,sans-serif}.pv-client-portal-card{background:#fff;border:1px solid #e3e7ee;border-radius:16px;box-shadow:0 10px 32px rgba(15,23,42,.06);overflow:hidden}.pv-client-portal-head{padding:28px 30px 22px;border-bottom:1px solid #edf0f4}.pv-client-portal-head span{display:block;margin-bottom:7px;color:#6b5aa0;font-size:12px;font-weight:700;letter-spacing:.08em;text-transform:uppercase}.pv-client-portal-head h2{margin:0;color:#172033;font-size:28px}.pv-client-portal-head p{margin:8px 0 0;color:#667085}.pv-client-portal-form{display:grid;gap:16px;max-width:560px;padding:28px 30px 34px}.pv-client-portal-form label{display:grid;gap:7px;font-size:14px;font-weight:600}.pv-client-portal-form input{width:100%;min-height:46px;padding:10px 12px;border:1px solid #d7dce5;border-radius:9px;background:#fff;font-size:15px}.pv-client-portal-form input:focus{outline:none;border-color:#6b5aa0;box-shadow:0 0 0 3px rgba(107,90,160,.12)}.pv-client-portal-button{display:inline-flex;align-items:center;justify-content:center;gap:8px;min-height:44px;padding:10px 18px;border:0;border-radius:9px;background:#372a66;color:#fff;font-weight:700;cursor:pointer}.pv-client-portal-button:hover{background:#2d2257}.pv-client-portal-notice{margin:22px 30px 0;padding:13px 15px;border-radius:9px;font-size:14px}.pv-client-portal-notice.is-success{background:#ecfdf3;color:#027a48;border:1px solid #abefc6}.pv-client-portal-notice.is-error{background:#fff1f2;color:#b42318;border:1px solid #fecdd3}.pv-client-portal-identity{display:flex;align-items:center;gap:24px;flex-wrap:wrap;padding:22px 30px;background:#fafbfc;border-bottom:1px solid #edf0f4}.pv-client-portal-identity div{display:grid;gap:2px}.pv-client-portal-identity span{color:#667085;font-size:12px}.pv-client-portal-identity strong{font-size:14px}.pv-client-portal-identity a{margin-left:auto;color:#6b5aa0;font-weight:600;text-decoration:none}.pv-client-portal-tabs{display:flex;gap:8px;padding:20px 30px 0}.pv-client-portal-tabs button{display:inline-flex;align-items:center;gap:8px;padding:9px 14px;border:1px solid #e1e5ec;border-radius:9px;background:#fff;color:#475467;font-weight:600;cursor:pointer}.pv-client-portal-tabs button.is-active{border-color:#6b5aa0;background:#f5f2fb;color:#372a66}.pv-client-portal-tabs button span{display:inline-grid;place-items:center;min-width:22px;height:22px;padding:0 6px;border-radius:999px;background:#eef0f4;font-size:12px}.pv-client-portal-panel{padding:20px 30px 32px}.pv-client-portal-list{display:grid;gap:12px}.pv-client-portal-list article{display:flex;justify-content:space-between;gap:20px;padding:16px 18px;border:1px solid #e6e9ef;border-radius:11px;background:#fff}.pv-client-portal-list article>div:first-child{display:grid;gap:4px}.pv-client-portal-list article span,.pv-client-portal-list article small{color:#667085;font-size:13px}.pv-client-portal-list article strong{color:#172033}.pv-client-portal-meta{display:flex;align-items:center;gap:8px;flex-wrap:wrap;justify-content:flex-end}.pv-client-portal-meta span,.pv-client-portal-meta strong{padding:5px 9px;border-radius:999px;background:#f4f5f7;font-size:12px}.pv-client-portal-empty{padding:26px;border:1px dashed #d8dde6;border-radius:10px;color:#667085;text-align:center}@media(max-width:640px){.pv-client-portal{margin:18px auto;padding:0 10px}.pv-client-portal-head,.pv-client-portal-form,.pv-client-portal-panel{padding-left:18px;padding-right:18px}.pv-client-portal-identity{padding:18px;gap:14px}.pv-client-portal-identity a{width:100%;margin-left:0}.pv-client-portal-tabs{padding-left:18px;padding-right:18px}.pv-client-portal-list article{display:grid}.pv-client-portal-meta{justify-content:flex-start}}
.pv-client-request-link{padding:6px 9px;border-radius:8px;background:#372a66;color:#fff!important;text-decoration:none;font-size:12px;font-weight:700}.pv-client-request-detail{margin:22px 30px 0;border:1px solid #e4e7ec;border-radius:14px;overflow:hidden}.pv-client-request-detail-head{display:flex;justify-content:space-between;gap:16px;align-items:center;padding:15px 17px;background:#fafbfc;border-bottom:1px solid #e9edf2}.pv-client-request-detail-head div{display:grid;gap:2px}.pv-client-request-detail-head span{color:#667085;font-size:11px;text-transform:uppercase;letter-spacing:.06em}.pv-client-request-detail-head a{color:#6b5aa0;text-decoration:none;font-size:13px;font-weight:600}.pv-client-quote-card{margin:16px;padding:18px;border:1px solid #e5def5;border-radius:12px;background:#faf8ff}.pv-client-quote-card>span{display:block;color:#667085;font-size:12px}.pv-client-quote-card>strong{display:block;margin:4px 0 8px;color:#372a66;font-size:26px}.pv-client-quote-card p{margin:0 0 14px;color:#475467}.pv-client-quote-card small{display:block;margin-top:9px;color:#667085}.pv-client-quote-card.is-confirmed{background:#ecfdf3;border-color:#abefc6}.pv-client-quote-card.is-confirmed>strong{color:#027a48}.pv-client-request-detail .pv-booking-chat{margin:16px;border:1px solid #e4e7ec;border-radius:12px;overflow:hidden}.pv-booking-chat-head{display:flex;justify-content:space-between;gap:18px;align-items:flex-start;padding:14px 16px;border-bottom:1px solid #eef1f5;background:#fafbfc}.pv-booking-chat-head span{display:block;color:#6b5aa0;font-size:11px;font-weight:800;letter-spacing:.08em;text-transform:uppercase}.pv-booking-chat-head h4{margin:3px 0 0}.pv-booking-chat-head small{color:#667085}.pv-booking-chat-list{display:flex;flex-direction:column;gap:10px;max-height:360px;overflow:auto;padding:16px;background:#f8fafc}.pv-booking-chat-empty{text-align:center;color:#667085;padding:18px}.pv-booking-chat-message{max-width:78%;padding:10px 12px;border-radius:12px;background:#fff;border:1px solid #e4e7ec}.pv-booking-chat-message.is-therapist{align-self:flex-start}.pv-booking-chat-message.is-client{align-self:flex-end;background:#f3effc;border-color:#ddd3f3}.pv-booking-chat-message small{display:block;margin-top:5px;color:#7b8494;font-size:11px}.pv-booking-chat-form{display:flex;gap:10px;padding:12px;border-top:1px solid #eef1f5}.pv-booking-chat-form textarea{flex:1;min-height:46px;padding:10px 12px;border:1px solid #d7dce5;border-radius:10px;resize:vertical;font:inherit}.pv-booking-chat-form button{align-self:flex-end;min-height:42px;padding:0 18px;border:0;border-radius:9px;background:#372a66;color:#fff;font-weight:700}.pv-booking-chat-feedback{padding:0 12px 10px;color:#b42318;font-size:12px}@media(max-width:640px){.pv-client-request-detail{margin:18px}.pv-client-request-detail-head{align-items:flex-start;display:grid}.pv-booking-chat-head{display:grid}.pv-booking-chat-message{max-width:92%}.pv-booking-chat-form{display:grid}.pv-booking-chat-form button{width:100%}}

.pv-client-payment-form{margin:14px 0 8px}.pv-client-payment-form .pv-client-portal-button{width:100%;border:0;cursor:pointer}.pv-client-payment-check-form{margin-top:8px}.pv-client-payment-check{border:0;background:transparent;color:#513f8c;font-weight:700;cursor:pointer;text-decoration:underline}.pv-client-payment-unavailable{margin-top:12px;padding:12px;border-radius:10px;background:#fff4e5;color:#8a4b08;font-size:13px}

.pv-client-decline-quote-form{margin-top:10px}.pv-client-decline-quote{border:0;background:transparent;color:#b42318;font-weight:700;cursor:pointer;text-decoration:underline}

/* v3.0.6: own messages are always on the right for the current viewer. */
.pv-client-request-detail .pv-booking-chat-message.is-own{align-self:flex-end;background:#f3effc;border-color:#ddd3f3}
.pv-client-request-detail .pv-booking-chat-message.is-other{align-self:flex-start;background:#fff;border-color:#e4e7ec}

/* v3.0.7: viewer-relative realtime chat. */
.pv-client-request-detail .pv-booking-chat-message.is-own{align-self:flex-end!important;background:#f3effc!important;border-color:#ddd3f3!important}.pv-client-request-detail .pv-booking-chat-message.is-other{align-self:flex-start!important;background:#fff!important;border-color:#e4e7ec!important}

/* 3.0.8 realtime request updates */
.pv-client-request-detail .pv-booking-chat-message.is-system{align-self:center!important;max-width:90%;background:#f2f4f7!important;border:1px dashed #cfd5df!important;color:#475467;text-align:center}.pv-client-request-detail .pv-booking-chat-message.is-system small{color:#667085}.pv-client-toast-stack{position:fixed;top:18px;right:18px;z-index:999999;display:grid;gap:10px;width:min(360px,calc(100vw - 36px));pointer-events:none}.pv-client-toast{display:grid;gap:4px;padding:14px 16px;border:1px solid #ddd3f3;border-radius:12px;background:#fff;box-shadow:0 14px 34px rgba(16,24,40,.14);color:#172033!important;text-decoration:none!important;opacity:0;transform:translateY(-8px);transition:opacity .2s ease,transform .2s ease;pointer-events:auto}.pv-client-toast.is-visible{opacity:1;transform:translateY(0)}.pv-client-toast strong{font-size:14px}.pv-client-toast span{color:#667085;font-size:13px;line-height:1.45}.pv-client-live-state:empty{display:none}@media(max-width:640px){.pv-client-toast-stack{top:12px;right:12px;width:calc(100vw - 24px)}}

/* =========================================================
   v3.0.10 - CLIENT BOOKING MOBILE/TABLET POLISH
   Chat is rendered before the payment card in the request detail.
========================================================= */
.pv-client-live-state,
.pv-client-request-detail,
.pv-client-request-detail * {
    min-width: 0;
}

.pv-client-request-detail .pv-booking-chat {
    margin-bottom: 0;
}

.pv-client-request-detail .pv-client-live-state .pv-client-quote-card {
    margin-top: 16px;
}

.pv-client-quote-card p,
.pv-client-payment-unavailable,
.pv-client-request-detail-head strong,
.pv-client-request-detail-head a,
.pv-booking-chat-message > div {
    overflow-wrap: anywhere;
}

@media (max-width: 900px) {
    .pv-client-portal {
        width: 100%;
        max-width: 100%;
        margin: 24px auto;
        padding: 0 14px;
    }

    .pv-client-portal-card {
        width: 100%;
    }

    .pv-client-portal-head,
    .pv-client-portal-form,
    .pv-client-portal-panel {
        padding-left: 22px;
        padding-right: 22px;
    }

    .pv-client-request-detail {
        margin: 18px 22px 0;
    }

    .pv-client-request-detail-head {
        align-items: flex-start;
    }

    .pv-client-portal-list article {
        align-items: flex-start;
    }

    .pv-client-portal-meta {
        max-width: 52%;
    }
}

@media (max-width: 640px) {
    .pv-client-portal {
        margin: 12px auto;
        padding: 0 8px;
    }

    .pv-client-portal-card {
        border-radius: 12px;
    }

    .pv-client-portal-head {
        padding: 20px 14px 17px;
    }

    .pv-client-portal-head h2 {
        font-size: 23px;
        line-height: 1.2;
    }

    .pv-client-portal-head p {
        font-size: 13px;
        line-height: 1.45;
    }

    .pv-client-portal-notice {
        margin: 14px 14px 0;
        padding: 11px 12px;
        font-size: 13px;
        line-height: 1.45;
    }

    .pv-client-portal-identity {
        display: grid;
        grid-template-columns: 1fr;
        gap: 10px;
        padding: 14px;
    }

    .pv-client-portal-tabs {
        display: grid;
        grid-template-columns: repeat(2, minmax(0, 1fr));
        gap: 7px;
        padding: 14px 14px 0;
    }

    .pv-client-portal-tabs button {
        justify-content: center;
        min-width: 0;
        padding: 9px 8px;
        font-size: 13px;
    }

    .pv-client-portal-panel {
        padding: 14px 14px 20px;
    }

    .pv-client-portal-list article {
        gap: 12px;
        padding: 14px;
    }

    .pv-client-portal-meta {
        width: 100%;
        max-width: none;
        justify-content: flex-start;
    }

    .pv-client-request-link {
        display: inline-flex;
        justify-content: center;
        width: 100%;
        margin-top: 2px;
        padding: 9px 10px;
    }

    .pv-client-request-detail {
        margin: 14px 10px 0;
        border-radius: 11px;
    }

    .pv-client-request-detail-head {
        display: grid;
        gap: 9px;
        padding: 13px;
    }

    .pv-client-request-detail-head a {
        display: inline-flex;
        width: fit-content;
        max-width: 100%;
        font-size: 12px;
    }

    .pv-client-request-detail .pv-booking-chat,
    .pv-client-request-detail .pv-client-quote-card {
        margin: 12px;
    }

    .pv-booking-chat-head {
        gap: 5px;
        padding: 12px 13px;
    }

    .pv-booking-chat-head h4 {
        font-size: 16px;
    }

    .pv-booking-chat-list {
        max-height: 320px;
        padding: 12px;
    }

    .pv-booking-chat-message {
        max-width: 88%;
        padding: 9px 10px;
        font-size: 13px;
        line-height: 1.45;
    }

    .pv-booking-chat-message.is-system {
        max-width: 96% !important;
    }

    .pv-booking-chat-form {
        display: grid;
        grid-template-columns: 1fr;
        gap: 8px;
        padding: 10px;
    }

    .pv-booking-chat-form textarea {
        width: 100%;
        min-height: 72px;
    }

    .pv-booking-chat-form button {
        width: 100%;
        min-height: 42px;
    }

    .pv-client-quote-card {
        padding: 14px;
    }

    .pv-client-quote-card > strong {
        font-size: 22px;
        overflow-wrap: anywhere;
    }

    .pv-client-payment-form .pv-client-portal-button {
        white-space: normal;
        line-height: 1.3;
    }

    .pv-client-payment-check,
    .pv-client-decline-quote {
        padding: 6px 0;
        text-align: left;
        line-height: 1.35;
    }
}

@media (max-width: 380px) {
    .pv-client-portal-tabs button {
        gap: 5px;
        font-size: 12px;
    }

    .pv-client-request-detail {
        margin-left: 7px;
        margin-right: 7px;
    }

    .pv-client-request-detail .pv-booking-chat,
    .pv-client-request-detail .pv-client-quote-card {
        margin-left: 9px;
        margin-right: 9px;
    }
}


/* =========================================================
   v3.0.11 - COMPACT AUTO-GROWING CHAT COMPOSER
========================================================= */
.pv-client-request-detail .pv-booking-chat {
    width: auto;
    max-width: 100%;
    box-sizing: border-box;
}

.pv-client-request-detail .pv-booking-chat-form {
    display: grid;
    grid-template-columns: minmax(0, 1fr);
    gap: 9px;
    width: 100%;
    padding: 12px;
    box-sizing: border-box;
}

.pv-client-request-detail .pv-booking-chat-compose {
    width: 100%;
    min-width: 0;
}

.pv-client-request-detail .pv-booking-chat-form textarea {
    display: block;
    width: 100%;
    min-width: 0;
    height: 44px;
    min-height: 44px;
    max-height: 132px;
    padding: 11px 13px;
    resize: none;
    overflow-y: hidden;
    box-sizing: border-box;
    line-height: 1.45;
}

.pv-client-request-detail .pv-booking-chat-actions {
    display: flex;
    justify-content: flex-end;
    width: 100%;
}

.pv-client-request-detail .pv-booking-chat-form button {
    width: auto;
    min-width: 92px;
    align-self: auto;
}

@media (max-width: 640px) {
    .pv-client-request-detail .pv-booking-chat-form {
        gap: 8px;
        padding: 10px;
    }

    .pv-client-request-detail .pv-booking-chat-form textarea {
        min-height: 44px;
        max-height: 120px;
    }

    .pv-client-request-detail .pv-booking-chat-form button {
        width: auto;
        min-width: 88px;
    }
}

/* =========================================================
   v3.0.13 - CLIENT REQUEST DETAIL CARD
========================================================= */
.pv-client-request-summary,
.pv-client-request-summary * {
    box-sizing: border-box;
    min-width: 0;
}

.pv-client-request-summary {
    margin: 16px;
    padding: 18px;
    border: 1px solid #e4e7ec;
    border-radius: 12px;
    background: #fff;
}

.pv-client-request-summary-title {
    display: flex;
    align-items: flex-start;
    justify-content: space-between;
    gap: 14px;
    margin-bottom: 15px;
}

.pv-client-request-summary-title > div {
    min-width: 0;
}

.pv-client-request-summary-title span {
    display: block;
    margin-bottom: 3px;
    color: #7c6aa5;
    font-size: 11px;
    font-weight: 750;
    letter-spacing: .06em;
    text-transform: uppercase;
}

.pv-client-request-summary-title h3 {
    margin: 0;
    color: #172033;
    font-size: 19px;
    line-height: 1.3;
}

.pv-client-request-status {
    flex: 0 0 auto;
    max-width: 48%;
    padding: 6px 10px;
    border-radius: 999px;
    background: #f3effc;
    color: #493878;
    font-size: 12px;
    line-height: 1.3;
    text-align: center;
    overflow-wrap: anywhere;
}

.pv-client-request-summary-grid {
    display: grid;
    grid-template-columns: repeat(3, minmax(0, 1fr));
    gap: 10px;
}

.pv-client-request-summary-grid > div {
    display: grid;
    align-content: start;
    gap: 5px;
    min-height: 76px;
    padding: 12px 13px;
    border: 1px solid #e7eaf0;
    border-radius: 10px;
    background: #fafbfc;
}

.pv-client-request-summary-grid > div.is-wide {
    grid-column: 1 / -1;
    min-height: 0;
}

.pv-client-request-summary-grid span,
.pv-client-request-support-reason > span {
    color: #8a94a6;
    font-size: 11px;
    font-weight: 750;
    letter-spacing: .04em;
    text-transform: uppercase;
}

.pv-client-request-summary-grid strong {
    color: #2f3b52;
    font-size: 14px;
    line-height: 1.45;
    overflow-wrap: anywhere;
}

.pv-client-request-support-reason {
    margin-top: 12px;
    padding: 14px;
    border: 1px solid #e7eaf0;
    border-radius: 10px;
    background: #faf8ff;
}

.pv-client-request-support-reason p {
    margin: 6px 0 0;
    color: #344054;
    font-size: 14px;
    line-height: 1.6;
    overflow-wrap: anywhere;
}

@media (max-width: 820px) {
    .pv-client-request-summary-grid {
        grid-template-columns: repeat(2, minmax(0, 1fr));
    }
}

@media (max-width: 640px) {
    .pv-client-request-summary {
        margin: 12px;
        padding: 13px;
    }

    .pv-client-request-summary-title {
        display: grid;
        gap: 8px;
    }

    .pv-client-request-status {
        width: fit-content;
        max-width: 100%;
    }

    .pv-client-request-summary-grid {
        grid-template-columns: 1fr;
        gap: 8px;
    }

    .pv-client-request-summary-grid > div {
        min-height: 0;
        padding: 11px 12px;
    }

    .pv-client-request-support-reason {
        margin-top: 9px;
        padding: 12px;
    }
}

@media (max-width: 380px) {
    .pv-client-request-summary {
        margin-left: 9px;
        margin-right: 9px;
    }
}

/* =========================================================
   v3.0.18 - CLIENT PORTAL TABLET / MOBILE HARDENING
========================================================= */
@media (max-width: 900px) {
    .pv-client-portal,
    .pv-client-portal * {
        min-width: 0;
    }

    .pv-client-portal {
        width: 100%;
        max-width: 100%;
        padding-left: 14px;
        padding-right: 14px;
    }

    .pv-client-portal-head,
    .pv-client-portal-form,
    .pv-client-portal-panel,
    .pv-client-portal-identity,
    .pv-client-portal-tabs {
        max-width: 100%;
    }

    .pv-client-portal-list article,
    .pv-client-request-detail,
    .pv-client-request-summary,
    .pv-client-quote-card {
        min-width: 0;
        overflow-wrap: anywhere;
    }
}

@media (max-width: 640px) {
    .pv-client-portal {
        margin: 14px auto;
        padding-left: 8px;
        padding-right: 8px;
    }

    .pv-client-portal-card {
        border-radius: 13px;
    }

    .pv-client-portal-head,
    .pv-client-portal-form,
    .pv-client-portal-panel,
    .pv-client-portal-identity {
        padding-left: 14px;
        padding-right: 14px;
    }

    .pv-client-portal-head h2 {
        font-size: 23px;
        line-height: 1.25;
        overflow-wrap: anywhere;
    }

    .pv-client-portal-tabs {
        display: grid;
        grid-template-columns: repeat(2, minmax(0, 1fr));
        gap: 7px;
        padding-left: 14px;
        padding-right: 14px;
    }

    .pv-client-portal-tabs button {
        width: 100%;
        min-width: 0;
        justify-content: center;
        white-space: normal;
        text-align: center;
        line-height: 1.25;
    }

    .pv-client-portal-list article {
        gap: 12px;
        padding: 14px;
    }

    .pv-client-portal-meta {
        align-items: flex-start;
        justify-content: flex-start;
    }

    .pv-client-request-detail {
        margin: 12px;
    }

    .pv-client-request-detail-head {
        gap: 8px;
    }

    .pv-client-request-detail .pv-booking-chat,
    .pv-client-request-detail .pv-client-quote-card {
        margin-left: 10px;
        margin-right: 10px;
    }

    .pv-client-request-detail .pv-booking-chat-list {
        padding: 12px;
    }

    .pv-client-request-detail .pv-booking-chat-message {
        max-width: 94%;
        overflow-wrap: anywhere;
    }

    .pv-client-request-detail .pv-booking-chat-form button,
    .pv-client-portal-button,
    .pv-client-request-link {
        min-height: 44px;
    }
}

@media (max-width: 420px) {
    .pv-client-portal {
        padding-left: 5px;
        padding-right: 5px;
    }

    .pv-client-portal-head,
    .pv-client-portal-form,
    .pv-client-portal-panel,
    .pv-client-portal-identity {
        padding-left: 12px;
        padding-right: 12px;
    }

    .pv-client-portal-tabs {
        grid-template-columns: 1fr;
        padding-left: 12px;
        padding-right: 12px;
    }

    .pv-client-request-detail,
    .pv-client-request-summary {
        margin-left: 7px;
        margin-right: 7px;
    }

    .pv-client-request-summary-grid {
        grid-template-columns: 1fr;
    }

    .pv-client-request-detail .pv-booking-chat,
    .pv-client-request-detail .pv-client-quote-card {
        margin-left: 7px;
        margin-right: 7px;
    }

    .pv-client-request-detail .pv-booking-chat-actions {
        justify-content: stretch;
    }

    .pv-client-request-detail .pv-booking-chat-form button {
        width: 100%;
    }
}

/* =========================================================
   v3.0.21 - MOBILE CHAT SEND BUTTON CENTERING
========================================================= */
@media (max-width: 640px) {
    .pv-client-request-detail .pv-booking-chat-actions {
        justify-content: center !important;
    }

    .pv-client-request-detail .pv-booking-chat-form button {
        width: auto !important;
        min-width: 120px;
        margin-left: auto;
        margin-right: auto;
    }
}

/* =========================================================
   v3.0.22 - client reschedule confirmation
========================================================= */
.pv-client-reschedule-card {
    margin: 16px 0;
    padding: 15px;
    border: 1px solid #d9d2ea;
    border-radius: 12px;
    background: #f8f6fd;
}

.pv-client-reschedule-card-head {
    display: flex;
    align-items: center;
    gap: 10px;
    margin-bottom: 12px;
}

.pv-client-reschedule-card-head > i {
    display: grid;
    place-items: center;
    width: 36px;
    height: 36px;
    flex: 0 0 36px;
    border-radius: 50%;
    background: #e9e3f7;
    color: #433274;
}

.pv-client-reschedule-card-head span,
.pv-client-reschedule-times span {
    display: block;
    color: #75679a;
    font-size: 11px;
    font-weight: 700;
    text-transform: uppercase;
    letter-spacing: .04em;
}

.pv-client-reschedule-card-head strong,
.pv-client-reschedule-times strong {
    display: block;
    margin-top: 2px;
    color: #2f2552;
}

.pv-client-reschedule-times {
    display: grid;
    grid-template-columns: minmax(0, 1fr) auto minmax(0, 1fr);
    align-items: center;
    gap: 10px;
    margin-bottom: 12px;
}

.pv-client-reschedule-times > div {
    min-width: 0;
    padding: 10px;
    border-radius: 9px;
    background: #fff;
}

.pv-client-reschedule-card p {
    margin: 8px 0 12px;
    color: #475467;
    line-height: 1.5;
}

.pv-client-reschedule-card form {
    margin: 0 0 8px;
}

.pv-client-reschedule-card > small {
    color: #667085;
    line-height: 1.45;
}

@media (max-width: 560px) {
    .pv-client-reschedule-times {
        grid-template-columns: 1fr;
    }

    .pv-client-reschedule-times > i {
        transform: rotate(90deg);
        justify-self: center;
    }
}

/* =========================================================
   v3.0.32 - CHAT PRESENCE STATUS
========================================================= */
.pv-client-request-detail .pv-chat-presence {
    display: flex;
    flex-wrap: wrap;
    align-items: center;
    justify-content: flex-end;
    gap: 6px;
}

.pv-client-request-detail .pv-chat-presence-pill {
    display: inline-flex;
    align-items: center;
    gap: 6px;
    min-height: 28px;
    padding: 4px 9px;
    border: 1px solid #e3e7ee;
    border-radius: 999px;
    background: #fff;
    color: #667085;
    font-size: 11px;
    font-weight: 700;
    line-height: 1.2;
    white-space: nowrap;
}

.pv-client-request-detail .pv-chat-presence-pill > i {
    width: 8px;
    height: 8px;
    flex: 0 0 8px;
    border-radius: 50%;
    background: #98a2b3;
    box-shadow: 0 0 0 3px rgba(152, 162, 179, .14);
}

.pv-client-request-detail .pv-chat-presence-pill.is-online {
    border-color: #abefc6;
    background: #ecfdf3;
    color: #027a48;
}

.pv-client-request-detail .pv-chat-presence-pill.is-online > i {
    background: #12b76a;
    box-shadow: 0 0 0 3px rgba(18, 183, 106, .14);
}

@media (max-width: 640px) {
    .pv-client-request-detail .pv-booking-chat-head .pv-chat-presence {
        justify-content: flex-start;
        width: 100%;
    }
}


/* =========================================================
   v3.0.34 - DIRECT PAYMENT / CLIENT CONFIRMATION
========================================================= */
.pv-client-confirm-card .pv-client-direct-payment-note {
    display: flex;
    align-items: flex-start;
    gap: 9px;
    margin: 12px 0 14px;
    padding: 11px 13px;
    border: 1px solid #dfe7f3;
    border-radius: 10px;
    background: #f8fbff;
    color: #34445e;
    line-height: 1.45;
}

.pv-client-confirm-card .pv-client-direct-payment-note i {
    margin-top: 3px;
    flex: 0 0 auto;
}

.pv-client-confirm-appointment-form {
    margin-top: 10px;
}

.pv-client-confirm-card .pv-client-decline-quote-form {
    margin-top: 8px;
}

/* =========================================================
   v3.0.37 - CLIENT MESSAGE INBOX + OFFLINE MAIL FLOW
========================================================= */
.pv-client-portal-tabs .pv-client-messages-tab.has-unread {
    border-color: #d92d20;
    color: #b42318;
    background: #fff7f7;
}

.pv-client-portal-tabs .pv-client-messages-tab.has-unread > span,
.pv-client-unread-badge,
.pv-client-message-card-count {
    display: inline-grid;
    place-items: center;
    min-width: 20px;
    height: 20px;
    padding: 0 6px;
    border-radius: 999px;
    background: #b42318 !important;
    color: #fff !important;
    font-size: 11px !important;
    font-weight: 800;
    line-height: 1;
}

.pv-client-unread-badge[hidden],
.pv-client-message-card-count[hidden] {
    display: none !important;
}

.pv-client-message-link {
    display: inline-flex;
    align-items: center;
    justify-content: center;
    gap: 6px;
    min-height: 32px;
    padding: 6px 9px;
    border: 1px solid #d9d2ea;
    border-radius: 8px;
    background: #fff;
    color: #493878 !important;
    text-decoration: none !important;
    font-size: 12px;
    font-weight: 750;
}

.pv-client-message-link.has-unread {
    border-color: #f0b4ae;
    background: #fff8f7;
}

.pv-client-message-list {
    display: grid;
    gap: 11px;
}

.pv-client-message-card {
    display: grid;
    grid-template-columns: minmax(0, 1fr) auto;
    gap: 16px;
    align-items: center;
    padding: 15px 16px;
    border: 1px solid #e4e7ec;
    border-radius: 11px;
    background: #fff;
}

.pv-client-message-card.has-unread {
    border-color: #e2c6c2;
    box-shadow: inset 3px 0 0 #b42318;
}

.pv-client-message-card-main,
.pv-client-message-card-title,
.pv-client-message-card-title > div {
    min-width: 0;
}

.pv-client-message-card-title {
    display: flex;
    align-items: flex-start;
    justify-content: space-between;
    gap: 12px;
}

.pv-client-message-card-title > div {
    display: grid;
    gap: 3px;
}

.pv-client-message-card-title > div > span {
    color: #7c6aa5;
    font-size: 11px;
    font-weight: 750;
    letter-spacing: .04em;
    text-transform: uppercase;
}

.pv-client-message-card-title strong {
    color: #172033;
    font-size: 15px;
}

.pv-client-message-card p {
    margin: 7px 0 3px;
    color: #475467;
    font-size: 13px;
    line-height: 1.45;
    overflow-wrap: anywhere;
}

.pv-client-message-card small {
    color: #98a2b3;
    font-size: 11px;
}

.pv-client-message-card > a {
    display: inline-flex;
    align-items: center;
    justify-content: center;
    min-height: 38px;
    padding: 8px 11px;
    border-radius: 8px;
    background: #372a66;
    color: #fff !important;
    text-decoration: none !important;
    font-size: 12px;
    font-weight: 750;
    white-space: nowrap;
}

/* Full-width Send button on desktop, tablet and mobile. */
.pv-client-request-detail .pv-booking-chat-actions {
    display: block !important;
    width: 100% !important;
}

.pv-client-request-detail .pv-booking-chat-form button[data-pv-chat-send] {
    width: 100% !important;
    min-width: 0 !important;
    margin: 0 !important;
}

@media (max-width: 700px) {
    .pv-client-portal-tabs {
        grid-template-columns: repeat(3, minmax(0, 1fr)) !important;
    }

    .pv-client-portal-tabs button {
        gap: 5px;
        padding-left: 7px;
        padding-right: 7px;
        font-size: 12px;
    }

    .pv-client-portal-meta .pv-client-message-link,
    .pv-client-portal-meta .pv-client-request-link {
        flex: 1 1 150px;
        width: auto;
        margin-top: 2px;
        min-height: 40px;
    }

    .pv-client-message-card {
        grid-template-columns: 1fr;
        gap: 11px;
        padding: 14px;
    }

    .pv-client-message-card > a {
        width: 100%;
    }
}

@media (max-width: 430px) {
    .pv-client-portal-tabs {
        grid-template-columns: repeat(2, minmax(0, 1fr)) !important;
    }

    .pv-client-portal-tabs .pv-client-messages-tab {
        grid-column: 1 / -1;
    }

    .pv-client-portal-meta .pv-client-message-link,
    .pv-client-portal-meta .pv-client-request-link {
        flex-basis: 100%;
        width: 100%;
    }
}

/* =========================================================
   v3.0.38 - MESSAGE BADGE LAYOUT
   Keep request unread counts attached to the action that opens the thread.
========================================================= */
.pv-client-message-card-title {
    justify-content: flex-start;
}

.pv-client-message-card > .pv-client-message-open {
    gap: 8px;
}

.pv-client-message-card > .pv-client-message-open.has-unread {
    background: #372a66;
}

.pv-client-message-card > .pv-client-message-open .pv-client-message-card-count {
    flex: 0 0 auto;
    min-width: 20px;
    height: 20px;
    padding: 0 6px;
    border: 2px solid rgba(255,255,255,.92);
    box-sizing: border-box;
}

@media (max-width: 700px) {
    .pv-client-message-card > .pv-client-message-open {
        width: 100%;
    }
}

/* v3.0.39 - reschedule decision actions */
.pv-client-reschedule-card .pv-client-reschedule-decline-form {
    margin-top: 0;
}
.pv-client-reschedule-card .pv-client-secondary-button {
    width: 100%;
    min-height: 42px;
    border: 1px solid #d0d5dd;
    border-radius: 10px;
    background: #fff;
    color: #344054;
    font-weight: 700;
    cursor: pointer;
}
.pv-client-reschedule-card .pv-client-secondary-button:hover {
    background: #f8fafc;
}

/* =========================================================
   v3.0.53 - LIVE MESSAGE PREVIEW ON MY APPOINTMENTS
========================================================= */
.pv-client-portal-list article.has-unread-message {
    border-color: #b7c6df;
    box-shadow: inset 3px 0 0 #002053;
}

.pv-client-request-message-preview {
    flex: 1 0 100%;
    width: 100%;
    display: grid;
    grid-template-columns: 20px minmax(0, 1fr) auto;
    align-items: start;
    gap: 10px;
    padding: 11px 12px;
    border: 1px solid #cfdbec;
    border-radius: 9px;
    background: #f5f8fd;
    color: #344054;
}

.pv-client-request-message-preview[hidden] {
    display: none !important;
}

.pv-client-request-message-preview > i {
    margin-top: 2px;
    color: #002053;
}

.pv-client-request-message-preview > div {
    min-width: 0;
    display: grid;
    gap: 2px;
}

.pv-client-request-message-preview strong {
    color: #002053 !important;
    font-size: 12px !important;
    font-weight: 800;
}

.pv-client-request-message-preview p {
    margin: 0;
    color: #475467;
    font-size: 13px;
    line-height: 1.45;
    overflow-wrap: anywhere;
}

.pv-client-request-message-preview small {
    color: #667085 !important;
    font-size: 11px !important;
    white-space: nowrap;
}

@media (max-width: 640px) {
    .pv-client-request-message-preview {
        grid-template-columns: 18px minmax(0, 1fr);
    }

    .pv-client-request-message-preview small {
        grid-column: 2;
        white-space: normal;
    }
}

/* =========================================================
   v3.0.56 - CLIENT PORTAL MOBILE/TABLET OVERLAY HARDENING
========================================================= */
@media (min-width: 641px) and (max-width: 1024px) {
    .pv-client-toast-stack {
        top: calc(76px + 16px + env(safe-area-inset-top));
        right: max(16px, env(safe-area-inset-right));
    }
}

@media (max-width: 640px) {
    .pv-client-toast-stack {
        top: calc(82px + 12px + env(safe-area-inset-top));
        right: max(10px, env(safe-area-inset-right));
        left: max(10px, env(safe-area-inset-left));
        width: auto;
    }

    .pv-client-request-detail .pv-booking-chat-form {
        padding-bottom: calc(12px + env(safe-area-inset-bottom));
    }
}


/* =========================================================
   v3.0.57 - CLIENT LIVE MESSAGE PREVIEW LAYOUT FIX
========================================================= */
.pv-client-portal-list article {
    flex-wrap: wrap;
    min-width: 0;
}

.pv-client-portal-list article > div:first-child {
    flex: 1 1 180px;
    min-width: 0;
}

.pv-client-portal-list article > .pv-client-portal-meta {
    flex: 0 1 auto;
    min-width: 0;
}

.pv-client-request-message-preview {
    flex: 1 0 100%;
    width: 100%;
    max-width: 100%;
    min-width: 0;
    box-sizing: border-box;
}

.pv-client-request-message-preview > div,
.pv-client-request-message-preview p,
.pv-client-request-message-preview small {
    min-width: 0;
    max-width: 100%;
}

.pv-client-request-message-preview p {
    word-break: break-word;
}

@media (min-width: 641px) and (max-width: 900px) {
    .pv-client-portal-list article > div:first-child {
        flex-basis: 220px;
    }

    .pv-client-portal-list article > .pv-client-portal-meta {
        max-width: 52%;
    }

    .pv-client-request-message-preview {
        grid-template-columns: 20px minmax(0, 1fr) auto;
    }
}

@media (max-width: 640px) {
    .pv-client-portal-list article {
        display: grid;
        grid-template-columns: minmax(0, 1fr);
    }

    .pv-client-portal-list article > .pv-client-portal-meta {
        max-width: 100%;
    }

    .pv-client-request-message-preview {
        grid-column: 1 / -1;
        padding: 10px 11px;
    }
}

/* Private booking documents (staff and client request detail views). */
.pv-booking-documents-view { margin: 14px 0; padding: 13px 15px; border: 1px solid #e0e5ee; border-radius: 10px; background: #f8fafc; color: #253247; }
.pv-booking-documents-view strong { display: block; margin-bottom: 8px; font-weight: 650; }
.pv-booking-documents-view ul { list-style: disc; padding-left: 20px; margin: 0; }
.pv-booking-documents-view li { margin: 5px 0; overflow-wrap: anywhere; }
.pv-booking-documents-view a { color: #372a66; text-decoration: underline; }
.pv-booking-documents-view small { color: #637083; }
