*{box-sizing:border-box}body{color:#171717;-webkit-font-smoothing:antialiased;text-rendering:geometricprecision;background:#f7f4f2;margin:0;font-family:Inter,ui-sans-serif,system-ui,-apple-system,BlinkMacSystemFont,Segoe UI,sans-serif}.form-group{flex-direction:column;gap:8px;display:flex}.form-group label{color:#525252;letter-spacing:0;font-size:12px;font-weight:650}.input-group{position:relative}.input{color:#171717;background:#ffffffdb;border:1px solid #d6cdc7e6;border-radius:10px;width:100%;min-height:40px;padding:0 12px;font-size:14px;transition:border-color .15s,box-shadow .15s,background-color .15s}.input-group .input{padding-left:40px}.input:focus{background:#fff;border-color:#b87970;outline:none;box-shadow:0 0 0 4px #b8797021}.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:10px;min-height:40px;padding:0 15px;font-size:14px;font-weight:650;transition:background-color .15s,border-color .15s,box-shadow .15s,color .15s,transform .15s}.btn-primary{color:#fff;background:#171717;border-color:#171717;box-shadow:0 8px 20px #1717171f}.btn-primary:hover:not(:disabled),.btn-primary:focus-visible{background:#2b2b2b;border-color:#2b2b2b;transform:translateY(-1px)}.btn-secondary{color:#404040;background:#ffffffb8;border-color:#d6cdc7f2}.btn-secondary:hover:not(:disabled),.btn-secondary:focus-visible{background:#fff;border-color:#c7b7ad}.btn-ghost{color:#525252;background:#ffffff80;border-color:#d6cdc7e6}.btn-ghost:hover:not(:disabled),.btn-ghost:focus-visible{color:#8f5149;background:#fff7f5;border-color:#d2aaa2}.btn-block{width:100%}.btn:focus-visible{outline:none;box-shadow:0 0 0 4px #b8797029}.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{-webkit-backdrop-filter:blur(18px)saturate(1.18);backdrop-filter:blur(18px)saturate(1.18);background:#ffffffb3;border:1px solid #d6cdc7bd;border-radius:16px;padding:16px;overflow:hidden;box-shadow:0 16px 40px #3327210e}.appointment-calendar .fc{color:#171717;font-size:14px}.appointment-calendar .fc .fc-toolbar{gap:14px;margin-bottom:20px}.appointment-calendar .fc .fc-toolbar-title{color:#171717;font-size:20px;font-weight:720}.appointment-calendar .fc .fc-button-primary{box-shadow:none;text-transform:capitalize;background:#171717;border-color:#171717}.appointment-calendar .fc .fc-button-primary:hover,.appointment-calendar .fc .fc-button-primary:focus-visible{background:#2b2b2b;border-color:#2b2b2b}.appointment-calendar .fc .fc-button-primary:disabled{background:#c7b7ad;border-color:#c7b7ad}.appointment-calendar .fc-theme-standard th,.appointment-calendar .fc-theme-standard td,.appointment-calendar .fc-theme-standard .fc-scrollgrid{border-color:#e5e0dce6}.appointment-calendar .fc-col-header-cell{background:#faf9f8}.appointment-calendar .fc-col-header-cell-cushion{color:#737373;text-transform:uppercase;padding:10px 6px;font-size:12px;text-decoration:none}.appointment-calendar .fc-daygrid-day-number{color:#404040;padding:8px;font-weight:700;text-decoration:none}.appointment-calendar .fc-day-today{background:#fff7f5!important}.appointment-calendar .fc-daygrid-day-frame{min-height:112px}.appointment-calendar .fc-daygrid-event{cursor:pointer;background:#2f5f7d;border:0;border-radius:8px;margin:2px 4px;padding:4px 6px;overflow:hidden}.appointment-calendar .fc-daygrid-event:hover{filter:brightness(.94)}.appointment-calendar .calendar-event-completed{background:#267348}.appointment-calendar .calendar-event-cancelled{background:#9d403a}.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:#8f5149;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{-webkit-backdrop-filter:blur(18px)saturate(1.18);backdrop-filter:blur(18px)saturate(1.18);background:#ffffffa8;border:1px solid #d6cdc7bd;border-radius:16px;padding:18px;box-shadow:0 16px 40px #3327210e}.appointment-filter-grid{grid-template-columns:repeat(4,minmax(0,1fr));align-items:end;gap:12px;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 #d6cdc7db;border-radius:12px;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 22px 50px #33272124}.appointment-suggestion-item{color:#1e293b;text-align:left;cursor:pointer;background:0 0;border:0;border-left:3px solid #0000;border-radius:9px;width:100%;padding:12px;transition:background .15s,border-color .15s;display:flex}.appointment-suggestion-item:hover,.appointment-suggestion-item:focus-visible{background:#fff7f5;border-left-color:#b87970;outline:none}.appointment-suggestion-main{flex-direction:column;gap:4px;min-width:0;display:flex}.appointment-suggestion-main strong{color:#171717;text-overflow:ellipsis;white-space:nowrap;font-size:14px;overflow:hidden}.appointment-suggestion-main span{color:#737373;font-size:12px}.appointment-filter-actions{grid-column:1/-1;justify-content:flex-end;gap:8px;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:14px}.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{-webkit-backdrop-filter:blur(18px)saturate(1.18);backdrop-filter:blur(18px)saturate(1.18);background:#ffffffb3;border:1px solid #d6cdc7bd;border-radius:16px;padding:18px;box-shadow:0 16px 40px #3327210e}.appointment-table-shell{background:#ffffffd1;border:1px solid #d6cdc7bd;border-radius:14px;overflow-x:auto}.appointment-table{border-collapse:collapse;width:100%;min-width:900px}.appointment-table th,.appointment-table td{text-align:left;vertical-align:middle;border-bottom:1px solid #e5e0dcdb;padding:11px 14px;font-size:14px}.appointment-table th{color:#737373;text-transform:uppercase;white-space:nowrap;background:#faf9f8;font-size:11px;font-weight:720}.appointment-table-row{cursor:pointer;transition:background .15s,box-shadow .15s}.appointment-table-row:hover{background:#fff8f6;box-shadow:inset 3px 0 #d2aaa2}.appointment-table tr:last-child td{border-bottom:0}.appointment-empty-cell{color:#737373;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:#404040;background:#f0eeeb;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:#2f5f7d;background:#edf5fb}.appointment-status-completed{color:#267348;background:#eaf7ef}.appointment-status-cancelled{color:#9d403a;background:#fff0ef}.appointment-status-no_show{color:#8a6424;background:#fff6e7}.appointment-status-select{cursor:pointer;border:0;outline:none}.appointment-status-select:focus-visible{box-shadow:0 0 0 4px #b8797024}.appointment-status-select:disabled{cursor:not-allowed;opacity:.65}.appointment-pagination{border-top:1px solid #e5e0dce6;justify-content:space-between;align-items:center;gap:16px;margin-top:16px;padding-top:16px;display:flex}.appointment-pagination-info{color:#404040;font-size:14px;font-weight:800}.appointment-pagination-info span{color:#737373;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:14px}.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:#ffffffdb;border:1px solid #d6cdc7bd;border-radius:14px;margin-bottom:12px;overflow:hidden;box-shadow:0 10px 24px #3327210f}.appointment-table-row:hover{box-shadow:inset 3px 0 #d2aaa2,0 10px 24px #33272114}.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:#737373;text-align:left;text-transform:uppercase;font-size:12px;font-weight:800}.appointment-empty-cell{text-align:center;border:1px solid #d6cdc7bd;border-radius:14px;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(12px)saturate(1.12);backdrop-filter:blur(12px)saturate(1.12);z-index:50;background:#1717176b;justify-content:center;align-items:center;padding:24px;display:flex;position:fixed;inset:0}.booking-modal{-webkit-backdrop-filter:blur(24px)saturate(1.18);backdrop-filter:blur(24px)saturate(1.18);background:#ffffffeb;border:1px solid #d6cdc7e0;border-radius:18px;width:100%;max-width:820px;max-height:calc(100vh - 48px);overflow:hidden;box-shadow:0 30px 90px #17171738}.booking-modal-header{background:#faf9f8c7;border-bottom:1px solid #e5e0dce6;justify-content:space-between;align-items:flex-start;gap:16px;padding:20px;display:flex}.booking-modal-header h2{color:#171717;margin:0 0 4px;font-size:20px}.booking-modal-header p{color:#737373;margin:0}.booking-modal-close{color:#525252;cursor:pointer;background:0 0;border:0;border-radius:10px;width:32px;height:32px;font-size:28px;line-height:1}.booking-modal-close:hover:not(:disabled),.booking-modal-close:focus-visible{background:#fff7f5;outline:none}.booking-modal-close:disabled{cursor:not-allowed;opacity:.5}.booking-modal-body{flex-direction:column;gap:18px;max-height:calc(100vh - 214px);padding:20px;display:flex;overflow-y:auto}.booking-section{flex-direction:column;gap:14px;display:flex}.booking-section h3{color:#171717;border-bottom:1px solid #e5e0dce6;margin:0;padding-bottom:8px;font-size:16px}.booking-grid{grid-template-columns:repeat(2,minmax(0,1fr));gap:12px;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 20px 14px}.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:#faf9f8c7;border-top:1px solid #e5e0dce6;justify-content:flex-end;gap:12px;padding:14px 20px;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:18px 18px 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{-webkit-backdrop-filter:blur(18px)saturate(1.18);backdrop-filter:blur(18px)saturate(1.18);background:#ffffffa8;border:1px solid #d6cdc7bd;border-radius:16px;padding:18px;box-shadow:0 16px 40px #3327210e}.customer-search-panel h2{color:#171717;margin:0 0 14px;font-size:18px;font-weight:720}.customer-search-row{grid-template-columns:minmax(0,1fr) auto auto;align-items:end;gap:10px;display:grid}.customer-search-row .btn{min-width:118px}@media (width<=640px){.customer-search-panel{padding:14px}.customer-search-row{grid-template-columns:1fr}.customer-search-row .btn{width:100%}}.customer-summary-card{-webkit-backdrop-filter:blur(18px)saturate(1.12);backdrop-filter:blur(18px)saturate(1.12);background:#fffaf8b8;border:1px solid #e0c1bbbf;border-radius:16px;padding:18px;box-shadow:0 14px 34px #50322b0d}.customer-summary-card h2{color:#171717;margin:0 0 14px;font-size:18px;font-weight:720}.customer-summary-grid{grid-template-columns:repeat(3,minmax(0,1fr));gap:12px;display:grid}.customer-summary-grid div{background:#ffffff8f;border:1px solid #e0c1bb94;border-radius:12px;min-width:0;padding:12px}.customer-summary-grid strong{color:#737373;margin-bottom:5px;font-size:12px;display:block}.customer-summary-grid p{color:#171717;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:radial-gradient(circle at 0 0,#eed3cdb8,#0000 32rem),linear-gradient(135deg,#fbf8f6 0%,#f7f4f2 46%,#f4f7f5 100%);min-height:100vh;padding:20px 20px 42px}.appointment-page-stack{flex-direction:column;gap:12px;width:min(100%,1180px);margin:0 auto;display:flex}.appointment-page-header{justify-content:space-between;align-items:flex-start;gap:16px;padding:4px 2px 8px;display:flex}.appointment-page-header h1{color:#171717;margin:0;font-size:28px;font-weight:760;line-height:1.05}.appointment-page-header p{color:#737373;margin:8px 0 0;font-size:14px}.appointment-new-booking-button{white-space:nowrap;min-width:136px}.appointment-section-heading{justify-content:space-between;align-items:flex-start;gap:16px;margin-bottom:14px;display:flex}.appointment-section-heading h2{color:#171717;margin:0;font-size:18px;font-weight:720}.appointment-section-heading p{color:#737373;margin:5px 0 0;font-size:13px;line-height:1.45}.appointment-view-toolbar{-webkit-backdrop-filter:blur(18px)saturate(1.18);backdrop-filter:blur(18px)saturate(1.18);background:#ffffff9e;border:1px solid #d6cdc7bd;border-radius:14px;justify-content:space-between;align-items:end;gap:12px;padding:10px;display:flex;box-shadow:0 16px 40px #3327210e}.appointment-view-switch{background:#f4f0edb8;border:1px solid #d6cdc7bd;border-radius:12px;grid-template-columns:repeat(2,minmax(112px,1fr));gap:3px;padding:3px;display:grid}.appointment-view-switch .btn{min-height:36px;box-shadow:none}.calendar-month-control{align-items:center;gap:10px;width:min(100%,260px);display:flex}.calendar-month-control label{color:#525252;font-size:13px;font-weight:700}.appointment-calendar-section{min-height:280px}.calendar-loading{color:#525252;-webkit-backdrop-filter:blur(18px);backdrop-filter:blur(18px);background:#ffffffa8;border:1px solid #d6cdc7bd;border-radius:14px;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:10px;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:16px 10px 34px}.appointment-page-stack{gap:14px}.appointment-page-header h1{font-size:25px}.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}}
