.availability-section{background:#f3f7f9;scroll-margin-top:100px}
.availability-intro{max-width:740px;line-height:1.8;margin:1.2rem 0 1.7rem}
.availability-layout{display:grid;grid-template-columns:minmax(0,760px) minmax(240px,1fr);gap:2rem;align-items:start}
.availability-calendar{background:#fff;border:1px solid #c5d9e3;padding:1.4rem;min-width:0}
.availability-navigation{display:flex;align-items:center;justify-content:space-between;gap:.5rem;margin-bottom:1.4rem}
.availability-navigation h3{margin:0;font-size:1.5rem;text-align:center}
.availability-navigation button{font:inherit;background:#edf4f7;border:1px solid #c5d9e3;color:#17344a;padding:.7rem;min-height:44px;cursor:pointer}
.availability-navigation button:disabled{opacity:.4;cursor:default}
.availability-week,.availability-grid{display:grid;grid-template-columns:repeat(7,minmax(0,1fr));gap:5px}
.availability-week{text-align:center;font-size:.7rem;color:#526777;margin-bottom:.6rem}
.availability-day{font:inherit;display:flex;flex-direction:column;align-items:center;justify-content:center;gap:.4rem;min-height:76px;padding:.6rem .1rem;border:1px solid #9dbbae;cursor:pointer;border-radius:3px;color:#174b39;background:#edf6ef}
.availability-day strong{font-size:1.1rem}.availability-day span{font-size:.53rem;line-height:1.2}
.availability-day.pending{background:#fff3d6;border-color:#c19736;color:#73520a}
.availability-day.unavailable,.availability-day.past{background:#edf0f2;border-color:#d2d9df;color:#596672;cursor:default}
.availability-day:focus-visible,.availability-navigation button:focus-visible{outline:3px solid #187da0;outline-offset:3px}
.availability-day:not(:disabled):hover{box-shadow:inset 0 0 0 2px currentColor}
.availability-legend{display:flex;gap:1.3rem;flex-wrap:wrap;margin:1.2rem 0;font-size:.72rem}
.availability-key{display:inline-block;width:11px;height:11px;margin-right:6px;border-radius:2px;background:#d4eada}.availability-key.pending{background:#f4d791}.availability-key.unavailable{background:#c9d1d8}
.availability-help{line-height:1.75;font-size:.82rem}.availability-help h3{margin-bottom:.8rem}.availability-help p{margin-bottom:1rem}
.availability-notice{font-size:.7rem;line-height:1.6;margin:1rem 0 0;color:#526777}
.terms-link{display:inline;padding:0;border:0;background:none;color:#345d72;font:inherit;text-decoration:underline;text-underline-offset:3px;cursor:pointer;text-align:left}
.terms-link:focus-visible,.terms-close:focus-visible{outline:2px solid #187da0;outline-offset:4px}
.terms-modal{width:min(760px,calc(100% - 2rem));max-height:85vh;max-height:85dvh;padding:0;border:1px solid #dce3e8;border-radius:5px;background:#fff;color:#243746;box-shadow:0 20px 70px #102a4350;overflow:auto}
.terms-modal::backdrop{background:#0d253b99}
.terms-document{position:relative;padding:2.5rem}
.terms-close{position:sticky;top:.4rem;display:block;margin:-1.5rem -1.5rem 0 auto;width:44px;height:44px;border:0;border-radius:50%;background:#f1f4f6;color:#243746;font:28px/1 Arial,sans-serif;cursor:pointer;z-index:1}
#booking-terms h2{font:500 1.85rem var(--display);margin:0 0 .5rem;text-transform:none;letter-spacing:normal}
#booking-terms .eyebrow{font-size:.65rem;margin-bottom:.8rem}
#booking-terms .terms-version{font-size:11px;color:#667783;border-bottom:1px solid #dce3e8;padding-bottom:1rem}
#booking-terms .notes{max-width:none;background:none;border:0;margin:0;padding:0;font:14px/1.75 Arial,sans-serif;color:#344753}
#booking-terms h3{font:600 15px/1.5 Arial,sans-serif;margin:1.5rem 0 .6rem}
#booking-terms p{margin:0 0 1rem}
#booking-terms ul{padding-left:1.3rem;margin:0 0 1rem}
#booking-terms li{font:inherit;margin-bottom:.6rem}
body:has(dialog[open]){overflow:hidden}
@media(max-width:480px){.terms-document{padding:1.5rem}.terms-close{margin:-.8rem -.8rem .2rem auto}}
@media(max-width:900px){.availability-layout{grid-template-columns:1fr}}
@media(max-width:480px){.availability-calendar{padding:.65rem}.availability-week,.availability-grid{gap:3px}.availability-day{min-height:64px}.availability-day span{font-size:8px;letter-spacing:-.25px}.availability-navigation h3{font-size:1.2rem}.availability-navigation button{font-size:.7rem;padding:.5rem}}

.availability-modal{width:min(680px,calc(100% - 1.5rem));max-height:90vh;max-height:90dvh;margin:auto;padding:1.5rem;border:0;border-radius:8px;background:#fff;color:#17344a;overflow:auto;box-sizing:border-box}
.availability-modal::backdrop{background:#0d253b99}
.availability-modal h2{font:500 2rem var(--display);margin:0 0 1.2rem;padding-right:3rem}
.availability-close{position:absolute;right:.7rem;top:.6rem;width:44px;height:44px;border:0;background:transparent;color:#17344a;font:30px Arial;cursor:pointer}
.availability-modal .availability-calendar{padding:0;border:0}
.availability-modal .availability-day{min-height:52px;gap:.2rem}
.availability-modal .availability-intro{font-size:.75rem;line-height:1.5;margin:.8rem 0 0}
.availability-modal .availability-legend{margin:.9rem 0;font-size:.75rem}
.jp-contact-actions{flex-direction:column}
.jp-contact-actions .button,.jp-contact-actions button{flex:0 0 auto;width:100%}
.jp-contact-actions .availability-open{background:#fff;color:#0d5b87;border:1px solid #2380b0}
@media(max-width:480px){.availability-modal{padding:1rem}.availability-modal .availability-day{min-height:48px}.availability-modal .availability-legend{gap:.7rem}}

.jp-modal .enquiry-form button.terms-link{display:inline;width:auto;padding:0;margin:0;border:0;background:transparent;color:#345d72;font:inherit;letter-spacing:normal;text-transform:none;box-shadow:none;min-height:0}
.jp-modal .enquiry-form .enquiry-terms{margin:.25rem 0 1rem}
#availability-selection:empty{display:none}
.availability-day.selected{outline:3px solid #0d5b87;outline-offset:-3px;box-shadow:inset 0 0 0 1px #fff}
[data-selection-summary]{font-size:.75rem;line-height:1.6;margin:1rem 0}
[data-continue-dates]{width:100%;border:0;cursor:pointer}
[data-continue-dates]:disabled{opacity:.4;cursor:default}

.jp-contact-actions button.button{display:flex;align-items:center;justify-content:center;gap:12px;flex:0 0 auto;width:100%;height:auto;min-height:56px;padding:14px 20px;box-sizing:border-box;border:2px solid #0d5b87;border-radius:12px;background:transparent;color:#0d5b87;font:600 16px/1.3 var(--body);letter-spacing:0;text-transform:none;box-shadow:none}
.jp-contact-actions button.button:hover{background:#0d5b87;color:#fff;border-color:#0d5b87}
.jp-contact-actions button.button:focus-visible{outline:3px solid #0d5b87;outline-offset:4px}
.jp-contact-actions .contact-button-icon{display:block;width:24px;height:24px;flex:0 0 24px}
.jp-contact-actions .contact-whatsapp-icon{background:currentColor;-webkit-mask:url('images/whatsapp.svg') center/contain no-repeat;mask:url('images/whatsapp.svg') center/contain no-repeat}

.japan-hero .jp-hero-actions,.nz-hero .jp-hero-actions{display:flex;flex-direction:row;flex-wrap:wrap;gap:12px;margin:24px 0 0;width:100%;max-width:600px}
.japan-hero .jp-hero-actions button.button,.nz-hero .jp-hero-actions button.button{flex:1 1 240px;width:auto;border-color:#fff;color:#fff;background:transparent}
.japan-hero .jp-hero-actions button.button:hover,.nz-hero .jp-hero-actions button.button:hover{background:#fff;color:#0d5b87}
.japan-hero .jp-hero-actions button.button:focus-visible,.nz-hero .jp-hero-actions button.button:focus-visible{outline-color:#fff}
@media(max-width:540px){.japan-hero .jp-hero-actions,.nz-hero .jp-hero-actions{max-width:360px}.japan-hero .jp-hero-actions button.button,.nz-hero .jp-hero-actions button.button{flex-basis:100%;width:100%}}

.enquiry-form .enquiry-send-actions{grid-column:1/-1;margin-top:1rem}
.enquiry-form .enquiry-send-actions button.button{background:transparent;color:#0d5b87;border:2px solid #0d5b87;letter-spacing:0;text-transform:none;padding:14px 20px}
.enquiry-form .enquiry-send-actions button.button:hover{background:#0d5b87;color:white}
.contact-body .contact-hero{grid-template-columns:1fr 1fr}
.contact-body .enquiry-form button.terms-link{background:none;border:0;padding:0;color:#345d72;font:inherit;text-transform:none;letter-spacing:normal;text-align:left}
@media(max-width:760px){.contact-body .contact-hero{grid-template-columns:1fr}}

.contact-body .enquiry-form .enquiry-send-actions button.button{border-color:#fff;color:#fff;background:transparent}
.contact-body .enquiry-form .enquiry-send-actions button.button:hover{background:#fff;color:#0d5b87}
.contact-body .enquiry-form .terms-link{color:#fff}

.enquiry-form .enquiry-send-actions{display:grid;grid-template-columns:repeat(2,minmax(0,1fr));gap:12px}
.enquiry-form .enquiry-send-actions button.button{width:100%;min-width:0;gap:8px;padding:14px 10px}
.contact-body .contact-form-section .enquiry-form .terms-link{color:#345d72}
.contact-body .contact-form-section .enquiry-form .enquiry-send-actions button.button{border-color:#0d527d;color:#fff;background:#0d527d}
.contact-body .contact-form-section .enquiry-form .enquiry-send-actions button.button:hover{border-color:#0b466b;color:#fff;background:#0b466b}
.contact-body .contact-form-section .enquiry-form .contact-calendar-link{grid-column:1/-1;border-color:#0d527d;color:#0d527d;background:transparent}
.contact-body .contact-form-section .enquiry-form .contact-calendar-link:hover{border-color:#0d527d;color:#0d527d;background:#eaf5fb}

/* Suppress the browser focus ring on the dialog shell; controls retain focus-visible rings. */
.availability-modal:focus{outline:none}

.availability-day.booked{background:#f7e4e4;border-color:#b85b5b;color:#762f2f;cursor:default}
.availability-key.booked{background:#e9b1b1}
