*{box-sizing:border-box}body{margin:0;background:#f4f2ee;color:#202a37;font:16px/1.6 system-ui,sans-serif}.preview{background:#7f202b;color:white;text-align:center;padding:10px;font-size:13px;letter-spacing:.04em}header{max-width:1100px;margin:auto;padding:24px;display:flex;justify-content:space-between;align-items:center}header img{width:185px;max-height:82px;object-fit:contain}header label{font-size:12px;display:grid;gap:4px}main{max-width:920px;margin:0 auto;padding:20px 24px 60px}.intro{max-width:650px;margin-bottom:36px}.eyebrow{font-size:12px;letter-spacing:.22em;color:#866341}h1{font-family:Georgia,serif;font-size:clamp(36px,6vw,58px);font-weight:400;line-height:1.1;margin:14px 0}h2{font:normal 29px/1.3 Georgia,serif;margin-top:0}.intro p{color:#59616a}.steps{display:flex;gap:8px;margin-bottom:20px;flex-wrap:wrap}.steps span{font-size:13px;padding:7px 12px;border-radius:30px;border:1px solid #d4d5d4}.steps .active{background:#223347;color:white}.panel{background:white;border:1px solid #e3dfd8;border-radius:18px;padding:32px;box-shadow:0 12px 34px #19253608}.cards{display:grid;grid-template-columns:repeat(auto-fit,minmax(230px,1fr));gap:14px}.choice{border:1px solid #d5d9dc;border-radius:12px;padding:20px;display:block;cursor:pointer}.choice:hover{border-color:#866341}.choice:has(input:checked){background:#f6f0e6;border-color:#866341}.choice strong{display:block;font-size:18px}.choice small{display:block;color:#616873}input,select,button{font:inherit}input:not([type=checkbox]):not([type=radio]),select{padding:11px 12px;border:1px solid #bac2c8;border-radius:8px;max-width:100%;width:100%;background:white}input[type=checkbox],input[type=radio]{accent-color:#26394f}label.field{display:grid;gap:5px;margin:16px 0}.actions{display:flex;gap:12px;justify-content:space-between;margin-top:28px;flex-wrap:wrap}button{background:#223347;border:1px solid #223347;color:white;border-radius:8px;padding:12px 22px;cursor:pointer}button.secondary{background:white;color:#223347}button:disabled{opacity:.45;cursor:wait}.slots{display:grid;grid-template-columns:repeat(auto-fill,minmax(110px,1fr));gap:10px}.slots .choice{padding:10px;text-align:center}.summary{background:#f6f5f2;border-radius:10px;padding:20px;margin:20px 0}.summary p{margin:3px 0}.notice{font-size:14px;background:#fff6e8;padding:14px;border-left:3px solid #ad7c39}.grid{display:grid;grid-template-columns:1fr 1fr;gap:16px}#error{color:#9b2136}footer{color:#626b75;font-size:13px;margin-top:24px}a{color:#223347}:focus-visible{outline:3px solid #b77930;outline-offset:3px}.success{font-size:44px;color:#37644f}.ref{overflow-wrap:anywhere;font-size:13px}@media(max-width:580px){header{padding:16px}header img{width:135px}main{padding:15px}.panel{padding:22px}.grid{grid-template-columns:1fr}.steps{gap:5px}.steps span{font-size:11px;padding:5px 8px}.actions button{flex:1}}

.booking-help{margin:24px 0 12px;padding:18px 20px;background:#fff;border:1px solid #dedbd5;border-radius:12px;font-size:15px}.booking-help a{display:inline-block;white-space:nowrap;font-weight:700;text-decoration:underline;text-underline-offset:3px;padding:4px 0}

.choice[hidden]{display:none}

.top-actions{margin-top:0;margin-bottom:24px;padding-bottom:18px;border-bottom:1px solid #e3dfd8}

.category-grid{display:grid;grid-template-columns:repeat(auto-fit,minmax(190px,1fr));gap:10px}.category-button{text-align:left;padding:14px}.category-button strong,.category-button small{display:block}.category-button small{font-size:13px;margin-top:4px}.category-button[aria-pressed=true]{background:#223347;color:white}.selected-service{display:flex;align-items:center;justify-content:space-between;gap:12px;margin-top:10px}.selected-service button{font-size:13px;padding:6px 10px;flex-shrink:0}

.service-dialog{width:min(760px,calc(100vw - 24px));max-height:calc(100dvh - 24px);padding:0;border:1px solid #d5d9dc;border-radius:16px;color:#202a37;background:white}.service-dialog[open]{display:grid;grid-template-rows:auto minmax(0,1fr) auto;overflow:hidden}.service-dialog::backdrop{background:#172536a8}.service-dialog-header{padding:20px 24px 10px;border-bottom:1px solid #e3dfd8}.dialog-title-row{display:flex;justify-content:space-between;align-items:center;gap:12px}.dialog-title-row h2{margin:0}.service-dialog-header p{margin:8px 0;font-size:14px}.service-dialog-header .field{margin:10px 0}.service-dialog-body{padding:18px 24px;overflow-y:auto;overscroll-behavior:contain}.service-dialog-footer{padding:14px 24px;display:flex;align-items:center;justify-content:space-between;gap:12px;border-top:1px solid #e3dfd8}.service-dialog-footer span{font-size:14px}@media(max-width:580px){.service-dialog-header,.service-dialog-body,.service-dialog-footer{padding:14px}.dialog-title-row h2{font-size:23px}.service-dialog .cards{grid-template-columns:1fr}}

body.booking-welcome header img{width:340px;max-width:calc(100vw - 150px);max-height:160px}@media(max-width:580px){body.booking-welcome header img{width:240px;max-width:calc(100vw - 130px);max-height:125px}}

/* Give the service list a definite share of the dialog height on mobile. */
.service-dialog[open]{height:min(760px,calc(100dvh - 24px));grid-template-rows:auto minmax(140px,1fr) auto;overflow:auto}
.service-dialog-body{min-height:140px;-webkit-overflow-scrolling:touch}
@media(max-width:580px){
 .service-dialog[open]{height:calc(100dvh - 16px);max-height:calc(100dvh - 16px);width:calc(100vw - 16px);margin:auto;grid-template-rows:auto minmax(140px,1fr) auto}
 .service-dialog-header{padding:10px 14px}
 .service-dialog-header .field{margin:6px 0}
 .service-dialog-header p{margin:4px 0}
 .service-dialog-body{padding:10px 14px}
 .service-dialog .choice{min-height:52px;padding:12px;touch-action:manipulation}
 .service-dialog-footer{padding:10px 14px;background:white}
}
