.op-toolbar,.op-date-nav,.op-filters,.op-search{display:flex;align-items:center;gap:12px;flex-wrap:wrap}.op-toolbar{justify-content:space-between;margin-bottom:20px}.op-calendar{padding:24px 0;overflow:hidden}.op-calendar>.op-toolbar,.op-filters,.op-legend{padding:0 24px}.op-date-nav .btn{padding:8px 14px}.op-date-nav strong{font-size:16px}.op-views{display:flex;background:#eef2ea;padding:4px;border-radius:10px}.op-views button{border:0;background:transparent;padding:9px 15px;border-radius:7px;color:#577064;cursor:pointer}.op-views .selected{background:white;box-shadow:0 2px 5px #24382b12;color:#204b3e}.op-filters{margin-bottom:24px;align-items:flex-end}.op-filters label{margin:0;min-width:150px;flex:1}.op-filters input,.op-filters select{margin-top:5px}.op-grid-scroll{overflow:auto;max-height:70vh;border-block:1px solid #e1e7db}.op-time-grid{display:grid;grid-template-columns:64px repeat(var(--op-cols,3),minmax(165px,1fr));min-width:620px}.op-time-grid[data-columns="1"]{--op-cols:1}.op-time-grid[data-columns="2"]{--op-cols:2}.op-time-grid[data-columns="3"]{--op-cols:3}.op-time-grid[data-columns="4"]{--op-cols:4}.op-time-grid[data-columns="5"]{--op-cols:5}.op-time-grid[data-columns="6"]{--op-cols:6}.op-time-grid[data-columns="7"]{--op-cols:7}.op-time-grid[data-columns="8"]{--op-cols:8}.op-time-grid[data-columns="9"]{--op-cols:9}.op-time-grid[data-columns="10"]{--op-cols:10}.op-grid-head{position:sticky;top:0;background:#f4f6ef;z-index:2;padding:17px 10px;font-size:12px;font-weight:600;text-align:center;border-right:1px solid #e0e6da}.op-hour{padding:12px 6px;text-align:center;font-size:11px;color:#8b9684;background:#fafbf8;border-bottom:1px solid #e8ece3;position:sticky;left:0;z-index:1}.op-slot{border-right:1px solid #e8ece3;border-bottom:1px solid #e8ece3;min-height:48px;padding:3px;position:relative}.op-empty-slot{background:transparent;border:0;color:transparent;width:100%;height:100%;min-height:40px;cursor:pointer;border-radius:6px}.op-empty-slot:hover,.op-empty-slot:focus-visible{background:#e8f1e5;color:#486a48}.op-slot.occupied{background:repeating-linear-gradient(135deg,#f5f7f0,#f5f7f0 6px,#eef2e8 6px,#eef2e8 8px)}.op-busy-label{color:#839279;font-size:10px;padding:8px;display:block}.op-appointment{display:block;text-align:left;border:1px solid #b8d6c9;border-left-width:3px;border-radius:7px;padding:9px 10px;width:100%;background:#e6f2e9;color:#294b3b;cursor:pointer;margin-bottom:3px;line-height:1.5;white-space:normal}.op-appointment:hover{filter:brightness(.97)}.op-appointment span{display:flex;justify-content:space-between;gap:6px;font-size:10px}.op-appointment i{font-style:normal;font-size:9px}.op-appointment strong{display:block;font-size:12px;margin:3px 0}.op-appointment small{display:block;font-size:10px}.status-pending{background:#fbf1d9;border-color:#dec98d;color:#79601f}.status-confirmed{background:#e5f0e9;border-color:#b1ceb9;color:#2e6444}.status-arrived{background:#e3f1f5;border-color:#9fcbd7;color:#286071}.status-in_progress{background:#eee9f8;border-color:#c3b2df;color:#60488c}.status-completed{background:#d4e6dd;border-color:#8db59f;color:#285b41}.status-cancelled{background:#f1eeee;border-color:#d3c6c6;color:#827171}.status-no_show{background:#fbe6e2;border-color:#d8a7a0;color:#964b40}.status-rescheduled{background:#f4e9dd;border-color:#d6b598;color:#8c6342}.op-legend{display:flex;gap:10px;flex-wrap:wrap;margin-top:20px}.op-legend span{padding:5px 9px;border-radius:5px;font-size:10px}.op-month{display:grid;grid-template-columns:repeat(7,minmax(0,1fr));border-top:1px solid #e1e7db}.op-month>strong{padding:12px;text-align:center;font-size:12px}.op-month-day,.op-month-blank{min-height:130px;border:1px solid #e8ece3;padding:6px}.op-month-day>button:not(.op-appointment){border:0;background:none;cursor:pointer;padding:7px;font-size:12px;width:100%;text-align:left;color:#456349}.op-month-day>button>small{display:block;color:#8a9682}.op-month .op-appointment{padding:5px}.op-month .op-appointment small,.op-month .op-appointment i{display:none}.op-month .op-appointment strong{font-size:10px}.op-home-grid{display:grid;grid-template-columns:2fr 1fr;gap:20px}.op-agenda{display:grid;gap:8px}.op-agenda .op-appointment{padding:14px}.op-quick{display:grid;gap:0}.op-quick a{padding:18px 0;border-bottom:1px solid #e4e9dd;font-size:13px}.op-more{display:grid;gap:12px}.op-more>a{display:flex;align-items:center;gap:15px}.op-more>a>.icon:last-child{margin-left:auto}.op-search input[type=search]{flex:1;min-width:180px}.op-search .checkbox{margin:0}.op-search{margin-bottom:20px}.op-customer-list article{display:flex;align-items:center;gap:16px;padding:20px 0;border-bottom:1px solid #e8ece3}.op-customer-list article>div{flex:1}.op-customer-list strong{display:block;font-size:14px}.op-customer-list small{display:block;color:#829177;font-size:11px;margin:5px 0}.op-customer-list .badge{margin-top:4px}.op-customer-list article>small{max-width:150px}.op-entity-grid{display:grid;grid-template-columns:repeat(3,1fr);gap:20px}.op-entity-grid h3{font-size:18px;margin:20px 0 10px}.op-entity-grid p{font-size:12px;color:#7b8c70;line-height:1.8}.op-entity-grid .btn{margin-top:15px;margin-right:6px;font-size:11px;padding:9px 12px}.op-entity-grid del{color:#91a186;font-size:12px}.op-category-list{display:flex;gap:8px;flex-wrap:wrap}.op-category-list button{cursor:pointer;border:0}.op-hours-summary{display:grid;gap:5px;margin:20px 0;color:#6b7c61}.op-modal{max-width:820px;width:100%}.op-form-grid{display:grid;grid-template-columns:1fr 1fr;gap:0 18px}.op-modal textarea{width:100%;border:1px solid #dde5d4;background:#fafbf7;padding:12px;border-radius:8px;font:inherit;margin-top:7px;resize:vertical}.op-modal fieldset{border:1px solid #e0e6da;border-radius:10px;margin:15px 0 24px;padding:15px}.op-modal legend{font-size:12px;padding:0 8px;color:#6e805f}.op-check-grid{display:grid;grid-template-columns:1fr 1fr;gap:10px;max-height:240px;overflow:auto}.op-check-grid .checkbox{margin:0;padding:9px;background:#f5f7f0;border-radius:7px}.op-check-grid small{display:block;color:#7a8e6b;margin-top:4px;font-size:10px}.op-schedule-editor>div{display:grid;grid-template-columns:110px repeat(4,1fr);gap:8px;align-items:center}.op-schedule-editor strong{font-size:12px}.op-schedule-editor label{font-size:10px}.op-schedule-editor input{padding:9px 6px}.op-leave-row{display:grid;grid-template-columns:1fr 1fr 1fr auto;gap:10px;align-items:center}.op-leave-row .btn{padding:9px}.op-customer-picker{display:flex;align-items:center;gap:12px}.op-customer-picker>label{flex:1}.op-booking-summary{padding:15px;background:#eaf1e4;border-radius:8px;font-size:13px;margin-bottom:12px}#op-slots{display:flex;gap:8px;flex-wrap:wrap;margin:15px 0}#op-slots button{border:1px solid #c9d7bd;background:#f3f7ee;color:#406034;border-radius:6px;padding:9px 12px;cursor:pointer}.op-detail-services{margin-top:20px;border-block:1px solid #e0e6da}.op-detail-services strong{float:right}.op-status-actions{display:flex;gap:8px;flex-wrap:wrap;margin:20px 0}.mobile-add{background:#315c46;color:white;border:0;border-radius:14px;padding:9px 12px;display:flex;align-items:center;flex-direction:column;gap:4px;font-size:8px;cursor:pointer}.sidebar .side-link{padding-top:9px;padding-bottom:9px}.sidebar .nav-caption{margin-top:14px}.op-modal [hidden]{display:none!important}
.op-closed-slot{background:#f5f5f1;color:#9ba391;font-size:10px;padding:12px 8px}
.op-time-grid{position:relative;grid-auto-rows:60px}.op-time-grid .op-slot{height:60px;min-height:0;box-sizing:border-box}.op-time-grid .op-slot .op-appointment{position:absolute;top:calc(var(--op-offset,0)*2px);left:2px;width:calc(100% - 4px);height:calc(var(--op-duration,30)*2px);min-height:0!important;overflow:auto;margin:0;box-sizing:border-box;z-index:3}.op-time-grid .op-now-line{z-index:6}
@media(min-width:1600px){.op-entity-grid{grid-template-columns:repeat(4,1fr)}}
@media(max-width:1050px){.op-entity-grid{grid-template-columns:1fr 1fr}.op-home-grid{grid-template-columns:1fr}.op-calendar>.op-toolbar,.op-filters,.op-legend{padding-inline:15px}.op-date-nav strong{font-size:13px}}
@media(max-width:680px){.op-entity-grid{grid-template-columns:1fr}.op-calendar{margin-inline:-8px}.op-filters{gap:9px}.op-filters label{min-width:120px}.op-filters label:first-child{flex-basis:100%}.op-month{min-width:630px}.op-calendar:has(.op-month){overflow:auto}.op-customer-list article{flex-wrap:wrap;gap:10px}.op-customer-list article>small{display:none}.op-customer-list article>.btn{margin-left:48px}.op-form-grid{grid-template-columns:1fr}.op-check-grid{grid-template-columns:1fr}.op-schedule-editor>div{grid-template-columns:repeat(4,1fr);gap:6px}.op-schedule-editor strong{grid-column:1/-1;padding-top:10px}.op-schedule-editor input{font-size:11px;width:100%;min-width:0}.op-leave-row{grid-template-columns:1fr 1fr}.op-leave-row label{min-width:0}.op-customer-picker{display:block}.op-customer-picker>.btn{margin-bottom:15px}.op-modal{padding:24px 16px}.op-status-actions .btn{padding:9px;font-size:11px}.op-time-grid{min-width:540px}.op-views{width:100%;justify-content:space-around}.op-date-nav{gap:8px}.op-date-nav strong{flex:1;min-width:130px}.op-home-grid .card{padding:18px}.op-legend{gap:6px}.op-more .card{font-size:13px}}

/* Appointment cards visually span their real service duration. */
.op-time-grid .op-slot:has(.op-appointment){overflow:visible;z-index:3}
.op-time-grid .op-slot .op-appointment{min-height:calc(max(48px, var(--op-duration, 30) * 1.6px));}
.op-now-line{position:absolute;left:64px;right:0;height:2px;background:#d45b68;z-index:4;pointer-events:none}


.op-confirm-overlay{position:fixed;inset:0;background:#19332666;display:grid;place-items:center;z-index:100}.op-confirm{background:#fff;padding:26px;border-radius:14px;max-width:380px;width:calc(100% - 32px);box-shadow:0 20px 60px #19332633}.op-confirm h3{margin-top:0}.op-confirm .btn{margin-right:8px}

