:root{--blue:#101b5b;--blue2:#252d91;--red:#c9142f;--ink:#182033;--muted:#6c7485;--line:#e3e6ef;--bg:#f5f6fa;--white:#fff}*{box-sizing:border-box}body,html{margin:0;padding:0;background:var(--bg);color:var(--ink);font-family:Inter,ui-sans-serif,system-ui,-apple-system,BlinkMacSystemFont,Segoe UI,sans-serif}button,input,select,textarea{font:inherit}button{cursor:pointer}.shell{min-height:100dvh}.brandbar{background:linear-gradient(135deg,var(--blue),var(--blue2));color:white;padding:22px 18px;text-align:center;border-bottom:5px solid var(--red)}.brand{font-size:34px;font-weight:900;font-style:italic;letter-spacing:-2px}.brand span{color:#ff304c}.tagline{font-size:14px;opacity:.92;margin-top:2px}.container{width:min(760px,100%);margin:auto;padding:18px 14px 96px}.card{background:white;border:1px solid var(--line);border-radius:18px;padding:18px;box-shadow:0 8px 24px rgba(16,27,91,.07);margin-bottom:14px}.title{font-size:23px;margin:0 0 5px}.subtitle{color:var(--muted);margin:0 0 18px}.services{display:grid;grid-gap:10px;gap:10px}.service{width:100%;display:flex;align-items:center;justify-content:space-between;text-align:left;background:#fff;border:2px solid var(--line);border-radius:14px;padding:14px}.service.selected{border-color:var(--red);background:#fff6f7}.service-name{font-weight:800}.service-meta{font-size:13px;color:var(--muted);margin-top:3px}.price{font-weight:900;color:var(--blue);font-size:18px}.grid2{display:grid;grid-template-columns:1fr 1fr;grid-gap:11px;gap:11px}.field{display:grid;grid-gap:6px;gap:6px;margin-bottom:12px}.field label{font-weight:750;font-size:14px}.field input,.field select,.field textarea{width:100%;border:1.5px solid #cfd4e2;border-radius:12px;padding:13px;background:white;color:var(--ink)}.field input:focus,.field textarea:focus{outline:3px solid rgba(37,45,145,.13);border-color:var(--blue2)}.btn{border:0;border-radius:13px;padding:14px 18px;font-weight:850}.btn-primary{background:var(--red);color:white;width:100%}.btn-blue{background:var(--blue);color:white}.btn-light{background:#eef0f7;color:var(--blue)}.btn-danger{background:#fff0f2;color:#aa0e26}.total{display:flex;justify-content:space-between;align-items:center;background:#f0f2f9;border-radius:13px;padding:13px;margin:14px 0}.success{text-align:center;padding:32px 18px}.success-badge{width:64px;height:64px;border-radius:50%;display:grid;place-items:center;background:#e8f8ee;color:#17823b;font-size:34px;margin:auto}.error{background:#fff0f2;color:#9b1025;border-radius:12px;padding:11px;margin:10px 0}.loading{text-align:center;color:var(--muted);padding:34px}.admin-shell{min-height:100dvh;padding-bottom:78px}.admin-head{position:-webkit-sticky;position:sticky;top:0;z-index:5;background:var(--blue);color:white;padding:15px 16px;display:flex;align-items:center;justify-content:space-between}.admin-head h1{font-size:20px;margin:0}.admin-main{padding:14px;width:min(850px,100%);margin:auto}.nav-bottom{position:fixed;bottom:0;left:0;right:0;z-index:10;background:white;border-top:1px solid var(--line);display:grid;grid-template-columns:repeat(4,1fr);padding:7px 5px max(7px,env(safe-area-inset-bottom))}.nav-bottom button{border:0;background:white;color:var(--muted);font-size:11px;font-weight:800;padding:7px 2px}.nav-bottom button.active{color:var(--red)}.nav-icon{display:block;font-size:21px;margin-bottom:2px}.appointment{border-left:5px solid var(--blue2);padding:14px;border-radius:13px;background:white;margin-bottom:10px;box-shadow:0 4px 14px rgba(0,0,0,.05)}.appointment-time{font-size:20px;font-weight:900;color:var(--blue)}.appointment-actions{display:flex;gap:7px;flex-wrap:wrap;margin-top:10px}.appointment-actions .btn{padding:9px 12px;font-size:13px}.pill{display:inline-block;border-radius:99px;padding:5px 9px;font-size:12px;font-weight:800;background:#eef0f7}.metric{font-size:30px;font-weight:950;color:var(--blue)}.row{display:flex;justify-content:space-between;align-items:center;gap:10px}.login{min-height:100dvh;display:grid;place-items:center;padding:18px}.login .card{width:min(430px,100%)}@media(max-width:540px){.grid2{grid-template-columns:1fr}.container{padding-top:12px}.card{border-radius:15px;padding:15px}.brand{font-size:30px}.title{font-size:21px}}.owner-agenda{min-height:100dvh;background:#f4f5f9;padding-bottom:100px}.owner-top{height:58px;background:var(--blue);color:white;padding:10px 13px;display:flex;justify-content:space-between;align-items:center;position:-webkit-sticky;position:sticky;top:0;z-index:20}.owner-top strong{font-size:20px}.owner-top small{opacity:.8}.owner-top button{border:0;border-radius:9px;padding:8px 9px;margin-left:5px;font-weight:800}.date-strip{display:grid;grid-template-columns:repeat(7,1fr);grid-gap:4px;gap:4px;padding:9px 7px;background:white;border-bottom:1px solid var(--line);position:-webkit-sticky;position:sticky;top:58px;z-index:15}.date-strip button{border:0;background:white;border-radius:10px;padding:7px 1px;color:var(--muted)}.date-strip span{display:block;font-size:11px;text-transform:uppercase}.date-strip b{display:block;font-size:18px}.date-strip button.active{background:var(--red);color:white}.agenda-title{display:grid;grid-template-columns:48px 1fr 48px;align-items:center;padding:12px 8px}.agenda-title h1{text-align:center;font-size:19px;text-transform:capitalize;margin:0}.agenda-title button{border:0;background:white;border-radius:12px;font-size:31px;color:var(--blue);height:43px}.agenda-list{padding:0 10px}.agenda-item{display:grid;grid-template-columns:70px 1fr;width:100%;text-align:left;border:0;border-left:6px solid var(--blue2);background:white;border-radius:14px;padding:14px 12px;margin-bottom:9px;box-shadow:0 4px 13px rgba(0,0,0,.06)}.agenda-item>b{font-size:20px;color:var(--blue)}.agenda-item span small,.agenda-item span strong{display:block}.agenda-item span strong{font-size:17px}.agenda-item span small{color:var(--muted);margin-top:3px}.agenda-item.completed{border-left-color:#24924b;opacity:.7}.agenda-item.cancelled{border-left-color:#aaa;opacity:.5}.empty-day{text-align:center;background:white;border-radius:15px;padding:45px 15px;color:var(--muted)}.floating-add{position:fixed;right:20px;bottom:24px;width:65px;height:65px;border-radius:50%;border:0;background:var(--red);color:white;font-size:42px;line-height:1;box-shadow:0 8px 24px rgba(201,20,47,.38);z-index:25}.sheet-backdrop{position:fixed;inset:0;background:rgba(0,0,0,.46);z-index:50;display:flex;align-items:flex-end;justify-content:center}.action-sheet{background:white;width:min(600px,100%);max-height:92dvh;overflow:auto;border-radius:23px 23px 0 0;padding:10px 16px max(18px,env(safe-area-inset-bottom))}.sheet-handle{width:48px;height:5px;border-radius:5px;background:#ccd0da;margin:0 auto 14px}.action-sheet h2{margin:0 0 5px}.action-sheet>p{color:var(--muted);margin-top:0}.big-actions{display:grid;grid-template-columns:1fr 1fr;grid-gap:10px;gap:10px}.big-actions a,.big-actions button,.save-mobile{border:0;border-radius:14px;padding:17px 9px;text-align:center;text-decoration:none;background:#eef0f7;color:var(--blue);font-weight:900;font-size:16px}.big-actions .done{background:#e6f7ec;color:#16733a}.big-actions .cancel{background:#fff0f2;color:#a00f27}.sheet-close{width:100%;border:0;background:white;color:var(--muted);padding:15px;margin-top:7px}.mobile-field{display:grid;grid-gap:6px;gap:6px;font-weight:800;margin-bottom:11px}.mobile-field input,.mobile-field select{width:100%;border:1.5px solid #cfd4e2;border-radius:12px;padding:14px;background:white}.two-fields{display:grid;grid-template-columns:1fr 1fr;grid-gap:10px;gap:10px}.save-mobile{width:100%;background:var(--red);color:white;margin-top:7px}.client-history{border-top:5px solid var(--blue2)}.history-filters{display:flex;gap:6px;overflow-x:auto;padding-bottom:10px}.history-filters button{border:0;border-radius:99px;background:#eef0f7;color:var(--blue);font-weight:800;padding:9px 12px;white-space:nowrap}.history-filters button.active{background:var(--blue);color:white}.history-metrics{display:grid;grid-template-columns:repeat(3,1fr);grid-gap:7px;gap:7px;margin:8px 0 12px}.history-metrics>div{background:#f3f4f8;border-radius:12px;padding:11px 5px;text-align:center}.history-metrics b,.history-metrics span{display:block}.history-metrics b{font-size:18px;color:var(--blue)}.history-metrics span{font-size:11px;color:var(--muted);margin-top:3px}.followup{background:#edf3ff;border-radius:12px;padding:12px;margin-bottom:12px;color:var(--blue)}.followup small,.followup strong{display:block}.followup small{margin-top:3px}.followup.due{background:#fff3df;color:#8a5200}.visit-row{display:flex;justify-content:space-between;gap:10px;padding:11px 3px;border-top:1px solid var(--line)}.visit-row small,.visit-row strong{display:block}.visit-row small{color:var(--muted);margin-top:3px}.availability-note,.date-help{color:var(--muted);font-size:14px}.booking-days{display:grid;grid-template-columns:repeat(7,minmax(74px,1fr));grid-gap:8px;gap:8px;overflow-x:auto;padding:3px 1px 10px;margin-bottom:8px}.booking-day{min-width:74px;border:2px solid var(--line);border-radius:13px;background:white;padding:8px 4px;color:var(--ink)}.booking-day em,.booking-day small,.booking-day span{display:block}.booking-day span{text-transform:capitalize;font-size:12px}.booking-day b{display:block;font-size:22px;color:var(--blue)}.booking-day small{font-size:11px}.booking-day em{font-size:9px;font-style:normal;margin-top:5px;color:var(--muted)}.booking-day.selected{border-color:var(--red);background:#fff3f5}.booking-day.unavailable{opacity:.48;text-decoration:line-through;background:#eceef3}.booking-day:disabled{cursor:not-allowed}.time-field{margin-top:9px}.closure-options{margin-bottom:12px}.closure-options button.option-active{background:var(--blue);color:white}.date-strip{grid-template-columns:repeat(7,minmax(130px,1fr));align-items:stretch;overflow-x:auto}.date-strip>button{min-width:130px;min-height:92px;align-self:stretch;text-align:left;padding:8px}.date-strip>button>b,.date-strip>button>span{text-align:center}.date-strip>button.active{box-shadow:inset 0 0 0 3px var(--red);background:white;color:var(--ink)}.date-strip>button.active>b{color:var(--red)}.date-strip>button.day-closed,.date-strip>button.day-closed.active{background:#15171c;color:white;box-shadow:inset 0 0 0 3px #15171c}.date-strip>button.day-closed b{color:white}.closed-label{text-align:center;font-size:12px;font-weight:950;margin-top:6px}.closed-label small{display:block;text-transform:none;font-weight:700;color:#ddd;margin-top:3px}.week-tags{display:grid;grid-gap:4px;gap:4px;margin-top:6px}.week-tag{background:#edf0ff;color:var(--blue);border-left:3px solid var(--blue2);border-radius:6px;padding:5px;text-align:left;overflow:hidden}.week-tag small,.week-tag strong{display:block;white-space:nowrap;overflow:hidden;text-overflow:ellipsis}.week-tag strong{font-size:10px}.week-tag small{font-size:9px;margin-top:2px}.no-booking{display:block;text-align:center;color:#9ba1af;font-size:10px;margin-top:8px}@media(max-width:700px){.date-strip{grid-template-columns:repeat(7,120px);scroll-snap-type:x proximity}.date-strip>button{min-width:120px;scroll-snap-align:start}.owner-top{position:-webkit-sticky;position:sticky}.agenda-item span small{font-size:12px}}.five-day-board{display:grid;grid-template-columns:repeat(5,minmax(0,1fr));grid-gap:3px;gap:3px;padding:7px 5px 9px;background:#fff;border-bottom:1px solid var(--line);position:-webkit-sticky;position:sticky;top:58px;z-index:15}.day-column{min-width:0;border:1px solid #e0e3eb;border-radius:9px;background:#f8f9fc;overflow:hidden}.day-column.selected{border:2px solid var(--red)}.day-column-head{display:grid;place-items:center;width:100%;border:0;background:#fff;padding:6px 2px;color:var(--muted)}.day-column-head span{font-size:10px;text-transform:uppercase}.day-column-head b{font-size:18px;color:var(--blue)}.day-column.selected .day-column-head{background:var(--red);color:#fff}.day-column.selected .day-column-head b{color:#fff}.column-events{display:grid;align-content:start;grid-gap:4px;gap:4px;padding:4px;min-height:112px}.closure-block,.column-appointment,.full-closed{width:100%;border:0;border-radius:6px;text-align:left;padding:6px 4px;overflow:hidden}.column-appointment{background:#f5b7df;color:#50113a;border-left:3px solid #bd348e}.column-appointment:nth-child(2n){background:#aee8e5;color:#104c4b;border-left-color:#269b96}.column-appointment small,.column-appointment span,.column-appointment strong{display:block;line-height:1.15}.column-appointment strong{font-size:10px}.column-appointment span{font-size:10px;font-weight:850;overflow-wrap:anywhere}.column-appointment small{font-size:8px;margin-top:3px;white-space:nowrap}.closure-block{background:#25272d;color:#fff}.closure-block small,.closure-block strong{display:block;font-size:9px}.day-column.closed{background:#15171c;border-color:#15171c}.day-column.closed .day-column-head{background:#15171c;color:#fff}.day-column.closed .day-column-head b{color:#fff}.full-closed{min-height:112px;border-radius:0;background:#15171c;color:#fff;text-align:center;display:grid;place-content:center;padding:6px}.full-closed strong{font-size:11px}.full-closed small{font-size:8px;margin-top:5px;overflow-wrap:anywhere}.column-free{text-align:center;color:#a2a7b3;font-size:9px;padding:15px 1px}@media(min-width:700px){.five-day-board{gap:7px;padding:10px}.column-events,.full-closed{min-height:150px}.column-appointment{padding:7px}.column-appointment span,.column-appointment strong{font-size:12px}.column-appointment small{font-size:10px}.day-column-head span{font-size:12px}.day-column-head b{font-size:21px}}.fresha-calendar{top:58px;z-index:15;overflow:auto;max-height:56dvh}.fresha-calendar,.fresha-days{background:#fff;border-bottom:1px solid var(--line);position:-webkit-sticky;position:sticky}.fresha-days{display:grid;grid-template-columns:46px repeat(5,minmax(0,1fr));top:0;z-index:8}.time-corner{background:#f5f6fa}.fresha-days button{border:0;border-left:1px solid var(--line);background:#fff;padding:7px 1px;color:var(--muted)}.fresha-days button b,.fresha-days button span{display:block}.fresha-days button span{font-size:9px;text-transform:uppercase}.fresha-days button b{font-size:17px;color:var(--blue)}.fresha-days button.selected{background:var(--red);color:#fff}.fresha-days button.selected b{color:#fff}.fresha-grid{display:grid;grid-template-columns:46px repeat(5,minmax(0,1fr));min-width:320px}.time-rail{position:relative;background:#f5f6fa;border-right:1px solid var(--line)}.time-rail span{position:absolute;right:4px;transform:translateY(-50%);font-size:8px;color:var(--muted);white-space:nowrap}.fresha-lane{position:relative;min-width:0;border-right:1px solid var(--line);background:repeating-linear-gradient(180deg,#fff 0,#fff 62px,#e8eaf0 0,#e8eaf0 63px)}.fresha-lane.selected{background:repeating-linear-gradient(180deg,#fffafd 0,#fffafd 62px,#eadde5 0,#eadde5 63px)}.fresha-appointment{position:absolute;left:2px;right:2px;width:calc(100% - 4px);z-index:4;border:0;border-left:3px solid #bd348e;border-radius:5px;background:#f3add8;color:#4c1037;padding:3px;text-align:left;overflow:hidden;touch-action:none;-webkit-user-select:none;-moz-user-select:none;user-select:none;box-shadow:0 1px 3px rgba(0,0,0,.12)}.fresha-appointment:nth-of-type(2n){background:#9fe1df;color:#104946;border-left-color:#238e89}.fresha-appointment small,.fresha-appointment span,.fresha-appointment strong{display:block;line-height:1.05;overflow:hidden}.fresha-appointment strong{font-size:9px}.fresha-appointment span{font-size:9px;font-weight:900;overflow-wrap:anywhere}.fresha-appointment small{font-size:7px;margin-top:2px;white-space:nowrap;text-overflow:ellipsis}.fresha-appointment.dragging{opacity:.45;outline:3px solid var(--red);z-index:10}.fresha-closure{position:absolute;left:1px;right:1px;z-index:3;background:#24262c;color:#fff;border-radius:4px;padding:3px;overflow:hidden}.fresha-closure small,.fresha-closure strong{display:block;font-size:8px}.fresha-lane.closed{background:#17191e}.fresha-full-closed{position:absolute;inset:0;display:grid;place-content:center;text-align:center;background:#17191e;color:#fff;padding:4px}.fresha-full-closed strong{font-size:10px}.fresha-full-closed small{font-size:8px;margin-top:5px;overflow-wrap:anywhere}@media(min-width:700px){.fresha-calendar{max-height:60dvh}.fresha-days,.fresha-grid{grid-template-columns:58px repeat(5,minmax(0,1fr))}.fresha-appointment{padding:5px}.fresha-appointment span,.fresha-appointment strong{font-size:11px}.fresha-appointment small{font-size:9px}.fresha-days button span{font-size:11px}.fresha-days button b{font-size:20px}.time-rail span{font-size:10px}}.fresha-calendar{max-height:calc(100dvh - 116px)}