:root{--bg: #f5f7fa;--card: #ffffff;--text: #0f172a;--muted: #64748b;--line: #e6eaf2;--primary: #1976d2;--primary-weak: #e9f2ff;--danger: #d32f2f;--shadow: 0 8px 24px rgba(15, 23, 42, .06);--shadow-lift: 0 14px 34px rgba(15, 23, 42, .1);--shadow-modal: 0 24px 60px rgba(15, 23, 42, .14);--radius: 12px;--status-active-bg: #dcfce7;--status-active-text: #166534;--status-active-solid: #16a34a;--status-done-bg: #dbeafe;--status-done-text: #1e40af;--status-done-solid: #1976d2;--status-cancelled-bg: #e2e8f0;--status-cancelled-text: #475569;--status-cancelled-solid: #64748b;--status-noshow-bg: #fee2e2;--status-noshow-text: #991b1b;--status-noshow-solid: #dc2626;--status-overdue-bg: #fef3c7;--status-overdue-text: #92400e;--status-overdue-solid: #f59e0b}*{box-sizing:border-box}body{margin:0;font-family:ui-sans-serif,system-ui,-apple-system,Segoe UI,Roboto,Arial,"Apple Color Emoji","Segoe UI Emoji";background:var(--bg);color:var(--text)}#root{min-height:100vh}.page{padding:26px;max-width:1200px;margin:0 auto}.appShell{height:100vh;display:flex;flex-direction:column;overflow:hidden}.appMain{flex:1;min-height:0;overflow-y:auto;display:flex;flex-direction:column}.appFooter{flex-shrink:0;padding:10px 18px;border-top:1px solid var(--line);background:var(--card);color:var(--muted);font-size:13px;font-weight:700;text-align:center}.dashboardPage{max-width:none;width:100%;min-height:100%;padding:22px 24px 28px;display:flex;flex-direction:column}.row{display:flex;gap:10px;align-items:center}.topbar{background:var(--card);padding:14px 18px;border-bottom:1px solid var(--line);display:flex;justify-content:space-between;align-items:center;gap:16px;position:relative}.nav a{margin-right:14px;text-decoration:none;color:var(--primary);font-weight:600}.nav a:hover{text-decoration:underline}.nav{display:flex;align-items:center;gap:10px;flex-wrap:wrap}.topbarLeft{grid-column:1;min-width:0}.topbarNavRow{background:#4c638c;padding:4px 15px;border-bottom:1px solid #ddd;display:flex;justify-content:flex-end;align-items:center}.topbarPageTitle{margin-right:auto;font-size:17px;font-weight:800;color:#fff;white-space:nowrap}.topbarProperty{grid-column:2;justify-self:center;min-width:0;margin:0;font-family:Roboto Slab,serif;font-size:18px;font-weight:800;letter-spacing:.3px;color:#fff;line-height:1.2;white-space:nowrap;text-align:center}.topbarLogoSlot{display:flex;align-items:center;justify-content:flex-start;color:var(--muted);font-size:12px;font-weight:700}.topbarLogoSlot.hasLogo{width:100px;height:40px;justify-content:center;overflow:hidden;border-radius:8px}.topbarLogoSlot.noLogo{width:max-content;max-width:min(520px,42vw);min-height:40px}.topbarLogoSlot span{display:block;max-width:100%;color:#fff;font-size:var(--fallback-name-size, 18px);font-weight:800;line-height:1.1;overflow:visible;text-align:left;text-overflow:clip;white-space:normal;word-break:break-word}.topbarLogoSlot img{width:100px;height:40px;object-fit:contain;display:block;border-radius:8px}.topbarUser{font-size:13px;font-weight:700;color:var(--muted);white-space:nowrap}.userMenu{position:relative}.userMenuTrigger{width:28px;height:28px;border-radius:999px;border:1px solid rgba(255,255,255,.35);background:#ffffff1f;color:#fff;display:flex;align-items:center;justify-content:center;cursor:pointer;padding:0}.userMenuTrigger:hover{background:#ffffff38}.userMenuTrigger svg{width:16px;height:16px}.userMenuPanel{position:absolute;top:100%;right:0;margin-top:8px;min-width:180px;padding:12px;border:1px solid var(--line);border-radius:12px;background:var(--card);box-shadow:var(--shadow);z-index:40}.userMenuName{font-size:13px;font-weight:700;color:var(--text);margin-bottom:10px;padding-bottom:10px;border-bottom:1px solid var(--line);white-space:nowrap}.userMenuLogout{width:100%}.overdueMenu{position:relative}.overdueBellTrigger{position:relative;width:28px;height:28px;border-radius:999px;border:1px solid rgba(255,255,255,.35);background:#ffffff1f;display:flex;align-items:center;justify-content:center;cursor:pointer;padding:0}.overdueBellTrigger:hover{background:#ffffff38}.overdueBellTrigger svg{width:16px;height:16px}.overdueBellCount{position:absolute;top:-3px;right:-3px;min-width:14px;height:14px;padding:0 3px;border-radius:999px;background:#b71c1c;color:#fff;font-size:9px;font-weight:800;line-height:14px;text-align:center;border:1px solid #33435d}.overdueMenuPanel{position:absolute;top:100%;right:0;margin-top:8px;width:320px;max-height:360px;overflow-y:auto;padding:8px;border:1px solid var(--line);border-radius:12px;background:var(--card);box-shadow:var(--shadow);z-index:40}.overdueMenuGroup+.overdueMenuGroup{border-top:1px solid var(--line);margin-top:6px;padding-top:6px}.overdueMenuGroupHeader{display:block;width:100%;padding:6px 8px 2px;border:0;background:transparent;font:inherit;font-size:12px;font-weight:800;color:var(--muted);text-transform:uppercase;letter-spacing:.02em;text-align:left;cursor:pointer;border-radius:8px}.overdueMenuGroupHeader:hover{background:#f7fbff;color:var(--primary)}.overdueMenuItem{display:block;width:calc(100% - 12px);margin-left:12px;padding:8px;border:0;background:transparent;font:inherit;font-size:13px;color:var(--text);line-height:1.4;text-align:left;cursor:pointer;border-radius:8px}.overdueMenuItem:hover{background:#f7fbff}.rewardsBellCount{background:#2e7d32}.rewardsMenuItem{padding:8px;border-radius:8px}.rewardsMenuItem+.rewardsMenuItem{border-top:1px solid var(--line);margin-top:4px;padding-top:10px}.rewardsMenuItemInfo{font-size:13px;color:var(--text);line-height:1.4;margin-bottom:6px}.rewardsMenuItemActions{display:flex;gap:8px}.adminMenu{position:relative;margin-right:80px}.adminMenuTrigger{border:0;background:transparent;color:#fff;cursor:pointer;font:inherit;font-weight:600;padding:0}.adminMenuTrigger:hover{text-decoration:underline}.adminMenuPanel{position:absolute;top:100%;right:0;width:260px;padding:12px;border:1px solid var(--line);border-radius:12px;background:var(--card);box-shadow:var(--shadow);z-index:40}.mobileMenuTrigger{display:none;width:34px;height:34px;border-radius:999px;border:1px solid rgba(255,255,255,.35);background:#ffffff1f;color:#fff;align-items:center;justify-content:center;cursor:pointer;padding:0}.mobileMenuTrigger:hover{background:#ffffff38}.mobileMenuTrigger svg{width:20px;height:20px}.adminMenuSection+.adminMenuSection{margin-top:12px;padding-top:12px;border-top:1px solid var(--line)}.adminMenuSection label{margin-top:0;margin-bottom:6px}.adminMenuPanel .adminMenuLink{display:inline-flex;align-items:center;color:var(--primary);font-weight:700;text-decoration:none}.adminMenuLink:hover{text-decoration:underline}.logoAdminCard{max-width:560px;margin-top:16px}.logoPreviewFrame{width:174px;min-height:84px;margin-top:16px;border:1px solid var(--line);border-radius:8px;background:#f8fafc;display:flex;align-items:center;justify-content:center;color:var(--muted);font-size:12px;font-weight:700}.logoPreviewFrame img{width:150px;height:60px;object-fit:contain;display:block}.bookingPage{width:min(980px,calc(100% - 32px));margin:0 auto;padding:28px 0 42px}.bookingHeader{display:flex;justify-content:space-between;align-items:center;gap:18px;margin-bottom:18px}.bookingHeader h1{margin:0;font-size:30px}.bookingHeader p{margin:8px 0 0;color:var(--muted);font-weight:700}.bookingHeader img{width:150px;height:60px;object-fit:contain}.bookingPanel{border:1px solid var(--line);border-radius:8px;background:var(--card);box-shadow:var(--shadow);padding:18px}.bookingGrid,.bookingCustomerGrid{display:grid;grid-template-columns:repeat(2,minmax(0,1fr));gap:14px}.bookingTimeSection{margin-top:16px}.bookingTimeGrid{display:grid;grid-template-columns:repeat(auto-fill,minmax(76px,1fr));gap:8px;margin-top:8px}.bookingTimeGrid button{min-height:38px;border:1px solid #cbd7e6;border-radius:6px;background:#fff;cursor:pointer;font-weight:800}.bookingTimeGrid button:hover,.bookingTimeGrid button.selected{border-color:var(--primary);background:var(--primary);color:#fff}.bookingCustomerGrid{margin-top:16px}.bookingSummary,.bookingConfirmation{display:grid;gap:3px;margin-top:14px;padding:12px;border:1px solid #cbd7e6;border-radius:8px;background:#f8fbff}.bookingConfirmation{margin-bottom:16px;border-color:#9bd4ad;background:#f0fff4}.bookingHint{margin-top:10px;color:var(--muted);font-size:13px;font-weight:700}.bookingActions{display:flex;justify-content:flex-end;margin-top:16px}.qrAdminPanel{margin-top:18px;padding-top:16px;border-top:1px solid var(--line)}.qrPreviewFrame{width:212px;height:212px;margin-top:12px;padding:10px;border:1px solid var(--line);border-radius:8px;background:#fff}.qrPreviewFrame svg{width:100%;height:100%;display:block}.bookingLinkBox{margin-top:10px;padding:9px 10px;border:1px solid var(--line);border-radius:6px;background:#f8fafc;color:#334155;font-size:12px;font-weight:700;overflow-wrap:anywhere}h1{margin:0;font-size:22px}.muted{color:var(--muted);font-size:13px}input,select,textarea{width:100%;padding:9px 10px;border:1px solid var(--line);border-radius:10px;background:#fff;outline:none;font-size:14px}input:focus,select:focus,textarea:focus{border-color:#1976d280;box-shadow:0 0 0 3px #1976d226}label{display:block;margin-top:10px;font-weight:700;font-size:13px}.row input,.row select{width:auto}.dateTextInput{position:relative;display:grid;grid-template-columns:34px minmax(0,1fr);align-items:stretch;width:100%}.row .dateTextInput{width:140px}.dateTextInput input{min-width:0;border-top-left-radius:0;border-bottom-left-radius:0}.dateTextInputButton{width:34px;min-height:36px;border:1px solid var(--line);border-right:0;border-radius:10px 0 0 10px;background:#fff;color:#334155;cursor:pointer;display:flex;align-items:center;justify-content:center}.dateTextInputButton:hover{background:#f8fafc}.dateTextInputButton svg{width:15px;height:15px;fill:none;stroke:currentColor;stroke-linecap:round;stroke-linejoin:round;stroke-width:1.8}.btn{border:1px solid var(--line);background:#fff;padding:9px 12px;border-radius:10px;cursor:pointer;font-weight:700;font-size:13px;color:var(--text);transition:transform .05s ease,box-shadow .15s ease,background .15s}.btn:hover{background:#f8fafc;box-shadow:0 6px 14px #0f172a0f}.btn:active{transform:translateY(1px)}.btn.primary{background:var(--primary);border-color:var(--primary);color:#fff}.btn.primary:hover{background:#1565c0}.btn.danger{background:var(--danger);border-color:var(--danger);color:#fff}.btn:disabled{opacity:.6;cursor:not-allowed;box-shadow:none}.passwordInput{position:relative;width:100%}.row .passwordInput{width:auto;flex:1}.passwordInput input{padding-right:38px}.passwordInputToggle{position:absolute;top:0;right:0;bottom:0;width:34px;border:none;background:none;cursor:pointer;display:flex;align-items:center;justify-content:center;color:var(--muted)}.passwordInputToggle:hover{color:var(--text)}.passwordInputToggle:disabled{cursor:not-allowed;opacity:.5}.passwordInputToggle svg{width:18px;height:18px;fill:none;stroke:currentColor;stroke-linecap:round;stroke-linejoin:round;stroke-width:1.8}.tabBar{display:flex;gap:4px;border-bottom:1px solid var(--line);margin-bottom:16px;flex-wrap:wrap}.tabButton{border:none;background:none;padding:10px 16px;font-weight:700;font-size:14px;color:var(--muted);cursor:pointer;border-bottom:2px solid transparent;margin-bottom:-1px}.tabButton:hover{color:var(--text)}.tabButton.active{color:var(--primary);border-bottom-color:var(--primary)}.card{background:var(--card);border:1px solid var(--line);border-radius:var(--radius);padding:14px;box-shadow:var(--shadow)}.table{width:100%;border-collapse:collapse}.tableScroll{overflow-x:auto;-webkit-overflow-scrolling:touch}.table th{text-align:left;font-size:12px;color:var(--muted);padding:10px 8px;border-bottom:1px solid var(--line)}.table td{padding:12px 8px;border-bottom:1px solid #eef2fb}.table tr:hover td{background:#f8fbff}.pageHeaderRow{display:flex;justify-content:space-between;align-items:flex-start;gap:16px;margin-bottom:16px}.modalTitleRow{display:flex;justify-content:space-between;align-items:flex-start;gap:12px;margin-bottom:14px}.modalTitleRow h2{margin:0}.specialistEditModal,.invoiceModal{max-height:calc(100vh - 64px);overflow-y:auto}.specialistModalGrid{display:grid;grid-template-columns:minmax(220px,.9fr) minmax(240px,1fr);gap:18px}.splitFormCard{flex:1;min-width:320px}.splitListCard{flex:2;min-width:520px}.formGrid2{display:grid;grid-template-columns:repeat(2,minmax(0,1fr));gap:12px}.formGrid3{display:grid;grid-template-columns:repeat(3,minmax(0,1fr));gap:12px}.formGrid4{display:grid;grid-template-columns:repeat(4,minmax(0,1fr));gap:12px}.specialistModalSection{min-width:0}.specialistCalendarSection{grid-column:1 / -1;border-top:1px solid var(--line);padding-top:14px}.specialistModalSection h3{margin:0 0 12px;font-size:16px}.specialistProcedureList{display:grid;gap:8px;max-height:240px;overflow:auto;padding-right:4px}.propertyServiceChecklist{display:grid;gap:6px;max-height:240px;overflow:auto;padding:8px;margin-top:6px;border:1px solid var(--line);border-radius:6px}.propertyServiceChecklistItem{display:flex;align-items:center;gap:8px;font-weight:400}.propertyServiceChecklistItem input{width:auto}.marketSegmentBlock{border:1px solid var(--line);border-radius:8px;padding:10px 12px;margin-bottom:10px}.marketSegmentHeader{display:flex;align-items:center;gap:8px}.marketSegmentTitle{flex:1;font-weight:700}.marketSegmentToggle{background:none;border:none;cursor:pointer;font-size:14px;padding:4px 6px;color:var(--muted)}.marketSegmentServices{margin-top:10px;padding-top:10px;border-top:1px solid var(--line);display:grid;gap:6px}.marketSegmentServiceRow{display:flex;align-items:center;gap:8px}.checkboxLine{display:flex;align-items:center;gap:8px;margin-top:10px;font-weight:700}.checkboxLine input{width:auto}.calendarBlockTitle{margin:12px 0 8px;font-weight:800}.weekDayGrid{display:grid;grid-template-columns:repeat(7,minmax(0,1fr));gap:8px}.weekDayToggle{display:flex;justify-content:center;align-items:center;gap:6px;min-height:36px;margin:0;border:1px solid var(--line);border-radius:6px;background:#f8fbff;font-weight:800}.weekDayToggle input{width:auto}.inlineDateRow,.vacationDraftGrid{display:grid;grid-template-columns:minmax(0,1fr) auto;gap:8px;align-items:center}.vacationDraftGrid{grid-template-columns:minmax(0,1fr) minmax(0,1fr) auto}.dateChipList{display:flex;flex-wrap:wrap;gap:8px;margin-top:10px;min-height:30px}.dateChip{border:1px solid #b8c7dc;border-radius:999px;background:#eef6ff;color:#123052;padding:6px 10px;font-size:12px;font-weight:800;cursor:pointer}.modalActionRow{display:flex;justify-content:flex-end;gap:8px;margin-top:16px}.appointmentListStatus,.statusPill{display:inline-flex;align-items:center;min-height:24px;padding:3px 10px;border:1px solid transparent;border-radius:999px;font-size:12px;font-weight:800;line-height:1;white-space:nowrap}.appointmentListStatus.active,.statusPill.active{background:var(--status-active-bg);color:var(--status-active-text)}.appointmentListStatus.done,.statusPill.done{background:var(--status-done-bg);color:var(--status-done-text)}.appointmentListStatus.cancelled,.statusPill.cancelled{background:var(--status-cancelled-bg);color:var(--status-cancelled-text)}.appointmentListStatus.noShow,.statusPill.noShow{background:var(--status-noshow-bg);color:var(--status-noshow-text)}.statusPill.overdue{background:var(--status-overdue-bg);color:var(--status-overdue-text)}.error{margin-top:12px;background:#fff5f5;border:1px solid #ffd1d1;color:#b42318;padding:10px 12px;border-radius:10px;font-weight:700}.requiredMark{color:#d33}input.fieldInvalid,select.fieldInvalid,textarea.fieldInvalid{border-color:#d33;background:#fff5f5}input.fieldInvalid:focus,select.fieldInvalid:focus,textarea.fieldInvalid:focus{border-color:#d33;box-shadow:0 0 0 3px #d3333326}.appointmentEmptyServicesInvalid{border:1px solid #d33;background:#fff5f5}.dashboardDateControls{margin-bottom:18px}.gridWrap{overflow:auto;border:1px solid var(--line);border-radius:var(--radius);background:var(--card);box-shadow:var(--shadow);width:100%}.cell{border-bottom:1px solid #eef2fb;border-right:1px solid #eef2fb;padding:8px;min-height:30px}.header{background:#f0f6ff;font-weight:800;color:#0b3a6a}.slot{cursor:pointer;transition:background .15s ease,transform .05s ease}.slot.busy{background:var(--primary-weak);cursor:pointer}.slot.busy:hover{background:#dbe9ff}.plus{font-size:18px;color:#94a3b8;text-align:center}.modalOverlay{position:fixed;inset:0;z-index:9999;background:#0f172a73;display:flex;align-items:center;justify-content:center;padding:16px}.modal{width:540px;max-width:100%;z-index:10000;background:var(--card);border-radius:16px;padding:16px;border:1px solid var(--line);box-shadow:var(--shadow)}.list{border:1px solid #dde3f1;border-radius:10px;overflow:auto;max-height:160px;margin-top:8px;background:#fff}.listItem{padding:10px;border-bottom:1px solid #eef2fb;cursor:pointer}.listItem.active{background:#e9f2ff;font-weight:800}body{margin:0;font-family:Arial,sans-serif;background:#f5f7fa}.topbar{background:#33435d;padding:8px 15px;border-bottom:none;display:grid;grid-template-columns:minmax(0,auto) 1fr;align-items:center;gap:16px;position:relative}.nav a{margin-right:15px;text-decoration:none;color:#fff}.page{padding:30px}.gridWrap{overflow:auto;border:1px solid #e6eaf2;border-radius:10px;background:#fff;width:100%}.grid{display:grid;grid-template-columns:220px repeat(20,90px);min-width:100%;width:100%}.cell{border-bottom:1px solid #eef2fb;border-right:1px solid #eef2fb;padding:8px;min-height:30px;box-sizing:border-box}.header{background:#f0f6ff;font-weight:700}.sticky{position:sticky;top:0;z-index:2}.specialist{position:sticky;left:0;z-index:5;background:#f0f6ff;box-shadow:8px 0 14px #0f172a0f}.specialistCorner{position:sticky;left:0;z-index:6;background:#f0f6ff;box-shadow:8px 0 14px #0f172a0f}.slot{cursor:pointer}.slot.free:hover{background:#f7fbff}.slot.busy{background:#e9f2ff;cursor:default}.specialistAvatar{display:inline-flex;align-items:center;justify-content:center;border-radius:999px;color:#fff;font-weight:800;line-height:1;flex-shrink:0}.specialistHeaderAccent{border-top:3px solid var(--specialist-accent-solid, transparent)}.slot.busy.active{background:var(--status-active-bg)}.slot.busy.done{background:var(--status-done-bg)}.slot.busy.cancelled{background:var(--status-cancelled-bg)}.slot.busy.noShow{background:var(--status-noshow-bg);color:var(--status-noshow-text)}.slot.busy.noShow .muted{color:#991b1bbf}.slot.done{background:var(--status-done-bg)}.slot.cancelled{background:var(--status-cancelled-bg)}.slot.noShow{background:var(--status-noshow-bg)}.plus{font-size:18px;color:#9aa;text-align:center}.modalOverlay{position:fixed;inset:0;z-index:9999;background:#00000059;display:flex;align-items:center;justify-content:center;padding:16px}.modal{width:520px;max-width:100%;z-index:10000;background:#fff;border-radius:12px;padding:12px;border:1px solid #e6eaf2}.modalWide{width:min(860px,100%)}.modalOverlayTop{z-index:10020}.modalTop{z-index:10021}.customerDuplicateResults{margin-top:8px;max-height:180px;overflow-y:auto;border:1px solid var(--line);border-radius:10px;padding:10px 12px}.customerDuplicateResults h4{margin:0 0 8px}.customerDuplicateResultRow{padding:6px 0;border-top:1px solid var(--line)}.customerDuplicateResultRow:first-of-type{border-top:none}.customerDuplicateResultName{font-weight:700}.list{border:1px solid #dde3f1;border-radius:8px;overflow:auto;max-height:160px;margin-top:8px}.listItem{padding:8px;border-bottom:1px solid #eef2fb;cursor:pointer}.listItem:hover{background:#f7fbff}.listItem.active{background:#e9f2ff}.appointmentCustomerRow input{width:100%}.appointmentModalOverlay{align-items:flex-start;overflow-y:auto;padding:28px 18px}.appointmentModal{width:min(740px,100%);padding:16px 22px 18px;border-radius:8px;box-shadow:none}.appointmentModalTitleRow{display:flex;justify-content:space-between;align-items:flex-start;gap:16px;margin-bottom:20px}.appointmentModalTitleRow h2{margin:0;font-size:24px;line-height:1.15;font-weight:800}.appointmentTitleUnderline{width:min(404px,58vw);height:26px;margin-top:6px;border-radius:999px;background:#fbfcff}.appointmentStatusPill{flex:none;border:1px solid #d7deeb;border-radius:999px;padding:7px 12px;color:#3d4a5f;background:#f8fafc;font-size:12px;font-weight:800}.appointmentPanel{border:1px solid #dde5f0;border-radius:5px;background:#fff;padding:17px}.appointmentPanel label,.appointmentModal>label{margin-top:0;margin-bottom:8px;color:#00112b;font-size:11px;font-weight:800}.appointmentSearchPanel{margin-bottom:18px}.appointmentCustomerSearch{display:grid;grid-template-columns:minmax(0,1fr) 98px;gap:6px;align-items:stretch}.appointmentCustomerSearch input,.appointmentFormGrid select,.appointmentDateDisplay input,.appointmentExactTime input{min-height:43px;border-radius:3px;border-color:#cad4e2}.appointmentCustomerSearch input{cursor:pointer}.appointmentSearchButton{min-height:43px;border-radius:3px}.walkinToggleButton{margin-bottom:8px}.listOverdueDot{display:inline-block;width:10px;height:10px;border-radius:999px;background:var(--status-overdue-solid);flex-shrink:0}.listPaidCheck{display:inline-flex;align-items:center;justify-content:center;width:16px;height:16px;border-radius:999px;background:var(--status-done-bg);color:var(--status-done-solid);flex-shrink:0}.appointmentSelectedCustomer,.appointmentFieldHint{margin-top:7px;color:var(--muted);font-size:12px}.appointmentFormGrid{display:grid;grid-template-columns:repeat(2,minmax(0,1fr));gap:18px;margin-top:16px}.appointmentScheduleGrid{display:grid;grid-template-columns:minmax(0,1.4fr) minmax(240px,.98fr);gap:18px;align-items:stretch;margin-bottom:14px}.appointmentCalendarPanel,.appointmentTimePanel{min-height:384px}.appointmentCalendarHeader{display:flex;justify-content:space-between;align-items:center;gap:14px;margin-bottom:18px}.appointmentCalendarHeader label{margin-bottom:0}.appointmentMonthNav{display:flex;align-items:center;gap:16px;font-size:12px}.appointmentIconButton{width:22px;height:22px;padding:0;border:0;background:transparent;color:#00112b;cursor:pointer;font-size:18px;line-height:1;font-weight:800}.appointmentWeekdays,.appointmentCalendarGrid{display:grid;grid-template-columns:repeat(7,minmax(0,1fr))}.appointmentWeekdays{margin-bottom:9px;color:#53637a;font-size:10px;text-align:center}.appointmentDay{width:100%;aspect-ratio:1 / .72;border:0;border-radius:9px;background:transparent;color:#00112b;cursor:pointer;font-size:11px;font-weight:500}.appointmentDay:hover{background:#f1f6ff}.appointmentDay.selected{background:#0b5bd3;color:#fff;font-weight:800}.appointmentDay.mutedDay{color:#7d899a}.appointmentSelectedDateBlock{margin-top:14px;padding-top:14px;border-top:1px solid #cad4e2}.appointmentDateDisplay{position:relative}.appointmentDateDisplay input{padding-right:42px}.appointmentDateDisplay span{position:absolute;top:50%;right:13px;transform:translateY(-50%);color:#00112b;font-size:11px;font-weight:800}.appointmentTimeSlots{display:grid;grid-template-columns:repeat(2,minmax(0,1fr));gap:7px;margin-top:16px;padding-bottom:17px;border-bottom:1px solid #cad4e2}.appointmentTimeSlots button{min-height:39px;border:1px solid #e4e9f1;border-radius:3px;background:#fff;color:#30425d;cursor:pointer;font-size:12px;font-weight:500}.appointmentTimeSlots button:hover{border-color:#b6c7de;background:#f8fbff}.appointmentTimeSlots button.selected{background:#0b5bd3;border-color:#0b5bd3;color:#fff;font-weight:800}.appointmentExactTime{margin-top:12px}.appointmentAdvancedTime{margin-top:10px;color:var(--muted);font-size:12px}.appointmentAdvancedTime summary{cursor:pointer;font-weight:700}.appointmentAdvancedTime .row{margin-top:8px}.appointmentModal textarea{border-radius:3px;min-height:70px}.appointmentModalActions{justify-content:space-between;margin-top:14px}.appointmentModalSimple{width:min(490px,100%);padding:10px 14px 18px;border:0;border-radius:8px;background:radial-gradient(circle at 42% 43%,rgba(153,178,194,.34),transparent 13%),linear-gradient(115deg,#f7fbff,#e9f5ff 35%,#f8f8f8);box-shadow:var(--shadow-modal)}.appointmentTotalPrice{min-height:34px;padding:8px 10px;border:1px solid #c6cdd8;border-radius:4px;background:#fffffff0;font-size:15px;font-weight:800}.appointmentServicesHeader{display:flex;align-items:center;justify-content:space-between;gap:12px;margin:14px 0 8px}.appointmentServicesHeader h3{margin:0}.appointmentServicesList{display:grid;gap:10px;margin-bottom:12px}.appointmentServiceRow{display:grid;grid-template-columns:repeat(4,minmax(0,1fr)) 86px;gap:8px;align-items:end;padding:10px;border:1px solid var(--line);border-radius:8px;background:#ffffffb8}.appointmentLoyaltySection{margin:14px 0;padding:10px 12px;border:1px solid var(--line);border-radius:8px;background:#ffffffb8}.appointmentLoyaltySection h3{margin:0 0 8px}.appointmentLoyaltyReward{display:flex;align-items:center;justify-content:space-between;flex-wrap:wrap;gap:8px;padding:6px 0}.appointmentLoyaltyReward+.appointmentLoyaltyReward{border-top:1px solid var(--line)}.appointmentLoyaltyRewardInfo{font-size:13px;color:var(--text)}.appointmentEmptyServices{min-height:74px;padding:24px 14px;border:1px dashed #cbd7e6;border-radius:8px;background:#ffffff94;color:#64748b;font-size:13px;font-weight:800;text-align:center}.appointmentServiceListRow{display:grid;grid-template-columns:1fr;gap:4px;padding:10px;border:1px solid var(--line);border-radius:8px;background:#ffffffb8}.appointmentServiceListRowClickable{cursor:pointer}.appointmentServiceListRowClickable:hover{background:#eef5ff;border-color:var(--primary)}.appointmentServiceListRow strong,.appointmentServiceListRow span{display:block}.appointmentServiceListRow span{margin-top:3px;color:#64748b;font-size:12px;font-weight:700}.appointmentServiceListId{color:#64748b;font-size:12px;font-weight:700}.appointmentServiceStatusDot{width:12px;height:12px;margin-top:0;border-radius:999px;background:#94a3b8}.appointmentServiceStatusDot.active{background:var(--status-active-solid)}.appointmentServiceStatusDot.done{background:var(--status-done-solid)}.appointmentServiceStatusDot.noShow{background:var(--status-noshow-solid)}.appointmentServiceStatusDot.cancelled{background:var(--status-cancelled-solid)}.appointmentServiceStatusDot.overdue{background:var(--status-overdue-solid)}.appointmentServiceListActions{display:flex;justify-content:flex-start;gap:6px;margin-top:4px}.appointmentServiceActions{display:flex;justify-content:flex-end}.appointmentServiceDraftModal{width:min(490px,100%)}.appointmentServiceDraftGrid{display:grid;grid-template-columns:repeat(2,minmax(0,1fr));gap:10px;align-items:start}.availableSlots{margin-top:7px}.availableSlotsTitle{margin-bottom:5px;color:#53637a;font-size:11px;font-weight:800}.availableSlotsList{display:flex;flex-wrap:wrap;gap:5px}.availableSlotButton{min-height:26px;padding:4px 7px;border:1px solid #cbd7e6;border-radius:5px;background:#fff;color:#1f2937;cursor:pointer;font-size:12px;font-weight:700;white-space:nowrap}.availableSlotButton:hover{border-color:#1976d2;background:#eef6ff;color:#0b5bd3}.availableSlotsMuted,.availableSlotsError{color:#64748b;font-size:12px;font-weight:700}.availableSlotsError{color:#b42318}.appointmentModalSimple label{margin:0 0 5px;color:#111827;font-size:14px;font-weight:500}.appointmentSimpleHeader{display:flex;align-items:flex-start;justify-content:space-between;gap:12px;margin-bottom:12px}.appointmentSimpleTitle{margin:0;color:#0f172a;font-size:22px;line-height:1.2;font-weight:800}.appointmentCloseButton{width:28px;height:28px;flex:none;border:0;border-radius:6px;background:transparent;color:#465569;cursor:pointer;font-size:22px;line-height:1;font-weight:500}.appointmentCloseButton:hover{background:#ffffffbf;color:#0f172a}.appointmentModalSimple select,.appointmentModalSimple input,.appointmentModalSimple textarea{min-height:34px;border:1px solid #c6cdd8;border-radius:4px;background:#fffffff0;color:#1f2937;font-size:13px}.appointmentModalSimple textarea{margin-bottom:12px;min-height:48px;resize:vertical}.appointmentStatusLine{margin-bottom:8px;color:#506075;font-size:12px;font-weight:700}.appointmentLinkDecision{margin:10px 0 12px;padding:10px;border:1px solid #c9d7ea;border-radius:6px;background:#f7fbff;color:#1f2a44;font-size:13px}.appointmentPastTimeWarning{display:flex;align-items:flex-start;gap:8px;color:#d32f2f;font-weight:600}.appointmentPastTimeWarning svg{flex:0 0 auto;margin-top:1px}.appointmentInputWithIcon{display:grid;grid-template-columns:32px minmax(0,1fr);align-items:stretch;margin-bottom:12px}.appointmentInputWithIcon select,.appointmentInputWithIcon input{min-width:0;border-top-left-radius:0;border-bottom-left-radius:0}.appointmentFieldIcon{width:32px;min-height:34px;border:1px solid #c6cdd8;border-right:0;border-radius:4px 0 0 4px;background:#f8fafceb;color:#607086;display:flex;align-items:center;justify-content:center}.appointmentFieldIcon svg{width:15px;height:15px;fill:none;stroke:currentColor;stroke-linecap:round;stroke-linejoin:round;stroke-width:1.8}.appointmentIconTrigger{cursor:pointer;padding:0}.appointmentIconTrigger:hover{background:#eef6ff;color:#1f6fc2}.appointmentCustomerLine{display:grid;grid-template-columns:minmax(0,1fr) 70px;gap:7px;align-items:start;margin-bottom:12px}.appointmentCustomerLine .appointmentInputWithIcon{margin-bottom:0}.appointmentCustomerLine .appointmentSearchButton{min-height:35px;border-radius:5px;padding:8px 10px;font-size:13px}.customerAutocompleteWrap{position:relative}.customerAutocompleteDropdown{position:absolute;top:calc(100% + 4px);left:0;right:0;z-index:20;max-height:220px;overflow:auto;background:#fff;border:1px solid var(--line);border-radius:8px;box-shadow:var(--shadow-lift)}.customerAutocompleteItem{padding:8px 10px;cursor:pointer;border-bottom:1px solid #eef2fb}.customerAutocompleteItem:last-child{border-bottom:none}.customerAutocompleteItem:hover{background:#f0f6ff}.customerAutocompleteName{font-weight:700;font-size:13px;color:var(--text)}.customerAutocompleteMeta{margin-top:2px;font-size:12px;color:var(--muted)}.appointmentDurationLine{display:grid;grid-template-columns:minmax(0,1fr) max-content;gap:8px;align-items:center;margin-bottom:12px}.appointmentDurationLine span{color:#53637a;font-size:13px;font-weight:700}.appointmentDateTimeGrid{display:grid;grid-template-columns:1fr 1fr;gap:12px}.appointmentHiddenPicker{position:absolute;width:1px;height:1px;opacity:0;pointer-events:none}.appointmentTimeWrap{position:relative}.appointmentStatusSelect{margin-bottom:12px}.appointmentTimePicker{position:absolute;top:calc(100% + 6px);left:auto;right:0;width:min(462px,calc(100vw - 40px));z-index:10030;display:grid;grid-template-columns:minmax(0,1.4fr) 86px 86px;gap:10px;padding:10px;border:1px solid #c6cdd8;border-radius:7px;background:#fff;box-shadow:var(--shadow-lift)}.appointmentTimePicker strong{display:block;margin-bottom:7px;font-size:11px;color:#53637a}.appointmentTimeSlotsPanel{min-width:0}.appointmentTimeSlotsPanel .availableSlotsList{max-height:150px;overflow:auto;align-content:flex-start}.appointmentPickerList{max-height:150px;overflow:auto;display:grid;gap:4px}.appointmentPickerList button{min-height:27px;border:1px solid #e2e8f0;border-radius:4px;background:#fff;color:#1f2937;cursor:pointer;font-weight:600}.appointmentPickerList button:hover,.appointmentPickerList button.selected{border-color:#1f6fc2;background:#1f6fc2;color:#fff}.appointmentPrimaryAction{display:flex;justify-content:center;gap:8px;flex-wrap:nowrap;margin-top:10px}.appointmentPrimaryAction .btn{flex:1;min-width:0;min-height:35px;border-radius:5px;font-size:14px}.appointmentStatusActions{justify-content:center;margin-top:8px}@media(max-width:760px){.appointmentModal{padding:14px}.appointmentCustomerSearch,.appointmentFormGrid,.appointmentScheduleGrid{grid-template-columns:1fr}.appointmentTitleUnderline{width:100%}.appointmentCalendarPanel,.appointmentTimePanel{min-height:0}.appointmentModalActions{align-items:stretch;flex-direction:column}.appointmentModalActions>.row{justify-content:flex-end}}@media(max-width:560px){.appointmentDateTimeGrid,.appointmentCustomerLine{grid-template-columns:1fr}}.customerSearchFilters{display:grid;grid-template-columns:repeat(2,minmax(0,1fr));gap:12px;margin-bottom:14px}.customerSearchList{height:360px;overflow:auto;border:1px solid #dde3f1;border-radius:12px}.customerSearchRow{cursor:pointer}.customerSearchRow.active td{background:#e9f2ff;font-weight:700}.customerListHeader{display:grid;grid-template-columns:max-content minmax(420px,1fr);gap:16px;align-items:center;margin-bottom:12px}.customerListHeader h3{margin:0}.listSearchForm{display:flex;gap:8px;justify-self:stretch}.listSearchInput{width:100%;flex:1}.splitListCard .listSearchForm{max-width:420px;margin-bottom:12px}.grid .header{font-weight:600;color:#1f3a5f}.grid .cell{min-height:50px}.dashboardPage .rowLane .cell,.dashboardPage .specialist .cell{min-height:0}.dashboardPage .grid .cell:not(.specialist):not(.specialistCorner),.dashboardPage .rowLane .cell{border-bottom-color:#e6eaf2}.dashboardPage .rowLane.stripeB .cell{border-bottom-color:#b8c1d4}.dashboardGridWrap{flex:1 1 auto;min-height:0;overflow:auto}.dashboardPage>.row{flex-shrink:0}.rowLane{position:relative}.nowTimeLine{position:absolute;left:0;right:0;height:2px;background:#f59f00;z-index:1;pointer-events:none}.rowLane.stripeA .cell{background:#f2fcff}.rowLane.stripeB .cell{background:#dcf1fc}.rowLane .cell.inactive{background:#ffe6e6;color:#9f1d1d;cursor:not-allowed}.specialist.stripeA{background:#f2fcff}.specialist.stripeB{background:#dcf1fc}.appointmentBlock{background:var(--status-active-bg);border:1px solid rgba(22,163,74,.3);box-shadow:none}.appointmentBlock.highlightPulse{outline:3px solid #e53935;outline-offset:2px;animation:highlightPulse 1s ease-in-out 4}@keyframes highlightPulse{0%,to{box-shadow:0 0 #e539358c}50%{box-shadow:0 0 0 8px #e5393500}}.appointmentTitle{font-size:11px;font-weight:800;line-height:1.1;white-space:nowrap;overflow:hidden;text-overflow:ellipsis}.appointmentSub{font-size:10px;color:var(--muted);font-weight:700;white-space:nowrap;overflow:hidden;text-overflow:ellipsis;margin-top:2px}.appointmentNumberBadge{position:absolute;left:7px;bottom:4px;padding:1px 5px;border-radius:4px;background:#ffffffc2;color:#334155;font-size:10px;font-weight:900;line-height:1.3;pointer-events:none}.appointmentNumberBadge.active{background:var(--status-active-bg);color:var(--status-active-text)}.appointmentNumberBadge.done{background:var(--status-done-bg);color:var(--status-done-text)}.appointmentNumberBadge.cancelled{background:var(--status-cancelled-bg);color:var(--status-cancelled-text)}.appointmentNumberBadge.noShow{background:var(--status-noshow-bg);color:var(--status-noshow-text)}.appointmentOverdueIndicator{position:absolute;right:7px;bottom:4px;width:14px;height:14px;border-radius:999px;background:var(--status-overdue-solid);pointer-events:none}.appointmentDoneIndicator{position:absolute;bottom:4px;right:6px;width:16px;height:16px;display:flex;align-items:center;justify-content:center;border-radius:999px;background:#ffffffd9;color:var(--status-done-solid);pointer-events:none}.appointmentDoneIndicator.appointmentDoneIndicatorPaired{right:24px}.appointmentPaidIndicator{position:absolute;bottom:4px;right:6px;width:16px;height:16px;display:flex;align-items:center;justify-content:center;border-radius:999px;background:#ffffffd9;color:var(--status-active-solid);pointer-events:none}.resizeGrip{background:#7fb7ff}.appointmentBlock.done{background:var(--status-done-bg)}.appointmentBlock.cancelled{background:var(--status-cancelled-bg)}.appointmentBlock.noShow{background:var(--status-noshow-bg);color:var(--status-noshow-text)}.appointmentBlock.noShow .appointmentSub{color:#991b1bbf}.appointmentBlock:active{cursor:grabbing}.dashboardListRowMuted,.invoiceRowMuted{opacity:.45;filter:grayscale(60%)}.invoiceRowPaid td{text-decoration:line-through}.dashboardListWrap{margin-top:12px}.dashboardListFiltersToggle{display:none;background:none;border:none;padding:4px 0 10px;margin:0;font-weight:700;font-size:14px;color:var(--text);cursor:pointer}@media(max-width:760px){.dashboardListFiltersToggle{display:block}}.dashboardNavButtons{display:flex;align-items:center;gap:6px}.dashboardDateDisplay{display:flex;align-items:stretch;gap:0}.dashboardDateDisplay .dateTextInput input{border-top-right-radius:0;border-bottom-right-radius:0;border-right:0}.dashboardWeekday{display:flex;align-items:center;padding:9px 12px;border:1px solid var(--line);border-left:0;border-radius:0 10px 10px 0;background:#f8fafc;color:var(--muted);font-weight:700;font-size:14px;white-space:nowrap}@media(max-width:980px){.topbarNavRow{justify-content:flex-start}.nav{display:flex;flex-wrap:wrap;gap:10px;align-items:center}.nav a{margin-right:0}}@media(max-width:760px){.bookingHeader,.bookingGrid,.bookingCustomerGrid{grid-template-columns:1fr}.bookingHeader{align-items:flex-start;flex-direction:column}.customerListHeader,.appointmentServiceRow,.appointmentServiceDraftGrid{grid-template-columns:1fr}.page{padding:16px}.row{flex-wrap:wrap}.splitFormCard,.splitListCard{min-width:0;width:100%}.formGrid2,.formGrid3,.formGrid4,.specialistModalGrid{grid-template-columns:1fr}.dashboardLegend{flex-wrap:nowrap;gap:10px;overflow-x:auto;-webkit-overflow-scrolling:touch;padding-bottom:2px}.legendItem{flex:0 0 auto;gap:4px}.legendLabel{font-size:12px;white-space:nowrap}.dashboardDateControls{flex-direction:column;flex-wrap:nowrap;align-items:stretch}.dashboardNavButtons,.dashboardDateDisplay{justify-content:center}.mobileMenuTrigger{display:flex}.topbarNavRow{position:relative;flex-wrap:wrap}.nav{display:none}.nav.navOpen{display:flex;flex-direction:column;align-items:stretch;gap:6px;position:absolute;top:100%;left:0;right:0;margin-top:1px;padding:10px 15px 14px;background:#4c638c;border-bottom:1px solid #ddd;box-shadow:var(--shadow);z-index:50}.nav.navOpen a{margin-right:0;padding:6px 0}.nav.navOpen .adminMenu{margin-right:0}.nav.navOpen .adminMenuPanel,.nav.navOpen .overdueMenuPanel,.nav.navOpen .userMenuPanel{position:static;width:100%;margin-top:6px;box-shadow:none}}@media(max-width:560px){.customerSearchFilters{grid-template-columns:1fr}.appointmentTimePicker{grid-template-columns:1fr;position:fixed;left:16px;right:16px;width:auto;top:auto}}@media(max-width:480px){.vacationDraftGrid{grid-template-columns:1fr}.weekDayGrid{font-size:12px}.dateTextInputButton{width:42px;min-height:42px}.row .dateTextInput{width:100%}}.reportPrintHeader{display:none}@media print{body *{visibility:hidden}#report-print-area,#report-print-area *{visibility:visible}#report-print-area{position:absolute;top:0;left:0;width:100%}.reportPrintHeader{display:block;margin-bottom:16px}.reportPrintHeader h2{margin:0 0 4px}.card{box-shadow:none;border:none}}.invoicePrintHeader{display:none}@media print{#invoice-print-area,#invoice-print-area *{visibility:visible}#invoice-print-area{position:absolute;top:0;left:0;width:100%}.modalOverlay,.invoiceModal{position:static!important;overflow:visible!important;max-height:none!important;background:none!important;box-shadow:none!important;padding:0!important}.invoicePrintHeader{display:block;margin-bottom:16px}.invoicePrintHeader h2{margin:0 0 4px}}
