.psm-wrap{max-width:1280px;margin:24px auto;padding:0 16px;font-family:Tahoma,Arial,sans-serif;color:#172033;box-sizing:border-box}.psm-wrap *{box-sizing:border-box}.psm-card{background:#fff;border:1px solid #e6e9ef;border-radius:14px;padding:18px;box-shadow:0 6px 22px rgba(20,30,55,.06);margin-bottom:18px}.psm-top{display:flex;justify-content:space-between;align-items:center;gap:16px;margin-bottom:18px}.psm-top h1{margin:0 0 6px;font-size:24px}.psm-actions{display:flex;gap:8px;align-items:center;flex-wrap:wrap}.psm-btn{display:inline-block;border:1px solid #cfd5df;background:#fff;color:#24324a;border-radius:9px;padding:9px 14px;text-decoration:none;cursor:pointer;font:inherit}.psm-btn.primary{background:#2459e0;color:#fff;border-color:#2459e0}.psm-btn.danger{background:#b42318;color:#fff;border-color:#b42318}.psm-alert{padding:12px 14px;border-radius:10px;margin-bottom:16px;background:#eef2ff}.psm-alert.error{background:#feeceb;color:#8f1d17}.psm-alert.success{background:#e9f8ef;color:#176b3a}.psm-cal-head{display:flex;justify-content:space-between;align-items:center;gap:12px}.psm-cal-head h2{font-size:20px;margin:0}.psm-week,.psm-days{display:grid;grid-template-columns:repeat(7,1fr)}.psm-week span{text-align:center;padding:10px 4px;font-weight:700;color:#677188}.psm-day{min-height:130px;border:1px solid #eef0f4;padding:7px;background:#fff;overflow:hidden}.psm-day.today{background:#f6f8ff;outline:2px solid #9bb4ff;outline-offset:-2px}.psm-day.empty{background:#fafbfc}.psm-event{width:100%;border:0;border-right:4px solid #8d98aa;background:#f5f7fa;border-radius:6px;margin-top:6px;padding:5px;text-align:right;cursor:pointer;font:inherit;font-size:12px}.psm-event time{font-weight:700}.psm-event small{display:block;color:#657086;margin-top:2px}.psm-event.status-confirmed{border-right-color:#2459e0;background:#eef3ff}.psm-event.status-completed{border-right-color:#238451;background:#edf8f1}.psm-event.status-cancelled{border-right-color:#b42318;background:#fff0ef;text-decoration:line-through}.psm-event.status-pending{border-right-color:#d28a00;background:#fff8e8}.psm-grid{display:grid;grid-template-columns:minmax(0,3fr) minmax(240px,1fr);gap:18px}.psm-main{min-width:0}.psm-filters{display:grid;grid-template-columns:repeat(3,1fr);gap:8px;margin-bottom:14px}.psm-filters input,.psm-filters select,.psm-form input,.psm-form select,.psm-form textarea{width:100%;border:1px solid #ccd3df;border-radius:8px;padding:9px;font:inherit;background:#fff}.psm-table-wrap{overflow:auto}.psm-table{width:100%;border-collapse:collapse;min-width:760px}.psm-table th,.psm-table td{padding:10px;border-bottom:1px solid #edf0f4;text-align:right}.psm-link{background:none;border:0;color:#2459e0;cursor:pointer}.psm-upcoming{padding:10px 0;border-bottom:1px solid #eef0f3}.psm-upcoming span{display:block;color:#6c7587;margin-top:3px}.psm-modal{position:fixed;inset:0;background:rgba(10,18,30,.55);z-index:99999;display:none;padding:20px;overflow:auto}.psm-modal.open{display:flex;align-items:flex-start;justify-content:center}.psm-modal-box{position:relative;background:#fff;border-radius:14px;padding:22px;width:min(680px,100%);margin:5vh auto}.psm-close{position:absolute;left:14px;top:10px;border:0;background:none;font-size:28px;cursor:pointer}.psm-form{display:grid;grid-template-columns:1fr 1fr;gap:12px}.psm-form label{display:block}.psm-form label.wide,.psm-form .wide{grid-column:1/-1}.psm-details{display:grid;grid-template-columns:130px 1fr;gap:10px}.psm-details dt{font-weight:700}.psm-details dd{margin:0}.psm-muted{color:#667085}.psm-login-wrap{min-height:70vh;display:grid;place-items:center}.psm-login-card{width:min(420px,100%)}.psm-login-card label{display:block;margin:12px 0}.psm-login-card input{width:100%;padding:11px;border:1px solid #ccd3df;border-radius:8px;margin-top:6px}.psm-datepicker{position:absolute;z-index:100000;background:#fff;border:1px solid #d7dce5;border-radius:10px;padding:10px;width:290px;box-shadow:0 12px 30px rgba(0,0,0,.15)}.psm-dp-head{display:flex;justify-content:space-between;align-items:center;margin-bottom:8px}.psm-dp-grid{display:grid;grid-template-columns:repeat(7,1fr);gap:3px}.psm-dp-grid button{border:0;background:#f5f6f8;border-radius:5px;padding:6px 2px;cursor:pointer}.psm-dp-grid .head{font-size:11px;text-align:center;color:#6c7587;padding:4px 0}
@media(max-width:800px){.psm-top{align-items:flex-start;flex-direction:column}.psm-grid{grid-template-columns:1fr}.psm-filters{grid-template-columns:1fr}.psm-calendar{overflow:auto}.psm-week,.psm-days{min-width:850px}.psm-form{grid-template-columns:1fr}.psm-form label.wide,.psm-form .wide{grid-column:auto}}
.psm-role-badge{display:inline-block;margin-right:8px;padding:3px 8px;border-radius:999px;background:#eef3ff;color:#2459e0;font-size:12px}.psm-notice{border-right:4px solid #2459e0}.psm-notice p{margin-bottom:0}.psm-modal-large{width:min(780px,100%)}.psm-service-result{margin:20px 0;padding-top:18px;border-top:1px solid #e8ebf0}.psm-service-result h4{margin:0 0 12px}.psm-upcoming small{display:block;color:#7b8494;margin-top:3px}

.psm-repeat-badge{display:inline-block;padding:2px 7px;border-radius:999px;background:#fff0c7;color:#7a5200;font-size:11px;font-weight:700;margin-right:5px;text-decoration:none}.psm-customer-match{display:block;margin-top:6px;font-size:12px;color:#667085}.psm-customer-match.found{padding:8px;border-radius:8px;background:#eaf8ef;color:#176b3a}.psm-form input[readonly]{background:#f3f5f8;color:#4b5565}.psm-comments{margin:20px 0;padding-top:18px;border-top:1px solid #e8ebf0}.psm-comments h4{margin:0 0 12px}.psm-comment{padding:10px 12px;border:1px solid #e8ebf0;border-radius:10px;margin:8px 0;background:#fafbfc}.psm-comment>div{display:flex;justify-content:space-between;gap:10px;font-size:12px}.psm-comment time{color:#7b8494}.psm-comment p{margin:8px 0 0;white-space:normal}.psm-comment-form textarea{width:100%;border:1px solid #ccd3df;border-radius:8px;padding:9px;font:inherit;margin:8px 0}.psm-comment-form{margin-top:12px}

/* Calendar status colors */
.psm-status-legend{display:flex;flex-wrap:wrap;gap:10px 16px;margin:14px 0 10px;padding:10px 12px;background:#f8fafc;border-radius:10px;font-size:13px}.psm-status-legend span{display:inline-flex;align-items:center;gap:6px}.psm-status-legend i{width:12px;height:12px;border-radius:50%;display:inline-block}.psm-status-legend .pending i{background:#d28a00}.psm-status-legend .confirmed i{background:#2459e0}.psm-status-legend .completed i{background:#238451}.psm-status-legend .cancelled i{background:#b42318}.psm-event.status-pending{border-right-color:#d28a00;background:#fff2cc;color:#6a4700}.psm-event.status-confirmed{border-right-color:#2459e0;background:#dfe8ff;color:#173b8f}.psm-event.status-completed{border-right-color:#238451;background:#dff3e7;color:#165c38}.psm-event.status-cancelled{border-right-color:#b42318;background:#f9dcda;color:#84201d;text-decoration:line-through}.psm-event:hover{filter:brightness(.98);box-shadow:0 2px 8px rgba(0,0,0,.08)}

/* v1.2.2: calendar color follows the demo/service result saved by the service provider. */
.psm-event.service-not_reviewed{border-right-color:#8d98aa;background:#f1f3f6;color:#3f4858}
.psm-event.service-demo_done{border-right-color:#168a8a;background:#ddf5f3;color:#0d5d5d}
.psm-event.service-follow_up{border-right-color:#d28a00;background:#fff2cc;color:#6a4700}
.psm-event.service-reschedule{border-right-color:#7c4dba;background:#eee5f8;color:#563284}
.psm-event.service-customer_no_show{border-right-color:#b42318;background:#f9dcda;color:#84201d}
.psm-event.service-successful{border-right-color:#238451;background:#dff3e7;color:#165c38}
/* A cancelled booking always stays visibly cancelled. */
.psm-event.status-cancelled{border-right-color:#b42318;background:#f9dcda;color:#84201d;text-decoration:line-through}
.psm-service-badge{display:inline-block;margin-top:4px;padding:2px 6px;border-radius:999px;background:rgba(255,255,255,.65);font-size:10px;font-weight:700}
.psm-status-legend .service-not_reviewed i{background:#8d98aa}.psm-status-legend .service-demo_done i{background:#168a8a}.psm-status-legend .service-follow_up i{background:#d28a00}.psm-status-legend .service-reschedule i{background:#7c4dba}.psm-status-legend .service-customer_no_show i{background:#b42318}.psm-status-legend .service-successful i{background:#238451}
