:root{color-scheme:light;--ink:#17212b;--muted:#647181;--line:#d8e0e7;--soft-line:#e8edf2;--surface:#ffffff;--page:#f5f7f8;--teal:#087f7a;--teal-dark:#06645f;--blue:#2f6fbb;--coral:#c85045;--gold:#b98514;--green-soft:#e5f5ef;--blue-soft:#e8f0fb;--coral-soft:#fbecea;--shadow:0 20px 60px rgba(23,33,43,0.12)}*{box-sizing:border-box}body,html{min-height:100%}body{margin:0;background:var(--page);color:var(--ink);font-family:Inter,ui-sans-serif,system-ui,-apple-system,BlinkMacSystemFont,Segoe UI,sans-serif;letter-spacing:0}button,input,select,textarea{font:inherit}button{cursor:pointer}button:disabled{cursor:not-allowed;opacity:.65}a{color:var(--teal);text-decoration:none}a,label{font-weight:700}label{display:grid;gap:.4rem;color:var(--muted);font-size:.82rem}input,select,textarea{width:100%;min-height:42px;border:1px solid var(--line);border-radius:8px;background:var(--surface);color:var(--ink);padding:.7rem .8rem}textarea{resize:vertical}input:focus,select:focus,textarea:focus{border-color:var(--teal);box-shadow:0 0 0 3px rgba(8,127,122,.16);outline:none}.auth-page{min-height:100vh;display:grid;place-items:center;padding:2rem;background:linear-gradient(140deg,rgba(8,127,122,.1),transparent 34%),linear-gradient(320deg,rgba(200,80,69,.12),transparent 36%),var(--page)}.auth-panel{width:min(100%,440px);display:grid;gap:1.6rem;border:1px solid var(--soft-line);border-radius:8px;background:var(--surface);box-shadow:var(--shadow);padding:2rem}.auth-panel h1,.topbar h1{margin:.1rem 0 0;font-size:clamp(1.7rem,2vw,2.25rem);line-height:1.08}.eyebrow{margin:0;color:var(--teal);font-size:.72rem;font-weight:800;letter-spacing:.08em;text-transform:uppercase}.muted{margin:.45rem 0 0;color:var(--muted)}.center{text-align:center}.stack{display:grid;gap:1rem}.form-error{margin:0;border:1px solid rgba(200,80,69,.28);border-radius:8px;background:var(--coral-soft);color:#8f3028;padding:.75rem .85rem;font-size:.9rem;font-weight:700}.app-shell{height:100vh;min-height:0;display:grid;grid-template-rows:auto minmax(0,1fr);overflow:hidden}.topbar{position:sticky;top:0;z-index:20;justify-content:space-between;gap:1rem;border-bottom:1px solid var(--line);background:rgba(255,255,255,.92);padding:1rem clamp(1rem,3vw,2rem);backdrop-filter:blur(14px)}.topbar,.topbar-actions{display:flex;align-items:center}.topbar-actions{gap:.75rem}.user-chip{max-width:18rem;overflow:hidden;border:1px solid var(--line);border-radius:999px;background:#f9fbfb;color:var(--muted);padding:.5rem .75rem;text-overflow:ellipsis;white-space:nowrap}.scheduler-grid{display:grid;grid-template-columns:minmax(280px,340px) minmax(0,1fr);gap:1rem;min-height:0;overflow:hidden;padding:1rem}.calendar-panel,.control-panel{min-width:0;border:1px solid var(--line);border-radius:8px;background:var(--surface)}.control-panel{align-self:start;display:grid;gap:1rem;max-height:100%;overflow:auto;padding:1rem}.panel-section{display:grid;gap:.85rem;border-bottom:1px solid var(--soft-line);padding-bottom:1rem}.panel-section:last-child{border-bottom:0;padding-bottom:0}.section-title,.week-label{display:flex;align-items:center;gap:.5rem;color:var(--ink);font-weight:800}.booking-form,.compact-form{display:grid;gap:.8rem}.form-row{display:grid;grid-template-columns:repeat(auto-fit,minmax(120px,1fr));gap:.75rem}.calendar-panel{position:relative;display:flex;flex-direction:column;min-height:0;overflow:hidden}.calendar-toolbar{position:relative;z-index:12;flex:0 0 auto;display:flex;align-items:center;flex-wrap:wrap;gap:.6rem;border-bottom:1px solid var(--line);background:var(--surface);padding:.85rem}.toolbar-field{display:inline-flex;align-items:center;gap:.35rem;min-height:40px;color:var(--muted);font-size:.78rem;font-weight:800}.toolbar-field select{width:auto;min-height:40px;padding:.45rem .6rem}.segmented-control{display:inline-grid;grid-template-columns:repeat(3,1fr);overflow:hidden;border:1px solid var(--line);border-radius:8px}.segmented-control button{min-height:40px;border:0;border-right:1px solid var(--line);background:var(--surface);color:var(--muted);padding:0 .85rem;font-weight:800;text-transform:capitalize}.segmented-control button:last-child{border-right:0}.segmented-control button.active{background:var(--teal);color:#fff}.date-jump{position:relative}.week-label{min-width:min(100%,18rem);justify-content:center;border:1px solid var(--soft-line);border-radius:8px;background:var(--surface);padding:.6rem .8rem}.date-picker-popover{position:absolute;top:calc(100% + .4rem);left:0;z-index:30;width:15rem;box-shadow:var(--shadow)}.time-calendar{display:grid;align-content:start;flex:1 1 auto;min-height:0;overflow-x:hidden;overflow-y:auto}.time-axis-heading,.time-day-heading{position:sticky;top:0;z-index:8;min-height:42px;border-bottom:1px solid var(--line);background:rgba(255,255,255,.96);padding:.75rem;font-weight:800;backdrop-filter:blur(10px);overflow:hidden;text-align:center;text-overflow:ellipsis;white-space:nowrap}.time-axis-heading{z-index:9}.time-axis,.time-axis-heading{left:0;border-right:1px solid var(--line)}.time-axis{position:sticky;z-index:6;display:grid;background:#f8fafb}.time-axis-cell{min-height:0;border-bottom:1px solid #edf1f4;color:var(--muted);font-size:.64rem;line-height:1;padding:1px .35rem}.time-grid-day{position:relative;display:grid;grid-template-columns:minmax(0,1fr);min-width:0;border-right:1px solid var(--soft-line);background:#fbfcfd;user-select:none}.time-cell{grid-column:1;min-height:0;border:0;border-bottom:1px solid #edf1f4;background:transparent;padding:0;pointer-events:none}.time-cell:nth-child(4n){border-bottom-color:#dfe7ee}.time-cell:hover{background:rgba(8,127,122,.08)}.booking-slot,.calendar-block{position:relative;grid-column:1;z-index:3;display:grid;align-content:start;gap:.15rem;overflow:hidden;margin:1px .35rem;border:1px solid var(--line);border-left-width:5px;border-radius:8px;min-width:0;padding:.35rem .45rem;text-align:left}.booking-slot span,.calendar-block strong{min-width:0}.booking-slot small,.booking-slot span,.calendar-block small,.calendar-block span,.calendar-block strong{overflow:hidden;text-overflow:ellipsis;white-space:nowrap}.availability-block{z-index:2;background:var(--green-soft);color:#0f594a}.customer-availability-block{cursor:pointer}.drag-selection{z-index:7;border-color:rgba(8,127,122,.45);background:rgba(8,127,122,.18);color:#0f594a;pointer-events:none}.now-marker{position:absolute;left:0;right:0;z-index:9;height:0;border-top:2px solid var(--coral);pointer-events:none}.now-marker:before{content:"";top:-5px;left:-5px;width:10px;height:10px}.now-marker span,.now-marker:before{position:absolute;border-radius:999px;background:var(--coral)}.now-marker span{top:-13px;left:8px;color:#fff;padding:.15rem .45rem;font-size:.68rem;font-weight:800;white-space:nowrap}.booking-slot{z-index:4;min-height:18px;background:#fff;color:#0f594a;font-size:.72rem;line-height:1;padding:.2rem .35rem}.availability-block:hover,.booking-slot:hover,.busy-block.visible:hover{border-color:rgba(8,127,122,.45);box-shadow:0 8px 20px rgba(8,127,122,.12)}.month-calendar{display:grid;grid-template-columns:repeat(7,minmax(0,1fr));flex:1 1 auto;min-height:0;overflow-x:hidden;overflow-y:auto}.month-heading{position:sticky;top:0;z-index:5;border-bottom:1px solid var(--line);background:rgba(255,255,255,.96);padding:.75rem;font-weight:800}.month-day{min-height:148px;border-right:1px solid var(--soft-line);border-bottom:1px solid var(--soft-line);background:#fbfcfd;padding:.55rem}.muted-month{background:#f1f4f6;color:var(--muted)}.month-day-number{margin-bottom:.45rem;font-weight:800}.month-items{display:grid;gap:.3rem}.month-pill{overflow:hidden;width:100%;min-height:28px;border:1px solid var(--line);border-radius:8px;padding:.25rem .4rem;text-align:left;text-overflow:ellipsis;white-space:nowrap}.availability-pill{background:var(--green-soft);color:#0f594a}.busy-pill{background:var(--blue-soft);color:#214d85}.slot-pill{background:#fff;color:var(--teal)}.month-more{color:var(--muted);font-size:.75rem;font-weight:800}.week-grid{display:grid;grid-template-columns:repeat(7,minmax(180px,1fr));min-height:calc(100vh - 178px);overflow-x:auto}.day-column{min-width:180px;border-right:1px solid var(--soft-line);background:#fbfcfd}.day-column:last-child{border-right:0}.day-heading{position:sticky;top:0;z-index:5;border-bottom:1px solid var(--soft-line);background:rgba(251,252,253,.94);padding:.75rem;font-weight:800;backdrop-filter:blur(10px)}.day-items{display:grid;align-content:start;gap:.55rem;padding:.65rem}.busy-block,.slot-button{display:grid;gap:.25rem;width:100%;min-height:74px;border:1px solid var(--line);border-left-width:5px;border-radius:8px;padding:.65rem;text-align:left}.slot-button{background:var(--green-soft);color:#0f594a}.slot-button:hover{border-color:rgba(8,127,122,.45);box-shadow:0 8px 20px rgba(8,127,122,.12)}.busy-block{z-index:5;background:#f2f4f6;color:var(--muted)}.busy-block.visible{background:var(--blue-soft);color:#214d85}.busy-block small,.slot-button small{color:currentColor;opacity:.75}.empty-day,.loading-state{border:1px dashed var(--line);border-radius:8px;color:var(--muted);padding:1rem;text-align:center}.loading-state{margin:1rem}.calendar-loading-indicator{position:absolute;top:4.2rem;right:1rem;z-index:14;border:1px solid var(--line);border-radius:999px;background:rgba(255,255,255,.94);color:var(--muted);opacity:0;padding:.3rem .65rem;pointer-events:none;transform:translateY(-.25rem);transition:opacity .14s ease,transform .14s ease;font-size:.78rem;font-weight:800}.calendar-loading-indicator.visible{opacity:1;transform:translateY(0)}.danger-action,.ghost-action,.icon-button,.icon-text-button,.primary-action,.secondary-action{display:inline-flex;align-items:center;justify-content:center;gap:.45rem;min-height:40px;border-radius:8px;font-weight:800}.icon-button{width:40px;border:1px solid var(--line);background:var(--surface);color:var(--ink)}.ghost-action:hover,.icon-button:hover,.icon-text-button:hover,.secondary-action:hover{border-color:var(--teal)}.icon-button.danger{color:var(--coral)}.ghost-action,.icon-text-button,.secondary-action{border:1px solid var(--line);background:var(--surface);color:var(--ink);padding:0 .85rem}.primary-action{border:1px solid var(--teal);background:var(--teal);color:#fff;padding:0 1rem}.primary-action:hover{background:var(--teal-dark)}.danger-action{border:1px solid rgba(200,80,69,.45);background:var(--coral-soft);color:#8f3028;padding:0 .9rem}.availability-list{display:grid;gap:.45rem;max-height:260px;overflow:auto}.availability-row{display:grid;grid-template-columns:minmax(0,1fr) auto;align-items:center;gap:.45rem;border:1px solid var(--soft-line);border-radius:8px;padding:.55rem;color:var(--muted);font-size:.82rem}.drawer-backdrop{position:fixed;inset:0;z-index:50;display:flex;justify-content:flex-end;background:rgba(23,33,43,.32)}.drawer{width:min(100%,620px);height:100%;overflow:auto;background:var(--surface);box-shadow:var(--shadow);padding:1.25rem}.drawer.narrow{width:min(100%,460px)}.drawer-header{display:flex;align-items:flex-start;justify-content:space-between;gap:1rem;border-bottom:1px solid var(--soft-line);padding-bottom:1rem;margin-bottom:1rem}.drawer-header h2{margin:.2rem 0 0;font-size:1.35rem}.hold-banner{border:1px solid rgba(185,133,20,.28);border-radius:8px;background:#fff7df;color:#7a570d;margin:0 0 1rem;padding:.75rem .85rem;font-weight:800}.drawer-actions{display:flex;flex-wrap:wrap;justify-content:flex-end;gap:.7rem;margin-top:.5rem}.detail-list{display:grid;gap:.75rem;margin-bottom:1rem}.detail-list p{display:grid;gap:.2rem;margin:0;border:1px solid var(--soft-line);border-radius:8px;padding:.75rem}.detail-list strong{color:var(--muted);font-size:.75rem;text-transform:uppercase}.multiline{white-space:pre-line}.detail-link{color:var(--teal);font-weight:800;text-decoration:none}.detail-link:hover{text-decoration:underline}.service-settings-list{display:grid;gap:.55rem}.service-settings-row{display:grid;grid-template-columns:minmax(0,1fr) 5.5rem 5.5rem;align-items:end;gap:.5rem;border:1px solid var(--soft-line);border-radius:8px;padding:.55rem}.service-settings-row strong{align-self:center;font-size:.82rem}.travel-summary{display:grid;grid-template-columns:repeat(auto-fit,minmax(130px,1fr));gap:.55rem;margin:0 0 .8rem}.travel-summary p{display:grid;gap:.2rem;margin:0;border:1px solid var(--soft-line);border-radius:8px;background:#f8fafb;padding:.65rem}.travel-summary strong{color:var(--muted);font-size:.7rem;text-transform:uppercase}.slot-choice-grid{display:grid;grid-template-columns:repeat(auto-fit,minmax(128px,1fr));gap:.55rem}.slot-choice{display:grid;gap:.15rem;min-height:58px;border:1px solid var(--line);border-left:5px solid var(--teal);border-radius:8px;background:#fff;color:#0f594a;padding:.55rem .65rem;text-align:left}.slot-choice:hover{border-color:rgba(8,127,122,.45);box-shadow:0 8px 20px rgba(8,127,122,.12)}.slot-choice small{color:currentColor;opacity:.75}.mobile-booking-guide{display:none}.mobile-guide-header{display:grid;gap:.15rem}.mobile-guide-header h2,.mobile-guide-section h3{margin:0}.mobile-guide-header h2{font-size:1.25rem}.mobile-guide-section{display:grid;gap:.65rem}.mobile-guide-section h3{font-size:.95rem}.mobile-card-list{display:grid;gap:.55rem}.mobile-appointment-card,.mobile-availability-card{display:grid;gap:.2rem;width:100%;min-height:72px;border:1px solid var(--line);border-left:5px solid var(--teal);border-radius:8px;background:var(--green-soft);color:#0f594a;padding:.75rem;text-align:left}.mobile-appointment-card{border-left-color:var(--blue);background:var(--blue-soft);color:#214d85}.mobile-appointment-card small,.mobile-availability-card small{color:currentColor;opacity:.78}@media (max-width:980px){.app-shell{height:auto;min-height:100vh;overflow:visible}.scheduler-grid{grid-template-columns:1fr;overflow:visible}.control-panel{max-height:none;overflow:visible;position:static}.month-calendar,.time-calendar,.week-grid{min-height:620px}}@media (max-width:640px){.topbar{align-items:center;gap:.75rem;padding:.75rem}.topbar .eyebrow{display:none}.topbar h1{font-size:1.35rem}.topbar-actions{gap:.45rem}.topbar-actions .user-chip{max-width:8.5rem;padding:.45rem .65rem}.topbar-actions .icon-text-button{min-width:40px;padding:0 .7rem}.calendar-toolbar{align-items:center;display:grid;grid-template-columns:40px minmax(0,1fr) 40px auto auto;gap:.45rem}.scheduler-grid{padding:.7rem}.customer-calendar-panel .calendar-toolbar .toolbar-field{display:none}.customer-calendar-panel .calendar-toolbar{gap:.5rem}.calendar-toolbar .segmented-control{grid-column:1/-1;width:100%}.calendar-toolbar .date-jump,.calendar-toolbar .week-label{min-width:0;width:100%}.calendar-toolbar .icon-text-button{padding:0 .7rem}.customer-calendar-panel .month-calendar,.customer-calendar-panel .time-calendar{display:none}.mobile-booking-guide{display:grid;gap:1rem;padding:1rem}.drawer{padding:1rem}.drawer-actions{display:grid;grid-template-columns:1fr}.booking-form button,.compact-form button,.drawer-actions button{width:100%;min-height:46px}.month-calendar{grid-template-columns:repeat(7,minmax(0,1fr))}.auth-panel{padding:1.25rem}}