*{box-sizing:border-box}body{color:#1e293b;background:#f5f7fa;margin:0;font-family:Arial,Helvetica,sans-serif}.form-group{flex-direction:column;gap:8px;display:flex}.form-group label{font-size:14px;font-weight:700}.input-group{position:relative}.input{color:#1e293b;background:#fff;border:1px solid #cbd5e1;border-radius:6px;width:100%;min-height:44px;padding:0 12px;font-size:14px;transition:border-color .15s,box-shadow .15s}.input-group .input{padding-left:40px}.input:focus{border-color:#1f5f99;outline:none;box-shadow:0 0 0 3px #1f5f9924}.error-text{color:#dc2626;font-size:14px}.button-loading-content{justify-content:center;align-items:center;gap:8px;display:inline-flex}.loading-spinner{border:2px solid #d1d5db;border-top-color:currentColor;border-radius:999px;width:16px;height:16px;animation:.75s linear infinite app-spin}@keyframes app-spin{to{transform:rotate(360deg)}}.btn{cursor:pointer;border:1px solid #0000;border-radius:6px;min-height:42px;padding:0 16px;font-size:14px;font-weight:700;transition:background-color .15s,border-color .15s,box-shadow .15s,color .15s}.btn-primary{color:#fff;background:#1f5f99;border-color:#1f5f99}.btn-primary:hover:not(:disabled),.btn-primary:focus-visible{background:#174c7d;border-color:#174c7d}.btn-secondary{color:#173b63;background:#edf3f9;border-color:#cbd8e5}.btn-secondary:hover:not(:disabled),.btn-secondary:focus-visible{background:#ddeaf5;border-color:#9eb5ca}.btn-ghost{color:#475569;background:#fff;border-color:#cbd5e1}.btn-ghost:hover:not(:disabled),.btn-ghost:focus-visible{color:#765719;background:#fffaf0;border-color:#c99a3d}.btn-block{width:100%}.btn:focus-visible{outline:none;box-shadow:0 0 0 3px #1f5f9933}.btn:disabled{cursor:not-allowed;opacity:.6}.login-page{justify-content:center;align-items:center;min-height:100vh;padding:24px;display:flex}.login-card{background:#fff;border:1px solid #e5e7eb;border-radius:8px;width:100%;max-width:420px;padding:32px;box-shadow:0 16px 40px #0f172a14}.login-card h1{margin:0 0 8px;font-size:28px}.login-card p{color:#6b7280;margin:0 0 24px}.login-icon{color:#6b7280;position:absolute;top:50%;left:12px;transform:translateY(-50%)}.login-password-input{padding-right:44px}.login-password-toggle{color:#6b7280;cursor:pointer;background:0 0;border:0;justify-content:center;align-items:center;width:28px;height:28px;padding:0;display:inline-flex;position:absolute;top:50%;right:10px;transform:translateY(-50%)}.login-error{margin:16px 0 0}.error-text{color:#dc2626;margin:12px 0 0;font-size:14px}.dashboard-shell{justify-content:center;align-items:center;min-height:100vh;padding:24px;display:flex}.dashboard-empty-state{text-align:center;background:#fff;border:1px solid #e5e7eb;border-radius:8px;width:100%;max-width:560px;padding:32px}.dashboard-empty-state h1{margin:0 0 8px}.dashboard-empty-state p{color:#6b7280;margin:0 0 24px}.appointment-calendar{background:#fff;border:1px solid #dbe3ec;border-radius:8px;padding:20px;overflow:hidden;box-shadow:0 10px 28px #173b6311}.appointment-calendar .fc{color:#1e293b;font-size:14px}.appointment-calendar .fc .fc-toolbar{gap:14px;margin-bottom:20px}.appointment-calendar .fc .fc-toolbar-title{color:#173b63;font-size:24px}.appointment-calendar .fc .fc-button-primary{box-shadow:none;text-transform:capitalize;background:#1f5f99;border-color:#1f5f99}.appointment-calendar .fc .fc-button-primary:hover,.appointment-calendar .fc .fc-button-primary:focus-visible{background:#174c7d;border-color:#174c7d}.appointment-calendar .fc .fc-button-primary:disabled{background:#94a9bd;border-color:#94a9bd}.appointment-calendar .fc-theme-standard th,.appointment-calendar .fc-theme-standard td,.appointment-calendar .fc-theme-standard .fc-scrollgrid{border-color:#dfe6ee}.appointment-calendar .fc-col-header-cell{background:#eef4fa}.appointment-calendar .fc-col-header-cell-cushion{color:#46627e;text-transform:uppercase;padding:10px 6px;font-size:12px;text-decoration:none}.appointment-calendar .fc-daygrid-day-number{color:#334155;padding:8px;font-weight:700;text-decoration:none}.appointment-calendar .fc-day-today{background:#fff8e7!important}.appointment-calendar .fc-daygrid-day-frame{min-height:112px}.appointment-calendar .fc-daygrid-event{cursor:pointer;background:#1f5f99;border:0;border-radius:4px;margin:2px 4px;padding:4px 6px;overflow:hidden}.appointment-calendar .fc-daygrid-event:hover{filter:brightness(.94)}.appointment-calendar .calendar-event-completed{background:#2f7d5a}.appointment-calendar .calendar-event-cancelled{background:#b44750}.appointment-calendar .calendar-event-no_show{background:#a77a25}.calendar-event-content{min-width:0;line-height:1.25}.calendar-event-customer,.calendar-event-service{text-overflow:ellipsis;white-space:nowrap;overflow:hidden}.calendar-event-customer{color:#fff;font-size:12px;font-weight:800}.calendar-event-service{color:#ffffffd6;margin-top:2px;font-size:11px}.appointment-calendar .fc-daygrid-more-link{color:#1f5f99;font-weight:800}@media (width<=820px){.appointment-calendar{padding:14px}.appointment-calendar .fc .fc-toolbar{flex-direction:column;align-items:stretch}.appointment-calendar .fc .fc-toolbar-chunk{justify-content:center;display:flex}}@media (width<=560px){.appointment-calendar{padding:8px}.appointment-calendar .fc{font-size:12px}.appointment-calendar .fc .fc-toolbar-title{font-size:20px}.appointment-calendar .fc .fc-button{padding:7px 10px;font-size:12px}.appointment-calendar .fc-col-header-cell-cushion{padding:8px 2px;font-size:10px}.appointment-calendar .fc-daygrid-day-number{padding:5px;font-size:11px}.appointment-calendar .fc-daygrid-day-frame{min-height:72px}.appointment-calendar .fc-daygrid-event{margin:1px 2px;padding:3px}.calendar-event-customer{font-size:10px}.calendar-event-service{display:none}}.appointment-detail-backdrop{z-index:1000;-webkit-backdrop-filter:blur(3px);backdrop-filter:blur(3px);background:#0f2339ad;place-items:center;padding:24px;display:grid;position:fixed;inset:0}.appointment-detail-modal{background:#fff;border:1px solid #d7e0ea;border-top:4px solid #c99a3d;border-radius:8px;width:min(100%,640px);max-height:calc(100vh - 48px);overflow-y:auto;box-shadow:0 28px 70px #081c3052}.appointment-detail-header{background:#f8fbfe;border-bottom:1px solid #e5eaf0;justify-content:space-between;align-items:flex-start;gap:16px;padding:22px 24px;display:flex}.appointment-detail-header h3{color:#173b63;margin:0;font-size:24px}.appointment-detail-header p{color:#64748b;margin:6px 0 0}.appointment-detail-close{color:#173b63;cursor:pointer;background:0 0;border:0;border-radius:6px;flex:0 0 40px;place-items:center;width:40px;height:40px;font-size:28px;line-height:1;display:grid}.appointment-detail-close:hover,.appointment-detail-close:focus-visible{background:#eaf1f8;outline:none}.appointment-detail-content{padding:8px 24px}.appointment-detail-row{border-bottom:1px solid #eef2f6;grid-template-columns:150px minmax(0,1fr);gap:20px;padding:15px 0;display:grid}.appointment-detail-row span{color:#64748b;font-size:13px;font-weight:700}.appointment-detail-row strong{color:#1e293b;overflow-wrap:anywhere;min-width:0;font-weight:700}.appointment-detail-notes{border-bottom:0}.appointment-detail-footer{background:#f8fbfe;border-top:1px solid #e5eaf0;justify-content:flex-end;padding:18px 24px;display:flex}@media (width<=640px){.appointment-detail-backdrop{align-items:end;padding:0}.appointment-detail-modal{border-bottom:0;border-left:0;border-right:0;border-radius:8px 8px 0 0;width:100%;max-height:92vh}.appointment-detail-header,.appointment-detail-content,.appointment-detail-footer{padding-left:18px;padding-right:18px}.appointment-detail-row{grid-template-columns:1fr;gap:5px;padding:12px 0}.appointment-detail-footer .btn{width:100%}}.appointment-search-panel{background:#fff;border:1px solid #dbe3ec;border-radius:8px;padding:24px;box-shadow:0 10px 28px #173b630e}.appointment-filter-grid{grid-template-columns:repeat(4,minmax(0,1fr));align-items:end;gap:16px;display:grid}.appointment-filter-button{white-space:nowrap}.appointment-customer-search-field{position:relative}.appointment-suggestion-list{z-index:20;background:#fff;border:1px solid #cbd7e5;border-radius:8px;flex-direction:column;gap:4px;max-height:280px;padding:7px;display:flex;position:absolute;top:calc(100% + 8px);left:0;right:0;overflow-y:auto;box-shadow:0 18px 44px #173b632b}.appointment-suggestion-item{color:#1e293b;text-align:left;cursor:pointer;background:0 0;border:0;border-left:3px solid #0000;border-radius:6px;width:100%;padding:12px;transition:background .15s,border-color .15s;display:flex}.appointment-suggestion-item:hover,.appointment-suggestion-item:focus-visible{background:#f0f6fc;border-left-color:#c99a3d;outline:none}.appointment-suggestion-main{flex-direction:column;gap:4px;min-width:0;display:flex}.appointment-suggestion-main strong{color:#173b63;text-overflow:ellipsis;white-space:nowrap;font-size:14px;overflow:hidden}.appointment-suggestion-main span{color:#64748b;font-size:12px}.appointment-filter-actions{grid-column:1/-1;justify-content:flex-end;gap:10px;padding-top:2px;display:flex}.appointment-filter-actions .btn{min-width:116px}@media (width<=900px){.appointment-filter-grid{grid-template-columns:repeat(2,minmax(0,1fr))}.appointment-filter-actions{justify-content:stretch}.appointment-filter-actions .btn{flex:1;min-width:0}}@media (width<=640px){.appointment-search-panel{padding:18px}.appointment-filter-grid{grid-template-columns:1fr}.appointment-filter-actions{flex-direction:column}.appointment-filter-actions .btn{width:100%}.appointment-suggestion-list{margin-top:8px;position:static;box-shadow:0 12px 28px #173b6321}}.appointment-results-panel{background:#fff;border:1px solid #dbe3ec;border-radius:8px;padding:24px;box-shadow:0 10px 28px #173b630e}.appointment-table-shell{background:#fff;border:1px solid #dbe3ec;border-radius:8px;overflow-x:auto}.appointment-table{border-collapse:collapse;width:100%;min-width:960px}.appointment-table th,.appointment-table td{text-align:left;vertical-align:middle;border-bottom:1px solid #e5eaf0;padding:14px 16px;font-size:14px}.appointment-table th{color:#46627e;text-transform:uppercase;white-space:nowrap;background:#eef4fa;font-size:12px;font-weight:800}.appointment-table-row{cursor:pointer;transition:background .15s,box-shadow .15s}.appointment-table-row:hover{background:#f7fbff;box-shadow:inset 3px 0 #c99a3d}.appointment-table tr:last-child td{border-bottom:0}.appointment-empty-cell{color:#64748b;text-align:center;padding:34px 16px}.appointment-muted-text{color:#64748b;margin-top:4px;font-size:12px;display:block}.appointment-status-control{align-items:center;gap:8px;display:inline-flex}.appointment-status{color:#334155;background:#eef2f6;border-radius:999px;align-items:center;min-height:30px;padding:5px 10px;font-size:12px;font-weight:800;display:inline-flex}.appointment-status-approved{color:#15558d;background:#e8f3ff}.appointment-status-completed{color:#18734a;background:#e9f8f0}.appointment-status-cancelled{color:#b4232f;background:#fdf0f0}.appointment-status-no_show{color:#8b641d;background:#fff7e4}.appointment-status-select{cursor:pointer;border:0;outline:none}.appointment-status-select:focus-visible{box-shadow:0 0 0 3px #1f5f992e}.appointment-status-select:disabled{cursor:not-allowed;opacity:.65}.appointment-pagination{border-top:1px solid #e5eaf0;justify-content:space-between;align-items:center;gap:16px;margin-top:16px;padding-top:16px;display:flex}.appointment-pagination-info{color:#334155;font-size:14px;font-weight:800}.appointment-pagination-info span{color:#64748b;margin-top:4px;font-size:13px;font-weight:400;display:block}.appointment-pagination-actions{gap:8px;display:flex}@media (width<=720px){.appointment-results-panel{padding:18px}.appointment-table-shell{background:0 0;border:0;overflow:visible}.appointment-table{min-width:0}.appointment-table thead{display:none}.appointment-table,.appointment-table tbody,.appointment-table tr,.appointment-table td{width:100%;display:block}.appointment-table-row{background:#fff;border:1px solid #dbe3ec;border-radius:8px;margin-bottom:12px;overflow:hidden;box-shadow:0 7px 20px #173b630f}.appointment-table-row:hover{box-shadow:inset 3px 0 #c99a3d,0 7px 20px #173b6314}.appointment-table td{text-align:right;grid-template-columns:minmax(84px,.38fr) minmax(0,1fr);gap:12px;padding:11px 13px;display:grid}.appointment-table td:before{content:attr(data-label);color:#64748b;text-align:left;text-transform:uppercase;font-size:12px;font-weight:800}.appointment-empty-cell{text-align:center;border:1px solid #dbe3ec;border-radius:8px;display:block}.appointment-empty-cell:before{content:none}.appointment-muted-text{text-align:right}.appointment-status-control{justify-content:flex-end}.appointment-status{min-height:40px}.appointment-pagination{flex-direction:column;align-items:stretch}.appointment-pagination-actions{width:100%}.appointment-pagination-actions .btn{flex:1}}.booking-modal-backdrop{-webkit-backdrop-filter:blur(3px);backdrop-filter:blur(3px);z-index:50;background:#0f23399e;justify-content:center;align-items:center;padding:24px;display:flex;position:fixed;inset:0}.booking-modal{background:#fff;border:1px solid #d7e0ea;border-top:4px solid #c99a3d;border-radius:8px;width:100%;max-width:860px;max-height:calc(100vh - 48px);overflow:hidden;box-shadow:0 28px 80px #081c304d}.booking-modal-header{background:#f8fbfe;border-bottom:1px solid #e5eaf0;justify-content:space-between;align-items:flex-start;gap:16px;padding:24px;display:flex}.booking-modal-header h2{color:#173b63;margin:0 0 4px}.booking-modal-header p{color:#6b7280;margin:0}.booking-modal-close{color:#173b63;cursor:pointer;background:0 0;border:0;border-radius:6px;width:32px;height:32px;font-size:28px;line-height:1}.booking-modal-close:hover:not(:disabled),.booking-modal-close:focus-visible{background:#eaf1f8;outline:none}.booking-modal-close:disabled{cursor:not-allowed;opacity:.5}.booking-modal-body{flex-direction:column;gap:24px;max-height:calc(100vh - 230px);padding:24px;display:flex;overflow-y:auto}.booking-section{flex-direction:column;gap:16px;display:flex}.booking-section h3{color:#173b63;border-bottom:1px solid #e5eaf0;margin:0;padding-bottom:8px}.booking-grid{grid-template-columns:repeat(2,minmax(0,1fr));gap:16px;display:grid}.booking-textarea{resize:vertical;min-height:88px;padding-top:10px}.booking-checkbox{align-items:center;gap:8px;font-weight:700;display:flex}.booking-modal-status{min-height:28px;padding:0 24px 16px}.booking-status-message{margin:0}.booking-loading-text{color:#374151;align-items:center;gap:8px;margin:0;font-size:14px;font-weight:700;display:inline-flex}.booking-modal-footer{background:#f8fbfe;border-top:1px solid #e5eaf0;justify-content:flex-end;gap:12px;padding:16px 24px;display:flex}.success-text{color:#15803d;font-size:14px;font-weight:700}@media (width<=720px){.booking-modal-backdrop{align-items:flex-end;padding:0}.booking-modal{border-bottom:0;border-left:0;border-right:0;border-radius:8px 8px 0 0;max-height:92vh}.booking-modal-header,.booking-modal-body,.booking-modal-status,.booking-modal-footer{padding-left:16px;padding-right:16px}.booking-modal-body{max-height:calc(92vh - 230px)}.booking-grid{grid-template-columns:1fr}.booking-modal-footer{flex-direction:column-reverse}.booking-modal-footer .btn{width:100%}}.customer-search-panel{background:#fff;border:1px solid #dbe3ec;border-radius:8px;padding:24px;box-shadow:0 10px 28px #173b630e}.customer-search-panel h2{color:#173b63;margin:0 0 16px;font-size:22px}.customer-search-row{grid-template-columns:minmax(0,1fr) auto;align-items:end;gap:12px;display:grid}.customer-search-row .btn{min-width:118px}@media (width<=640px){.customer-search-panel{padding:18px}.customer-search-row{grid-template-columns:1fr}.customer-search-row .btn{width:100%}}.customer-summary-card{background:#fffdf7;border:1px solid #e2d3aa;border-radius:8px;padding:24px;box-shadow:0 10px 28px #8a661e0f}.customer-summary-card h2{color:#173b63;margin:0 0 18px;font-size:22px}.customer-summary-grid{grid-template-columns:repeat(3,minmax(0,1fr));gap:18px;display:grid}.customer-summary-grid div{border-left:3px solid #d4ad5b;min-width:0;padding-left:12px}.customer-summary-grid strong{color:#64748b;margin-bottom:5px;font-size:12px;display:block}.customer-summary-grid p{color:#1e293b;overflow-wrap:anywhere;margin:0}@media (width<=640px){.customer-summary-card{padding:18px}.customer-summary-grid{grid-template-columns:1fr;gap:14px}}.appointment-page{background:#f5f7fa;min-height:100vh;padding:32px 24px 56px}.appointment-page-stack{flex-direction:column;gap:18px;width:min(100%,1240px);margin:0 auto;display:flex}.appointment-page-header{border-left:4px solid #c99a3d;justify-content:space-between;align-items:flex-start;gap:16px;padding:6px 0 6px 18px;display:flex}.appointment-page-header h1{color:#173b63;margin:0;font-size:38px;line-height:1.1}.appointment-page-header p{color:#64748b;margin:8px 0 0}.appointment-new-booking-button{width:100%;min-height:50px}.appointment-section-heading{justify-content:space-between;align-items:flex-start;gap:16px;margin-bottom:18px;display:flex}.appointment-section-heading h2{color:#173b63;margin:0;font-size:22px}.appointment-section-heading p{color:#64748b;margin:5px 0 0;line-height:1.45}.appointment-view-toolbar{background:#fff;border:1px solid #dbe3ec;border-radius:8px;justify-content:space-between;align-items:end;gap:18px;padding:14px;display:flex;box-shadow:0 8px 24px #173b630f}.appointment-view-switch{background:#eef3f8;border:1px solid #d6dee8;border-radius:8px;grid-template-columns:repeat(2,minmax(112px,1fr));gap:4px;padding:4px;display:grid}.appointment-view-switch .btn{min-height:40px}.calendar-month-control{align-items:center;gap:10px;width:min(100%,260px);display:flex}.calendar-month-control label{color:#334155;font-size:13px;font-weight:700}.appointment-calendar-section{min-height:280px}.calendar-loading{color:#475569;background:#fff;border:1px solid #dbe3ec;border-radius:8px;justify-content:center;align-items:center;gap:10px;min-height:280px;display:flex}.calendar-loading p{margin:0;font-weight:700}.error-message{color:#b91c1c;background:#fef2f2;border:1px solid #fecaca;border-radius:6px;margin:0;padding:14px 16px;font-size:14px}@media (width<=900px){.appointment-page{padding:28px 20px 48px}.appointment-view-toolbar{align-items:stretch}}@media (width<=640px){.appointment-page{padding:20px 12px 40px}.appointment-page-stack{gap:14px}.appointment-page-header{padding-left:14px}.appointment-page-header h1{font-size:30px}.appointment-page-header p{font-size:14px;line-height:1.5}.appointment-view-toolbar{flex-direction:column;padding:12px}.appointment-view-switch,.calendar-month-control{width:100%}.calendar-month-control{flex-direction:column;align-items:stretch;gap:7px}}
