:root {
  --ink: #2b204e;
  --cream: #fffdfd;
  --orange: #38bfd1;
  --pink: #f6d0e7;
  --mint: #d7f5f5;
  --yellow: #f4d15c;
  --muted: #716b7d;
  --line: #e9e1ef;
  --serif: Georgia, 'Times New Roman', serif;
  --sans: 'Poppins', Arial, sans-serif;
}

*,*::before,*::after{box-sizing:border-box}
html{scroll-behavior:smooth;scroll-padding-top:86px}
body{margin:0;min-width:320px;overflow-x:hidden;background:var(--cream);color:var(--ink);font-family:var(--sans);font-size:14px;-webkit-font-smoothing:antialiased}
body,button,input,select,textarea{font-family:var(--sans)}
button,input,select,textarea{font-size:inherit}
button,a{-webkit-tap-highlight-color:transparent}
button{color:inherit}
a{color:inherit;text-decoration:none}
img{display:block;max-width:100%}
section[id]{scroll-margin-top:86px}

.topbar{position:sticky;top:0;z-index:40;display:flex;align-items:center;justify-content:space-between;gap:28px;width:100%;height:78px;padding:0 max(5vw,calc((100vw - 1320px)/2));background:#fffdfdf2;border-bottom:1px solid #e9e1efb8;backdrop-filter:blur(14px)}
.brand{display:inline-flex;align-items:center;gap:10px;flex:none;color:var(--ink);font-size:20px;font-weight:700;letter-spacing:-.7px;line-height:1}
.brand img{width:42px;height:42px;object-fit:contain;border-radius:50%}
.brand small{display:block;margin-top:5px;color:#807994;font-size:7px;font-weight:700;letter-spacing:1.6px}
.desktop-nav{display:flex;align-items:center;gap:32px;margin-left:auto}
.desktop-nav a,.footer-links a{color:#686273;font-size:11px;font-weight:500;transition:color .18s ease}
.desktop-nav a:hover,.footer-links a:hover{color:var(--ink)}
.top-actions{display:flex;align-items:center;gap:14px}
.text-button,.menu-toggle{border:0;background:transparent;color:var(--ink);font-weight:600;cursor:pointer}
.text-button{padding:10px 4px;font-size:11px}
.menu-toggle{display:none;padding:8px;font-size:21px}

.button{display:inline-flex;align-items:center;justify-content:center;gap:18px;min-height:48px;padding:0 21px;border:1px solid transparent;border-radius:6px;font-size:11px;font-weight:700;line-height:1.2;cursor:pointer;transition:transform .18s ease,background .18s ease,border-color .18s ease,box-shadow .18s ease}
.button:hover{transform:translateY(-1px)}
.button:focus-visible,.text-button:focus-visible,.menu-toggle:focus-visible,a:focus-visible,button:focus-visible,input:focus-visible,select:focus-visible,textarea:focus-visible{outline:3px solid #38bfd166;outline-offset:2px}
.button-dark{background:var(--ink);color:#fff;border-color:var(--ink)}
.button-dark:hover{background:#3b2e69;border-color:#3b2e69}
.button-coral{background:var(--orange);color:var(--ink);border-color:var(--orange)}
.button-coral:hover{background:#53cddd;border-color:#53cddd}
.button:disabled{opacity:.55;cursor:not-allowed;transform:none}

.hero{position:relative;display:grid;grid-template-columns:minmax(0,.9fr) minmax(0,1.1fr);align-items:center;gap:5vw;min-height:650px;max-height:820px;padding:68px max(7vw,calc((100vw - 1260px)/2)) 92px;overflow:hidden;background:var(--cream)}
.hero-copy{position:relative;z-index:2;max-width:560px;padding-bottom:12px}
.eyebrow{display:inline-flex;align-items:center;gap:8px;color:#756c80;font-size:9px;font-weight:700;letter-spacing:2px;line-height:1.5}
.hero-copy>.eyebrow{color:#357d86}
.hero-copy>.eyebrow i{width:7px;height:7px;border-radius:50%;background:var(--orange);box-shadow:0 0 0 4px #38bfd126}
.hero h1{margin:23px 0 18px;color:var(--ink);font-family:var(--serif);font-size:clamp(62px,6.2vw,92px);font-weight:400;letter-spacing:-5px;line-height:.98}
.hero h1 em,.intro h2 em,.section-heading h2 em,.final-cta h2 em{color:#39aebb;font-weight:400}
.hero-copy>p{max-width:440px;margin:0;color:#77717f;font-size:14px;line-height:1.9}
.hero-buttons{display:flex;align-items:center;gap:23px;margin-top:29px}
.play-link{display:inline-flex;align-items:center;gap:9px;color:#676173;font-size:10px;font-weight:600}
.play-icon{display:grid;place-items:center;width:31px;height:31px;border:1px solid var(--line);border-radius:50%;color:var(--ink);font-size:14px}
.hero-proof{display:flex;align-items:center;gap:13px;margin-top:38px;color:#857e8c;font-size:9px;line-height:1.7}
.hero-proof strong{color:var(--ink);font-size:10px}
.avatar-stack{display:flex;padding-left:3px}
.avatar-stack b{display:grid;place-items:center;width:29px;height:29px;margin-left:-4px;border:2px solid var(--cream);border-radius:50%;background:#f4d15c;color:var(--ink);font-size:12px}
.avatar-stack b:nth-child(2){background:#f6d0e7}.avatar-stack b:nth-child(3){background:#d7f5f5}
.hero-art{position:relative;display:grid;place-items:center;height:min(43vw,560px);min-height:390px}
.hero-photo{width:84%;height:100%;border-radius:48% 48% 6px 6px;object-fit:cover;object-position:center 45%;box-shadow:0 22px 65px #2b204e1c}
.photo-tag{position:absolute;left:0;bottom:8%;display:flex;align-items:center;gap:10px;padding:13px 17px;border:1px solid #eee8f2;border-radius:6px;background:#fffdfd;color:#5e586b;font-family:var(--serif);font-size:16px;line-height:1.15;box-shadow:0 10px 26px #2b204e12}
.photo-tag>span{color:#38aebb;font-size:22px}
.sunburst{position:absolute;top:8%;right:0;display:grid;place-content:center;width:105px;height:105px;border-radius:50%;background:var(--yellow);color:var(--ink);font-size:12px;font-weight:700;line-height:1.25;text-align:center;transform:rotate(9deg)}
.hero-bottom{position:absolute;right:max(7vw,calc((100vw - 1260px)/2));bottom:28px;left:max(7vw,calc((100vw - 1260px)/2));display:flex;justify-content:space-between;color:#898293;font-size:8px;font-weight:600;letter-spacing:1.2px}

.section-wrap{width:min(1120px,calc(100% - 64px));margin:0 auto}
.intro{display:grid;grid-template-columns:.8fr 1.4fr .8fr;align-items:center;gap:54px;min-height:440px;padding-top:74px;padding-bottom:74px}
.intro-label{align-self:start;padding-top:8px}
.scribble{display:block;margin-top:25px;color:#2b204e;font-family:var(--serif);font-size:21px;font-style:italic;line-height:1.35;transform:rotate(-5deg)}
.intro-copy h2,.section-heading h2{margin:8px 0 15px;color:var(--ink);font-family:var(--serif);font-size:clamp(38px,4vw,55px);font-weight:400;letter-spacing:-2.5px;line-height:1.07}
.intro-copy p,.section-heading>p{max-width:480px;margin:0;color:#77717f;font-size:12px;line-height:1.9}
.under-link{display:inline-flex;gap:9px;align-items:center;margin-top:19px;color:#258d99;font-size:10px;font-weight:700}
.under-link span{font-size:14px}
.intro-photo{width:100%;height:280px;border-radius:48% 48% 5px 5px;object-fit:cover;object-position:center 40%}

.catalog-section{padding:96px 0 105px;background:var(--mint)}
.section-heading{display:flex;align-items:end;justify-content:space-between;gap:35px;margin-bottom:34px}
.section-heading h2{margin-bottom:0}
.section-heading>p{max-width:350px;padding-bottom:7px}
.catalog-tabs{display:flex;gap:8px;margin:0 0 23px;overflow-x:auto}
.catalog-tabs button{flex:none;min-height:42px;padding:0 18px;border:1px solid #a7d9de;border-radius:30px;background:#ffffff6e;color:#3c6972;font-size:10px;font-weight:600;cursor:pointer}
.catalog-tabs button[aria-selected="true"]{background:#fff;border-color:#fff;color:var(--ink);box-shadow:0 3px 14px #2b204e12}
.catalog-grid{display:grid;grid-template-columns:repeat(3,minmax(0,1fr));gap:20px}
.product-card{min-width:0;overflow:hidden;border:1px solid #e6e0eb;border-radius:9px;background:#fff;box-shadow:0 8px 24px #2b204e0b;transition:transform .2s ease,box-shadow .2s ease}
.product-card:hover{transform:translateY(-3px);box-shadow:0 14px 32px #2b204e16}
.product-gallery{height:265px;background:#f5f1f8}
.product-gallery .product-image{width:100%;height:100%;object-fit:contain;padding:12px}
.product-info{padding:18px 19px 20px}
.product-meta{display:flex;justify-content:space-between;gap:9px;color:#8b8294;font-size:8px;font-weight:600;letter-spacing:.4px;text-transform:uppercase}
.product-info h3{margin:11px 0 6px;color:var(--ink);font-family:var(--serif);font-size:23px;font-weight:400;line-height:1.2}
.product-info>p{min-height:38px;margin:0;color:#77717f;font-size:10px;line-height:1.7}
.product-info .package-contents{min-height:0;margin-top:8px;color:#625b71}
.package-saving{display:flex;align-items:center;gap:10px;margin-top:8px;color:#31825d;font-size:10px}
.package-saving del{color:#928b9c}
.product-bottom{display:flex;align-items:center;justify-content:space-between;gap:10px;margin-top:17px;padding-top:14px;border-top:1px solid #eeeaf2}
.product-price{color:var(--ink);font-size:15px;font-weight:700;white-space:nowrap}
.product-price small{color:#837b8e;font-size:8px;font-weight:500}
.product-book{min-height:40px;padding:0 13px;gap:7px;font-size:9px;white-space:nowrap}
.catalog-empty{grid-column:1/-1;display:grid;justify-items:center;max-width:650px;margin:0 auto;padding:46px 28px;border:1px dashed #a7d9de;border-radius:10px;background:#ffffffa8;text-align:center}
.catalog-empty>span{color:#36aab7;font-size:31px}
.catalog-empty h3{margin:12px 0 7px;color:var(--ink);font-family:var(--serif);font-size:26px;font-weight:400}
.catalog-empty p{max-width:420px;margin:0 0 19px;color:#77717f;font-size:11px;line-height:1.8}
.catalog-note{margin-top:22px;color:#72888b;font-size:9px;text-align:right}

.booking-lines{display:grid;gap:8px;margin:22px 0 24px}
.booking-row{display:flex;align-items:center;justify-content:space-between;gap:18px;padding:13px 14px;border:1px solid #eee8f0;border-radius:6px;background:#f7f2f5}
.booking-row>span:first-child{display:block;min-width:0}
.booking-row>span>b{display:block;color:var(--ink);font-size:12px;line-height:1.45}
.booking-row>span>small{display:block;margin-top:3px;color:#77717f;font-size:10px;line-height:1.5}
.booking-row .field-label{display:grid;flex:0 0 82px;gap:5px;min-width:82px;color:#645d6d;font-size:9px;font-weight:600}
.booking-row input{box-sizing:border-box;width:76px;min-height:40px;margin:0;padding:8px 10px;border:1px solid #e3dce9;border-radius:4px;background:#fff;color:var(--ink);font-size:11px}
.form-hint{color:#77717f;font-size:9px;line-height:1.6}

.steps-section{padding:100px 0 105px;background:#38286f;color:#fff}
.light-heading .eyebrow{color:#c6bddb}
.light-heading h2{color:#fff}
.light-heading h2 em{color:#69d2dc}
.light-heading>p{color:#c8c2d8}
.steps-grid{display:grid;grid-template-columns:repeat(3,minmax(0,1fr));gap:0;margin-top:58px}
.steps-grid article{min-width:0;padding:0 33px;border-left:1px solid #ffffff35}
.steps-grid article:first-child{padding-left:0;border-left:0}
.steps-grid article>span{color:#c1b9d5;font-size:9px;font-weight:700;letter-spacing:1px}
.step-icon{margin:23px 0 13px;color:#61cfda;font-size:31px;line-height:1}
.steps-grid h3{margin:0 0 10px;color:#fff;font-family:var(--serif);font-size:28px;font-weight:400}
.steps-grid p{max-width:270px;margin:0;color:#c8c2d8;font-size:10px;line-height:1.8}

.final-cta{position:relative;display:grid;justify-items:center;overflow:hidden;padding:100px 24px 108px;background:#fff9fc;text-align:center}
.final-cta>.eyebrow{justify-content:center;color:#857b91}
.final-cta h2{margin:17px 0 24px;color:var(--ink);font-family:var(--serif);font-size:clamp(45px,5.5vw,70px);font-weight:400;letter-spacing:-3px;line-height:1.04}
.cta-doodle{position:absolute;top:14%;left:calc(50% - 360px);color:#eeb3d5;font-size:85px;line-height:1;transform:rotate(-14deg)}
.footer{display:grid;grid-template-columns:auto 1fr auto;align-items:center;gap:28px;padding:30px max(5vw,calc((100vw - 1320px)/2));background:var(--ink);color:#fff}
.footer-brand,.footer-brand small{color:#fff}
.footer-brand small{opacity:.7}
.footer-links{display:flex;flex-wrap:wrap;justify-content:center;gap:22px}
.footer-links a{color:#d3cde0;font-size:9px}
.copyright{color:#b8b1c8;font-size:8px;white-space:nowrap}
.mobile-dock{display:none}

.cart-bar{font-size:11px}
.dialog{position:fixed;inset:50% auto auto 50%;width:min(700px,calc(100% - 32px));max-width:700px;max-height:min(92dvh,900px);margin:0;padding:34px;border:1px solid #eee8f0;border-radius:10px;background:#fffdfd;color:var(--ink);box-shadow:0 24px 90px #17130f40;transform:translate(-50%,-50%);overflow:auto}
.dialog::backdrop{background:#18131f99;backdrop-filter:blur(4px)}
.dialog-close{position:absolute;top:14px;right:14px;z-index:4;display:grid;place-items:center;width:38px;height:38px;border:0;border-radius:50%;background:#f3eef3;color:var(--ink);font-size:23px;line-height:1;cursor:pointer}
.dialog h2{margin:8px 40px 12px 0;color:var(--ink);font-family:var(--serif);font-size:clamp(32px,5vw,48px);font-weight:400;letter-spacing:-1.5px;line-height:1.1}
.dialog p{color:#77717f;font-size:11px;line-height:1.7}
.form-stack{display:grid;gap:14px;margin:22px 0}
.form-stack label,.booking-form label{display:grid;gap:6px;color:#645d6d;font-size:10px;font-weight:600}
.form-stack input,.form-stack select,.form-stack textarea,.booking-form input,.booking-form select,.booking-form textarea{width:100%;min-height:43px;padding:10px 12px;border:1px solid #e3dce9;border-radius:5px;background:#fff;color:var(--ink);font-size:11px}
.form-stack textarea,.booking-form textarea{min-height:90px;resize:vertical}
.form-stack .button,.booking-form>.button{width:100%;min-height:48px}
.link-button{border:0;background:none;color:#258d99;font-size:10px;font-weight:700;cursor:pointer}
.booking-form{display:grid;grid-template-columns:repeat(2,minmax(0,1fr));gap:13px;margin-top:22px}
.booking-form .full-field,.booking-form>.button{grid-column:1/-1}
.dialog-notice{overflow-wrap:anywhere}
.toast{position:fixed;z-index:100;right:20px;bottom:22px;max-width:min(430px,calc(100vw - 40px));padding:13px 17px;border-radius:7px;background:var(--ink);color:#fff;font-size:11px;line-height:1.5;box-shadow:0 8px 30px #17130f2c;opacity:0;pointer-events:none;transform:translateY(10px);transition:opacity .2s,transform .2s}
.toast.show{opacity:1;transform:translateY(0)}

@media(max-width:1050px){.hero{padding-right:5vw;padding-left:5vw;gap:3vw}.hero h1{font-size:clamp(58px,7vw,78px)}.section-wrap{width:min(calc(100% - 48px),1120px)}.footer{grid-template-columns:auto 1fr;row-gap:20px}.copyright{grid-column:1/-1;text-align:center}}
@media(max-width:480px){.booking-row{gap:10px;padding:11px}.booking-row .field-label{flex-basis:74px;min-width:74px}.booking-row input{width:74px}.dialog{padding:28px 17px}.booking-form{grid-template-columns:minmax(0,1fr)}.booking-form .full-field,.booking-form>.button{grid-column:1}}
