*{box-sizing:border-box}html,body{margin:0;font-family:Inter,ui-sans-serif,-apple-system,BlinkMacSystemFont,"Segoe UI",sans-serif;color:#172033;background:#f7f8fa}a{color:#175cd3;text-decoration:none}button,input,select,textarea{font:inherit}.zq-body{min-height:100vh}.zq-shell{display:grid;grid-template-columns:232px minmax(0,1fr);min-height:100vh}.zq-sidebar{position:fixed;inset:0 auto 0 0;width:232px;background:#0c1f33;color:#fff;padding:24px 16px 18px;display:flex;flex-direction:column;z-index:20}.zq-brand{height:58px;display:flex;align-items:center;padding:0 10px;margin-bottom:24px;color:#fff}.latl-brand{gap:11px}.brand-mark{width:38px;height:38px;border-radius:11px;background:#175cd3;display:flex;align-items:center;justify-content:center;flex:none}.brand-mark svg{width:27px;height:27px;fill:#fff}.brand-mark.large{width:64px;height:64px;border-radius:18px;margin:auto}.brand-mark.large svg{width:44px;height:44px}.brand-copy{display:flex;flex-direction:column;line-height:1.05}.brand-copy strong{font-size:19px}.brand-copy span{font-size:13px;color:#cbd5e1;margin-top:4px}.zq-nav{display:flex;flex-direction:column;gap:5px}.zq-nav a{display:flex;align-items:center;gap:12px;padding:10px 12px;border-radius:8px;color:#cbd5e1;font-size:14px;font-weight:600}.zq-nav a:hover{background:#132d49;color:#fff}.zq-nav a.active{background:#175cd3;color:#fff}.zq-nav svg{width:20px;height:20px;fill:none;stroke:currentColor;stroke-width:1.8;stroke-linecap:round;stroke-linejoin:round}.zq-sidebar-footer{margin-top:auto;padding:14px 10px 0;border-top:1px solid #294159;display:flex;justify-content:space-between;align-items:center;color:#aab8c6;font-size:11px}.zq-workspace{grid-column:2;min-width:0;display:flex;min-height:100vh;flex-direction:column}.zq-topbar{height:72px;background:#fff;border-bottom:1px solid #e5e7eb;display:flex;align-items:center;justify-content:flex-end;padding:0 32px;position:sticky;top:0;z-index:10}.zq-user-menu{position:relative}.zq-user-menu summary{list-style:none;display:flex;align-items:center;gap:10px;cursor:pointer}.zq-user-menu summary::-webkit-details-marker{display:none}.zq-user-avatar{width:34px;height:34px;background:#eaf2ff;color:#175cd3;border-radius:50%;display:grid;place-items:center;font-weight:750}.zq-user-copy{display:flex;flex-direction:column}.zq-user-copy strong{font-size:13px}.zq-user-copy small{font-size:11px;color:#667085}.zq-user-chevron{color:#667085}.zq-user-dropdown{position:absolute;right:0;top:44px;background:#fff;border:1px solid #e4e7ec;border-radius:9px;box-shadow:0 10px 30px #10182818;min-width:130px;padding:6px}.zq-user-dropdown a{display:block;padding:9px;border-radius:6px;color:#344054;font-size:13px}.zq-user-dropdown a:hover{background:#f2f4f7}.zq-main{padding:30px 34px;flex:1;max-width:1600px;width:100%;margin:0 auto}.zq-footer{padding:16px 34px 22px;color:#98a2b3;font-size:11px}.page-head{display:flex;justify-content:space-between;align-items:flex-end;gap:20px;margin-bottom:22px}.page-head h1{font-size:28px;margin:0 0 5px;letter-spacing:-.4px}.page-head p{margin:0;color:#667085;font-size:13px}.head-actions{display:flex;gap:8px;align-items:center;flex-wrap:wrap;justify-content:flex-end}.primary-button,.secondary-button,.danger-button{border:0;border-radius:8px;padding:10px 14px;font-size:13px;font-weight:700;display:inline-flex;align-items:center;justify-content:center;cursor:pointer}.primary-button{background:#175cd3;color:#fff}.primary-button:hover{background:#1849a9}.secondary-button{background:#fff;border:1px solid #d0d5dd;color:#344054}.secondary-button:hover{background:#f9fafb}.danger-button{background:#fff1f0;color:#b42318;border:1px solid #fecdca}.full{width:100%}.panel{background:#fff;border:1px solid #eaecf0;border-radius:12px;box-shadow:0 2px 10px #10182808;padding:20px}.section-heading{display:flex;justify-content:space-between;align-items:flex-start;margin-bottom:16px}.section-heading h2,.form-section h2,.staff-card h2{font-size:16px;margin:0 0 4px}.section-heading p,.section-copy{margin:0;color:#667085;font-size:12px}.stats-grid{display:grid;grid-template-columns:repeat(4,minmax(0,1fr));gap:14px;margin-bottom:18px}.stat-card{background:#fff;border:1px solid #eaecf0;border-radius:12px;padding:19px;display:flex;flex-direction:column;box-shadow:0 2px 8px #10182806}.stat-card>span{font-size:12px;color:#667085;font-weight:650}.stat-card strong{font-size:26px;margin:9px 0 5px;letter-spacing:-.4px}.stat-card small{font-size:11px;color:#98a2b3}.content-grid.two{display:grid;grid-template-columns:1.15fr .85fr;gap:18px}.simple-list{border:1px solid #eaecf0;border-radius:9px;overflow:hidden}.simple-row{display:flex;align-items:center;gap:12px;padding:11px 12px;border-bottom:1px solid #eaecf0;color:#344054}.simple-row:last-child{border-bottom:0}.simple-row:hover{background:#f9fafb}.date-chip{width:42px;height:44px;border-radius:8px;background:#f2f4f7;display:flex;flex-direction:column;align-items:center;justify-content:center}.date-chip strong{font-size:16px}.date-chip span{font-size:9px;color:#667085;text-transform:uppercase}.grow{flex:1;display:flex;flex-direction:column;min-width:0}.grow strong{font-size:13px}.grow span{font-size:11px;color:#667085;margin-top:3px}.pill{display:inline-flex;border-radius:999px;padding:4px 8px;font-size:10px;font-weight:750}.pill.success{background:#ecfdf3;color:#067647}.pill.warning{background:#fffaeb;color:#b54708}.quick-grid{display:grid;grid-template-columns:1fr 1fr;gap:10px}.quick-grid a{border:1px solid #eaecf0;border-radius:9px;padding:14px;color:#344054}.quick-grid a:hover{border-color:#84adff;background:#f8fbff}.quick-grid strong{display:block;font-size:13px;margin-bottom:5px}.quick-grid span{font-size:11px;color:#667085;line-height:1.4}.week-calendar{display:grid;grid-template-columns:repeat(7,minmax(150px,1fr));gap:8px;overflow-x:auto;padding-bottom:6px}.day-column{min-height:600px;background:#fff;border:1px solid #e5e7eb;border-radius:10px;overflow:hidden}.day-column.today{border-color:#84adff;box-shadow:0 0 0 1px #d1e9ff}.day-column>header{display:flex;justify-content:space-between;align-items:center;padding:12px;border-bottom:1px solid #eaecf0;background:#fbfcfd}.day-column.today>header{background:#eff8ff}.day-column header div{display:flex;align-items:baseline;gap:6px}.day-column header span{font-size:11px;color:#667085;text-transform:uppercase;font-weight:700}.day-column header strong{font-size:17px}.day-column header a{width:26px;height:26px;border-radius:6px;display:grid;place-items:center;background:#fff;border:1px solid #d0d5dd;font-weight:700}.day-bookings{padding:7px;display:flex;flex-direction:column;gap:7px}.booking-card{display:flex;flex-direction:column;padding:9px 9px 8px;border:1px solid #e4e7ec;border-left:4px solid var(--staff-colour);border-radius:7px;color:#344054;background:#fff}.booking-card:hover{box-shadow:0 3px 10px #10182812}.booking-card.cancelled{opacity:.52;text-decoration:line-through}.booking-time{font-size:11px;font-weight:750;color:#475467}.booking-time span{font-size:9px;color:#98a2b3}.booking-card>strong{font-size:13px;margin-top:5px}.booking-card>span,.booking-card>small{font-size:10px;color:#667085;margin-top:2px}.booking-foot{display:flex;justify-content:space-between;align-items:center;margin-top:7px;padding-top:6px;border-top:1px solid #f0f1f3;font-size:10px;font-weight:700}.payment-dot{color:#b54708}.payment-dot.paid{color:#067647}.day-empty{font-size:10px;color:#c0c7d0;text-align:center;padding:20px 0}.calendar-legend{display:flex;gap:16px;align-items:center;flex-wrap:wrap;padding:13px 3px;color:#667085;font-size:11px}.calendar-legend span{display:flex;align-items:center;gap:6px}.calendar-legend i,.staff-label i{width:8px;height:8px;border-radius:50%;display:inline-block}.calendar-legend .legend-note{margin-left:auto;color:#98a2b3}.inline-filter select{padding:9px 32px 9px 10px;border:1px solid #d0d5dd;border-radius:8px;background:#fff}.toolbar{display:flex;gap:8px;align-items:center;margin-bottom:16px}.toolbar input{width:min(420px,100%)}input,select,textarea{border:1px solid #d0d5dd;border-radius:7px;background:#fff;padding:9px 10px;color:#344054;outline:none;width:100%}input:focus,select:focus,textarea:focus{border-color:#84adff;box-shadow:0 0 0 3px #2e90fa18}textarea{resize:vertical}.table-wrap{overflow:auto;border:1px solid #eaecf0;border-radius:9px}table{width:100%;border-collapse:collapse;font-size:12px;white-space:nowrap}th{text-align:left;padding:10px 12px;background:#f9fafb;color:#667085;font-size:10px;text-transform:uppercase;letter-spacing:.03em}td{padding:11px 12px;border-top:1px solid #eaecf0;color:#344054;vertical-align:middle}.table-link{font-weight:700}.cell-sub{display:block;color:#98a2b3;margin-top:3px}.staff-label{display:flex;align-items:center;gap:6px}.empty-cell,.empty-state{text-align:center;color:#98a2b3;padding:32px}.form-panel{max-width:1040px}.form-section{padding:2px 0 22px;margin-bottom:22px;border-bottom:1px solid #eaecf0}.form-section:last-of-type{border-bottom:0;margin-bottom:0}.form-section h2{margin-bottom:14px}.form-grid{display:grid;gap:13px}.form-grid.cols-2{grid-template-columns:1fr 1fr}.form-grid.cols-3{grid-template-columns:repeat(3,1fr)}label{display:flex;flex-direction:column;gap:6px;font-size:11px;font-weight:650;color:#475467}label small{font-weight:400;color:#98a2b3}.span-2{grid-column:span 2}.form-actions{display:flex;justify-content:flex-end;gap:8px;padding-top:4px}.back-link{display:inline-block;margin-bottom:7px;font-size:12px;font-weight:650}.inline-help{font-size:11px;color:#667085;margin-top:10px}.danger-zone{max-width:1040px;margin-top:12px;display:flex;justify-content:flex-end}.client-grid{display:grid;grid-template-columns:repeat(3,minmax(0,1fr));gap:12px}.client-card{border:1px solid #eaecf0;border-radius:10px;padding:15px;color:#344054}.client-card:hover{border-color:#84adff;box-shadow:0 4px 15px #1018280c}.client-card-head{display:flex;gap:10px;align-items:center}.client-avatar{width:38px;height:38px;border-radius:50%;background:#eff8ff;color:#175cd3;display:grid;place-items:center;font-size:11px;font-weight:750}.client-card-head div:last-child{display:flex;flex-direction:column}.client-card-head strong{font-size:13px}.client-card-head span{font-size:10px;color:#667085;margin-top:2px}.dog-pills{display:flex;gap:5px;flex-wrap:wrap;margin:13px 0}.dog-pills span{font-size:10px;background:#f2f4f7;padding:5px 7px;border-radius:999px}.client-contact{display:flex;flex-direction:column;gap:3px;font-size:10px;color:#667085}.full-span{grid-column:1/-1}.detail-list{margin:0}.detail-list>div{display:grid;grid-template-columns:100px 1fr;padding:10px 0;border-bottom:1px solid #f0f1f3}.detail-list>div:last-child{border:0}.detail-list dt{font-size:11px;color:#667085}.detail-list dd{margin:0;font-size:12px}.prewrap{white-space:pre-wrap}.dog-detail{border:1px solid #eaecf0;border-radius:8px;margin-bottom:8px}.dog-detail summary{list-style:none;padding:11px 12px;display:flex;align-items:center;gap:8px;cursor:pointer}.dog-detail summary::-webkit-details-marker{display:none}.dog-detail summary strong{font-size:12px}.dog-detail summary small{font-size:10px;color:#667085;margin-left:auto}.dog-form{padding:13px;border-top:1px solid #eaecf0}.dog-form .secondary-button,.dog-form .primary-button{margin-top:11px}.add-dog{border-style:dashed}.top-gap{margin-top:18px}.staff-grid{display:grid;grid-template-columns:repeat(3,minmax(0,1fr));gap:14px}.staff-title{display:flex;gap:10px;align-items:center;margin-bottom:16px}.staff-colour{width:12px;height:38px;border-radius:4px}.staff-title div{display:flex;flex-direction:column}.staff-title h2{margin:0}.staff-title span{font-size:10px;color:#667085;margin-top:3px}.stack-form{display:flex;flex-direction:column;gap:12px}.colour-input{height:40px;padding:4px}.check-label{flex-direction:row;align-items:center}.check-label input{width:auto}.settings-grid{display:grid;grid-template-columns:1fr 1fr;gap:14px}.settings-tile{min-height:125px;background:#fff;border:1px solid #eaecf0;border-radius:12px;padding:18px;display:grid;grid-template-columns:42px 1fr 18px;gap:12px;color:#344054;align-items:start}.settings-tile:hover:not(.static){border-color:#84adff}.settings-tile.static{grid-template-columns:42px 1fr}.settings-icon{width:40px;height:40px;background:#eff8ff;border-radius:9px;display:grid;place-items:center}.settings-tile strong{font-size:14px}.settings-tile p{font-size:11px;color:#667085;line-height:1.45;margin:6px 0}.settings-tile small{font-size:10px;color:#98a2b3}.settings-tile.future{background:#fcfcfd}.login-body{min-height:100vh;background:#0c1f33;display:grid;place-items:center;padding:24px}.login-card{width:min(410px,100%);background:#fff;border-radius:16px;padding:30px;box-shadow:0 20px 50px #0005}.login-card.wide{width:min(480px,100%)}.login-logo{text-align:center;margin-bottom:24px}.login-logo h1{font-size:22px;margin:13px 0 5px}.login-logo p{font-size:12px;color:#667085;margin:0}.alert.error{background:#fef3f2;color:#b42318;border:1px solid #fecdca;padding:10px;border-radius:7px;margin-bottom:14px;font-size:12px}@media(max-width:1150px){.stats-grid{grid-template-columns:1fr 1fr}.client-grid,.staff-grid{grid-template-columns:1fr 1fr}.content-grid.two{grid-template-columns:1fr}.zq-main{padding:24px}.week-calendar{grid-template-columns:repeat(7,160px)}}@media(max-width:760px){.zq-shell{display:block}.zq-sidebar{position:static;width:100%;height:auto;padding:12px}.zq-brand{margin:0;height:48px}.zq-nav{flex-direction:row;overflow-x:auto;padding-top:8px}.zq-nav a{min-width:max-content}.zq-nav svg{display:none}.zq-sidebar-footer{display:none}.zq-workspace{display:block}.zq-topbar{height:58px;padding:0 16px}.zq-main{padding:18px 14px}.page-head{align-items:flex-start;flex-direction:column}.head-actions{justify-content:flex-start}.stats-grid,.client-grid,.staff-grid,.settings-grid,.form-grid.cols-2,.form-grid.cols-3{grid-template-columns:1fr}.span-2{grid-column:auto}.quick-grid{grid-template-columns:1fr}.zq-footer{padding:16px}.calendar-head .head-actions{width:100%}}
/* v0.1.3 weekly scheduler */
.schedule-scroll{overflow:auto;background:#fff;border:1px solid #e5e7eb;border-radius:10px;box-shadow:0 2px 10px #10182808}.schedule-grid{display:grid;grid-template-columns:76px repeat(7,minmax(150px,1fr));min-width:1160px}.schedule-corner{position:sticky;left:0;top:0;z-index:8;background:#f9fafb;border-right:1px solid #e5e7eb;border-bottom:1px solid #e5e7eb;height:58px}.schedule-day-head{height:58px;display:flex;align-items:center;justify-content:space-between;padding:9px 10px;background:#fbfcfd;border-right:1px solid #e5e7eb;border-bottom:1px solid #e5e7eb;position:sticky;top:0;z-index:6}.schedule-day-head.today{background:#eff8ff}.schedule-day-head>div{display:flex;align-items:baseline;gap:6px}.schedule-day-head span{font-size:10px;color:#667085;text-transform:uppercase;font-weight:750}.schedule-day-head strong{font-size:17px}.schedule-day-head a{width:27px;height:27px;border-radius:6px;display:grid;place-items:center;background:#fff;border:1px solid #d0d5dd;font-weight:700}.schedule-time-column{position:relative;z-index:5;background:#fff;border-right:1px solid #d0d5dd;position:sticky;left:0}.schedule-time-slot{position:relative;border-top:1px solid #eef0f3}.schedule-time-slot:nth-child(odd){border-top-color:#d0d5dd}.schedule-time-slot span{position:absolute;right:10px;top:-7px;background:#fff;padding:0 3px;color:#667085;font-size:10px;font-weight:650;white-space:nowrap}.schedule-time-slot:first-child span{top:-7px}.schedule-time-end{position:absolute;right:10px;bottom:-6px;background:#fff;padding:0 3px;color:#667085;font-size:10px;font-weight:650;white-space:nowrap}.schedule-day-column{position:relative;height:1056px;border-right:1px solid #e5e7eb;background:#fff}.schedule-day-column.today{background:#fafdff}.schedule-lines,.schedule-bookings{position:absolute;inset:0}.schedule-lines{z-index:1}.schedule-half-hour{border-top:1px solid #eef0f3}.schedule-half-hour.hour{border-top-color:#d0d5dd}.schedule-bookings{z-index:2;pointer-events:none}.schedule-booking{position:absolute;pointer-events:auto;overflow:hidden;display:flex;flex-direction:column;padding:5px 6px;background:#fff;border:1px solid #d0d5dd;border-left:4px solid var(--staff-colour);border-radius:6px;color:#344054;box-shadow:0 1px 4px #10182812;min-width:0}.schedule-booking:hover{z-index:4;box-shadow:0 5px 14px #10182824;border-color:#98a2b3}.schedule-booking.cancelled{opacity:.48;text-decoration:line-through}.schedule-booking-time{font-size:9px;font-weight:750;color:#475467;line-height:1.15;white-space:nowrap;overflow:hidden;text-overflow:ellipsis}.schedule-booking strong{font-size:11px;line-height:1.15;margin-top:3px;white-space:nowrap;overflow:hidden;text-overflow:ellipsis}.schedule-booking span,.schedule-booking small{font-size:9px;line-height:1.15;color:#667085;margin-top:2px;white-space:nowrap;overflow:hidden;text-overflow:ellipsis}@media(max-width:760px){.schedule-grid{grid-template-columns:68px repeat(7,145px);min-width:1083px}.schedule-time-slot span,.schedule-time-end{right:6px;font-size:9px}}

/* v0.1.4 calendar toolbar alignment */
.inline-filter{display:flex;align-items:center;margin:0}.inline-filter select{height:37px;min-height:37px;padding:0 32px 0 10px;line-height:35px}

/* v0.1.5 booking payment workflow */
.booking-action-row{justify-content:space-between;align-items:center;gap:12px;flex-wrap:wrap}
.form-actions-left,.form-actions-right{display:flex;align-items:center;gap:8px;flex-wrap:wrap}
.readonly-field{min-height:39px;border:1px solid #e4e7ec;border-radius:7px;background:#f9fafb;padding:9px 10px;color:#667085;font-size:13px;font-weight:600;display:flex;align-items:center}
.readonly-field.paid{background:#ecfdf3;border-color:#abefc6;color:#067647}
.payment-button{border:1px solid #d0d5dd;border-radius:8px;padding:10px 14px;font-size:13px;font-weight:700;display:inline-flex;align-items:center;justify-content:center;cursor:pointer;background:#f9fafb;color:#344054}
.payment-button:hover{background:#f2f4f7;border-color:#b8bec7}
.payment-dialog{width:min(430px,calc(100% - 32px));border:0;border-radius:12px;padding:0;box-shadow:0 20px 48px #1018282e}
.payment-dialog::backdrop{background:#10182866}
.payment-dialog form{padding:20px}
.dialog-head{display:flex;justify-content:space-between;gap:16px;align-items:flex-start;margin-bottom:18px}
.dialog-head h2{margin:0 0 5px;font-size:18px}
.dialog-head p{margin:0;color:#667085;font-size:12px}
.dialog-close{border:0;background:transparent;color:#667085;font-size:24px;line-height:1;cursor:pointer;padding:0 3px}
.dialog-actions{display:flex;justify-content:flex-end;gap:8px;margin-top:20px}
@media(max-width:760px){.booking-action-row{align-items:stretch}.form-actions-left,.form-actions-right{width:100%}.form-actions-right{justify-content:flex-end}}

/* v0.1.7 payment status controls */


/* v0.1.8 email and PDF workflow */
.settings-alert{border:1px solid #d0d5dd;border-radius:9px;padding:11px 13px;margin-bottom:14px;font-size:12px;background:#fff;color:#344054}.settings-alert.success{background:#ecfdf3;border-color:#abefc6;color:#067647}.settings-alert.error{background:#fef3f2;border-color:#fecdca;color:#b42318}.settings-alert.warning{background:#fffaeb;border-color:#fedf89;color:#b54708}.settings-alert a{font-weight:700}.settings-form textarea{resize:vertical}.email-test-row{display:flex;gap:8px;align-items:center}.email-test-row input{flex:1}.recipient-list{border:1px solid #eaecf0;border-radius:9px;overflow:hidden}.recipient-row{display:grid;grid-template-columns:18px 1fr;gap:10px;align-items:center;padding:11px 12px;border-bottom:1px solid #eaecf0;cursor:pointer}.recipient-row:last-child{border-bottom:0}.recipient-row:hover{background:#f9fafb}.recipient-row input{width:16px;height:16px}.recipient-row span{display:flex;flex-direction:column;gap:2px}.recipient-row strong{font-size:12px}.recipient-row small{font-size:10px;color:#667085;font-weight:400}.recipient-row.disabled{background:#fcfcfd;color:#98a2b3;cursor:default}.recipient-row.disabled small{color:#98a2b3}.primary-button:disabled,.secondary-button:disabled{opacity:.45;cursor:not-allowed}.empty-state.small{padding:18px;font-size:11px;color:#667085}.email-recipient-grid{align-items:start}@media(max-width:760px){.email-test-row{align-items:stretch;flex-direction:column}.email-test-row .secondary-button{width:100%}}


/* v0.1.10 - compact browser calendar booking cards so 30-minute entries remain readable */
.schedule-booking{
  padding:4px 7px;
  overflow:hidden;
  line-height:1.05;
  gap:0;
}
.schedule-booking-time{
  font-size:10px;
  line-height:11px;
  margin:0 0 1px;
  white-space:nowrap;
}
.schedule-booking strong{
  display:block;
  font-size:12px;
  line-height:13px;
  margin:0;
  white-space:nowrap;
  overflow:hidden;
  text-overflow:ellipsis;
}
.schedule-booking span{
  display:block;
  font-size:10px;
  line-height:11px;
  margin:0;
  white-space:nowrap;
  overflow:hidden;
  text-overflow:ellipsis;
}
.schedule-booking small{
  font-size:9px;
  line-height:10px;
}


/* v0.1.11 recurring booking allocation */
.recurring-section{margin-top:18px;padding-top:16px;border-top:1px solid #eaecf0}.recurring-title{display:flex;justify-content:space-between;gap:12px;align-items:baseline;margin-bottom:10px}.recurring-title strong{font-size:12px}.recurring-title span,.recurring-empty{font-size:10px;color:#667085}.recurring-empty{padding:10px 0}.recurring-row{display:grid;grid-template-columns:120px 105px 90px 90px 125px minmax(120px,1fr) 70px auto auto;gap:7px;align-items:center;padding:7px 0;border-top:1px solid #f2f4f7}.recurring-row input,.recurring-row select{padding:7px 8px;font-size:10px}.recurring-row .secondary-button,.recurring-row .primary-button{margin:0;white-space:nowrap}.recurring-active{flex-direction:row;align-items:center;gap:5px;font-size:10px}.recurring-active input{width:auto}.text-danger-button{border:0;background:transparent;color:#b42318;font-size:10px;font-weight:700;cursor:pointer;padding:7px}.recurring-new{background:#fafbfc;margin-top:5px;padding:8px;border-radius:8px}.allocation-board{display:grid;grid-template-columns:82px minmax(190px,1.15fr) repeat(3,minmax(190px,1fr));border:1px solid #e5e7eb;border-radius:10px;overflow:auto;background:#fff;min-width:900px}.allocation-header{min-height:52px;background:#f9fafb;border-bottom:1px solid #d0d5dd;border-right:1px solid #e5e7eb;display:flex;align-items:center;padding:10px;font-size:11px;font-weight:750;position:sticky;top:0;z-index:3}.staff-head{gap:7px}.staff-head i{width:9px;height:9px;border-radius:50%}.unallocated-head{color:#667085}.allocation-day-label{border-right:1px solid #d0d5dd;border-bottom:1px solid #e5e7eb;display:flex;flex-direction:column;justify-content:flex-start;padding:12px 10px;background:#fbfcfd;min-height:132px}.allocation-header.allocation-day-label{min-height:52px}.allocation-day-label strong{font-size:12px}.allocation-day-label span{font-size:10px;color:#667085;margin-top:3px}.allocation-dropzone{min-height:132px;border-right:1px solid #e5e7eb;border-bottom:1px solid #e5e7eb;padding:7px;background:#fff;transition:background .12s}.unallocated-zone{background:#fcfcfd}.allocation-dropzone.drag-over{background:#eff8ff}.allocation-card{border:1px solid #d0d5dd;border-left:4px solid #98a2b3;border-radius:7px;background:#fff;padding:7px 8px;margin-bottom:6px;box-shadow:0 1px 3px #1018280b;cursor:grab;display:flex;flex-direction:column;min-width:0}.allocation-card.allocated{border-left-color:var(--staff-colour)}.allocation-card.dragging{opacity:.45}.allocation-card strong{font-size:11px}.allocation-card span{font-size:9px;color:#667085;margin-top:1px}.allocation-card small{font-size:9px;color:#475467;margin-top:4px;font-weight:650}.allocation-select{margin-top:6px;padding:5px 7px!important;font-size:9px!important}.allocation-message{height:0;overflow:hidden;transition:.15s}.allocation-message.show{height:auto;margin-bottom:10px;padding:9px 11px;border:1px solid #b2ddff;background:#eff8ff;color:#175cd3;border-radius:7px;font-size:11px}.allocation-message.error{border-color:#fecdca;background:#fef3f2;color:#b42318}.allocation-footer-note{font-size:10px;color:#667085;margin-top:10px}.allocation-footer-note a{font-weight:700}@media(max-width:1200px){.recurring-row{grid-template-columns:repeat(4,minmax(100px,1fr));}.allocation-board{grid-template-columns:82px minmax(180px,1.1fr) repeat(3,minmax(180px,1fr))}}


/* v0.1.12 recurring patterns and flexible weekly allocation */
.recurring-pattern-form{border:1px solid #eaecf0;border-radius:10px;background:#fafbfc;padding:14px}
.pattern-mode{display:flex;gap:18px;flex-wrap:wrap;margin-bottom:12px}
.pattern-mode label,.weekday-checks label{display:flex;flex-direction:row;align-items:center;gap:6px;font-size:11px;font-weight:650}
.pattern-mode input,.weekday-checks input{width:auto}
.pattern-panel{border:1px solid #e4e7ec;border-radius:8px;background:#fff;padding:11px 12px;margin-bottom:12px}
.pattern-panel[hidden]{display:none}
.pattern-panel p{font-size:10px;color:#667085;margin:7px 0 0}
.pattern-label{font-size:10px;color:#667085;font-weight:700;margin-bottom:8px}
.weekday-checks{display:flex;gap:8px;flex-wrap:wrap}
.weekday-checks label{border:1px solid #d0d5dd;border-radius:7px;padding:7px 9px;background:#fff}
.pattern-panel>label{max-width:220px;font-size:11px}
.pattern-defaults{display:grid;grid-template-columns:150px 120px 110px 150px minmax(170px,1fr);gap:9px;margin-bottom:10px}
.pattern-defaults label{font-size:10px;color:#475467}
.pattern-defaults input,.pattern-defaults select,.pattern-panel input{margin-top:5px}
.pattern-help{font-size:10px;color:#667085;margin-bottom:11px}
.allocation-summary{display:flex;gap:20px;align-items:center;background:#fff;border:1px solid #eaecf0;border-radius:9px;padding:10px 13px;margin-bottom:12px;font-size:11px;color:#667085}
.allocation-summary strong{color:#172033}
.allocation-columns{display:grid;gap:10px;align-items:start;overflow-x:auto;padding-bottom:4px}
.allocation-column{background:#fff;border:1px solid #e4e7ec;border-radius:10px;min-width:230px;overflow:hidden}
.allocation-column-head{min-height:55px;background:#f9fafb;border-bottom:1px solid #e4e7ec;padding:10px 12px;display:flex;flex-direction:column;justify-content:center;gap:3px}
.allocation-column-head>span{display:flex;align-items:center;gap:7px;font-size:12px;font-weight:750}
.allocation-column-head small{font-size:9px;color:#667085}
.allocation-column-head i{width:9px;height:9px;border-radius:50%}
.allocation-column-zone{min-height:360px;padding:8px;background:#fff;transition:background .12s}
.allocation-column-zone[data-staff-id=""]{background:#fcfcfd}
.allocation-column-zone.drag-over{background:#eff8ff}
.allocation-card-title{display:flex;justify-content:space-between;gap:8px;align-items:flex-start}
.allocation-card-title>div{display:flex;flex-direction:column;min-width:0}
.allocation-card-title em{font-style:normal;font-size:8px;font-weight:750;color:#667085;background:#f2f4f7;border-radius:10px;padding:3px 6px;white-space:nowrap}
.allocation-plan-fields{display:grid;grid-template-columns:minmax(0,1fr) 92px;gap:6px;margin-top:7px}
.allocation-plan-fields label{font-size:8px;color:#667085;font-weight:700}
.allocation-plan-fields select,.allocation-plan-fields input{width:100%;margin-top:3px;padding:5px 6px!important;font-size:9px!important}
.allocation-plan-fields select:disabled{background:#f2f4f7;color:#475467;opacity:1}
@media(max-width:1200px){.pattern-defaults{grid-template-columns:repeat(2,minmax(140px,1fr))}.pattern-notes{grid-column:1/-1}}

/* v0.1.13 calendar-first weekly allocation */
.allocation-planner{display:grid;grid-template-columns:250px minmax(0,1fr);gap:14px;align-items:start}.allocation-pool{background:#fff;border:1px solid #e4e7ec;border-radius:10px;overflow:hidden;position:sticky;top:90px}.allocation-pool-head{padding:12px 13px;border-bottom:1px solid #e4e7ec;background:#f9fafb;display:flex;flex-direction:column;gap:3px}.allocation-pool-head strong{font-size:12px}.allocation-pool-head span{font-size:9px;color:#667085}.allocation-pool-zone{min-height:420px;padding:9px;background:#fcfcfd;transition:background .12s}.allocation-pool-zone.drag-over{background:#eff8ff}.allocation-pool-card{border:1px solid #d0d5dd;border-left:4px solid #98a2b3;border-radius:8px;background:#fff;padding:8px 9px;margin-bottom:7px;box-shadow:0 1px 3px #1018280b;cursor:grab}.allocation-pool-card.dragging,.allocation-calendar-card.dragging{opacity:.4}.allocation-pool-card>small{display:block;font-size:9px;color:#475467;margin-top:5px}.allocation-rule{margin-top:6px;font-size:8px;color:#667085;font-weight:700;background:#f2f4f7;border-radius:5px;padding:4px 6px}.allocation-pool-empty{font-size:10px;color:#667085;padding:12px 4px}.allocation-calendar-wrap{overflow-x:auto;border:1px solid #d0d5dd;border-radius:10px;background:#fff}.allocation-calendar-grid{display:grid;grid-template-columns:72px repeat(7,minmax(135px,1fr));min-width:1040px}.allocation-calendar-corner,.allocation-calendar-day-head{height:54px;background:#f9fafb;border-bottom:1px solid #d0d5dd;border-right:1px solid #e4e7ec;position:sticky;top:0;z-index:5}.allocation-calendar-day-head{display:flex;flex-direction:column;align-items:center;justify-content:center}.allocation-calendar-day-head strong{font-size:11px}.allocation-calendar-day-head span{font-size:9px;color:#667085;margin-top:2px}.allocation-calendar-times{position:relative;background:#fbfcfd;border-right:1px solid #d0d5dd}.allocation-calendar-time{position:relative;border-top:1px solid #eef0f3}.allocation-calendar-time:nth-child(odd){border-top-color:#d0d5dd}.allocation-calendar-time span{position:absolute;right:7px;top:-6px;font-size:8px;color:#667085;background:#fbfcfd;padding:0 2px;white-space:nowrap}.allocation-calendar-end{position:absolute;right:7px;bottom:-5px;font-size:8px;color:#667085;background:#fbfcfd;padding:0 2px}.allocation-calendar-day{position:relative;height:1056px;border-right:1px solid #e4e7ec;min-width:0}.allocation-calendar-lines,.allocation-calendar-drop,.allocation-calendar-cards{position:absolute;inset:0}.allocation-calendar-lines{pointer-events:none}.allocation-calendar-line{border-top:1px solid #eef0f3}.allocation-calendar-line.hour{border-top-color:#d0d5dd}.allocation-calendar-drop{z-index:1}.allocation-calendar-drop.drag-over{background:#175cd30a}.allocation-calendar-drop.drag-over:after{content:"";position:absolute;left:4px;right:4px;top:var(--drop-y,0);border-top:2px solid #175cd3;pointer-events:none}.allocation-calendar-cards{z-index:2;pointer-events:none}.allocation-calendar-card{position:absolute;border:1px solid #d0d5dd;border-left:4px solid var(--staff-colour,#98a2b3);border-radius:7px;background:#fff;padding:5px 6px;box-shadow:0 1px 4px #10182812;cursor:grab;overflow:hidden;pointer-events:auto;min-width:0}.allocation-calendar-card-top{display:flex;align-items:center;justify-content:space-between;gap:4px}.allocation-calendar-card-top strong{font-size:10px;line-height:11px;white-space:nowrap;overflow:hidden;text-overflow:ellipsis}.allocation-calendar-card-top span{font-size:8px;color:#667085;white-space:nowrap}.allocation-calendar-card small{display:block;font-size:8px;line-height:9px;color:#667085;white-space:nowrap;overflow:hidden;text-overflow:ellipsis;margin-top:1px}.calendar-walker-select{width:100%;margin-top:3px!important;padding:3px 4px!important;font-size:8px!important;height:20px!important;line-height:1!important}.allocation-calendar-card[style*="height: 4"] .calendar-walker-select{margin-top:2px!important}@media(max-width:1100px){.allocation-planner{grid-template-columns:220px minmax(0,1fr)}}@media(max-width:820px){.allocation-planner{grid-template-columns:1fr}.allocation-pool{position:static}.allocation-pool-zone{min-height:120px}.allocation-calendar-grid{min-width:1000px}}


/* v0.1.14 compact grouped Unallocated dog list */
.allocation-dog-group{border:1px solid #e4e7ec;border-radius:9px;background:#fff;margin-bottom:7px;overflow:hidden}
.allocation-dog-group>summary{list-style:none;display:flex;align-items:center;justify-content:space-between;gap:8px;padding:9px 10px;cursor:pointer;background:#fff;user-select:none}
.allocation-dog-group>summary::-webkit-details-marker{display:none}
.allocation-dog-group>summary:hover{background:#f9fafb}
.allocation-dog-summary-main{display:flex;align-items:center;gap:8px;min-width:0}
.allocation-dog-summary-main>span:last-child{display:flex;flex-direction:column;min-width:0}
.allocation-dog-summary-main strong{font-size:11px;color:#172033;line-height:1.2}
.allocation-dog-summary-main small{font-size:9px;color:#667085;white-space:nowrap;overflow:hidden;text-overflow:ellipsis;max-width:150px;margin-top:2px}
.allocation-dog-chevron{font-size:17px;line-height:1;color:#98a2b3;transition:transform .14s ease}
.allocation-dog-group[open] .allocation-dog-chevron{transform:rotate(90deg)}
.allocation-dog-count{flex:none;background:#f2f4f7;color:#475467;font-size:9px;font-weight:700;padding:3px 7px;border-radius:999px}
.allocation-dog-walks{border-top:1px solid #eaecf0;padding:7px;background:#fcfcfd}
.allocation-pool-card.compact{margin-bottom:6px;padding:8px 9px}
.allocation-pool-card.compact:last-child{margin-bottom:0}
.allocation-pool-card.compact .allocation-card-title strong{font-size:10px}
.allocation-pool-card.compact .allocation-card-title em{font-size:8px}
.allocation-pool-card.compact>small{font-size:9px;line-height:1.25}
.allocation-pool-card.compact .allocation-rule{font-size:8px;margin-top:5px}


/* v0.1.16 weekday colour coding for allocation */
.weekday-0{--weekday-colour:#175cd3;--weekday-bg:#eff4ff}
.weekday-1{--weekday-colour:#7f56d9;--weekday-bg:#f4f3ff}
.weekday-2{--weekday-colour:#039855;--weekday-bg:#ecfdf3}
.weekday-3{--weekday-colour:#d97706;--weekday-bg:#fffaeb}
.weekday-4{--weekday-colour:#c11574;--weekday-bg:#fdf2fa}
.weekday-5{--weekday-colour:#0e7090;--weekday-bg:#ecfdff}
.weekday-6{--weekday-colour:#b42318;--weekday-bg:#fef3f2}

.allocation-calendar-day-head.weekday-0,
.allocation-calendar-day-head.weekday-1,
.allocation-calendar-day-head.weekday-2,
.allocation-calendar-day-head.weekday-3,
.allocation-calendar-day-head.weekday-4,
.allocation-calendar-day-head.weekday-5,
.allocation-calendar-day-head.weekday-6{
  border-top:3px solid var(--weekday-colour);
  background:var(--weekday-bg);
}
.weekday-badge.weekday-0,
.weekday-badge.weekday-1,
.weekday-badge.weekday-2,
.weekday-badge.weekday-3,
.weekday-badge.weekday-4,
.weekday-badge.weekday-5,
.weekday-badge.weekday-6{
  display:inline-flex;
  align-items:center;
  width:max-content;
  color:var(--weekday-colour);
  background:var(--weekday-bg);
  border:1px solid color-mix(in srgb,var(--weekday-colour) 24%, white);
  border-radius:999px;
  padding:3px 6px;
  font-weight:750;
}


/* v0.1.18 Outlook-style side-by-side staff allocation calendars */
.allocation-staff-planner{grid-template-columns:250px minmax(0,1fr)}
.staff-calendar-scroll{overflow-x:auto;overflow-y:visible;padding-bottom:8px}
.staff-calendars-row{display:flex;align-items:flex-start;gap:14px;min-width:max-content}
.staff-calendar{width:760px;flex:0 0 760px;background:#fff;border:1px solid #d0d5dd;border-radius:10px;overflow:hidden}
.staff-calendar-title{height:58px;border-bottom:1px solid #d0d5dd;background:#f9fafb;padding:10px 13px;display:flex;align-items:center;gap:9px;position:sticky;top:72px;z-index:8}
.staff-calendar-title i{width:11px;height:36px;border-radius:4px;background:var(--staff-colour,#175cd3);flex:none}
.staff-calendar-title div{display:flex;flex-direction:column;gap:2px}.staff-calendar-title strong{font-size:13px}.staff-calendar-title span{font-size:9px;color:#667085}
.staff-calendar-grid{display:grid;grid-template-columns:58px repeat(5,minmax(138px,1fr));min-width:748px}
.staff-calendar-grid .allocation-calendar-corner,.staff-calendar-grid .allocation-calendar-day-head{top:130px}
.staff-calendar-grid .allocation-calendar-day{height:1056px}
.staff-calendar-grid .allocation-calendar-card{padding:5px 6px}
.staff-calendar-grid .allocation-calendar-card-top strong{font-size:9px}.staff-calendar-grid .allocation-calendar-card small{font-size:7.5px}
@media(max-width:1100px){.allocation-staff-planner{grid-template-columns:220px minmax(0,1fr)}.staff-calendar{width:720px;flex-basis:720px}.staff-calendar-grid{min-width:708px}}
@media(max-width:820px){.allocation-staff-planner{grid-template-columns:1fr}.allocation-pool{position:static}.staff-calendar-scroll{overflow-x:auto}.staff-calendar-title{top:72px}}


/* v0.1.19 collapsible application sidebar */
.zq-shell,.zq-sidebar,.zq-workspace{transition:grid-template-columns .16s ease,width .16s ease}
.sidebar-collapse-toggle{
  position:absolute;right:-13px;top:78px;width:27px;height:27px;border:1px solid #d0d5dd;
  border-radius:50%;background:#fff;color:#475467;display:grid;place-items:center;cursor:pointer;
  box-shadow:0 2px 6px #10182818;z-index:25;padding:0
}
.sidebar-collapse-toggle:hover{background:#f9fafb;color:#175cd3}
.sidebar-collapse-toggle svg{width:15px;height:15px;fill:none;stroke:currentColor;stroke-width:2;stroke-linecap:round;stroke-linejoin:round;transition:transform .16s ease}
body.sidebar-collapsed .zq-shell{grid-template-columns:76px minmax(0,1fr)}
body.sidebar-collapsed .zq-sidebar{width:76px;padding-left:10px;padding-right:10px}
body.sidebar-collapsed .zq-brand{padding:0;margin-left:auto;margin-right:auto;justify-content:center}
body.sidebar-collapsed .latl-brand{gap:0}
body.sidebar-collapsed .brand-copy{display:none}
body.sidebar-collapsed .zq-nav a{justify-content:center;gap:0;padding-left:0;padding-right:0}
body.sidebar-collapsed .zq-nav a span{display:none}
body.sidebar-collapsed .zq-nav svg{width:21px;height:21px}
body.sidebar-collapsed .zq-sidebar-footer{justify-content:center;padding-left:0;padding-right:0}
body.sidebar-collapsed .zq-sidebar-footer span{display:none}
body.sidebar-collapsed .sidebar-collapse-toggle svg{transform:rotate(180deg)}
body.allocation-page .zq-main{max-width:none}
@media(max-width:820px){
  .sidebar-collapse-toggle{display:none}
  body.sidebar-collapsed .zq-shell{grid-template-columns:232px minmax(0,1fr)}
  body.sidebar-collapsed .zq-sidebar{width:232px;padding:24px 16px 18px}
  body.sidebar-collapsed .brand-copy{display:flex}
  body.sidebar-collapsed .zq-nav a{justify-content:flex-start;gap:12px;padding:10px 12px}
  body.sidebar-collapsed .zq-nav a span{display:inline}
  body.sidebar-collapsed .zq-sidebar-footer{justify-content:space-between;padding:14px 10px 0}
  body.sidebar-collapsed .zq-sidebar-footer span{display:inline}
}


/* v0.1.20 tighter allocation workspace + staff calendar ordering */
.allocation-staff-planner{grid-template-columns:210px minmax(0,1fr)}
.staff-calendar{width:680px;flex:0 0 680px}
.staff-calendar-grid{grid-template-columns:52px repeat(5,minmax(124px,1fr));min-width:672px}
.allocation-pool-head{padding:10px 11px}
.allocation-pool-zone{padding:7px}
.allocation-dog-group>summary{padding:8px 8px}
.allocation-dog-summary-main small{max-width:118px}
.staff-order-controls{margin-left:auto;display:flex;gap:5px}
.staff-order-controls form{margin:0}
.staff-order-button{width:29px;height:29px;border:1px solid #d0d5dd;border-radius:7px;background:#fff;color:#475467;padding:0;display:grid;place-items:center;cursor:pointer;font-size:14px;font-weight:800}
.staff-order-button:hover{border-color:#84adff;background:#f8fbff;color:#175cd3}
@media(max-width:1100px){
  .allocation-staff-planner{grid-template-columns:195px minmax(0,1fr)}
  .staff-calendar{width:650px;flex-basis:650px}
  .staff-calendar-grid{grid-template-columns:50px repeat(5,minmax(118px,1fr));min-width:640px}
}


/* v0.1.21 extra-compact allocation workspace + in-page calendar ordering */
.allocation-staff-planner{grid-template-columns:178px minmax(0,1fr);gap:9px}
.staff-calendars-row{gap:9px}
.staff-calendar{width:592px;flex:0 0 592px}
.staff-calendar-grid{grid-template-columns:46px repeat(5,minmax(106px,1fr));min-width:576px}
.staff-calendar-title{height:52px;padding:7px 9px;gap:7px}
.staff-calendar-title i{width:8px;height:31px}
.staff-calendar-title-copy{display:flex;flex-direction:column;gap:1px;min-width:0}
.staff-calendar-title-copy strong{font-size:12px;white-space:nowrap;overflow:hidden;text-overflow:ellipsis}
.staff-calendar-title-copy span{font-size:8px}
.allocation-calendar-order-controls{margin-left:auto;display:flex;gap:3px;flex:none}
.allocation-calendar-order-controls form{margin:0}
.allocation-order-button{width:25px;height:25px;border:1px solid #d0d5dd;border-radius:6px;background:#fff;color:#475467;padding:0;display:grid;place-items:center;font-size:18px;line-height:1;cursor:pointer}
.allocation-order-button:hover{border-color:#84adff;background:#f8fbff;color:#175cd3}
.allocation-pool-head{padding:8px 9px}
.allocation-pool-head strong{font-size:11px}
.allocation-pool-head span{font-size:8px}
.allocation-pool-zone{padding:6px}
.allocation-dog-group{margin-bottom:5px;border-radius:7px}
.allocation-dog-group>summary{padding:7px 7px}
.allocation-dog-summary-main{gap:5px}
.allocation-dog-summary-main strong{font-size:10px}
.allocation-dog-summary-main small{font-size:8px;max-width:91px}
.allocation-dog-chevron{font-size:15px}
.allocation-dog-count{font-size:8px;padding:2px 5px}
.allocation-dog-walks{padding:5px}
.allocation-pool-card.compact{padding:6px 7px;margin-bottom:4px}
.allocation-pool-card.compact .allocation-card-title strong{font-size:9px}
.allocation-pool-card.compact .allocation-card-title em{font-size:7px;padding:2px 4px}
.allocation-pool-card.compact>small{font-size:8px}
.allocation-pool-card.compact .allocation-rule{font-size:7px;margin-top:4px;padding:3px 5px}
.staff-calendar-grid .allocation-calendar-day-head strong{font-size:9px}
.staff-calendar-grid .allocation-calendar-day-head span{font-size:7px}
.staff-calendar-grid .allocation-calendar-time span,.staff-calendar-grid .allocation-calendar-end{font-size:7px}
.staff-calendar-grid .allocation-calendar-card{padding:4px 4px}
.staff-calendar-grid .allocation-calendar-card-top strong{font-size:8px}
.staff-calendar-grid .allocation-calendar-card-top span{font-size:7px}
.staff-calendar-grid .allocation-calendar-card small{font-size:7px}
@media(max-width:1100px){
  .allocation-staff-planner{grid-template-columns:168px minmax(0,1fr)}
  .staff-calendar{width:570px;flex-basis:570px}
  .staff-calendar-grid{grid-template-columns:44px repeat(5,minmax(102px,1fr));min-width:554px}
}


/* v0.1.22 Clients & Dogs tile/list views */
.clients-toolbar-row{display:flex;align-items:center;justify-content:space-between;gap:12px;margin-bottom:16px}
.clients-toolbar-row .toolbar{margin-bottom:0;flex:1}
.clients-search input{max-width:420px}
.view-toggle{display:inline-flex;align-items:center;border:1px solid #d0d5dd;border-radius:8px;background:#fff;padding:2px;gap:2px;flex:none}
.view-toggle-button{height:32px;border:0;border-radius:6px;background:transparent;color:#667085;padding:0 9px;display:flex;align-items:center;gap:5px;font-size:10px;font-weight:700;cursor:pointer}
.view-toggle-button svg{width:14px;height:14px;fill:none;stroke:currentColor;stroke-width:1.7;stroke-linecap:round;stroke-linejoin:round}
.view-toggle-button.active{background:#eff4ff;color:#175cd3}
.client-list-view{border:1px solid #eaecf0;border-radius:9px;overflow:hidden}
.client-list-head,.client-list-row{display:grid;grid-template-columns:minmax(170px,1.15fr) minmax(210px,1.5fr) 125px minmax(180px,1.2fr) 115px 20px;gap:10px;align-items:center}
.client-list-head{padding:9px 12px;background:#f9fafb;color:#667085;font-size:9px;font-weight:750;text-transform:uppercase;letter-spacing:.03em}
.client-list-row{padding:9px 12px;border-top:1px solid #eaecf0;color:#344054;font-size:11px}
.client-list-row:hover{background:#f9fafb}
.client-list-person{display:flex;align-items:center;gap:9px;min-width:0}
.client-list-person .client-avatar{width:31px;height:31px;font-size:9px;flex:none}
.client-list-person strong{font-size:11px;white-space:nowrap;overflow:hidden;text-overflow:ellipsis}
.client-list-dogs{display:flex;align-items:center;gap:4px;flex-wrap:wrap}
.client-list-dog{display:inline-flex;align-items:center;gap:3px;background:#f2f4f7;border-radius:999px;padding:3px 6px;font-size:9px;white-space:nowrap}
.client-list-dog small{font-size:8px;color:#667085}
.client-list-muted{font-size:9px;color:#98a2b3}
.client-list-email{white-space:nowrap;overflow:hidden;text-overflow:ellipsis}
.client-list-open{font-size:18px;color:#98a2b3;text-align:right}
[hidden]{display:none!important}
@media(max-width:1050px){
  .client-list-view{overflow-x:auto}
  .client-list-head,.client-list-row{min-width:900px}
}
@media(max-width:720px){
  .clients-toolbar-row{align-items:stretch;flex-direction:column}
  .view-toggle{align-self:flex-start}
}


/* v0.1.23 full-week independently scrollable walker calendars */
.staff-calendar{width:610px;flex:0 0 610px;overflow:hidden}
.staff-calendar-title{position:relative;top:auto;z-index:12;cursor:grab}
.staff-calendar-title:active{cursor:grabbing}
.staff-calendar-viewport{width:100%;height:650px;overflow:auto;overscroll-behavior:contain;scrollbar-gutter:stable both-edges;background:#fff}
.staff-calendar-grid{grid-template-columns:48px repeat(7,108px);min-width:804px;width:max-content;padding-bottom:16px}
.staff-calendar-grid .allocation-calendar-corner,.staff-calendar-grid .allocation-calendar-day-head{position:sticky;top:0;z-index:8}
.staff-calendar-grid .allocation-calendar-corner{left:0;z-index:10}
.staff-calendar-grid .allocation-calendar-times{position:sticky;left:0;z-index:7}
.staff-calendar-grid .allocation-calendar-time:first-child span{top:4px}
.staff-calendar-grid .allocation-calendar-end{bottom:3px}
.allocation-calendar-order-controls{align-items:center}
.allocation-order-button{width:auto;min-width:48px;height:27px;padding:0 6px;gap:3px;display:flex;align-items:center;justify-content:center;font-size:10px;font-weight:750}
.allocation-order-button span{font-size:8px}
.allocation-drag-hint{display:inline-flex;width:22px;height:27px;align-items:center;justify-content:center;color:#98a2b3;font-size:12px;font-weight:900;border-left:1px solid #e4e7ec;margin-left:2px}
.staff-calendar.calendar-moving{opacity:.55}
.staff-calendar.calendar-order-target{outline:2px solid #84adff;outline-offset:2px}
@media(max-width:1100px){.staff-calendar{width:580px;flex-basis:580px}.staff-calendar-viewport{height:610px}}


/* v0.1.24 repaired Weekly Allocation calendar layout */
.staff-calendar-scroll{
  overflow-x:auto;
  overflow-y:visible;
  padding:0 0 10px;
}
.staff-calendars-row{
  display:flex;
  align-items:flex-start;
  gap:10px;
  min-width:max-content;
}
.staff-calendar{
  width:640px;
  flex:0 0 640px;
  background:#fff;
  border:1px solid #d0d5dd;
  border-radius:10px;
  overflow:hidden;
}
.staff-calendar-title{
  height:50px;
  padding:7px 9px;
  display:flex;
  align-items:center;
  gap:7px;
  background:#f9fafb;
  border-bottom:1px solid #d0d5dd;
  position:relative;
  top:auto;
  z-index:20;
  cursor:grab;
}
.staff-calendar-title:active{cursor:grabbing}
.staff-calendar-title i{
  width:8px;
  height:30px;
  border-radius:4px;
  background:var(--staff-colour,#175cd3);
  flex:none;
}
.staff-calendar-title-copy{
  min-width:0;
  display:flex;
  flex-direction:column;
  gap:1px;
}
.staff-calendar-title-copy strong{
  font-size:12px;
  white-space:nowrap;
  overflow:hidden;
  text-overflow:ellipsis;
}
.staff-calendar-title-copy span{font-size:8px;color:#667085}
.allocation-calendar-order-controls{
  margin-left:auto;
  display:flex;
  align-items:center;
  gap:4px;
  flex:none;
}
.allocation-calendar-order-controls form{margin:0}
.allocation-order-button{
  min-width:58px;
  width:auto;
  height:28px;
  padding:0 7px;
  display:flex;
  align-items:center;
  justify-content:center;
  gap:4px;
  border:1px solid #d0d5dd;
  border-radius:6px;
  background:#fff;
  color:#475467;
  font-size:10px;
  font-weight:750;
  cursor:pointer;
}
.allocation-order-button:hover{
  border-color:#84adff;
  background:#f8fbff;
  color:#175cd3;
}
.allocation-order-button span{font-size:9px}
.allocation-drag-hint{
  width:22px;
  height:28px;
  display:inline-flex;
  align-items:center;
  justify-content:center;
  color:#98a2b3;
  border-left:1px solid #e4e7ec;
  margin-left:1px;
  font-size:12px;
  font-weight:900;
}
.staff-calendar-viewport{
  width:100%;
  height:620px;
  overflow:auto;
  overscroll-behavior:contain;
  scrollbar-gutter:stable;
  background:#fff;
}
.staff-calendar-grid{
  display:grid;
  grid-template-columns:50px repeat(7,108px);
  grid-template-rows:54px 1056px;
  width:806px;
  min-width:806px;
  max-width:none;
}
.staff-calendar-grid .allocation-calendar-corner{
  position:sticky;
  top:0;
  left:0;
  z-index:15;
  height:54px;
  background:#f9fafb;
  border-right:1px solid #d0d5dd;
  border-bottom:1px solid #d0d5dd;
}
.staff-calendar-grid .allocation-calendar-day-head{
  position:sticky;
  top:0;
  z-index:12;
  height:54px;
  min-width:108px;
}
.staff-calendar-grid .allocation-calendar-times{
  position:sticky;
  left:0;
  z-index:10;
  width:50px;
  height:1056px;
  background:#fbfcfd;
}
.staff-calendar-grid .allocation-calendar-day{
  min-width:108px;
  width:108px;
  height:1056px;
}
.staff-calendar-grid .allocation-calendar-time:first-child span{
  top:3px;
}
.staff-calendar-grid .allocation-calendar-end{
  bottom:3px;
}
.staff-calendar.calendar-moving{opacity:.55}
.staff-calendar.calendar-order-target{
  outline:2px solid #84adff;
  outline-offset:2px;
}
@media(max-width:1100px){
  .staff-calendar{width:600px;flex-basis:600px}
  .staff-calendar-viewport{height:590px}
}


/* v0.1.25 horizontal controls + collapsible walker calendars */
.allocation-calendar-order-controls{
  margin-left:auto;
  display:flex;
  flex-direction:row;
  align-items:center;
  gap:5px;
  flex:none;
  min-width:max-content;
}
.allocation-order-buttons{
  display:flex;
  flex-direction:row;
  align-items:center;
  gap:4px;
  flex:none;
}
.allocation-order-buttons form{margin:0;display:block}
.allocation-order-button{min-width:58px;height:28px;flex:none}
.allocation-collapse-button{
  height:28px;padding:0 8px;border:1px solid #d0d5dd;border-radius:6px;background:#fff;
  color:#475467;font-size:9px;font-weight:750;cursor:pointer;flex:none
}
.allocation-collapse-button:hover{border-color:#84adff;background:#f8fbff;color:#175cd3}
.staff-calendar-title-copy{flex:1 1 auto}
.staff-calendar-collapsed-tab{display:none}
.staff-calendar.calendar-collapsed{
  width:58px;flex:0 0 58px;min-height:670px;overflow:hidden;background:#f9fafb
}
.staff-calendar.calendar-collapsed .staff-calendar-title,
.staff-calendar.calendar-collapsed .staff-calendar-viewport{display:none}
.staff-calendar.calendar-collapsed .staff-calendar-collapsed-tab{
  width:100%;min-height:670px;border:0;background:#f9fafb;color:#344054;padding:8px 5px;
  display:flex;flex-direction:column;align-items:center;justify-content:flex-start;gap:8px;cursor:pointer
}
.staff-calendar.calendar-collapsed .staff-calendar-collapsed-tab:hover{background:#f2f4f7}
.staff-calendar-collapsed-colour{width:30px;height:6px;border-radius:999px;flex:none}
.staff-calendar-collapsed-tab strong{
  writing-mode:vertical-rl;transform:rotate(180deg);font-size:11px;line-height:1;
  max-height:220px;overflow:hidden;text-overflow:ellipsis;white-space:nowrap
}
.staff-calendar-collapsed-tab>span:last-child{
  margin-top:auto;margin-bottom:8px;font-size:20px;color:#667085
}


/* v0.1.26 readable two-row walker calendar headers */
.staff-calendar-title{
  height:72px;
  padding:7px 9px;
  display:grid;
  grid-template-columns:8px minmax(0,1fr);
  grid-template-rows:30px 28px;
  column-gap:8px;
  row-gap:4px;
  align-items:center;
}
.staff-calendar-title>i{
  grid-column:1;
  grid-row:1;
  width:8px;
  height:30px;
}
.staff-calendar-title-copy{
  grid-column:2;
  grid-row:1;
  min-width:0;
  width:100%;
}
.allocation-calendar-order-controls{
  grid-column:1 / -1;
  grid-row:2;
  width:100%;
  margin-left:0;
  display:grid;
  grid-template-columns:1fr 1fr 1fr 22px;
  gap:5px;
  min-width:0;
}
.allocation-order-buttons{
  grid-column:1 / 3;
  display:grid;
  grid-template-columns:1fr 1fr;
  gap:5px;
  min-width:0;
}
.allocation-order-buttons form{
  min-width:0;
  width:100%;
}
.allocation-order-button{
  width:100%;
  min-width:0;
  height:28px;
  padding:0 6px;
  white-space:nowrap;
}
.allocation-collapse-button{
  grid-column:3;
  width:100%;
  min-width:0;
  height:28px;
  padding:0 6px;
  white-space:nowrap;
}
.allocation-drag-hint{
  grid-column:4;
  width:22px;
  height:28px;
  margin:0;
  border-left:1px solid #e4e7ec;
}
.staff-calendar-viewport{
  height:598px;
}
.staff-calendar.calendar-collapsed{
  min-height:670px;
}
@media(max-width:1100px){
  .staff-calendar-title{height:72px}
  .staff-calendar-viewport{height:568px}
  .allocation-order-button,
  .allocation-collapse-button{font-size:9px}
}


/* v0.1.27 force walker controls onto one horizontal line */
.staff-calendar-title{
  height:70px !important;
  padding:7px 9px !important;
  display:grid !important;
  grid-template-columns:8px minmax(0,1fr) !important;
  grid-template-rows:30px 28px !important;
  column-gap:8px !important;
  row-gap:4px !important;
}
.staff-calendar-title>i{
  grid-column:1 !important;
  grid-row:1 !important;
}
.staff-calendar-title-copy{
  grid-column:2 !important;
  grid-row:1 !important;
}
.staff-calendar-title .allocation-calendar-order-controls{
  grid-column:1 / -1 !important;
  grid-row:2 !important;
  width:100% !important;
  min-width:0 !important;
  margin:0 !important;
  padding:0 !important;
  display:flex !important;
  flex-direction:row !important;
  flex-wrap:nowrap !important;
  align-items:center !important;
  justify-content:flex-start !important;
  gap:5px !important;
}
.staff-calendar-title .allocation-order-buttons{
  display:flex !important;
  flex-direction:row !important;
  flex-wrap:nowrap !important;
  align-items:center !important;
  gap:5px !important;
  width:auto !important;
  min-width:0 !important;
  flex:0 0 auto !important;
}
.staff-calendar-title .allocation-order-buttons form{
  display:block !important;
  width:auto !important;
  min-width:0 !important;
  margin:0 !important;
  flex:0 0 auto !important;
}
.staff-calendar-title .allocation-order-button{
  display:inline-flex !important;
  width:auto !important;
  min-width:72px !important;
  height:28px !important;
  padding:0 9px !important;
  margin:0 !important;
  white-space:nowrap !important;
  flex:0 0 auto !important;
}
.staff-calendar-title .allocation-collapse-button{
  display:inline-flex !important;
  align-items:center !important;
  justify-content:center !important;
  width:auto !important;
  min-width:78px !important;
  height:28px !important;
  padding:0 10px !important;
  margin:0 !important;
  white-space:nowrap !important;
  flex:0 0 auto !important;
}
.staff-calendar-title .allocation-drag-hint{
  display:inline-flex !important;
  width:22px !important;
  height:28px !important;
  margin-left:auto !important;
  flex:0 0 22px !important;
}
.staff-calendar-viewport{height:600px}


/* v0.1.28 allocation header cleanup */
.staff-calendar-title .allocation-calendar-order-controls{
  grid-template-columns:none !important;
  padding-bottom:4px !important;
}
.staff-calendar-title .allocation-drag-hint{
  display:none !important;
}
.staff-calendar-title{
  height:76px !important;
  grid-template-rows:30px 32px !important;
  row-gap:5px !important;
}
.staff-calendar-viewport{
  border-top:4px solid #fff;
  height:596px;
}


/* v0.1.30 larger separation between walker controls and calendar */
.staff-calendar-title{
  margin-bottom:38px !important;
}


/* v0.1.31 availability blocks, one-time overrides and dog photos */
.allocation-calendar-order-controls{gap:5px!important}
.allocation-block-button{height:28px;padding:0 8px;border:1px solid #d0d5dd;border-radius:6px;background:#fff;color:#475467;font-size:9px;font-weight:750;cursor:pointer;white-space:nowrap}
.allocation-block-button:hover{border-color:#84adff;background:#f8fbff;color:#175cd3}
.allocation-staff-block{position:absolute;z-index:5;left:3px;right:3px;border:1px dashed #667085;border-radius:6px;background:repeating-linear-gradient(135deg,#f2f4f7,#f2f4f7 7px,#e4e7ec 7px,#e4e7ec 14px);padding:5px 6px;color:#344054;overflow:hidden;pointer-events:auto}
.allocation-staff-block strong,.allocation-staff-block span,.allocation-staff-block small{display:block;font-size:8px;line-height:1.2}
.allocation-staff-block button{position:absolute;right:3px;top:2px;border:0;background:rgba(255,255,255,.8);border-radius:4px;cursor:pointer;color:#475467}
.allocation-override-button{margin-top:4px;width:100%;border:1px solid #f79009;background:#fffaeb;color:#b54708;border-radius:5px;padding:4px;font-size:7px;font-weight:750;cursor:pointer}
.allocation-override-button.active{background:#fef0c7;border-color:#dc6803;color:#93370d}
.allocation-block-dialog{border:0;border-radius:12px;padding:0;width:min(430px,calc(100vw - 30px));box-shadow:0 20px 50px rgba(16,24,40,.2)}
.allocation-block-dialog::backdrop{background:rgba(16,24,40,.35)}
.allocation-block-form{padding:18px;display:grid;gap:12px}
.allocation-block-form label{display:grid;gap:5px;font-size:10px;font-weight:700;color:#344054}
.allocation-block-form input,.allocation-block-form select{height:38px;border:1px solid #d0d5dd;border-radius:7px;padding:0 9px}
.dialog-head{display:flex;align-items:center;justify-content:space-between}
.dialog-head strong{font-size:16px}.dialog-head button{border:0;background:transparent;font-size:20px;cursor:pointer}
.dialog-actions{display:flex;justify-content:flex-end;gap:8px}
.schedule-staff-block{position:absolute;z-index:3;left:2px;right:2px;border:1px dashed #667085;border-left:4px solid var(--staff-colour);border-radius:6px;background:repeating-linear-gradient(135deg,#f2f4f7,#f2f4f7 8px,#e4e7ec 8px,#e4e7ec 16px);padding:5px 7px;color:#344054;overflow:hidden;pointer-events:none}
.schedule-staff-block strong,.schedule-staff-block span{display:block;font-size:9px;line-height:1.2}
.dog-profile-top{display:grid;grid-template-columns:150px minmax(0,1fr);gap:16px;align-items:start}
.dog-photo-panel{display:flex;flex-direction:column;align-items:stretch;gap:7px}
.dog-profile-photo,.dog-photo-placeholder{width:150px;height:150px;border-radius:10px;border:1px solid #d0d5dd;object-fit:cover;background:#f9fafb}
.dog-photo-placeholder{display:grid;place-items:center;font-size:42px}
.dog-photo-upload{margin:0}.dog-photo-button{width:100%;text-align:center;cursor:pointer;display:flex;align-items:center;justify-content:center}.dog-photo-button input{display:none}
.dog-photo-remove{width:100%;border:0;background:transparent;color:#b42318;font-size:9px;cursor:pointer}
.dog-main-form{min-width:0}
@media(max-width:800px){.dog-profile-top{grid-template-columns:1fr}.dog-photo-panel{width:150px}}


/* v0.1.33 fixed Block Time wiring + explicit one-week override checkbox */
.allocation-override-check{
  margin-top:5px;
  padding:5px 6px;
  border:1px solid #f79009;
  border-radius:5px;
  background:#fffaeb;
  color:#b54708;
  display:flex;
  align-items:flex-start;
  gap:5px;
  font-size:7px;
  line-height:1.2;
  font-weight:750;
  cursor:pointer;
}
.allocation-override-check input{
  margin:0;
  width:12px;
  height:12px;
  flex:none;
  accent-color:#dc6803;
}
.allocation-override-check:has(input:checked){
  background:#fef0c7;
  border-color:#dc6803;
  color:#93370d;
}


/* v0.1.35 Allocation calendar range selector */
.allocation-viewbar{
  display:flex;
  align-items:center;
  justify-content:space-between;
  gap:12px;
  margin:0 0 12px;
  padding:8px 10px;
  border:1px solid #e4e7ec;
  border-radius:9px;
  background:#fff;
}
.allocation-view-switch{
  display:inline-flex;
  align-items:center;
  padding:3px;
  border:1px solid #d0d5dd;
  border-radius:8px;
  background:#f9fafb;
}
.allocation-view-switch a{
  display:inline-flex;
  align-items:center;
  justify-content:center;
  min-height:30px;
  padding:0 12px;
  border-radius:6px;
  color:#475467;
  font-size:10px;
  font-weight:750;
  text-decoration:none;
  white-space:nowrap;
}
.allocation-view-switch a:hover{color:#175cd3;background:#fff}
.allocation-view-switch a.active{
  color:#175cd3;
  background:#fff;
  box-shadow:0 1px 3px rgba(16,24,40,.12);
}
.allocation-day-picker{display:flex;align-items:end;gap:7px}
.allocation-day-picker label{
  display:grid;
  gap:3px;
  color:#667085;
  font-size:8px;
  font-weight:750;
}
.allocation-day-picker input{
  height:31px;
  border:1px solid #d0d5dd;
  border-radius:6px;
  padding:0 7px;
  color:#344054;
  background:#fff;
}
.compact-button{min-height:31px!important;height:31px!important;padding:0 9px!important}
.staff-calendar.allocation-view-day{width:390px;flex-basis:390px}
.staff-calendar.allocation-view-work{width:640px;flex-basis:640px}
.staff-calendar.allocation-view-full{width:640px;flex-basis:640px}
@media(max-width:820px){
  .allocation-viewbar{align-items:flex-start;flex-direction:column}
  .allocation-day-picker{width:100%;flex-wrap:wrap}
}


/* v0.1.36 restore full walker-frame collapse in every allocation view */
.staff-calendar.calendar-collapsed,
.staff-calendar.allocation-view-day.calendar-collapsed,
.staff-calendar.allocation-view-work.calendar-collapsed,
.staff-calendar.allocation-view-full.calendar-collapsed{
  width:58px !important;
  min-width:58px !important;
  max-width:58px !important;
  flex:0 0 58px !important;
  min-height:670px;
  overflow:hidden;
  background:#f9fafb;
}
.staff-calendar.calendar-collapsed .staff-calendar-title,
.staff-calendar.calendar-collapsed .staff-calendar-viewport{
  display:none !important;
}
.staff-calendar.calendar-collapsed .staff-calendar-collapsed-tab{
  display:flex !important;
}


/* v0.1.37 keep Allocation view selector panel the same height in all modes */
.allocation-viewbar{
  min-height:57px;
  box-sizing:border-box;
}


/* v0.1.38 Weekly Allocation view-bar alignment */
.allocation-viewbar{
  height:58px !important;
  min-height:58px !important;
  max-height:58px !important;
  box-sizing:border-box !important;
  display:flex !important;
  align-items:center !important;
  padding:8px 10px !important;
}
.allocation-day-picker{
  height:40px !important;
  display:flex !important;
  align-items:center !important;
  gap:8px !important;
}
.allocation-day-picker .secondary-button,
.allocation-day-picker input[type="date"]{
  height:40px !important;
  min-height:40px !important;
  box-sizing:border-box !important;
  border-radius:10px !important;
  font-family:inherit !important;
  font-size:11px !important;
  font-weight:600 !important;
  line-height:1 !important;
}
.allocation-day-picker .secondary-button{
  min-width:72px !important;
  padding:0 11px !important;
  display:inline-flex !important;
  align-items:center !important;
  justify-content:center !important;
}
.allocation-day-picker input[type="date"]{
  width:118px !important;
  padding:0 10px !important;
  border:1px solid #d0d5dd !important;
  color:#344054 !important;
  background:#fff !important;
}


/* v0.1.39 Reporting module */
.reports-head{margin-bottom:12px}
.reports-filter-panel{
  display:flex;align-items:end;justify-content:space-between;gap:14px;
  background:#fff;border:1px solid #e4e7ec;border-radius:10px;padding:10px 12px;margin-bottom:10px
}
.reports-presets{display:flex;align-items:center;gap:4px;flex-wrap:wrap}
.reports-presets a{
  min-height:32px;padding:0 10px;border-radius:7px;display:inline-flex;align-items:center;
  color:#475467;font-size:10px;font-weight:750;text-decoration:none
}
.reports-presets a:hover{background:#f9fafb;color:#175cd3}
.reports-presets a.active{background:#eff4ff;color:#175cd3}
.reports-custom-range{display:flex;align-items:end;gap:7px}
.reports-custom-range label{display:grid;gap:3px;font-size:8px;font-weight:750;color:#667085}
.reports-custom-range input{height:32px;border:1px solid #d0d5dd;border-radius:6px;padding:0 7px;font:inherit;color:#344054}
.reports-custom-range .secondary-button{height:32px;min-height:32px}
.reports-note{
  padding:8px 10px;margin-bottom:12px;border:1px solid #d1e9ff;border-radius:8px;
  background:#f5fbff;color:#475467;font-size:9px;line-height:1.45
}
.reports-note strong{color:#344054}
.reports-kpis{display:grid;grid-template-columns:repeat(4,minmax(0,1fr));gap:10px;margin-bottom:10px}
.reports-kpis article{background:#fff;border:1px solid #e4e7ec;border-radius:10px;padding:13px 14px;min-width:0}
.reports-kpis span{display:block;color:#667085;font-size:9px;font-weight:700;margin-bottom:5px}
.reports-kpis strong{display:block;color:#101828;font-size:20px;letter-spacing:-.35px}
.reports-kpis small{display:block;color:#98a2b3;font-size:8px;margin-top:4px}
.reports-grid{display:grid;grid-template-columns:repeat(2,minmax(0,1fr));gap:10px}
.report-card{background:#fff;border:1px solid #e4e7ec;border-radius:10px;padding:13px;min-width:0}
.report-card-wide{grid-column:1 / -1}
.report-card-head{display:flex;align-items:flex-start;justify-content:space-between;margin-bottom:12px}
.report-card-head h2{font-size:13px;margin:0;color:#101828}
.report-card-head p{font-size:8px;color:#98a2b3;margin:2px 0 0}
.report-ranking{display:grid;gap:9px}
.report-ranking-row{display:grid;grid-template-columns:minmax(125px,1.25fr) minmax(70px,1fr) 78px;gap:9px;align-items:center}
.report-ranking-copy{min-width:0}
.report-ranking-copy strong{display:block;color:#344054;font-size:9px;white-space:nowrap;overflow:hidden;text-overflow:ellipsis}
.report-ranking-copy span{display:block;color:#98a2b3;font-size:7.5px;margin-top:1px}
.report-ranking-row>strong{font-size:9px;text-align:right;color:#344054}
.report-mini-bar,.report-bar-track{height:7px;border-radius:999px;background:#f2f4f7;overflow:hidden}
.report-mini-bar i,.report-bar-track i{display:block;height:100%;min-width:0;border-radius:999px;background:#84adff}
.report-trend{display:grid;gap:7px;max-height:420px;overflow:auto;padding-right:3px}
.report-trend-row{display:grid;grid-template-columns:72px minmax(110px,1fr) 85px 34px;gap:9px;align-items:center}
.report-trend-row span{font-size:8px;color:#667085}
.report-trend-row strong{font-size:8.5px;text-align:right;color:#344054}
.report-trend-row small{font-size:7.5px;text-align:right;color:#98a2b3}
.report-empty{padding:22px;text-align:center;color:#98a2b3;font-size:9px;border:1px dashed #d0d5dd;border-radius:8px;background:#fcfcfd}
@media(max-width:1000px){
  .reports-kpis{grid-template-columns:repeat(2,minmax(0,1fr))}
  .reports-filter-panel{align-items:flex-start;flex-direction:column}
  .reports-custom-range{flex-wrap:wrap}
}
@media(max-width:760px){
  .reports-grid{grid-template-columns:1fr}.report-card-wide{grid-column:auto}
  .reports-kpis{grid-template-columns:1fr}
  .report-ranking-row{grid-template-columns:minmax(110px,1fr) 70px}
  .report-ranking-row .report-mini-bar{display:none}
}


/* v0.1.40 one-off dog walk workflow */
.dog-profile-actions{display:flex;align-items:center;gap:8px;flex-wrap:wrap;margin-top:8px}
.one-off-walk-button{text-decoration:none}
.one-off-booking-banner{
  display:grid;
  grid-template-columns:auto auto 1fr;
  align-items:center;
  gap:7px 10px;
  margin-bottom:10px;
  padding:10px 12px;
  border:1px solid #b2ddff;
  border-radius:9px;
  background:#f5fbff;
}
.one-off-booking-banner strong{
  display:inline-flex;
  align-items:center;
  width:max-content;
  padding:3px 7px;
  border-radius:999px;
  background:#d1e9ff;
  color:#175cd3;
  font-size:8px;
  text-transform:uppercase;
  letter-spacing:.35px;
}
.one-off-booking-banner span{font-size:10px;font-weight:750;color:#344054}
.one-off-booking-banner small{font-size:8px;color:#667085;line-height:1.35}
@media(max-width:760px){
  .one-off-booking-banner{grid-template-columns:1fr}
}


/* v0.1.41 make one-off walk action prominent on each dog profile */
.dog-action-bar{
  display:flex;
  align-items:center;
  justify-content:space-between;
  gap:12px;
  margin:0 0 12px;
  padding:10px 12px;
  border:1px solid #d1e9ff;
  border-radius:9px;
  background:#f5fbff;
}
.dog-action-bar>div{min-width:0}
.dog-action-bar>div>strong{
  display:block;
  color:#101828;
  font-size:11px;
  margin-bottom:2px;
}
.dog-action-bar>div>span{
  display:block;
  color:#667085;
  font-size:8px;
}
.dog-action-bar .one-off-walk-button{
  flex:none;
  white-space:nowrap;
}
@media(max-width:700px){
  .dog-action-bar{align-items:flex-start;flex-direction:column}
}


/* v0.1.42 direct one-off walk scheduling from Allocation */
.allocation-pool-head{
  align-items:flex-start;
}
.allocation-pool-head>div{
  min-width:0;
  display:flex;
  flex-direction:column;
  gap:2px;
}
.allocation-one-off-button{
  flex:none;
  height:28px;
  padding:0 8px;
  border:1px solid #84adff;
  border-radius:6px;
  background:#eff4ff;
  color:#175cd3;
  font-size:8px;
  font-weight:800;
  cursor:pointer;
  white-space:nowrap;
}
.allocation-one-off-button:hover{background:#dbe8ff;border-color:#528bff}
.allocation-one-off-dialog{width:min(500px,calc(100vw - 30px))}
.allocation-dialog-help{margin:0;color:#667085;font-size:9px;line-height:1.4}
.allocation-dialog-two{display:grid;grid-template-columns:1fr 1fr;gap:10px}
.allocation-one-off-dialog select{
  height:38px;
  border:1px solid #d0d5dd;
  border-radius:7px;
  padding:0 9px;
  background:#fff;
}
@media(max-width:600px){
  .allocation-dialog-two{grid-template-columns:1fr}
}


/* v0.1.43 invoicing */
.invoice-settings-form{max-width:920px}
.invoice-gst-toggle{display:flex!important;gap:10px!important;align-items:flex-start!important;padding:12px;border:1px solid #d0d5dd;border-radius:9px;background:#f9fafb}
.invoice-gst-toggle input{width:17px!important;height:17px!important;margin-top:1px;flex:none}
.invoice-gst-toggle span{display:grid;gap:2px}.invoice-gst-toggle strong{font-size:10px}.invoice-gst-toggle small{font-size:8px;color:#667085;font-weight:400}
.invoice-kpis{display:grid;grid-template-columns:repeat(3,minmax(0,1fr));gap:10px;margin-bottom:10px}
.invoice-kpis article{background:#fff;border:1px solid #e4e7ec;border-radius:10px;padding:12px 14px}
.invoice-kpis span{display:block;color:#667085;font-size:9px;font-weight:700}.invoice-kpis strong{display:block;font-size:20px;color:#101828;margin-top:4px}
.invoice-filter-tabs{display:flex;gap:3px;margin:0 0 9px}.invoice-filter-tabs a{padding:7px 11px;border-radius:7px;text-decoration:none;color:#475467;font-size:9px;font-weight:750}.invoice-filter-tabs a.active{background:#eff4ff;color:#175cd3}
.invoice-list-panel{padding:0;overflow:hidden}
.invoice-table{width:100%;border-collapse:collapse}
.invoice-table th{padding:9px 11px;text-align:left;background:#f9fafb;border-bottom:1px solid #e4e7ec;color:#667085;font-size:8px;text-transform:uppercase;letter-spacing:.25px}
.invoice-table td{padding:10px 11px;border-bottom:1px solid #f2f4f7;color:#344054;font-size:9px}.invoice-table tbody tr:last-child td{border-bottom:0}
.invoice-table a{color:#175cd3;text-decoration:none}.invoice-table .right{text-align:right}
.invoice-status{display:inline-flex;align-items:center;justify-content:center;min-width:52px;padding:3px 7px;border-radius:999px;font-size:8px;font-weight:800}
.invoice-status.unpaid{background:#fff4ed;color:#b93815}.invoice-status.paid{background:#ecfdf3;color:#027a48}
.table-action{font-size:8px;font-weight:750}
.invoice-detail-grid{display:grid;grid-template-columns:310px minmax(0,1fr);gap:10px}
.invoice-summary-card{align-self:start}.invoice-detail-head{display:flex;justify-content:space-between;gap:12px;padding-bottom:13px;margin-bottom:8px;border-bottom:1px solid #e4e7ec}
.invoice-detail-head>div{display:grid;gap:4px}.invoice-detail-head>div:last-child{text-align:right}.invoice-detail-head span{font-size:8px;color:#667085}.invoice-detail-head>div:last-child strong{font-size:19px}
.invoice-payment-actions{margin-top:14px;padding-top:12px;border-top:1px solid #e4e7ec}.invoice-payment-actions form{display:grid;gap:8px}.invoice-payment-actions label{display:grid;gap:4px;font-size:8px;font-weight:750;color:#475467}.invoice-payment-actions input{height:34px;border:1px solid #d0d5dd;border-radius:6px;padding:0 8px}
.invoice-lines-card{padding:0;overflow:hidden}.invoice-lines-card .section-heading{padding:13px 13px 4px}.invoice-table tfoot td{background:#fcfcfd}.invoice-total-row td{font-size:10px}
@media(max-width:900px){.invoice-detail-grid{grid-template-columns:1fr}.invoice-kpis{grid-template-columns:1fr}}


/* v0.1.45 Scheduling terminology and one-off cards */
.scheduling-one-off-card{display:block;text-decoration:none!important;border-style:dashed!important;background:linear-gradient(135deg,#ffffff 0%,#f5f9ff 100%)!important}
.scheduling-one-off-card em{display:inline-block;margin-top:2px;padding:1px 4px;border-radius:999px;background:#eff4ff;color:#175cd3;font-size:7px;font-style:normal;font-weight:800}
.scheduling-one-off-card:hover{filter:brightness(.985);box-shadow:0 1px 4px rgba(16,24,40,.12)}


/* v0.1.46 walk completion */
.booking-actions-head{text-align:right}
.booking-row-actions{display:flex;align-items:center;justify-content:flex-end;gap:8px;min-width:150px}
.booking-row-actions form{margin:0}
.walk-completed-button{border:1px solid #a6f4c5;background:#ecfdf3;color:#067647;border-radius:7px;padding:7px 10px;font-size:10px;font-weight:800;cursor:pointer;white-space:nowrap}
.walk-completed-button:hover{background:#d1fadf;border-color:#6ce9a6;color:#05603a}
.walk-completed-state{display:inline-flex;align-items:center;border:1px solid #a6f4c5;background:#ecfdf3;color:#067647;border-radius:7px;padding:8px 10px;font-size:10px;font-weight:800;white-space:nowrap}
.booking-cancelled-pill{background:#f2f4f7;color:#667085}
.booking-action-row .walk-completed-button{padding:10px 14px;font-size:13px}


/* v0.1.47 walk completion alignment/return behaviour */
.booking-row-actions{display:flex;align-items:center;justify-content:flex-end;gap:8px;min-width:176px}
.booking-complete-form{margin:0;display:flex;align-items:center}
.booking-row-actions .walk-completed-button{
  height:30px;
  min-width:104px;
  padding:0 10px;
  border:1px solid #d0d5dd;
  background:#fff;
  color:#344054;
  border-radius:7px;
  font-size:10px;
  font-weight:700;
  line-height:1;
  box-shadow:none;
}
.booking-row-actions .walk-completed-button:hover{
  background:#f9fafb;
  border-color:#c7ccd4;
  color:#344054;
}
.booking-row-actions .table-link{
  height:30px;
  display:inline-flex;
  align-items:center;
  padding:0 2px;
}


/* v0.1.48 booking status */
.booked-status-pill{background:#fffaeb;color:#b54708}

/* v0.1.49 user management / staff access */
.alert.success-alert{background:#ecfdf3;color:#067647;border:1px solid #abefc6;padding:10px;border-radius:7px;margin-bottom:14px;font-size:12px}.admin-role-pill{background:#eff8ff;color:#175cd3}.staff-role-pill{background:#f4f3ff;color:#5925dc}.table-action-cell,.user-management-table td:last-child,.user-management-table th:last-child{text-align:right}.user-access-note{max-width:760px}.user-access-note p{font-size:11px;color:#667085}.user-form-panel,.user-form-alert{max-width:820px}.staff-calendar-booking{cursor:default}


/* v0.1.50 staff operational booking details */
.booking-row-actions .booking-details-button{height:30px;padding:0 10px;font-size:10px;font-weight:700;white-space:nowrap}
.staff-calendar-booking-link{cursor:pointer}
.staff-calendar-booking-link:hover{box-shadow:0 3px 10px #10182818}
.staff-booking-detail-head{align-items:center}
.staff-detail-grid{display:grid;grid-template-columns:1fr 1fr;gap:16px}
.staff-detail-panel{min-width:0}
.important-notes-panel{border-color:#f5d58a;background:#fffdf7}
.staff-notes-block{padding:0 0 16px;margin-bottom:16px;border-bottom:1px solid #eaecf0}
.staff-notes-block:last-child{padding-bottom:0;margin-bottom:0;border-bottom:0}
.staff-notes-block>strong{display:block;font-size:11px;color:#475467;margin-bottom:7px}
.staff-notes-block .prewrap{font-size:13px;line-height:1.55;color:#172033}
.dog-operational-grid{display:grid;grid-template-columns:1fr 1fr;gap:14px}
.dog-operational-grid>div{border:1px solid #eaecf0;border-radius:8px;padding:13px;background:#fcfcfd}
.dog-operational-grid span{display:block;font-size:10px;text-transform:uppercase;letter-spacing:.03em;font-weight:750;color:#667085;margin-bottom:6px}
.dog-operational-grid strong,.dog-operational-grid .prewrap{font-size:12px;line-height:1.5;color:#344054}
@media(max-width:760px){.staff-detail-grid,.dog-operational-grid{grid-template-columns:1fr}}


/* v0.1.51 archive/delete and staff status controls */
.client-status-tabs{display:flex;gap:6px;margin-bottom:12px}
.client-status-tabs a{padding:8px 12px;border:1px solid #d0d5dd;border-radius:8px;background:#fff;color:#475467;font-size:11px;font-weight:700}
.client-status-tabs a.active{background:#eff8ff;border-color:#84adff;color:#175cd3}
.archive-pill{background:#f2f4f7;color:#667085;font-size:9px;vertical-align:middle}
.head-actions form,.dog-record-actions form,.invoice-row-actions form{margin:0}
.dog-record-actions{display:flex;align-items:center;gap:7px;flex-wrap:wrap;justify-content:flex-end}
.invoice-row-actions{display:flex;align-items:center;justify-content:flex-end;gap:10px}
.text-danger-button{border:0;background:transparent;color:#b42318;font-size:11px;font-weight:700;cursor:pointer;padding:3px}
.text-danger-button:hover{text-decoration:underline}
.staff-status-form{display:flex;align-items:center;gap:6px;margin:0}
.staff-status-form select{width:auto;min-width:94px;height:30px;padding:0 26px 0 8px;font-size:10px}
.staff-status-form .secondary-button{height:30px;padding:0 9px;font-size:10px}
.staff-detail-status-actions{display:flex;align-items:center;gap:10px;flex-wrap:wrap;justify-content:flex-end}
@media(max-width:760px){.staff-detail-status-actions{justify-content:flex-start}}


/* v0.1.52 booking status controls and dog action alignment */
.staff-cancelled-pill{background:#fef3f2;color:#b42318;border:1px solid #fecdca}
.dog-record-actions form{display:flex;align-items:center;height:38px}
.dog-record-actions .secondary-button,
.dog-record-actions .danger-button,
.dog-record-actions .one-off-walk-button{
  height:38px;
  min-height:38px;
  box-sizing:border-box;
  margin:0;
  line-height:1;
}
.booking-status-form{display:flex;align-items:center}
.booking-row-actions .booking-status-form select,
.booking-row-actions .booking-status-form .secondary-button{height:30px}


/* v0.1.53 stable bookings row layout + cancelled status */
.cancelled-status-pill{
  background:#fef3f2;
  color:#b42318;
  border:1px solid #fecdca;
  min-width:68px;
  justify-content:center;
}
.booked-status-pill,
.pill.success{
  min-width:68px;
  justify-content:center;
}
.booking-row-actions{
  min-height:30px;
  height:30px;
  align-items:center;
}
.booking-row-actions .booking-status-form{
  height:30px;
  flex:0 0 auto;
}
.booking-row-actions .booking-status-form select{
  width:96px;
  min-width:96px;
  max-width:96px;
  height:30px;
  line-height:30px;
  box-sizing:border-box;
}
.booking-row-actions .booking-status-form .secondary-button{
  width:56px;
  min-width:56px;
  height:30px;
  line-height:1;
  box-sizing:border-box;
}
.booking-row-actions .booking-details-button{
  height:30px;
  box-sizing:border-box;
}
.booking-row-actions .table-link{
  min-width:24px;
  height:30px;
  box-sizing:border-box;
}
.booking-row-actions form,
.booking-row-actions a,
.booking-row-actions button,
.booking-row-actions select{
  margin-top:0;
  margin-bottom:0;
  vertical-align:middle;
}
table tbody tr td{
  vertical-align:middle;
}


/* v0.1.54 booking service pricing / staff job rates */
#service-price{font-weight:650}
.staff-card label small{display:block;margin-top:5px;color:#667085;font-size:10px;line-height:1.4}


/* v0.1.55 per-duration staff job rates */
.staff-rate-group{display:flex;flex-direction:column;gap:7px}
.staff-rate-heading{font-size:11px;font-weight:750;color:#344054}
.staff-rate-grid{display:grid;grid-template-columns:repeat(3,minmax(0,1fr));gap:8px}
.staff-rate-grid label{margin:0}
.staff-rate-group>small{margin-top:0}
@media(max-width:620px){.staff-rate-grid{grid-template-columns:1fr}}


/* v0.1.56 consolidated user / walker management */
.consolidated-user-table td{vertical-align:middle}
.walker-list-cell{display:flex;align-items:center;gap:8px}
.walker-list-cell>i{width:10px;height:10px;border-radius:50%;flex:0 0 auto}
.walker-list-cell span{display:flex;flex-direction:column;gap:2px}
.walker-list-cell small{font-size:9px;color:#667085}
.rate-summary{font-size:10px;color:#475467;white-space:nowrap}
.unlinked-walker-grid{display:grid;grid-template-columns:repeat(2,minmax(0,1fr));gap:10px}
.unlinked-walker-card{display:grid;grid-template-columns:auto 1fr auto;align-items:center;gap:10px;border:1px solid #eaecf0;border-radius:9px;padding:12px}
.unlinked-walker-card>div{display:flex;flex-direction:column;gap:3px}
.unlinked-walker-card>div>span{font-size:10px;color:#667085}
.walker-toggle-section{padding-bottom:4px}
.walker-toggle{align-items:flex-start}
.walker-toggle span{display:flex;flex-direction:column;gap:3px}
.walker-toggle span strong{font-size:12px;color:#344054}
.walker-toggle span small{font-size:10px;color:#667085;font-weight:400}
.walker-fields[hidden]{display:none}
.user-rate-grid{max-width:620px}
@media(max-width:760px){.unlinked-walker-grid{grid-template-columns:1fr}.rate-summary{white-space:normal}}


/* v0.1.57 user form walker toggle alignment */
.walker-toggle{
  display:grid;
  grid-template-columns:18px 1fr;
  gap:10px;
  align-items:start;
  width:100%;
  padding:2px 0;
  cursor:pointer;
}
.walker-toggle>input{
  width:16px;
  height:16px;
  margin:2px 0 0;
  flex:0 0 auto;
}
.walker-toggle>span{
  display:flex;
  flex-direction:column;
  gap:3px;
  min-width:0;
}
.walker-toggle>span>strong{
  font-size:12px;
  line-height:1.3;
  color:#344054;
}
.walker-toggle>span>small{
  margin:0;
  font-size:10px;
  line-height:1.45;
  color:#667085;
  font-weight:400;
}


/* v0.1.60 dog age-at-entry helper */
.dog-main-form label small,.dog-form label small{display:block;margin-top:5px;color:#667085;font-size:10px;line-height:1.4}


/* v0.1.63 readability trial
   Sidebar/navigation, headings and buttons intentionally retain their existing sizing. */
main p,
main li,
main td,
main th,
main label,
main input,
main select,
main textarea,
main .muted,
main .subtle,
main .helper-text,
main .field-help,
main .form-copy,
main .setting-copy,
main .panel-copy,
main .card-copy{
  font-size:13px;
}

main label small,
main small,
main .dog-main-form label small,
main .dog-form label small{
  font-size:12px;
  line-height:1.45;
}

/* Keep compact operational calendar/scheduling cards readable without making
   their layout controls or headings oversized. */
main .schedule-booking small,
main .allocation-calendar-card small,
main .scheduling-one-off-card small{
  font-size:11px;
}

/* Tables are a major source of the previously tiny body copy. */
main table td,
main table th{
  font-size:12px;
  line-height:1.45;
}

/* Form controls should match normal body copy rather than the old 9–11px text. */
main input,
main select,
main textarea{
  font-size:13px;
}

/* Do not alter the established sizing of action controls. */
main button,
main .button,
main .btn,
main a.button,
main a.btn{
  font-size:inherit;
}


/* v0.1.64 global readability pass
   Increase typography across the entire application, including navigation,
   headings and controls. Existing layout dimensions are otherwise retained. */
html,body{
  font-size:15px;
}

.sidebar,
.sidebar .nav-link,
.sidebar a,
.sidebar button,
.sidebar-footer,
.topbar,
.user-menu,
.user-dropdown{
  font-size:14px;
}

main p,
main li,
main td,
main th,
main label,
main input,
main select,
main textarea,
main .muted,
main .subtle,
main .helper-text,
main .field-help,
main .form-copy,
main .setting-copy,
main .panel-copy,
main .card-copy{
  font-size:14px;
}

main small,
main label small,
main .dog-main-form label small,
main .dog-form label small{
  font-size:13px;
  line-height:1.5;
}

main table td,
main table th{
  font-size:13px;
  line-height:1.5;
}

main input,
main select,
main textarea{
  font-size:14px;
}

main button,
main .button,
main .btn,
main a.button,
main a.btn,
main input[type="submit"]{
  font-size:14px;
}

main h1{font-size:30px;}
main h2{font-size:24px;}
main h3{font-size:19px;}
main h4{font-size:16px;}

/* Operational screens remain compact enough to fit, but no longer use the
   very small 7–10px text as their effective readable size. */
main .schedule-booking,
main .allocation-calendar-card,
main .scheduling-one-off-card,
main .schedule-staff-block{
  font-size:12px;
}
main .schedule-booking small,
main .allocation-calendar-card small,
main .scheduling-one-off-card small{
  font-size:11px;
}


/* v0.1.65 booking fields + consistent list/table headings */

/* New/Edit Booking: field contents should use normal weight. */
#booking-form input,
#booking-form select,
#booking-form textarea,
#booking-form option{
  font-weight:400 !important;
}

/* Use one consistent heading treatment across Bookings, Clients & Dogs list,
   and Invoices. This is intentionally one size smaller than the v0.1.64
   Bookings table heading size. */
.table-wrap table thead th,
.invoice-table thead th,
.client-list-head > span{
  font-size:12px !important;
  font-weight:600;
  line-height:1.4;
}


/* v0.1.66 walker pay report */
.walker-pay-report{margin-bottom:18px}
.walker-pay-head{display:flex;align-items:flex-start;justify-content:space-between;gap:20px;margin-bottom:16px}
.walker-pay-head h2{margin:0 0 5px}
.walker-pay-head p{margin:0;color:#667085}
.walker-pay-head-actions{display:flex;align-items:center;gap:14px}
.walker-pay-total{display:flex;flex-direction:column;align-items:flex-end;white-space:nowrap}
.walker-pay-total span{font-size:12px;color:#667085}
.walker-pay-total strong{font-size:22px;color:#101828}
.walker-pay-table th{font-size:12px!important}
.walker-pay-table td{font-size:13px}
.walker-pay-table th.right,.walker-pay-table td.right{text-align:right}
.walker-pay-note{margin-top:12px;font-size:12px;color:#667085}
@media(max-width:850px){
  .walker-pay-head{flex-direction:column}
  .walker-pay-head-actions{width:100%;justify-content:space-between}
  .walker-pay-total{align-items:flex-start}
}


/* v0.1.68 walker pay PDF controls */
.walker-pay-head-actions{flex-wrap:wrap;justify-content:flex-end}


/* v0.1.72 MFA */
.mfa-card{width:min(520px,calc(100vw - 32px))}
.mfa-card.compact{width:min(430px,calc(100vw - 32px))}
.mfa-setup-grid{display:grid;grid-template-columns:180px 1fr;gap:22px;align-items:center;margin:18px 0}
.mfa-qr-wrap{background:#fff;border:1px solid #e4e7ec;border-radius:12px;padding:10px;display:flex;align-items:center;justify-content:center}
.mfa-qr{display:block;width:158px;height:158px}
.mfa-steps p{margin:0 0 12px;color:#475467;line-height:1.5}
.mfa-manual{background:#f9fafb;border:1px solid #e4e7ec;border-radius:9px;padding:10px 12px;margin:0 0 18px;display:flex;flex-direction:column;gap:5px}
.mfa-manual span{font-size:12px;color:#667085}
.mfa-manual code{font-size:13px;overflow-wrap:anywhere;color:#101828;letter-spacing:.04em}
.mfa-cancel-link{display:block;text-align:center;margin-top:14px;color:#667085;text-decoration:none;font-size:13px}
.mfa-cancel-link:hover{color:#175cd3}
.user-action-stack{display:flex!important;align-items:center;justify-content:flex-end;gap:10px;white-space:nowrap}
.user-action-stack form{margin:0}
.link-button{border:0;background:none;padding:0;font:inherit;cursor:pointer}
.danger-link{color:#b42318!important}
@media(max-width:600px){
  .mfa-setup-grid{grid-template-columns:1fr}
  .mfa-qr-wrap{width:180px;margin:0 auto}
}

.mt-18{margin-top:18px}.mt-16{margin-top:16px}.mt-14{margin-top:14px}.mt-12{margin-top:12px}.mt-10{margin-top:10px}

/* Strict-CSP scheduling drop indicator positions. */
.drop-slot-0{--drop-y:calc(var(--allocation-slot-height) * 0);}
.drop-slot-1{--drop-y:calc(var(--allocation-slot-height) * 1);}
.drop-slot-2{--drop-y:calc(var(--allocation-slot-height) * 2);}
.drop-slot-3{--drop-y:calc(var(--allocation-slot-height) * 3);}
.drop-slot-4{--drop-y:calc(var(--allocation-slot-height) * 4);}
.drop-slot-5{--drop-y:calc(var(--allocation-slot-height) * 5);}
.drop-slot-6{--drop-y:calc(var(--allocation-slot-height) * 6);}
.drop-slot-7{--drop-y:calc(var(--allocation-slot-height) * 7);}
.drop-slot-8{--drop-y:calc(var(--allocation-slot-height) * 8);}
.drop-slot-9{--drop-y:calc(var(--allocation-slot-height) * 9);}
.drop-slot-10{--drop-y:calc(var(--allocation-slot-height) * 10);}
.drop-slot-11{--drop-y:calc(var(--allocation-slot-height) * 11);}
.drop-slot-12{--drop-y:calc(var(--allocation-slot-height) * 12);}
.drop-slot-13{--drop-y:calc(var(--allocation-slot-height) * 13);}
.drop-slot-14{--drop-y:calc(var(--allocation-slot-height) * 14);}
.drop-slot-15{--drop-y:calc(var(--allocation-slot-height) * 15);}
.drop-slot-16{--drop-y:calc(var(--allocation-slot-height) * 16);}
.drop-slot-17{--drop-y:calc(var(--allocation-slot-height) * 17);}
.drop-slot-18{--drop-y:calc(var(--allocation-slot-height) * 18);}
.drop-slot-19{--drop-y:calc(var(--allocation-slot-height) * 19);}
.drop-slot-20{--drop-y:calc(var(--allocation-slot-height) * 20);}
.drop-slot-21{--drop-y:calc(var(--allocation-slot-height) * 21);}
.drop-slot-22{--drop-y:calc(var(--allocation-slot-height) * 22);}
.drop-slot-23{--drop-y:calc(var(--allocation-slot-height) * 23);}
.drop-slot-24{--drop-y:calc(var(--allocation-slot-height) * 24);}

/* v0.1.77: client dog/recurring details are read-only until Edit details is selected. */
.dog-edit-fieldset{border:0;padding:0;margin:0;min-width:0}.dog-editor-locked .dog-edit-protected{opacity:.72}.dog-editor-locked .dog-edit-protected input,.dog-editor-locked .dog-edit-protected textarea,.dog-editor-locked .dog-edit-protected select{cursor:not-allowed}.dog-edit-toggle[aria-pressed="true"]{background:#f2f4f7}


/* v0.1.79: individual client page uses full-width stacked cards. */
.client-detail-stack{display:grid;grid-template-columns:minmax(0,1fr);gap:18px}
.client-detail-stack>.panel{width:100%;min-width:0}

/* v0.1.80 align dog record actions and standardise action button sizing */
.dog-record-actions{
  display:flex;
  align-items:center;
  justify-content:flex-end;
  gap:7px;
  flex-wrap:wrap;
}
.dog-record-actions>button,
.dog-record-actions>a,
.dog-record-actions>form,
.dog-record-actions>form>button{
  margin-top:0;
  margin-bottom:0;
}
.dog-record-actions>form{
  display:flex;
  align-items:center;
  height:38px;
}
.dog-record-actions>button,
.dog-record-actions>a,
.dog-record-actions>form>button{
  height:38px;
  min-height:38px;
  box-sizing:border-box;
  display:inline-flex;
  align-items:center;
  justify-content:center;
  padding:0 14px;
  font-size:13px;
  font-weight:700;
  line-height:1;
  white-space:nowrap;
}
.dog-action-bar .dog-record-actions .dog-edit-toggle,
.dog-action-bar .dog-record-actions .dog-save-button,
.dog-action-bar .dog-record-actions .one-off-walk-button,
.dog-action-bar .dog-record-actions form .secondary-button,
.dog-action-bar .dog-record-actions form .danger-button{
  margin-top:0;
}

/* v0.1.81 Twilio SMS, secure invoice links and walker roster sharing */
.sms-history-body{max-width:520px;white-space:pre-wrap;line-height:1.45}
.roster-sms-form{display:flex;flex-direction:column;gap:5px;align-items:flex-end}.roster-sms-form input[type="date"]{width:142px;padding:5px 7px;font-size:12px}
.public-share-body{margin:0;background:#f5f7fa;color:#101828;font-family:Inter,Arial,sans-serif}.public-share-wrap{max-width:900px;margin:0 auto;padding:28px 16px}.public-share-card{background:#fff;border:1px solid #e4e7ec;border-radius:16px;padding:28px;box-shadow:0 4px 18px rgba(16,24,40,.06)}.public-brand{font-weight:800;font-size:18px;margin-bottom:24px;color:#344054}.public-share-head{display:flex;justify-content:space-between;gap:20px;align-items:flex-start;border-bottom:1px solid #eaecf0;padding-bottom:20px;margin-bottom:20px}.public-share-head span{display:block;font-size:12px;color:#667085;text-transform:uppercase;letter-spacing:.04em}.public-share-head h1{margin:4px 0;font-size:28px}.public-share-head p{margin:0;color:#667085}.public-share-actions{display:flex;justify-content:flex-end;margin-top:22px}.public-share-note{text-align:center;color:#667085;font-size:12px;margin:14px}.public-invalid{text-align:center;padding:54px 28px}.public-roster-list{display:grid;gap:10px}.public-roster-list article{display:grid;grid-template-columns:90px 1fr;gap:16px;padding:14px;border:1px solid #eaecf0;border-radius:10px}.public-roster-date{font-size:12px;color:#667085}.public-roster-date strong{display:block;color:#101828;font-size:15px;margin-top:3px}.public-roster-list article>div:last-child{display:flex;flex-direction:column;gap:4px}.public-roster-list article span{color:#344054}.public-roster-list article small{color:#667085}@media(max-width:640px){.public-share-card{padding:18px}.public-share-head{flex-direction:column}.public-roster-list article{grid-template-columns:72px 1fr}.public-share-wrap{padding:14px 10px}}

/* v0.1.82 schedule save/history */
.schedule-unsaved-banner{margin-bottom:16px}
/* v0.1.84: schedule history follows the standard page and panel layout. */
.schedule-history-head{align-items:flex-end}
.schedule-history-panel{width:100%}
.schedule-history-heading{padding-bottom:16px;margin-bottom:0;border-bottom:1px solid #eaecf0}
.schedule-history-list{display:flex;flex-direction:column;gap:0}
.schedule-history-row{display:flex;align-items:center;justify-content:space-between;gap:20px;padding:16px 0;border-bottom:1px solid #eaecf0}
.schedule-history-row:last-child{border-bottom:0;padding-bottom:0}
.schedule-history-copy{display:flex;flex-direction:column;gap:4px;min-width:0}
.schedule-history-copy strong{font-size:13px;color:#344054}
.schedule-history-copy span{color:#667085;font-size:11px}
.schedule-history-row form{margin:0;flex:none}
.schedule-history-empty{padding:34px 16px 14px}
.head-actions button:disabled,.schedule-history-row button:disabled{opacity:.45;cursor:not-allowed}
@media (max-width:800px){.schedule-history-row{align-items:flex-start;flex-direction:column}.schedule-history-row form,.schedule-history-row button{width:100%}}


/* v0.1.86: keep every primary sidebar navigation label on the same text column.
   A fixed, non-shrinking icon slot prevents individual SVG geometry from
   affecting the start position of labels such as Scheduling and Reports. */
.zq-nav a > svg{
  flex:0 0 20px;
  width:20px;
  min-width:20px;
  max-width:20px;
}
.zq-nav a > span{
  margin:0;
  min-width:0;
}


/* v0.1.87: global alignment, stable viewport gutter and dog breed input polish. */
html{scrollbar-gutter:stable}

/* Keep the account menu deliberately clear of the browser scrollbar and reserve
   the same scrollbar gutter on short and long pages so it never jumps sideways. */
.zq-topbar{padding-right:46px}

/* Use a real fixed navigation grid rather than relying on each SVG's intrinsic
   geometry. Every navigation label therefore begins on exactly the same column. */
.zq-nav a{
  display:grid;
  grid-template-columns:20px minmax(0,1fr);
  column-gap:12px;
  align-items:center;
}
.zq-nav a>svg{
  grid-column:1;
  justify-self:center;
  width:20px;
  height:20px;
  min-width:20px;
  max-width:20px;
}
.zq-nav a>span{grid-column:2;margin:0}

/* Scheduling and Reports use the same main content bounds and page-heading
   rhythm as Dashboard, Bookings, Clients & Dogs and Invoices. */
body.allocation-page .zq-main{max-width:1600px}
.reports-head{margin-bottom:22px}

@media(max-width:760px){
  .zq-topbar{padding-right:20px}
  .zq-nav a{display:flex;grid-template-columns:none;column-gap:0}
}
body.sidebar-collapsed .zq-nav a{display:flex;grid-template-columns:none;column-gap:0}

/* v0.1.90 client holidays */
.client-holidays-card{padding:0;overflow:hidden}.client-holidays-summary{list-style:none;display:flex;align-items:center;justify-content:space-between;gap:16px;padding:20px;cursor:pointer}.client-holidays-summary::-webkit-details-marker{display:none}.client-holidays-summary h2{font-size:16px;margin:0 0 4px}.client-holidays-summary p{margin:0;color:#667085;font-size:12px}.client-holidays-chevron{font-size:22px;line-height:1;color:#667085;transition:transform .15s ease}.client-holidays-card[open] .client-holidays-chevron{transform:rotate(180deg)}.client-holidays-content{border-top:1px solid #eaecf0;padding:20px}.holiday-add-button{margin-top:14px}

/* v0.1.91 recurring frequency controls */
.recurrence-frequency-row{display:flex;gap:12px;align-items:flex-start;flex-wrap:wrap;margin-bottom:12px;padding:11px 12px;border:1px solid #e4e7ec;border-radius:8px;background:#fff}.recurrence-frequency-row>label,.monthly-recurrence label{font-size:10px;color:#475467;min-width:170px}.recurrence-frequency-row select,.recurrence-frequency-row input,.monthly-recurrence select{margin-top:5px}.recurrence-frequency-row small{display:block;margin-top:4px;color:#667085;font-size:9px}.monthly-recurrence{display:flex;gap:10px;flex-wrap:wrap}.recurrence-frequency-row [hidden],.pattern-mode [hidden]{display:none!important}

/* v0.1.95: compact dashboard holiday panel with balanced vertical spacing */
.dashboard-holidays{margin-bottom:18px;padding:14px 16px}
.dashboard-holidays .section-heading{margin-bottom:10px}
.dashboard-holidays .simple-row{padding:8px 11px}
.dashboard-holidays .empty-state{padding:14px}

/* v0.1.97 client CSV import/export */
.page-head-actions,.import-actions,.import-confirm-row{display:flex;gap:10px;align-items:center;flex-wrap:wrap}.import-panel{max-width:900px}.import-upload-form{display:grid;gap:12px;margin-top:22px;max-width:620px}.import-upload-form label{display:grid;gap:8px;font-weight:600}.import-upload-form input[type=file]{padding:12px;border:1px solid #d0d5dd;border-radius:8px;background:#fff}.import-summary{display:grid;grid-template-columns:repeat(4,minmax(120px,1fr));gap:12px;margin:0 0 18px}.import-summary>div{background:#fff;border:1px solid #eaecf0;border-radius:10px;padding:16px;display:grid;gap:3px}.import-summary strong{font-size:1.5rem}.import-summary span{color:#667085}.import-preview-table{max-height:58vh;overflow:auto}.import-preview-table table{min-width:850px}.import-confirm-row{justify-content:flex-end;margin-top:18px}.import-confirm-row form{margin:0}.import-result{max-width:800px}.import-result .import-summary{grid-template-columns:repeat(3,1fr)}.alert.error{padding:12px 14px;border-radius:8px;background:#fef3f2;color:#b42318;margin-bottom:16px}code{background:#f2f4f7;padding:2px 5px;border-radius:4px}@media(max-width:760px){.import-summary{grid-template-columns:repeat(2,1fr)}.page-head-actions{justify-content:flex-start}.import-result .import-summary{grid-template-columns:1fr}}
