:root{font-family:-apple-system,BlinkMacSystemFont,"Hiragino Kaku Gothic ProN","Yu Gothic",system-ui,sans-serif;color:#183b37;background:#f3f6f5;font-size:16px;line-height:1.7;color-scheme:light}
*{box-sizing:border-box}body{margin:0}main{max-width:1060px;margin:auto;padding:28px 24px 44px}h1,h2,p{margin-top:0}h1{font-size:clamp(26px,4.5vw,38px);line-height:1.45;letter-spacing:-.03em;margin-bottom:12px}h2{font-size:20px;line-height:1.5}.banner{padding:13px 18px;background:#fff0ca;border:1px solid #f0d99b;border-radius:12px;font-size:14px}.banner strong,.banner span{display:block}.page-header{padding:26px 0 5px}.page-header>p:last-child{margin-bottom:0}.eyebrow{font-size:12px;font-weight:700;letter-spacing:.11em;color:#59726a;margin-bottom:12px}.card{background:#fff;border:1px solid #dde7e3;border-radius:18px;padding:24px}.filters{margin-top:22px}.filters h2{margin-bottom:12px}.filter-grid{display:grid;grid-template-columns:1.2fr 1fr;gap:22px}label{display:block;font-size:14px;font-weight:600;margin:0 0 8px}button,select{font:inherit;color:inherit}select{width:100%;min-height:48px;padding:10px 12px;border:1px solid #a8bfb8;border-radius:9px;background:#fff}button{cursor:pointer;border:1px solid #bdcfc9;border-radius:9px;padding:11px;background:white;transition:background .15s,border-color .15s}button:hover:not(:disabled){background:#eef7f2;border-color:#488271}button:disabled{cursor:default;color:#89968f;background:#f6f8f7;border-color:#e5ebe8}button:focus-visible,select:focus-visible{outline:3px solid #b08a25;outline-offset:3px}.muted{color:#60756e;font-size:14px}.small{font-size:13px}.filters .muted{margin:12px 0 0}.connection-row{display:flex;align-items:center;justify-content:space-between;gap:12px;margin:18px 2px 14px}.connection{margin:0;font-size:13px;color:#59726a}.connection.connected::before{content:"";display:inline-block;width:8px;height:8px;background:#27806a;border-radius:50%;margin-right:7px}.text-button{font-size:13px;white-space:nowrap;padding:7px 10px;background:transparent;border-color:#cad9d2}.error{background:#fff0ec;border:1px solid #edc1b4;color:#85361f;padding:14px 18px;border-radius:10px;margin:0 0 18px;font-size:14px}.layout{display:grid;grid-template-columns:1.25fr 1fr;gap:20px;align-items:start}.month-nav{display:flex;align-items:center;justify-content:space-between;gap:14px;margin-bottom:20px}.month-nav h2{margin:0;font-size:21px}.month-arrow{width:44px;height:44px;padding:0;font-size:19px}.calendar{display:grid;grid-template-columns:repeat(7,minmax(0,1fr));gap:6px}.weekday{text-align:center;font-size:12px;padding:4px;color:#6c827a}.day{padding:8px 1px;min-height:77px;position:relative;font-size:14px}.day-number{display:block;line-height:1.4}.day small{display:block;line-height:1.3;font-size:16px;margin-top:6px;font-weight:600}.day.urgent small{color:#95680c;font-size:12px}.day.today .day-number{text-decoration:underline;text-underline-offset:4px}.day[aria-pressed=true],.time[aria-pressed=true]{background:#176c5c;color:#fff;border-color:#176c5c}.day[aria-pressed=true] small{color:#fff}.day[aria-pressed=true]:hover,.time[aria-pressed=true]:hover{background:#145a4d}.day.unavailable:not(:disabled){background:#f7f9f8;color:#6c827a}.calendar[aria-busy=true]{opacity:.65}.legend{display:flex;flex-wrap:wrap;gap:8px 17px;font-size:12px;color:#60756e;margin:18px 0 8px}.legend b{color:#176c5c;font-size:16px;margin-right:2px}.calendar-card>.muted{margin-bottom:0}.pill{display:inline-block;font-size:12px;padding:5px 11px;border-radius:20px;background:#e7f3ec;color:#29614f}.pill.urgent{background:#fff0ca;color:#785213}.selection-card h2{margin:16px 0 17px}.times{display:grid;grid-template-columns:repeat(2,minmax(0,1fr));gap:9px}.time{font-size:14px;min-height:48px;padding:10px 5px}.selection-card #hint{margin-top:16px}.summary{background:#f3f7f5;padding:16px;border-radius:10px;font-size:14px;line-height:1.9;white-space:pre-line}.cta{width:100%;margin-top:18px;background:#176c5c;color:#fff;padding:13px;font-weight:600}.cta:hover:not(:disabled){background:#145a4d;color:#fff}.result{font-size:14px;color:#245c4c;margin:14px 0 0;white-space:pre-line}.result:empty{display:none}.notes{margin-top:24px;font-size:13px;color:#64786f;line-height:1.85}.notes p{margin-bottom:10px}[hidden]{display:none!important}
@media(max-width:760px){main{padding:18px 14px 28px}.layout{grid-template-columns:1fr}.filter-grid{grid-template-columns:1fr;gap:16px}.card{padding:20px}.connection-row{align-items:flex-start}.connection{padding-top:4px}.text-button{max-width:145px;white-space:normal}.calendar{gap:5px}.day{min-height:67px}.page-header{padding-top:24px}.layout{gap:16px}}
@media(max-width:370px){main{padding-left:10px;padding-right:10px}.card{padding:16px}.day{min-height:60px}.calendar{gap:4px}.connection-row{flex-direction:column}.text-button{max-width:none}.month-nav h2{font-size:19px}}
@media(prefers-reduced-motion:reduce){button{transition:none}}
.reservation-section{margin-top:22px;scroll-margin-top:20px}.customer-grid{display:grid;grid-template-columns:1fr 1fr;gap:18px;margin-top:22px}.full-width{grid-column:1/-1}.customer-grid input,.customer-grid textarea{width:100%;min-height:47px;border:1px solid #a8bfb8;border-radius:9px;padding:10px 12px;background:#fff;font:inherit;color:inherit}.customer-grid textarea{resize:vertical}.customer-grid input:focus-visible,.customer-grid textarea:focus-visible,.consent input:focus-visible{outline:3px solid #b08a25;outline-offset:3px}.required,.optional{font-size:11px;font-weight:500;padding:2px 6px;margin-left:5px;border-radius:4px}.required{color:#7b4022;background:#fff0df}.optional{color:#61756c;background:#edf2ee}.customer-grid .small{margin:5px 0 0}h3{font-size:17px;margin:22px 0 10px}.review-list{margin:0;display:grid;grid-template-columns:145px minmax(0,1fr);font-size:14px}.review-list dt,.review-list dd{padding:11px 10px;border-bottom:1px solid #e4ece7;margin:0}.review-list dt{color:#60756e}.review-list dd{white-space:pre-wrap;overflow-wrap:anywhere}.price-table{width:100%;border-collapse:collapse;font-size:14px}.price-table th,.price-table td{padding:10px 12px;text-align:left;border-bottom:1px solid #e0e9e4}.price-table th:last-child,.price-table td:last-child{text-align:right;white-space:nowrap}.price-table thead{background:#f3f7f5;color:#60756e}.price-table tfoot{background:#e7f3ec;font-size:18px;font-weight:700}.consent{display:flex;gap:12px;align-items:flex-start;margin-top:22px;padding:15px;background:#f3f7f5;border-radius:10px;font-size:14px;font-weight:400}.consent input{width:20px;height:20px;flex-shrink:0;margin:3px 0 0;accent-color:#176c5c}.form-actions{display:flex;gap:12px;align-items:stretch}.form-actions .cta{margin:0;flex:1}.form-actions>button:first-child{flex:0 0 auto}.completion{border:1px solid #a7d1b9}.completion h2{margin-top:14px}.completion p:last-child{margin-bottom:0}[aria-disabled=true]{cursor:wait}.reservation-section h2:focus,.completion h2:focus{outline:none}
@media(max-width:600px){.customer-grid{grid-template-columns:1fr}.review-list{grid-template-columns:1fr}.review-list dt{border-bottom:0;padding-bottom:0;font-size:12px}.review-list dd{padding-top:3px}.form-actions{flex-direction:column-reverse}.price-table th,.price-table td{padding:10px 7px}.price-table tfoot{font-size:17px}}
.postal-input{display:flex;gap:8px;align-items:stretch}.postal-input input{min-width:0;flex:1}.postal-input button{flex-shrink:0;padding:8px 12px;font-size:14px}.postal-candidates{padding:16px;border:1px solid #c9ddd2;border-radius:10px;background:#f3f7f5}.postal-candidates button{margin-top:10px;font-size:14px}.postal-candidates select{font-size:14px}

/* The same booking flow adapts to a phone; customer data stays in this form. */
html{-webkit-text-size-adjust:100%;text-size-adjust:100%}
.booking-steps{display:grid;grid-template-columns:repeat(3,minmax(0,1fr));list-style:none;padding:0;margin:22px 0 0;gap:8px;font-size:14px;font-weight:600}
.booking-steps li{display:flex;align-items:center;justify-content:center;gap:8px;padding:12px 6px;border-bottom:3px solid #dbe6e0;color:#65796f}
.booking-steps li>span{display:grid;place-items:center;width:25px;height:25px;flex-shrink:0;border-radius:50%;background:#e6ede8;font-size:12px}
.booking-steps [aria-current=step]{color:#145a4d;border-color:#176c5c}
.booking-steps [aria-current=step]>span{background:#176c5c;color:#fff}
.booking-steps .done{border-color:#93b6a3;color:#29614f}
.mobile-only{display:none}
.filter-grid select{max-width:100%}
.selection-help{overflow-wrap:anywhere;line-height:1.8}
.sr-only{position:absolute;width:1px;height:1px;padding:0;margin:-1px;overflow:hidden;clip:rect(0,0,0,0);white-space:nowrap;border:0}
.device-fields{min-width:0;margin:24px 0 0;padding:18px;border:1px solid #cadbd2;border-radius:12px}
.device-fields legend{padding:0 6px;font-size:16px;font-weight:600}
.device-grid{display:grid;grid-template-columns:repeat(2,minmax(0,1fr));gap:10px}
.device-item{display:flex;flex-wrap:wrap;align-items:center;gap:4px 10px;padding:8px 12px;border:1px solid #dce7e0;border-radius:9px;background:#f7faf8;min-width:0}
.device-choice{display:flex;align-items:center;gap:9px;min-height:44px;margin:0;flex:1;font-weight:400;cursor:pointer}
.device-choice input{width:20px;height:20px;flex-shrink:0;accent-color:#176c5c}
.device-count{display:flex;align-items:center;gap:6px;margin:0;font-weight:400;font-size:14px}
.device-fields input[type=number],.device-fields input[type=text]{min-height:44px;padding:8px;border:1px solid #a8bfb8;border-radius:8px;background:#fff;font:inherit;font-size:16px;color:inherit}
.device-fields input[type=number]{width:74px}
.device-fields input[type=text]{width:100%}
.device-fields input:focus-visible{outline:3px solid #b08a25;outline-offset:3px}
.device-details-label{margin-top:18px}
.device-fields>p:last-child{margin:10px 0 0}
@media(max-width:600px){.device-grid{grid-template-columns:1fr}.device-fields{padding:12px}.device-item{padding:6px 10px}.device-fields legend{font-size:15px}.device-choice{font-size:14px}}
.card,.filter-grid>div,.customer-grid>div{min-width:0}
.summary,.result,.error,.notes,#completion-reference{overflow-wrap:anywhere}
#calendar-section,#time-section{scroll-margin-top:16px}
#month:focus,#selected:focus{outline:none}
button,a,input,select,textarea{-webkit-tap-highlight-color:#176c5c22;touch-action:manipulation}
.customer-grid input,.customer-grid select,.customer-grid textarea{scroll-margin-block:24px}
@media(max-width:760px){
  main{padding-bottom:calc(28px + env(safe-area-inset-bottom,0px));padding-left:max(12px,env(safe-area-inset-left,0px));padding-right:max(12px,env(safe-area-inset-right,0px))}
  .mobile-only{display:block}
  #back-to-dates{margin:0 0 16px;max-width:none}
  .text-button,.postal-input button,.postal-candidates button,.form-actions button{min-height:44px}
  .selection-card .cta,.reservation-section .cta{min-height:52px}
  .form-actions>button:first-child{min-height:48px}
  .customer-grid input,.customer-grid textarea,.postal-candidates select{font-size:16px;min-height:50px}
  .customer-grid{gap:20px}
  .customer-grid label{font-size:15px}
  .postal-candidates{padding:12px}
  .consent{padding:14px;line-height:1.8}
  .form-actions{gap:12px}
}
@media(max-width:480px){
  .page-header{padding-top:22px}
  h1{font-size:26px}
  .banner{padding:12px 14px;font-size:13px}
  .card{padding:16px;border-radius:14px}
  .booking-steps{gap:5px;font-size:12px}
  .booking-steps li{gap:5px;padding:11px 0}
  .booking-steps li>span{width:21px;height:21px;font-size:11px}
  .month-nav{margin-bottom:16px}
  .month-nav h2{font-size:20px}
  .calendar{gap:4px}
  .day{min-height:64px;font-size:15px;border-radius:7px}
  .day small{margin-top:5px}
  .day.urgent small{font-size:11px}
  .legend{gap:6px 12px}
  .connection-row{flex-direction:column;align-items:stretch;gap:8px}
  .text-button{max-width:none}
  .connection-row .text-button{align-self:flex-start}
  .times{gap:10px}
  .time{min-height:50px;font-size:15px}
  .summary{padding:14px}
  .price-table th,.price-table td{padding-left:4px;padding-right:4px}
  .price-table td:first-child{overflow-wrap:anywhere}
  .price-table td:last-child{padding-left:10px}
  .review-list dt,.review-list dd{padding-left:0;padding-right:0}
}

.booking-site-nav{display:flex;flex-wrap:wrap;align-items:center;justify-content:space-between;gap:8px 18px;margin:0 0 16px;font-size:14px}.booking-site-nav a,.booking-contact a{color:#176c5c;text-underline-offset:4px;min-height:44px;display:inline-flex;align-items:center}.booking-site-nav a:first-child{font-weight:700}.booking-contact{display:flex;flex-wrap:wrap;gap:8px 22px;border-top:1px solid #dbe6e0;margin-top:24px;padding-top:14px;font-size:14px}.booking-site-nav a:focus-visible,.booking-contact a:focus-visible{outline:3px solid #b08a25;outline-offset:3px}
