
    :root {
      --blue: #2b5597;
      --blue-deep: #173c76;
      --pink: #cc5599;
      --pink-text: #b83e80;
      --ink: #252a32;
      --muted: #69717b;
      --line: #dfe4eb;
      --paper: #fff;
      --wash: #f8faff;
      --blush: #fff7fb;
      --pale-blue: #e3eeff;
      --radius: 24px;
      --shadow-soft: 0 8px 26px rgba(27, 55, 94, .07);
      --shadow-float: 0 18px 42px rgba(27, 55, 94, .12);
      --serif: "Marcellus", Georgia, serif;
      --sans: "DM Sans", "Lato", Arial, sans-serif;
      --script: "Homemade Apple", cursive;
      --container: 1240px;
      --gutter: clamp(22px, 6vw, 92px);
    }
    *, *::before, *::after { box-sizing: border-box; }
    .icon-library { position: absolute; width: 0; height: 0; overflow: hidden; }
    html { scroll-behavior: smooth; scroll-padding-top: 96px; }
    body { margin: 0; color: var(--ink); background: var(--paper); font-family: var(--sans); font-size: 16px; line-height: 1.6; -webkit-font-smoothing: antialiased; }
    a { color: inherit; }
    button, select { font: inherit; }
    img { max-width: 100%; display: block; }
    .skip-link { position: absolute; z-index: 100; top: 8px; left: 8px; padding: 10px 14px; background: var(--blue-deep); color: white; transform: translateY(-150%); }
    .skip-link:focus { transform: translateY(0); }
    .container { width: min(calc(100% - (var(--gutter) * 2)), var(--container)); margin-inline: auto; }
    .eyebrow { margin: 0 0 16px; color: var(--blue); font-size: 11px; font-weight: 700; letter-spacing: .18em; line-height: 1.4; text-transform: uppercase; }
    .section-title { margin: 0; max-width: 780px; font: 400 clamp(32px, 4vw, 52px)/1.1 var(--serif); letter-spacing: -.025em; }
    .section-intro { max-width: 570px; margin: 19px 0 0; color: var(--muted); font-size: 16px; }
    .section-head { display: flex; align-items: end; justify-content: space-between; gap: 36px; margin-bottom: 42px; }
    .section-head .section-intro { max-width: 390px; margin: 0; }
    .text-link { display: inline-flex; align-items: center; gap: 10px; color: var(--blue); font-weight: 700; text-decoration: none; }
    .text-link::after { content: "↗"; font-size: 18px; transition: transform .25s ease; }
    .text-link:hover::after { transform: translate(3px, -3px); }
    .button { min-height: 50px; display: inline-flex; align-items: center; justify-content: center; gap: 11px; padding: 0 22px; border: 1px solid var(--blue); border-radius: 999px; background: var(--blue); color: #fff; font-size: 13px; font-weight: 700; text-decoration: none; box-shadow: var(--shadow-soft); transition: background .2s ease, color .2s ease, border-color .2s ease, transform .2s ease, box-shadow .2s ease; }
    .button:hover { background: var(--blue-deep); border-color: var(--blue-deep); transform: translateY(-2px); box-shadow: var(--shadow-float); }
    .button--light { background: transparent; color: var(--blue); }
    .button--light:hover { background: var(--blue); color: white; }
    .button--small { min-height: 42px; padding-inline: 16px; }
    .button .wa-mark { width: 18px; height: 18px; object-fit: contain; }
    .platform-links { display: flex; align-items: center; gap: 11px; }
    .platform-link { display: inline-grid; place-items: center; width: 54px; height: 54px; padding: 0; border: 1px solid #e1e7f0; border-radius: 50%; background: #fff; text-decoration: none; box-shadow: var(--shadow-soft); transition: transform .2s ease, box-shadow .2s ease; }
    .platform-link { font-size: 0; }
    .platform-link:hover { transform: translateY(-3px); box-shadow: var(--shadow-float); }
    .platform-mark { width: 42px; height: 42px; display: grid; place-items: center; border-radius: 50%; background: #f6f8fb; }
    .platform-mark img { width: 28px; height: 28px; object-fit: contain; }
    .button:focus-visible, a:focus-visible, button:focus-visible, select:focus-visible { outline: 3px solid var(--pink-text); outline-offset: 3px; }

    /* Header */
    .site-header { position: sticky; z-index: 50; top: 0; background: rgba(255,255,255,.96); border-bottom: 1px solid rgba(43,85,151,.12); box-shadow: 0 6px 22px rgba(23,60,118,.045); backdrop-filter: blur(12px); }
    .header-inner { min-height: 84px; display: flex; align-items: center; justify-content: space-between; gap: 28px; }
    .wordmark { display: inline-flex; align-items: center; gap: 9px; min-width: 205px; text-decoration: none; white-space: nowrap; }
    .wordmark img { width: 42px; height: 42px; object-fit: contain; }
    .wordmark-text { display: flex; align-items: baseline; gap: 3px; line-height: 1; padding: 2px 0 0; }
    .wordmark-prestige { color: var(--blue); font: 400 26px var(--serif); letter-spacing: .005em; }
    .wordmark-living { color: var(--pink); font: 400 20px/1.2 var(--script); transform: translateY(-1px); margin-left: 1px; }
    .main-nav { display: flex; align-items: center; justify-content: center; gap: clamp(18px, 2.5vw, 38px); }
    .main-nav a { color: #343a43; font-size: 12px; font-weight: 600; text-decoration: none; transition: color .2s ease; }
    .main-nav a:hover { color: var(--pink-text); }
    .header-actions { display: flex; align-items: center; gap: 13px; }
    .header-actions .button { min-height: 44px; padding-inline: 16px; }
    .menu-toggle { display: none; border: 0; background: transparent; color: var(--blue); width: 44px; height: 44px; cursor: pointer; }
    .menu-toggle span, .menu-toggle::before, .menu-toggle::after { content: ""; display: block; height: 1.5px; width: 21px; margin: 5px auto; background: currentColor; transition: transform .2s ease; }

    /* Hero */
    .hero { overflow: hidden; padding: 42px 0 90px; }
    .hero-grid { min-height: 590px; display: grid; grid-template-columns: minmax(350px, .82fr) minmax(470px, 1.18fr); align-items: center; gap: clamp(38px, 7vw, 102px); }
    .hero-copy { position: relative; z-index: 2; padding: 24px 0 12px; }
    .hero-copy::before { content:""; position:absolute; z-index:-1; top:-8px; left:-46px; width:124px; height:124px; border:0; border-radius:0; background:url("data:image/svg+xml,%3Csvg xmlns=%22http://www.w3.org/2000/svg%22 viewBox=%220 0 140 140%22 fill=%22none%22%3E%3Cg stroke=%22%23cc5599%22 stroke-width=%221.5%22 stroke-linecap=%22round%22 stroke-linejoin=%22round%22 opacity=%22.62%22%3E%3Cpath d=%22M30 112C51 93 73 73 111 29%22/%3E%3Cpath d=%22M43 98C31 92 25 80 28 69c12 2 21 10 23 21%22/%3E%3Cpath d=%22M58 83C48 72 47 58 53 48c12 7 17 18 14 29%22/%3E%3Cpath d=%22M76 64C68 52 70 39 79 30c9 10 11 22 5 33%22/%3E%3Cpath d=%22M47 96c12 2 22-3 28-13-12-5-23-1-30 8%22/%3E%3Cpath d=%22M67 76c13 0 23-7 26-18-13-3-24 2-29 13%22/%3E%3Cpath d=%22M87 52c12-2 19-10 20-21-12-1-22 5-25 16%22/%3E%3C/g%3E%3C/svg%3E") center/contain no-repeat; transform:rotate(-8deg); }
    .hero h1 { margin: 0; max-width: 600px; color: var(--blue-deep); font: 400 clamp(48px, 5vw, 66px)/1.06 var(--serif); letter-spacing: -.035em; }
    .hero h1 .pink { display: inline-block; color: var(--pink); font: 400 .88em/1.4 var(--script); letter-spacing: 0; transform: translateY(5px); }
    .hero-lead { max-width: 445px; margin: 25px 0 0; color: #5f6873; font-size: 16px; line-height: 1.8; }
    .hero-actions { display: flex; flex-wrap: wrap; gap: 12px; margin-top: 29px; }
    .hero-note { display: flex; align-items: center; gap: 12px; margin-top: 36px; color: var(--muted); font-size: 12px; }
    .hero-note::before { content: ""; display: block; width: 33px; height: 1px; background: var(--pink); }
    .hero-visual { position: relative; min-height: 540px; }
    .hero-photo { position: absolute; inset: 0 0 28px 60px; overflow: hidden; border-radius: var(--radius) var(--radius) 92px var(--radius); background: var(--wash); }
    .hero-photo, .room-image, .hall-image { touch-action: pan-y pinch-zoom; }
    .hero-photo { box-shadow: 0 24px 60px rgba(23,60,118,.16); }
    .hero-photo img { position: absolute; inset: -2%; width: 104%; height: 104%; object-fit: cover; object-position: center 53%; opacity: 0; transform: scale(1.02); transition: opacity .8s ease, transform 1.2s cubic-bezier(.2,.65,.25,1); }
    .hero-photo img.is-active { opacity: 1; transform: translate3d(0,var(--scroll-shift, 0),0) scale(1.07); }
    .hero-photo .gallery-controls, .hero-photo .gallery-expand { z-index: 4; }
    .hero-photo .gallery-count { position: absolute; z-index: 4; right: 61px; bottom: 19px; color: white; font-size: 11px; font-weight: 700; text-shadow: 0 1px 5px #111; }
    .hero-frame { position: absolute; z-index: -1; inset: 28px 28px 0 88px; border: 1px solid var(--pink); border-radius: var(--radius) var(--radius) 92px var(--radius); }
    .hero-stamp { position: absolute; right: 21px; bottom: 0; width: 126px; height: 126px; display: grid; place-items: center; padding: 16px; border-radius: 50%; background: var(--blue); color: #fff; text-align: center; font: 400 14px/1.35 var(--serif); transform: rotate(7deg); }
    .hero-stamp span { display: block; color: #f5bfdc; font: 400 19px var(--script); }
    .hero-vertical { position: absolute; top: 10px; left: 9px; writing-mode: vertical-rl; color: var(--blue); font-size: 10px; font-weight: 700; letter-spacing: .16em; text-transform: uppercase; }

    /* Quick facts */
    .facts { background: var(--wash); border-block: 1px solid #e7edf6; }
    .facts-grid { display: grid; grid-template-columns: repeat(4, 1fr); }
    .fact { min-height: 112px; display: flex; flex-direction: column; justify-content: center; padding: 17px 25px; border-left: 1px solid #dce5f1; }
    .fact:last-child { border-right: 1px solid #dce5f1; }
    .fact-label { color: var(--muted); font-size: 10px; font-weight: 700; letter-spacing: .13em; text-transform: uppercase; }
    .fact strong { margin-top: 4px; color: var(--blue-deep); font: 400 20px/1.25 var(--serif); }

    /* Room choices */
    .rooms { padding: 112px 0 118px; }
    .room-grid { display: grid; grid-template-columns: repeat(3, minmax(0,1fr)); gap: 17px; }
    .room-card { position: relative; overflow: hidden; border: 1px solid var(--line); border-radius: var(--radius); background: #fff; box-shadow: var(--shadow-soft); transition: transform .3s ease, box-shadow .3s ease; }
    .room-card:hover { transform: translateY(-5px); box-shadow: var(--shadow-float); }
    .room-image { position: relative; height: 235px; overflow: hidden; background: var(--wash); }
    .room-image img { width: 100%; height: 100%; object-fit: cover; transition: transform .7s cubic-bezier(.2,.65,.25,1); }
    .expandable { cursor: zoom-in; }
    .room-image img:not(.is-active) { display: none; }
    .gallery-controls { position: absolute; z-index: 3; right: 13px; bottom: 12px; display: flex; gap: 7px; }
    .gallery-controls button, .review-controls button { display: grid; place-items: center; width: 38px; height: 38px; border: 1px solid rgba(255,255,255,.75); border-radius: 50%; background: rgba(255,255,255,.93); color: var(--blue-deep); cursor: pointer; box-shadow: var(--shadow-soft); }
    .gallery-expand { position: absolute; z-index: 3; left: 13px; bottom: 12px; padding: 8px 12px; border: 0; border-radius: 999px; background: rgba(255,255,255,.93); color: var(--blue-deep); font-size: 11px; font-weight: 700; cursor: pointer; box-shadow: var(--shadow-soft); }
    .room-card:hover .room-image img { transform: scale(1.035); }
    .room-index { position: absolute; left: 15px; top: 15px; display: grid; place-items: center; width: 35px; height: 35px; border-radius: 50%; background: #fff; color: var(--blue); font: 400 13px var(--serif); }
    .room-body { padding: 20px 20px 18px; }
    .room-title-row { display: flex; align-items: baseline; justify-content: space-between; gap: 10px; }
    .room-card h3 { margin: 0; color: var(--blue-deep); font: 400 22px/1.25 var(--serif); }
    .room-body > p { margin: 6px 0 17px; color: var(--muted); font-size: 12px; }
    .price-lines { border-top: 1px solid var(--line); }
    .price-line { display: grid; grid-template-columns: 1fr auto; align-items: center; gap: 10px; min-height: 45px; border-bottom: 1px solid var(--line); font-size: 12px; }
    .price-line span { color: #5f6873; }
    .price-line strong { color: var(--blue-deep); font-size: 14px; }
    .deposit-note { margin: 12px 0 0; color: #687280; font-size: 11px; }
    .room-card .text-link { margin-top: 15px; font-size: 12px; }
    .room-footnote { display: flex; align-items: start; gap: 13px; margin-top: 29px; padding: 19px 22px; background: var(--wash); color: #5b6571; font-size: 13px; }
    .room-footnote { border-radius: 18px; box-shadow: var(--shadow-soft); }
    .room-footnote strong { color: var(--blue-deep); }
    .room-footnote-mark { color: var(--pink); font: 400 25px var(--serif); }
    .room-inclusions { margin-top: 28px; padding: 24px 27px 27px; border: 1px solid #eedce8; border-radius: 24px; background: linear-gradient(130deg,#fff8fc,#fff); box-shadow: var(--shadow-soft); }
    .room-inclusions .eyebrow { margin-bottom: 7px; }
    .room-inclusions h3 { margin: 0 0 17px; color: var(--blue-deep); font: 400 25px/1.2 var(--serif); }
    .room-inclusion-grid { display: grid; grid-template-columns: repeat(3,minmax(0,1fr)); gap: 10px 18px; }
    .room-inclusion-grid span { position: relative; padding: 9px 10px 9px 25px; border-radius: 12px; background: rgba(255,255,255,.8); color: #4f5964; font-size: 12px; }
    .room-inclusion-grid span::before { content: "✦"; position: absolute; left: 9px; color: var(--pink); }

    /* Living and meals */
    .living { padding: 105px 0 112px; background: var(--blue-deep); color: white; }
    .living .eyebrow { color: #f0a7d0; }
    .living .section-title { color: white; }
    .living .section-intro { color: #d2dced; }
    .living-grid { display: grid; grid-template-columns: minmax(0,1.05fr) minmax(380px,.95fr); gap: clamp(42px, 7vw, 94px); align-items: center; }
    .hall-image { position: relative; min-height: 500px; overflow: hidden; border-radius: var(--radius) var(--radius) 92px var(--radius); background: #254a7e; box-shadow: 0 24px 60px rgba(8,25,50,.22); }
    .hall-image img { position: absolute; inset: 0; width: 100%; height: 100%; object-fit: cover; object-position: center; }
    .hall-image img:not(.is-active) { display: none; }
    .hall-image::after { content: ""; position: absolute; z-index: 1; inset: 50% 0 0; pointer-events: none; background: linear-gradient(transparent,rgba(10,28,55,.8)); }
    .hall-caption { position: absolute; z-index: 2; bottom: 25px; left: 26px; max-width: calc(100% - 160px); color: #fff; font-size: 11px; letter-spacing: .08em; text-transform: uppercase; pointer-events: none; }
    .hall-image .gallery-controls, .hall-image .gallery-expand { z-index: 4; }
    .living-copy .section-title { font-size: clamp(37px,4.2vw,56px); }
    .meal-list { margin: 32px 0 0; border-top: 1px solid rgba(255,255,255,.3); }
    .meal-row { display: grid; grid-template-columns: 96px 1fr; gap: 16px; padding: 15px 0; border-bottom: 1px solid rgba(255,255,255,.25); }
    .meal-time { color: #f3acd2; font-size: 12px; font-weight: 700; }
    .meal-content { display:grid; gap:5px; min-width:0; }
    .meal-name { color: #fff; font: 400 18px var(--serif); }
    .meal-detail { max-width:52ch; color:#d3ddec; font-size:12px; line-height:1.5; }
    .multipurpose { margin: 24px 0 0; color: #d3ddec; font-size: 13px; }
    .multipurpose strong { color: #fff; font-weight: 600; }
    .living-link { display: inline-flex; margin-top: 23px; color: white; font-size: 13px; font-weight: 700; text-decoration-color: #f0a7d0; text-underline-offset: 6px; }

    /* Support */
    .support { padding: 112px 0; }
    .support-intro { display: grid; grid-template-columns: .9fr 1.1fr; gap: 80px; align-items: end; margin-bottom: 45px; }
    .amenity-grid { display: grid; grid-template-columns: repeat(4,1fr); gap: 13px; }
    .amenity-card { min-height: 170px; padding: 21px; border: 1px solid #e5e9f0; border-radius: 20px; background: #fff; box-shadow: var(--shadow-soft); transition: transform .25s ease, box-shadow .25s ease; }
    .amenity-card:hover { transform: translateY(-5px); box-shadow: var(--shadow-float); }
    .amenity-icon { width: 43px; height: 43px; display: block; margin-bottom: 18px; padding: 9px; border-radius: 15px; background: var(--blush); color: var(--pink); }
    .amenity-icon use { stroke: currentColor; fill: none; stroke-width: 1.6; stroke-linecap: round; stroke-linejoin: round; }
    .amenity-card h3 { margin: 0 0 5px; color: var(--blue-deep); font: 400 18px/1.25 var(--serif); }
    .amenity-card p { margin: 0; color: var(--muted); font-size: 11px; line-height: 1.5; }

    /* Location */
    .location { padding: 106px 0 108px; background: var(--wash); border-block: 1px solid #e7edf6; }
    .location-grid { display: grid; grid-template-columns: minmax(0,1fr) minmax(340px,.8fr); gap: 58px; align-items: center; }
    .location-list { display: grid; grid-template-columns: 1fr 1fr; gap: 0 22px; margin: 30px 0 27px; border-top: 1px solid #d9e2ef; }
    .location-list span { padding: 12px 0; border-bottom: 1px solid #d9e2ef; color: #424b57; font-size: 13px; }
    .location-list span::before { content: ""; display: inline-block; width: 6px; height: 6px; margin: 0 10px 2px 0; border-radius: 50%; background: var(--pink); }
    .map-tool { padding: 27px; background: #fff; border: 1px solid var(--line); border-radius: var(--radius); box-shadow: 0 16px 42px rgba(38,61,92,.055); }
    .map-tool h3 { margin: 0 0 7px; color: var(--blue-deep); font: 400 25px var(--serif); }
    .map-tool > p { margin: 0 0 18px; color: var(--muted); font-size: 12px; }
    .map-tool label { display: block; margin-bottom: 7px; color: #4b5562; font-size: 11px; font-weight: 700; }
    .map-controls { display: grid; grid-template-columns: 1fr auto; gap: 10px; }
    .map-controls select { min-width: 0; min-height: 48px; padding: 0 12px; border: 1px solid #bfcbd9; border-radius: 0; background: #fff; color: var(--ink); }
    .map-note { margin: 12px 0 0 !important; font-size: 11px !important; }
    .address { margin: 20px 0 0; color: #56606c; font-size: 12px; line-height: 1.7; }
    .transport-card { padding: 30px; border: 1px solid #e7d8e3; border-radius: var(--radius); background: var(--blush); box-shadow: var(--shadow-soft); }
    .transport-card .transport-icon { width: 52px; height: 52px; display: grid; place-items: center; margin-bottom: 20px; border-radius: 18px; background: #fff; color: var(--pink); box-shadow: var(--shadow-soft); }
    .transport-card h3 { margin: 0; color: var(--blue-deep); font: 400 27px/1.2 var(--serif); }
    .transport-card p { margin: 12px 0 21px; color: #5d6570; font-size: 13px; }
    .transport-card .button { background: var(--pink-text); border-color: var(--pink-text); }

    /* Reviews / close */
    .reviews { padding: 106px 0; }
    .reviews-grid { display: grid; grid-template-columns: .85fr 1.15fr; gap: 65px; align-items: center; }
    .review-panel { display: flex; align-items: center; justify-content: space-between; gap: 26px; padding: 28px; background: var(--wash); border-left: 3px solid var(--pink); border-radius: var(--radius); }
    .review-panel p { max-width: 520px; margin: 0; color: var(--blue-deep); font: 400 24px/1.35 var(--serif); }
    .review-panel .button { flex: 0 0 auto; }
    .review-label { display: flex; align-items: center; gap: 9px; margin-top: 14px; color: var(--muted); font-size: 11px; }
    .review-label img { width: 24px; height: 24px; object-fit: contain; flex: none; }
    .review-carousel { position: relative; overflow: hidden; }
    .review-track { display: flex; gap: 16px; overflow-x: auto; padding: 4px 3px 20px; scroll-snap-type: x mandatory; scrollbar-width: thin; scrollbar-color: #d8b6cc transparent; }
    .review-card { flex: 0 0 min(100%, 520px); min-height: 250px; display: flex; flex-direction: column; padding: 26px; border: 1px solid #eee2eb; border-radius: var(--radius); background: var(--blush); box-shadow: var(--shadow-soft); scroll-snap-align: start; }
    .review-stars { color: #96600e; letter-spacing: .12em; font-size: 14px; }
    .review-card blockquote { flex: 1; margin: 18px 0; color: var(--blue-deep); font: 400 20px/1.48 var(--serif); }
    .review-author { display: flex; align-items: center; justify-content: space-between; gap: 15px; color: var(--muted); font-size: 11px; }
    .review-author strong { color: var(--blue-deep); font-size: 12px; }
    .review-author a { color: var(--blue); font-weight: 700; }
    .feel-quote { color: var(--blue-deep); }
    .feel-wordmark { display: inline-flex; align-items: baseline; gap: 3px; margin-left: 5px; white-space: nowrap; }
    .feel-wordmark > span { color: var(--blue); font: 400 .66em var(--serif); letter-spacing: 0; }
    .feel-wordmark em { color: var(--pink); font: 400 .38em var(--script); font-style: normal; transform: translateY(3px); }
    .review-controls { display: flex; justify-content: end; gap: 9px; margin-bottom: 12px; }
    .review-controls button { border: 1px solid var(--line); }
    .contact { padding: 108px 0; background: linear-gradient(180deg,#fff 0%,var(--wash) 100%); }
    .contact-grid { display: grid; grid-template-columns: minmax(0,.9fr) minmax(420px,1.1fr); gap: 58px; align-items: stretch; }
    .contact-copy { display: flex; flex-direction: column; align-items: flex-start; }
    .contact-copy h2 { max-width: 600px; margin: 0; color: var(--blue-deep); font: 400 clamp(34px,4vw,52px)/1.1 var(--serif); }
    .contact-copy > p { max-width: 500px; margin: 18px 0 24px; color: var(--muted); }
    .contact-actions { display: flex; flex-wrap: wrap; gap: 11px; margin-bottom: 28px; }
    .contact-details { width: 100%; display: grid; grid-template-columns: 1fr 1fr; gap: 12px; }
    .contact-detail { padding: 16px; border: 1px solid #e3e8ef; border-radius: 18px; background: #fff; box-shadow: var(--shadow-soft); transition: transform .2s ease, box-shadow .2s ease; }
    .contact-detail:hover { transform: translateY(-3px); box-shadow: var(--shadow-float); }
    .contact-detail span { display: block; color: var(--muted); font-size: 10px; font-weight: 700; letter-spacing: .12em; text-transform: uppercase; }
    .contact-detail strong, .contact-detail a { display: block; margin-top: 5px; color: var(--blue-deep); font: 400 17px/1.35 var(--serif); text-decoration: none; }
    .contact-social { display: flex; flex-wrap: wrap; gap: 12px; margin-top: 22px; }
    .map-embed-wrap { display: flex; flex-direction: column; min-width: 0; min-height: 0; height: 100%; overflow: hidden; border: 8px solid #fff; border-radius: 32px; background: #e8edf2; box-shadow: var(--shadow-float); }
    .map-embed { display: block; flex: 1 1 auto; width: 100%; min-height: 420px; height: auto; border: 0; }
    .map-caption { display: flex; align-items: center; justify-content: space-between; gap: 18px; padding: 17px 20px; background: #fff; }
    .map-caption address { color: var(--blue-deep); font-size: 12px; font-style: normal; line-height: 1.5; }
    .map-caption a { flex: 0 0 auto; color: var(--blue); font-size: 11px; font-weight: 700; text-decoration: none; }
    .transport-dialog { width: min(92vw, 620px); max-height: min(90vh, 820px); padding: 0; border: 0; border-radius: 28px; box-shadow: 0 24px 90px rgba(20,38,67,.3); }
    .transport-dialog::backdrop { background: rgba(18,34,60,.58); backdrop-filter: blur(5px); }
    .shuttle-schedule { margin: 22px 0; border-top: 1px solid var(--line); }
    .shuttle-row { display: grid; grid-template-columns: 100px 1fr; gap: 16px; padding: 13px 0; border-bottom: 1px solid var(--line); }
    .shuttle-time { color: var(--pink-text); font-size: 12px; font-weight: 700; }
    .shuttle-stop { color: var(--blue-deep); font: 400 17px/1.35 var(--serif); }
    .shuttle-note { margin: 15px 0 0; color: var(--muted); font-size: 12px; line-height: 1.6; }
    .fleet-figure { margin: 0 0 20px; }
    .fleet-figure img { width: 100%; aspect-ratio: 16/9; object-fit: cover; border-radius: 18px; }
    .fleet-figure figcaption { margin-top: 7px; color: var(--muted); font-size: 10px; }
    .grove-feature { position: relative; overflow: hidden; padding: 80px 0; background: var(--blue-deep); color: #fff; }
    .grove-feature::before, .grove-feature::after { content: ""; position: absolute; width: 330px; height: 330px; border: 1px solid rgba(255,255,255,.15); border-radius: 50%; pointer-events: none; }
    .grove-feature::before { top: -160px; right: 8%; }
    .grove-feature::after { bottom: -220px; right: 25%; width: 420px; height: 420px; }
    .grove-feature-inner { position: relative; z-index: 1; display: grid; grid-template-columns: 1.1fr .9fr; align-items: center; gap: 60px; }
    .grove-feature .eyebrow { color: #f5bddb; }
    .grove-feature h2 { margin: 0; color: #fff; font: 400 clamp(39px,5vw,64px)/1.08 var(--serif); }
    .grove-script { display: inline-block; margin-top: 7px; color: #f4afd2; font: 400 clamp(25px,3vw,36px)/1.6 var(--script); }
    .grove-feature p { max-width: 560px; color: #d8e2f0; font-size: 14px; }
    .grove-feature .button { margin-top: 13px; border-color: #fff; background: #fff; color: var(--blue-deep); }
    .grove-points { display: grid; grid-template-columns: 1fr 1fr; gap: 11px; }
    .grove-point { min-height: 93px; padding: 17px; border: 1px solid rgba(255,255,255,.18); border-radius: 18px; background: rgba(255,255,255,.06); color: #fff; box-shadow: 0 8px 24px rgba(0,0,0,.08); }
    .grove-point strong { display: block; color: #fff; font: 400 17px var(--serif); }
    .grove-point span { display: block; margin-top: 5px; color: #d8e2f0; font-size: 11px; }

    /* Footer */
    .site-footer { padding: 54px 0 26px; background: #f8faff; }
    .footer-main { display: grid; grid-template-columns: 1.2fr .8fr .8fr 1fr; gap: 40px; padding-bottom: 42px; }
    .footer-brand p { max-width: 265px; margin: 18px 0 0; color: var(--muted); font-size: 12px; }
    .footer-column h3 { margin: 0 0 15px; color: var(--blue-deep); font: 400 17px var(--serif); }
    .footer-column a, .footer-column p { display: block; margin: 8px 0; color: #5f6873; font-size: 12px; text-decoration: none; }
    .footer-column a:hover { color: var(--pink-text); }
    .social-links { display: flex; flex-wrap: wrap; gap: 11px; margin-top: 16px; }
    .social-link { display: flex !important; align-items: center; gap: 7px; width: auto; min-height: 40px; padding: 6px 10px; border: 1px solid #dce4ef; border-radius: 999px; background: #fff; }
    .social-link img { width: 22px; height: 22px; object-fit: contain; }
    .social-link span { color: #46515e; font-size: 10px; font-weight: 700; }
    .footer-bottom { display: flex; justify-content: space-between; gap: 22px; padding-top: 18px; border-top: 1px solid #dce4ef; color: #626b75; font-size: 10px; }
    .portfolio-link { color: var(--blue); font-weight: 700; text-decoration: none; }
    .portfolio-link:hover { color: var(--pink-text); }
    .social-link:hover { transform: translateY(-3px); box-shadow: var(--shadow-float); }
    .enquiry-dialog, .image-dialog { width: min(92vw, 560px); max-height: min(90vh, 850px); padding: 0; border: 0; border-radius: 28px; box-shadow: 0 24px 90px rgba(20,38,67,.3); }
    .enquiry-dialog::backdrop, .image-dialog::backdrop { background: rgba(18,34,60,.58); backdrop-filter: blur(5px); }
    .dialog-inner { padding: 30px; background: #fff; }
    .dialog-top { display: flex; justify-content: space-between; gap: 20px; align-items: start; }
    .dialog-top h2 { margin: 0; color: var(--blue-deep); font: 400 32px/1.1 var(--serif); }
    .dialog-top p { margin: 8px 0 21px; color: var(--muted); font-size: 13px; }
    .dialog-close { flex: 0 0 auto; width: 40px; height: 40px; border: 0; border-radius: 50%; background: var(--wash); color: var(--blue-deep); font-size: 20px; cursor: pointer; }
    .enquiry-form { display: grid; grid-template-columns: 1fr 1fr; gap: 14px; }
    .enquiry-form label { display:block; min-width:0; color:#4b5562; font-size:11px; font-weight:700; }
    .enquiry-form input, .enquiry-form select { box-sizing:border-box; display:block; width:100%; min-width:0; min-height:54px; margin-top:7px; padding:0 14px; border:1px solid #d7dce4; border-radius:15px; background-color:#fff; color:var(--ink); font:500 15px/1.25 "DM Sans",sans-serif; }
    .enquiry-form select { appearance:none; padding-right:42px; background-image:url("data:image/svg+xml,%3Csvg xmlns=%27http://www.w3.org/2000/svg%27 width=%2716%27 height=%2716%27 viewBox=%270 0 16 16%27 fill=%27none%27 stroke=%27%23214c8d%27 stroke-width=%271.6%27 stroke-linecap=%27round%27 stroke-linejoin=%27round%27%3E%3Cpath d=%27m3 6 5 5 5-5%27/%3E%3C/svg%3E"); background-repeat:no-repeat; background-position:right 15px center; background-size:16px; }
    .enquiry-form input[type="date"] { min-height:54px; padding-right:12px; color-scheme:light; }
    .enquiry-form input[type="date"]::-webkit-calendar-picker-indicator { width:20px; height:20px; margin:0 1px 0 6px; cursor:pointer; opacity:.78; }
    .enquiry-form input:focus-visible, .enquiry-form select:focus-visible { outline:3px solid var(--pink-text); outline-offset:2px; border-color:var(--pink-text); }
    .enquiry-form .field-wide { grid-column: 1 / -1; }
    .enquiry-form .button { width: 100%; margin-top: 3px; }
    .image-dialog { width: min(94vw, 1200px); background: #111; }
    .image-dialog img { max-height: 82vh; width: 100%; object-fit: contain; }
    .image-dialog .dialog-close { position: absolute; z-index: 1; top: 14px; right: 14px; }

    /* Responsive and motion */
    .motion-ready [data-reveal] { opacity: 0; transform: translateY(18px); transition: opacity .7s ease, transform .7s cubic-bezier(.2,.65,.25,1); }
    .motion-ready [data-reveal].is-visible { opacity: 1; transform: translateY(0); }
    [data-reveal-delay="1"] { transition-delay: .08s; }
    [data-reveal-delay="2"] { transition-delay: .16s; }
    [data-reveal-delay="3"] { transition-delay: .24s; }
    @media (prefers-reduced-motion: reduce) {
      *, *::before, *::after { scroll-behavior: auto !important; transition-duration: .01ms !important; animation-duration: .01ms !important; animation-iteration-count: 1 !important; }
      [data-reveal] { opacity: 1; transform: none; }
    }
    @media (max-width: 1050px) {
      :root { --gutter: clamp(22px, 4vw, 54px); }
      .main-nav { gap: 17px; }
      .wordmark { min-width: 184px; }
      .wordmark-prestige { font-size: 23px; }
      .wordmark-living { font-size: 20px; }
      .hero-grid { grid-template-columns: minmax(300px,.85fr) minmax(390px,1.15fr); gap: 45px; }
      .amenity-grid { grid-template-columns: repeat(3,1fr); }
    }
    @media (max-width: 800px) {
      html { scroll-padding-top: 76px; }
      :root { --gutter: 24px; }
      .header-inner { min-height: 72px; }
      .menu-toggle { display: block; order: 3; }
      .header-actions { margin-left: auto; }
      .header-actions .button { min-height: 40px; padding-inline: 12px; font-size: 11px; }
      .main-nav { position: absolute; top: 71px; left: 0; right: 0; display: none; flex-direction: column; align-items: stretch; gap: 0; padding: 8px var(--gutter) 18px; background: #fff; border-bottom: 1px solid var(--line); box-shadow: 0 16px 20px rgba(18,43,80,.08); }
      .main-nav.is-open { display: flex; }
      .main-nav a { padding: 12px 0; border-bottom: 1px solid #edf0f4; font-size: 14px; }
      .hero { padding: 31px 0 64px; }
      .hero-grid { min-height: 0; grid-template-columns: 1fr; gap: 38px; }
      .hero-copy { max-width: 620px; }
      .hero h1 { max-width: 600px; font-size: clamp(46px, 8vw, 64px); }
      .hero-visual { min-height: min(69vw, 500px); }
      .hero-photo { inset: 0 0 18px 30px; }
      .hero-frame { inset: 20px 18px 0 47px; }
      .hero-vertical { left: 0; }
      .hero-stamp { width: 100px; height: 100px; right: 8px; font-size: 12px; }
      .hero-stamp span { font-size: 16px; }
      .facts-grid { grid-template-columns: repeat(2,1fr); }
      .fact { min-height: 88px; padding: 14px 17px; border-bottom: 1px solid #dce5f1; }
      .fact:nth-child(2) { border-right: 1px solid #dce5f1; }
      .fact strong { font-size: 18px; }
      .rooms, .support, .reviews { padding: 78px 0; }
      .section-head { display: block; margin-bottom: 30px; }
      .section-head .section-intro { margin-top: 13px; }
      .room-grid { grid-template-columns: repeat(2,minmax(0,1fr)); gap: 12px; }
      .room-image { height: 200px; }
      .room-body { padding: 16px 14px; }
      .room-card h3 { font-size: 19px; }
      .living { padding: 78px 0; }
      .living-grid { grid-template-columns: 1fr; gap: 35px; }
      .hall-image { min-height: min(72vw, 440px); }
      .living-copy { max-width: 640px; }
      .support-intro { grid-template-columns: 1fr; gap: 15px; }
      .amenity-grid { grid-template-columns: repeat(2,1fr); }
      .location { padding: 78px 0; }
      .location-grid { grid-template-columns: 1fr; gap: 35px; }
      .transport-card { max-width: 620px; }
      .reviews-grid { grid-template-columns: 1fr; gap: 26px; }
      .contact { padding: 78px 0; }
      .contact-grid { grid-template-columns: 1fr; gap: 36px; }
      .map-embed { height: 370px; }
      .grove-feature-inner { grid-template-columns: 1fr; gap: 35px; }
      .grove-feature { padding: 70px 0; }
      .footer-main { grid-template-columns: repeat(2,1fr); }
      .review-card { flex-basis: min(90%, 480px); }
      body { padding-bottom: 66px; }
      .mobile-cta { position: fixed; z-index: 45; right: 0; bottom: 0; left: 0; display: grid; grid-template-columns: 1fr 1fr; gap: 1px; padding: 8px 12px max(8px, env(safe-area-inset-bottom)); background: rgba(255,255,255,.97); border-top: 1px solid #dfe5ed; box-shadow: 0 -8px 22px rgba(23,60,118,.08); }
      .mobile-cta .button { min-height: 46px; }
    }
    @media (max-width: 520px) {
      :root { --gutter: 19px; }
      .wordmark { min-width: 0; gap: 6px; }
      .wordmark img { width: 34px; height: 34px; }
      .wordmark-prestige { font-size: 18px; }
      .wordmark-living { font-size: 16px; }
      .header-actions .button { display: none; }
      .hero h1 { font-size: clamp(43px, 11vw, 55px); }
      .hero-lead { font-size: 14px; }
      .hero-actions { display: grid; grid-template-columns: 1fr; max-width: 310px; }
      .hero-note { margin-top: 25px; }
      .hero-visual { min-height: 75vw; }
      .room-grid { grid-template-columns: 1fr; gap: 15px; }
      .room-image { height: 61vw; min-height: 210px; max-height: 300px; }
      .gallery-controls { right: 10px; bottom: 10px; gap: 8px; }
      .gallery-controls button { width: 44px; height: 44px; touch-action: manipulation; }
      .room-body { padding: 17px; }
      .room-card h3 { font-size: 21px; }
      .room-footnote { padding: 16px; }
      .meal-row { grid-template-columns: 80px 1fr; }
      .amenity-grid { grid-template-columns: 1fr 1fr; gap: 9px; }
      .amenity-card { min-height: 156px; padding: 15px 13px; }
      .amenity-card h3 { font-size: 16px; }
      .amenity-icon { width: 38px; height: 38px; margin-bottom: 13px; }
      .location-list { gap: 0 12px; }
      .location-list span { font-size: 11px; }
      .transport-card { padding: 22px 18px; }
      .review-panel { align-items: flex-start; flex-direction: column; padding: 22px 18px; }
      .review-panel p { font-size: 21px; }
      .footer-main { grid-template-columns: 1fr 1fr; gap: 28px 18px; }
      .footer-brand { grid-column: 1 / -1; }
      .footer-bottom { flex-direction: column; gap: 8px; }
      .contact-details { grid-template-columns: 1fr 1fr; }
      .map-embed-wrap { border-width: 5px; border-radius: 24px; }
      .map-embed { height: 280px; }
      .map-caption { align-items: flex-start; flex-direction: column; gap: 10px; padding: 14px; }
      .grove-points { grid-template-columns: 1fr 1fr; gap: 8px; }
      .grove-point { min-height: 100px; padding: 13px; }
      .enquiry-form { grid-template-columns: 1fr; }
      .enquiry-form .field-wide { grid-column: auto; }
      .dialog-inner { padding: 24px 20px; }
    }
    @media (min-width: 801px) { .mobile-cta { display: none; } }
    /* Finishing details: story, sample menu, FAQs and the sister brand */
    .wordmark { gap: 8px; }
    .feel-wordmark { display: inline-flex; align-items: baseline; gap: 0; margin-left: 10px; white-space: nowrap; vertical-align: baseline; }
    .feel-wordmark > span { color: var(--blue); font: 400 .78em/1 var(--serif); }
    .feel-wordmark em { margin-left: 2px; color: var(--pink); font: 400 .66em/1 var(--script); transform: translateY(7px); }
    .feel-quote { color: var(--blue-deep); }
    .faq { padding: 100px 0; background: #fffafd; }
    .faq .section-head { display: block; margin-bottom: 34px; }
    .faq .section-head .section-intro { max-width: 560px; margin: 13px 0 0; }
    .faq-list { display: grid; grid-template-columns: 1fr 1fr; gap: 10px 18px; }
    .faq-list details { padding: 18px 20px; border: 1px solid #efdeea; border-radius: 18px; background: #fff; box-shadow: var(--shadow-soft); }
    .faq-list summary { color: var(--blue-deep); font: 400 17px/1.35 var(--serif); cursor: pointer; list-style: none; display: flex; align-items: center; justify-content: space-between; gap: 16px; }
    .faq-list summary::-webkit-details-marker { display: none; }
    .faq-list summary::after { content: "+"; color: var(--pink); font: 400 24px/1 var(--sans); }
    .faq-list details[open] summary::after { content: "−"; }
    .faq-list details p { margin: 13px 0 0; color: var(--muted); font-size: 13px; }
    .menu-open { padding: 0; border: 0; background: transparent; cursor: pointer; font: 700 13px var(--sans); text-decoration: underline; text-underline-offset: 5px; }
    .location-list { grid-template-columns: repeat(3,minmax(0,1fr)); }
    .location-list a { padding: 10px 3px; border-bottom: 1px solid #d9e2ef; color: #424b57; font-size: 12px; text-decoration: none; }
    .location-list a::before { content: ""; display: inline-block; width: 6px; height: 6px; margin: 0 8px 2px 0; border-radius: 50%; background: var(--pink); }
    .location-list a:hover { color: var(--pink-text); }
    .review-track { overflow-x: auto; scroll-behavior: smooth; -webkit-overflow-scrolling: touch; touch-action: pan-x pan-y pinch-zoom; scrollbar-width: none; }
    .review-track::-webkit-scrollbar { display:none; }
    .review-track.is-moving { scroll-snap-type: none; }
    .review-card blockquote { quotes: "“" "”"; }
    .review-status { margin-top: 5px; color: var(--muted); font-size: 11px; text-align: right; }
    .review-label img { width: 30px; height: 30px; }
    .grove-feature { background: #1a261e; color: #f5f1ed; }
    .grove-feature::before, .grove-feature::after { border-color: rgba(245,241,237,.13); }
    .grove-feature .eyebrow { color: #d4ccbe; }
    .grove-feature h2 { color: #f5f1ed; font-size: clamp(38px,4.2vw,56px); }
    .grove-feature p { color: #dedbd4; }
    .grove-feature .button { border-color: #c97a5c; background: #c97a5c; color: #fff; }
    .grove-wordmark { width: min(235px,62%); height: auto; margin-bottom: 22px; }
    .grove-showcase { position: relative; min-height: 450px; padding: 22px; border-radius: 32px; background: #3d5544; box-shadow: 0 24px 60px rgba(0,0,0,.22); }
    .grove-showcase-main { width: 100%; height: 340px; object-fit: cover; border-radius: 22px; }
    .grove-showcase-inset { position: absolute; right: 40px; bottom: 65px; display: flex; gap: 10px; padding: 8px; border-radius: 20px; background: #f5f1ed; box-shadow: 0 12px 30px rgba(0,0,0,.18); }
    .grove-showcase-inset img { width: 92px; height: 92px; object-fit: cover; border-radius: 14px; }
    .grove-visit-link { position: absolute; bottom: 22px; left: 27px; color: #f5f1ed; font-size: 12px; font-weight: 700; text-underline-offset: 4px; }
    .menu-dialog, .grove-dialog { width: min(92vw,680px); max-height: min(90vh,850px); padding: 0; border: 0; border-radius: 28px; box-shadow: 0 24px 90px rgba(20,38,67,.3); }
    .menu-dialog::backdrop, .grove-dialog::backdrop { background: rgba(18,34,60,.62); backdrop-filter: blur(5px); }
    .sample-meals { display: grid; grid-template-columns: 1fr 1fr; gap: 11px; }
    .sample-meals section { padding: 16px; border: 1px solid #eee2eb; border-radius: 17px; background: var(--blush); }
    .sample-meals h3 { margin: 0 0 7px; color: var(--blue-deep); font: 400 17px var(--serif); }
    .sample-meals p, .menu-source { margin: 0; color: var(--muted); font-size: 12px; }
    .menu-source { margin-top: 16px; }
    .grove-dialog { width: min(92vw,430px); background: #f5f1ed; }
    .grove-popover { position: relative; padding: 34px; color: #1a261e; text-align: center; }
    .grove-popover .dialog-close { position: absolute; top: 14px; right: 14px; }
    .grove-popover img { width: min(230px,75%); margin: 0 auto 26px; }
    .grove-popover .eyebrow { margin-bottom: 8px; color: #3d5544; }
    .grove-popover h2 { margin: 0; color: #1a261e; font: 400 46px/1.1 var(--serif); }
    .grove-popover p:not(.eyebrow) { color: #59635b; font-size: 14px; }
    .grove-popover .button { border-color: #a9634c; background: #a9634c; }
    .grove-later { display: block; margin: 12px auto 0; padding: 8px 15px; border: 0; background: transparent; color: #59635b; font: 600 12px var(--sans); cursor: pointer; }
    @media (max-width:800px) { .faq-list { grid-template-columns: 1fr; } .grove-showcase { min-height: 380px; } .grove-showcase-main { height: 290px; } .room-inclusion-grid { grid-template-columns: 1fr 1fr; } }
    @media (max-width:520px) { .wordmark { gap: 6px; } .wordmark-living { transform: translateY(4px); } .feel-wordmark { margin-left: 5px; } .feel-wordmark > span { font-size: .65em; } .feel-wordmark em { font-size: .54em; } .faq { padding: 72px 0; } .location-list { grid-template-columns: 1fr 1fr; } .grove-showcase { min-height: 320px; padding: 13px; } .grove-showcase-main { height: 235px; } .grove-showcase-inset { right: 21px; bottom: 54px; } .grove-showcase-inset img { width: 67px; height: 67px; } .sample-meals { grid-template-columns: 1fr; max-height: 54vh; overflow-y: auto; } .grove-popover { padding: 30px 24px; } .header-inner { gap: 10px; } .menu-toggle { width: 38px; } .header-actions .button { min-width: 38px; width: 38px; } .room-inclusions { padding: 20px 15px; } .room-inclusion-grid { grid-template-columns: 1fr; gap: 5px; } }
  

    [data-parallax] .hero-photo img, [data-parallax] > img { transform: translate3d(0,var(--scroll-shift, 0),0) scale(1.06); }
  
/* Editorial polish: calm asymmetry, warm paper and safe gallery controls. */
:root { --paper:#fffdfa; --wash:#f7f6f3; --blush:#fff6fa; --radius:28px; --shadow-soft:0 7px 22px rgba(23,60,118,.065); --shadow-float:0 14px 34px rgba(23,60,118,.10); }
.gallery-controls { right:18px; bottom:18px; }
.gallery-expand { left:18px; bottom:18px; }
.hero-photo .gallery-controls { top:18px; right:18px; bottom:auto; }
.hero-photo .gallery-expand { top:18px; left:18px; bottom:auto; }
.hero-photo .gallery-count { right:22px; bottom:18px; }
.hall-image .gallery-expand { top:18px; left:18px; bottom:auto; }
.hall-image .gallery-controls { right:18px; bottom:18px; }
.hall-caption { left:36px; bottom:26px; max-width:calc(100% - 156px); }
.grove-feature { padding-block:clamp(76px,9vw,126px); background:#f3f0e9; color:#243d2b; }
.grove-feature::before,.grove-feature::after { border-color:rgba(38,66,47,.11); }
.grove-feature .eyebrow { color:#557054; }
.grove-feature h2 { color:#243d2b; font-size:clamp(38px,4.2vw,58px); }
.grove-feature p { color:#5e655c; }
.grove-feature .button { border-color:#a9634c; background:#a9634c; color:#fff; }
.grove-showcase { border-radius:34px 120px 34px 34px; box-shadow:0 18px 50px rgba(29,43,32,.14); }
.grove-showcase-main { border-radius:24px 96px 24px 24px; }
.grove-dialog { width:min(94vw,900px); max-height:min(90vh,780px); overflow:auto; background:#f4f0e8; }
.grove-popover { display:grid; grid-template-columns:1.05fr .95fr; align-items:center; gap:clamp(24px,5vw,55px); padding:clamp(22px,4vw,46px); text-align:left; }
.grove-popover::before { content:""; grid-column:1; grid-row:1; min-height:360px; height:100%; border-radius:20px 110px 20px 20px; background:#d8ded2 url('../grove/grove-facade.jpg') center/cover no-repeat; }
.grove-popover .dialog-close { z-index:2; top:16px; right:16px; }
.grove-popover img { grid-column:2; grid-row:1; width:min(240px,75%); margin:0 0 22px; }
.grove-popover .eyebrow,.grove-popover h2,.grove-popover p:not(.eyebrow),.grove-popover .button,.grove-popover .grove-later { grid-column:2; }
.grove-popover .eyebrow { margin:0 0 -28px; }
.grove-popover h2 { font-size:clamp(38px,5vw,58px); }
.grove-popover p:not(.eyebrow) { font-size:15px; }
.grove-popover .grove-later { margin:0; justify-self:start; }
.grove-later { display:block; padding:8px 0; border:0; background:transparent; color:#59635b; font:600 12px var(--sans); cursor:pointer; }
@media(max-width:650px) { .grove-popover { grid-template-columns:1fr; gap:15px; padding:18px; } .grove-popover::before { grid-column:1; grid-row:1; min-height:220px; height:220px; border-radius:16px 72px 16px 16px; } .grove-popover img,.grove-popover .eyebrow,.grove-popover h2,.grove-popover p:not(.eyebrow),.grove-popover .button,.grove-popover .grove-later { grid-column:1; } .grove-popover img { grid-row:2; width:190px; margin:12px 0 0; } .grove-popover .eyebrow { margin:0; } .grove-popover .grove-later { justify-self:start; } .hall-caption { left:24px; max-width:calc(100% - 115px); } }
@media(prefers-reduced-motion:reduce) { *,*::before,*::after { scroll-behavior:auto!important; animation-duration:.01ms!important; animation-iteration-count:1!important; transition-duration:.01ms!important; } }
.grove-facts { display:grid; grid-template-columns:repeat(3,minmax(0,1fr)); gap:9px; margin:24px 0; }
.grove-facts span { display:flex; flex-direction:column; justify-content:center; min-height:76px; padding:12px; border:1px solid rgba(70,95,68,.22); border-radius:16px; background:rgba(255,255,255,.56); color:#2d4933; font:400 15px/1.3 var(--serif); }
.grove-facts small { margin-top:5px; color:#626b60; font:500 9px/1.4 var(--sans); }
.feel-wordmark em { transform:translateY(2px); }
.grove-dialog { background:#f3f0e8; }
.grove-popover .eyebrow { margin:0 0 8px; }
.grove-popover img { margin-bottom:12px; }
.grove-popover h2 { font-size:clamp(34px,4.5vw,52px); }
.grove-popover p:not(.eyebrow) { margin:12px 0 18px; line-height:1.65; }
.grove-popover .grove-later { margin-top:8px; }
.map-caption address { max-width:70%; }
@media (min-width:801px) { .map-embed-wrap { min-height:560px; } .map-embed { min-height:460px; } }
@media (max-width:800px) { .map-embed-wrap { height:430px; min-height:430px; } .map-embed { min-height:0; } }
@media (max-width:650px) { .grove-facts { grid-template-columns:1fr 1fr; } .grove-facts span:last-child { grid-column:1/-1; } }
@media (max-width:520px) { .wordmark-living { transform:translateY(-1px); } .feel-wordmark em { transform:translateY(1px); } .grove-facts { grid-template-columns:1fr; } .grove-facts span:last-child { grid-column:auto; } }
@media (max-width:650px) { .grove-popover { gap:11px; padding:16px; } .grove-popover::before { min-height:175px; height:175px; } .grove-popover img { width:170px; margin:8px 0 0; } .grove-popover h2 { font-size:34px; } .grove-popover p:not(.eyebrow) { margin:7px 0 10px; font-size:13px; } .grove-popover .button { min-height:46px; } .grove-popover .grove-later { margin-top:0; padding-block:5px; } }

.review-full { margin:-5px 0 18px; color:#515b68; font-size:12px; line-height:1.6; }
.review-full summary { color:var(--blue); font-weight:700; cursor:pointer; }
.review-full p { margin:10px 0 0; white-space:pre-line; }
.review-card blockquote { display:-webkit-box; -webkit-line-clamp:5; -webkit-box-orient:vertical; overflow:hidden; }
.review-full[hidden] { display:none; }

.detail-page { padding:clamp(44px,7vw,90px) 0 100px; }
.detail-hero { display:grid; grid-template-columns:minmax(0,1fr) minmax(280px,.8fr); gap:clamp(28px,6vw,80px); align-items:center; margin-bottom:64px; }
.detail-hero h1 { margin:0; color:var(--blue-deep); font:400 clamp(42px,5.5vw,70px)/1.06 var(--serif); letter-spacing:-.025em; }
.detail-hero p:not(.eyebrow) { max-width:62ch; color:var(--muted); }
.detail-hero img { width:100%; max-height:420px; object-fit:cover; border-radius:26px 104px 26px 26px; box-shadow:var(--shadow-float); }
.detail-grid { display:grid; grid-template-columns:repeat(2,minmax(0,1fr)); gap:16px; }
.detail-card { padding:24px; border:1px solid var(--line); border-radius:22px; background:#fff; box-shadow:var(--shadow-soft); }
.detail-card h2,.detail-card h3 { margin:0 0 10px; color:var(--blue-deep); font:400 25px/1.2 var(--serif); }
.detail-card p,.detail-card li { color:var(--muted); font-size:14px; }
.detail-card ul { padding-left:20px; }
.detail-card .price-lines { margin-top:12px; }
.detail-callout { margin-top:30px; padding:26px; border-radius:24px; background:#fdf3f8; }
.detail-nav { display:flex; flex-wrap:wrap; gap:10px; margin-top:18px; }
.detail-nav a { padding:9px 14px; border:1px solid var(--line); border-radius:999px; color:var(--blue); font-size:12px; text-decoration:none; }
.breadcrumbs { margin-bottom:23px; color:var(--muted); font-size:12px; }
.breadcrumbs a { color:var(--blue); }
@media(max-width:760px) { .detail-hero { grid-template-columns:1fr; } .detail-hero img { max-height:330px; } .detail-grid { grid-template-columns:1fr; } }

/* Nearby destinations: grouped, compact and easy to scan. */
.poi-groups { margin:28px 0 20px; border-top:1px solid #dfe4eb; }
.poi-group { border-bottom:1px solid #dfe4eb; }
.poi-group > summary { display:flex; align-items:center; justify-content:space-between; gap:16px; padding:16px 2px; color:var(--blue-deep); font:400 20px/1.3 var(--serif); list-style:none; cursor:pointer; }
.poi-group > summary::-webkit-details-marker { display:none; }
.poi-group > summary::after { content:"+"; margin-left:auto; color:var(--pink); font:400 22px/1 var(--sans); }
.poi-group[open] > summary::after { content:"−"; }
.poi-count { min-width:28px; height:28px; display:grid; place-items:center; border-radius:50%; background:#f7eaf1; color:var(--pink-text); font:700 11px/1 var(--sans); }
.poi-list { display:grid; grid-template-columns:repeat(2,minmax(0,1fr)); gap:8px; padding:0 0 18px; }
.poi-list a { position:relative; min-height:46px; display:flex; align-items:center; justify-content:space-between; gap:10px; padding:11px 13px; border:1px solid rgba(43,85,151,.10); border-radius:14px; background:rgba(255,255,255,.74); color:#505967; font-size:12px; line-height:1.4; text-decoration:none; transition:background .2s ease,border-color .2s ease,color .2s ease,transform .2s ease; }
.poi-list a::after { content:"↗︎"; flex:none; color:var(--pink); font-size:14px; }
.poi-list a:hover { transform:translateY(-2px); border-color:rgba(204,85,153,.32); background:#fff; color:var(--blue-deep); }
@media(max-width:520px) { .poi-list { grid-template-columns:1fr; } .poi-group > summary { font-size:18px; } }

/* The social marks are square artwork; never squeeze a horizontal wordmark into an icon slot. */
.wa-mark { width:18px!important; height:18px!important; object-fit:cover!important; object-position:left center!important; }
.platform-mark img { width:29px!important; height:29px!important; object-fit:contain!important; }
.platform-mark img[src*="whatsapp.png"] { object-fit:cover!important; object-position:left center!important; }

/* Alignment and responsive polish from the latest visual review. */
.hero h1 .pink { line-height:1.08; transform:translateY(-.1em); }
.living-actions { display:flex; flex-wrap:wrap; align-items:center; gap:14px 26px; margin-top:23px; }
.living-actions .living-link { margin:0; }
.faq-list details { align-self:start; }
.feel-wordmark { align-items:baseline; gap:4px; margin-left:9px; }
.feel-wordmark > span { font-size:.96em; line-height:1; }
.feel-wordmark em { font-size:.62em; line-height:1; transform:translateY(-2px); }
.contact-social,.social-links { display:grid; grid-template-columns:repeat(3,minmax(0,1fr)); width:100%; gap:11px; }
.contact-social { margin-top:22px; }
.platform-link { display:flex; justify-content:center; width:100%; min-width:0; height:72px; padding:9px; border-radius:999px; }
.platform-mark { width:48px; height:48px; flex:0 0 48px; border-radius:50%; }
.platform-mark img { width:30px!important; height:30px!important; }
.social-links .platform-link { height:64px; }
.grove-dialog { width:min(94vw,900px); max-height:88vh; overflow:auto; }
.grove-popover { position:relative; display:grid; grid-template-columns:minmax(0,1fr) minmax(0,1fr); align-items:center; gap:clamp(22px,4vw,44px); padding:clamp(20px,3vw,34px); text-align:left; }
.grove-popover::before { content:none; }
.grove-popover-visual { display:flex; min-width:0; flex-direction:column; gap:12px; }
.grove-popover-photo { width:100%; height:320px; aspect-ratio:4/3; object-fit:cover; border-radius:22px 84px 22px 22px; }
.grove-popover .grove-popover-wordmark { width:min(190px,70%); height:auto; margin:0 0 0 8px; }
.grove-popover-copy { display:flex; min-width:0; flex-direction:column; align-items:flex-start; justify-content:center; gap:0; padding-right:24px; }
.grove-popover-copy .eyebrow { margin:0 0 12px; color:#557054; }
.grove-popover-copy h2 { margin:0; color:#1a261e; font:400 clamp(34px,4vw,48px)/1.08 var(--serif); }
.grove-popover-copy > p:not(.eyebrow) { margin:14px 0 22px; color:#59635b; font-size:14px; line-height:1.65; }
.grove-popover-actions { display:flex; align-items:center; flex-wrap:wrap; gap:8px 18px; }
.grove-popover-actions .grove-later { margin:0; padding:10px 0; }
.grove-popover .dialog-close { z-index:2; top:12px; right:12px; }
@media(max-width:800px) { .feel-wordmark { margin-left:6px; } .feel-wordmark > span { font-size:.88em; } .feel-wordmark em { font-size:.58em; } }
@media(max-width:650px) {
  .grove-dialog { width:min(92vw,420px); max-height:unset; overflow:visible; border-radius:24px; }
  .grove-popover { grid-template-columns:1fr; gap:0; padding:22px 22px 23px; }
  .grove-popover-photo { height:160px; aspect-ratio:16/8; border-radius:18px 56px 18px 18px; }
  .grove-popover-visual { gap:6px; }
  .grove-popover .grove-popover-wordmark { width:145px; margin-left:4px; }
  .grove-popover-copy { padding-right:0; }
  .grove-popover-copy .eyebrow { max-width:calc(100% - 42px); font-size:9px; }
  .grove-popover-copy h2 { font-size:32px; }
  .grove-popover-copy > p:not(.eyebrow) { margin:8px 0 12px; font-size:13px; line-height:1.5; }
  .grove-popover-actions { gap:8px 14px; }
  .contact-social,.social-links { gap:7px; }
  .platform-link { height:64px; padding:6px; }
  .platform-mark { width:44px; height:44px; flex-basis:44px; }
}
@media(max-width:520px) { .feel-wordmark { gap:2px; margin-left:5px; } .feel-wordmark > span { font-size:.8em; } .feel-wordmark em { font-size:.54em; transform:translateY(-1px); } .living-actions { gap:11px 18px; } }
.living-actions { gap:14px 28px; }
.living-actions .menu-open { padding:0; border:0; background:none; box-shadow:none; cursor:pointer; }
.living-actions .menu-open:hover { background:none; box-shadow:none; transform:translateY(-1px); }
.faq-list details { align-self:start; }
.contact-social,.social-links { width:100%; display:grid; grid-template-columns:repeat(3,minmax(0,1fr)); gap:12px; }
.contact-social .platform-link,.social-links .platform-link { width:100%; height:76px; min-width:0; padding:10px; border-radius:999px; }
.platform-mark { width:50px; height:50px; flex:0 0 50px; }
.platform-mark img { width:30px!important; height:30px!important; }
.grove-dialog { width:min(94vw,900px); max-height:88vh; overflow:auto; }
.grove-popover { position:relative; display:grid; grid-template-columns:minmax(0,1fr) minmax(0,1fr); align-items:center; gap:clamp(22px,4vw,44px); padding:clamp(20px,3vw,34px); text-align:left; }
.grove-popover::before { content:none; }
.grove-popover-visual { display:flex; min-width:0; flex-direction:column; gap:12px; }
.grove-popover .grove-popover-photo { width:100%; height:320px; aspect-ratio:4/3; object-fit:cover; border-radius:22px 84px 22px 22px; }
.grove-popover .grove-popover-wordmark { width:min(190px,70%); height:auto; margin:0 0 0 8px; }
.grove-popover-copy { display:flex; min-width:0; flex-direction:column; align-items:flex-start; justify-content:center; padding:0 24px 0 0; }
.grove-popover-copy .eyebrow { max-width:100%; margin:0 0 12px; color:#557054; }
.grove-popover-copy h2 { margin:0; color:#1a261e; font:400 clamp(34px,4vw,48px)/1.08 var(--serif); }
.grove-popover-copy > p:not(.eyebrow) { margin:14px 0 22px; color:#59635b; font-size:14px; line-height:1.65; }
.grove-popover-actions { display:flex; align-items:center; flex-wrap:wrap; gap:8px 18px; }
.grove-popover-actions .grove-later { margin:0; padding:10px 0; }
.grove-popover .dialog-close { z-index:2; top:12px; right:12px; }
@media(max-width:800px) { .feel-wordmark > span { font-size:.88em; } .feel-wordmark em { font-size:.58em; } }
@media(max-width:650px) {
  .grove-popover { grid-template-columns:1fr; gap:14px; padding:16px; }
  .grove-popover .grove-popover-photo { display:none; }
  .grove-popover-visual { display:block; margin:0 0 16px; }
  .grove-popover .grove-popover-wordmark { width:112px; margin:0; }
  .grove-popover-copy { padding-right:0; }
  .grove-popover-copy .eyebrow { max-width:calc(100% - 42px); margin-bottom:7px; font-size:9px; }
  .grove-popover-copy h2 { font-size:31px; }
  .grove-popover-copy > p:not(.eyebrow) { margin:8px 0 16px; font-size:13px; line-height:1.5; }
  .grove-popover-actions { gap:8px; }
  .contact-social,.social-links { gap:7px; }
  .contact-social .platform-link,.social-links .platform-link { height:66px; padding:6px; }
  .platform-mark { width:46px; height:46px; flex-basis:46px; }
}
@media(max-width:520px) { .feel-wordmark > span { font-size:.8em; } .feel-wordmark em { font-size:.54em; transform:translateY(-1px); } .living-actions { gap:11px 18px; } }

@media(max-width:800px) { .feel-wordmark > span { font-size:.96em; } .feel-wordmark em { font-size:.62em; transform:translateY(-2px); } }
@media(max-width:520px) { .feel-wordmark > span { font-size:.9em; } .feel-wordmark em { font-size:.57em; transform:translateY(-1px); } }

/* Rich, image-led SEO detail pages */
.detail-gallery-block,.detail-menu-section { margin:clamp(42px,7vw,78px) 0; }
.detail-section-heading { max-width:760px; margin:0 0 24px; }
.detail-section-heading h2,.detail-feature-copy h2,.detail-menu-section h2,.detail-map-panel h2 { margin:0 0 12px; color:var(--blue-deep); font:400 clamp(30px,4vw,46px)/1.12 var(--serif); letter-spacing:-.02em; }
.detail-section-heading>p:last-child,.detail-feature-copy>p:not(.eyebrow),.detail-menu-section>div:first-child>p:last-child { max-width:70ch; color:var(--muted); }
.detail-gallery { display:grid; grid-template-columns:repeat(3,minmax(0,1fr)); gap:16px; }
.detail-gallery figure { min-width:0; margin:0; overflow:hidden; border:1px solid var(--line); border-radius:22px; background:#fff; box-shadow:var(--shadow-soft); }
.detail-gallery img { width:100%; height:clamp(190px,24vw,330px); display:block; object-fit:cover; transition:transform .7s cubic-bezier(.2,.7,.2,1); }
.detail-gallery figure:hover img { transform:scale(1.035); }
.detail-gallery figcaption { display:flex; flex-direction:column; gap:4px; padding:15px 17px 17px; }
.detail-gallery figcaption strong { color:var(--blue-deep); font:400 18px/1.2 var(--serif); }
.detail-gallery figcaption span { color:var(--muted); font-size:12px; }
.detail-gallery--rooms { grid-template-columns:repeat(4,minmax(0,1fr)); }
.detail-gallery--rooms img { height:clamp(170px,20vw,260px); }
.detail-gallery--food { grid-template-columns:1.2fr 1fr 1fr; }
.detail-gallery--food .detail-gallery-feature img { height:clamp(260px,32vw,410px); }
.detail-feature-row { display:grid; grid-template-columns:1fr 1fr; align-items:center; gap:clamp(24px,5vw,70px); margin:clamp(48px,8vw,94px) 0; }
.detail-feature-row--reverse img { order:2; }
.detail-feature-row>img { width:100%; height:clamp(300px,38vw,480px); object-fit:cover; border-radius:26px 100px 26px 26px; box-shadow:var(--shadow-float); }
.detail-check-list { display:grid; gap:9px; padding:0; list-style:none; color:var(--muted); font-size:14px; }
.detail-check-list li::before { content:"✓"; margin-right:10px; color:var(--pink); font-weight:700; }
.detail-note-band { display:flex; align-items:center; gap:20px; margin:42px 0; padding:22px 25px; border:1px solid rgba(43,85,151,.12); border-radius:22px; background:#f7f9fc; }
.detail-note-band>span { color:var(--pink); font:400 32px var(--serif); }
.detail-note-band h2 { margin:0 0 4px; color:var(--blue-deep); font:400 22px var(--serif); }
.detail-note-band p { margin:0; color:var(--muted); font-size:13px; }
.detail-note-band .button { margin-left:auto; flex:none; }
.detail-menu-section { display:grid; grid-template-columns:.7fr 1.3fr; gap:40px; padding:clamp(24px,4vw,42px); border-radius:28px; background:var(--blue-deep); color:#fff; }
.detail-menu-section h2,.detail-menu-section>div:first-child>p:last-child { color:#fff; }
.menu-detail-grid { display:grid; grid-template-columns:1fr 1fr; gap:11px; }
.menu-detail-grid article { padding:17px; border:1px solid rgba(255,255,255,.2); border-radius:17px; background:rgba(255,255,255,.06); }
.menu-detail-grid span,.detail-destination-grid article>span { color:#f3a9d0; font-size:10px; font-weight:700; letter-spacing:.12em; text-transform:uppercase; }
.menu-detail-grid h3 { margin:7px 0; color:#fff; font:400 20px var(--serif); }
.menu-detail-grid p { margin:0; color:rgba(255,255,255,.8); font-size:12px; line-height:1.6; }
.detail-stat-row { display:flex; flex-wrap:wrap; gap:12px; margin-top:23px; }
.detail-stat-row div { min-width:106px; display:flex; flex-direction:column; padding:12px 15px; border:1px solid var(--line); border-radius:16px; background:#fff; }
.detail-stat-row strong { color:var(--blue); font:400 21px var(--serif); }
.detail-stat-row span { color:var(--muted); font-size:10px; }
.detail-destination-grid { display:grid; grid-template-columns:repeat(3,minmax(0,1fr)); gap:14px; margin:26px 0; }
.detail-destination-grid article { padding:21px; border:1px solid var(--line); border-radius:20px; background:#fff; box-shadow:var(--shadow-soft); }
.detail-destination-grid h3 { margin:8px 0; color:var(--blue-deep); font:400 22px var(--serif); }
.detail-destination-grid ul { margin:0; padding-left:18px; color:var(--muted); font-size:12px; line-height:1.75; }
.detail-map-panel { display:grid; grid-template-columns:1.2fr .8fr; align-items:center; gap:30px; margin:clamp(48px,8vw,90px) 0; padding:12px; border:1px solid var(--line); border-radius:28px; background:#fff; box-shadow:var(--shadow-soft); }
.detail-map-panel iframe { width:100%; height:370px; border:0; border-radius:20px; }
.detail-map-panel>div { padding:22px; }
.detail-map-panel>div>p:not(.eyebrow) { color:var(--muted); }
.detail-schedule { display:grid; grid-template-columns:1fr 1fr; gap:9px; }
.detail-schedule p { display:flex; flex-direction:column; gap:4px; margin:0; padding:13px; border-radius:14px; background:#f7f9fc; }
.detail-schedule b { color:var(--pink-text); font-size:12px; }
.detail-schedule span { color:var(--blue-deep); font:400 15px var(--serif); }
.detail-page>.container>.faq-list { margin:25px 0; }
.detail-page>.container>.faq-list details { align-self:start; }
.detail-page>.container>.faq-list summary { color:var(--blue-deep); }
.detail-page>.container>.faq-list p { color:var(--muted); }
/* Floating mobile contact dock: softly framed and separated from page content. */
@media(max-width:800px) {
  body { padding-bottom:98px!important; }
  .mobile-cta { position:fixed; z-index:55; right:max(12px,env(safe-area-inset-right)); bottom:max(10px,env(safe-area-inset-bottom)); left:max(12px,env(safe-area-inset-left)); display:grid; grid-template-columns:1fr 1fr; gap:8px; padding:7px; border:1px solid rgba(31,67,125,.12); border-radius:999px; background:rgba(255,253,251,.88); box-shadow:0 12px 38px rgba(25,48,84,.18); backdrop-filter:blur(18px); -webkit-backdrop-filter:blur(18px); }
  .mobile-cta .button { min-height:54px; display:flex; align-items:center; justify-content:center; gap:9px; padding:0 14px; border-radius:999px; font-size:14px; font-weight:700; letter-spacing:.01em; text-decoration:none; box-shadow:0 4px 12px rgba(31,67,125,.1); transition:transform .2s ease,box-shadow .2s ease; }
  .mobile-cta .button:hover { transform:translateY(-2px); box-shadow:0 8px 18px rgba(31,67,125,.16); }
  .mobile-cta-wa { border:1px solid var(--blue)!important; background:linear-gradient(135deg,#315c9b,#234a86)!important; color:#fff!important; }
  .mobile-cta-call { border:1px solid rgba(43,85,151,.24)!important; background:linear-gradient(135deg,#fff,#fff8fc)!important; color:var(--blue-deep)!important; }
  .mobile-cta .wa-mark { width:21px!important; height:21px!important; object-fit:cover!important; object-position:left center!important; }
  .mobile-cta-call svg { width:18px; height:18px; fill:currentColor; }
  .detail-gallery,.detail-gallery--rooms,.detail-gallery--food { grid-template-columns:repeat(2,minmax(0,1fr)); }
  .detail-gallery img,.detail-gallery--rooms img { height:220px; }
  .detail-gallery--food .detail-gallery-feature img { height:260px; }
  .detail-feature-row { grid-template-columns:1fr; }
  .detail-feature-row--reverse img { order:0; }
  .detail-feature-row>img { height:clamp(240px,65vw,380px); }
  .detail-menu-section { grid-template-columns:1fr; gap:18px; }
  .detail-destination-grid { grid-template-columns:1fr 1fr; }
  .detail-map-panel { grid-template-columns:1fr; }
  .detail-map-panel iframe { height:300px; }
}
@media(max-width:520px) {
  .mobile-cta { right:10px; left:10px; bottom:max(8px,env(safe-area-inset-bottom)); gap:7px; padding:6px; }
  .mobile-cta .button { min-height:51px; gap:7px; padding:0 8px; font-size:13px; }
  .detail-gallery,.detail-gallery--rooms,.detail-gallery--food { grid-template-columns:1fr; }
  .detail-gallery img,.detail-gallery--rooms img { height:62vw; min-height:220px; max-height:340px; }
  .detail-gallery--food .detail-gallery-feature img { height:68vw; min-height:250px; }
  .detail-note-band { align-items:flex-start; flex-wrap:wrap; }
  .detail-note-band .button { margin-left:0; }
  .menu-detail-grid { grid-template-columns:1fr; }
  .detail-destination-grid { grid-template-columns:1fr; }
  .detail-map-panel iframe { height:260px; }
}
.detail-destination-grid ul { display:grid; gap:6px; padding:0; list-style:none; }
.detail-destination-grid li a { display:flex; align-items:flex-start; justify-content:space-between; gap:10px; padding:6px 0; border-bottom:1px solid rgba(43,85,151,.08); color:var(--muted); font-size:12px; line-height:1.45; text-decoration:none; }
.detail-destination-grid li a:hover { color:var(--blue); }
.detail-destination-grid li a span { flex:none; color:var(--pink); }
.detail-intro-strip { display:flex; align-items:center; justify-content:space-between; gap:28px; margin:0 0 clamp(42px,7vw,78px); padding:23px 27px; border:1px solid var(--line); border-radius:23px; background:#f7f9fc; }
.detail-intro-strip h2 { margin:0 0 5px; color:var(--blue-deep); font:400 25px/1.2 var(--serif); }
.detail-intro-strip p:last-child { margin:0; color:var(--muted); font-size:13px; }
.detail-intro-strip .button { flex:none; }
@media(max-width:650px) { .detail-intro-strip { align-items:flex-start; flex-direction:column; } }

/* Equal, calm image rhythm across detail galleries; no first-card height jump. */
.detail-gallery--food { align-items:stretch; }
.detail-gallery--food figure { display:flex; flex-direction:column; }
.detail-gallery--food img,
.detail-gallery--food .detail-gallery-feature img { display:block; width:100%; height:auto; aspect-ratio:4 / 3; object-fit:cover; }
.detail-gallery--food figcaption { position:relative; flex:1; min-height:94px; padding-right:104px; }
.detail-gallery--food figcaption em { position:absolute; right:14px; bottom:15px; border-radius:999px; padding:7px 10px; background:var(--pink-soft,#fff1f8); color:var(--pink-deep,#bd4387); font-size:10px; font-style:normal; font-weight:700; letter-spacing:.04em; white-space:nowrap; }
.annotated-board { margin:clamp(48px,8vw,92px) 0; }
.annotated-board-layout { display:grid; grid-template-columns:minmax(0,1.15fr) minmax(280px,.85fr); gap:clamp(22px,4vw,52px); align-items:stretch; }
.annotated-board-image { position:relative; min-height:420px; margin:0; overflow:hidden; border-radius:28px; background:#f4f0ec; box-shadow:var(--shadow-soft); }
.annotated-board-image img { width:100%; height:100%; min-height:420px; display:block; object-fit:cover; }
.annotated-board-image figcaption { position:absolute; left:18px; bottom:18px; max-width:calc(100% - 36px); border:1px solid rgba(255,255,255,.68); border-radius:999px; padding:11px 16px; background:rgba(255,252,249,.92); color:var(--blue-deep); font:400 16px/1.2 var(--serif); backdrop-filter:blur(10px); }
.annotation-list { display:grid; grid-template-columns:1fr; align-content:stretch; gap:0; margin:0; padding:0; list-style:none; border-top:1px solid var(--line); }
.annotation-list li { display:grid; grid-template-columns:34px 1fr; gap:12px; align-items:start; padding:16px 0; border-bottom:1px solid var(--line); }
.annotation-list li>span { display:grid; place-items:center; width:30px; height:30px; border-radius:50%; background:var(--pink-soft,#fff1f8); color:var(--pink-deep,#bd4387); font-size:10px; font-weight:700; }
.annotation-list strong { color:var(--blue-deep); font:400 19px/1.2 var(--serif); }
.annotation-list p { margin:5px 0 0; color:var(--muted); font-size:13px; line-height:1.55; }
@media(max-width:760px) { .annotated-board-layout { grid-template-columns:1fr; } .annotated-board-image,.annotated-board-image img { min-height:0; height:auto; aspect-ratio:4 / 3; } .detail-gallery--food figcaption { padding-right:17px; padding-bottom:46px; } }
@media(max-width:560px) { .detail-gallery--food figcaption em { left:17px; right:auto; bottom:13px; } }


/* Compact Grove announcement for small screens. */
@media (max-width:650px) {
  .grove-dialog { width:min(92vw,420px); max-height:80vh; overflow:auto; border-radius:24px; }
  .grove-popover { grid-template-columns:1fr; gap:0; padding:20px 21px 22px; }
  .grove-popover .grove-popover-photo { display:none; }
  .grove-popover-visual { display:block; margin:0 0 13px; }
  .grove-popover .grove-popover-wordmark { width:108px; margin:0; }
  .grove-popover-copy { padding:0; }
  .grove-popover-copy .eyebrow { max-width:calc(100% - 44px); margin:0 0 6px; font-size:9px; }
  .grove-popover-copy h2 { font-size:30px; }
  .grove-popover-copy > p:not(.eyebrow) { margin:7px 0 14px; font-size:13px; line-height:1.48; }
  .grove-popover-actions { gap:8px; }
}

/* Grove announcement imagery: a compact, authentic property collage. */
.grove-popover-visual { min-width:0; }
.grove-popover-collage { display:grid; grid-template-columns:1.08fr .92fr; grid-template-rows:1fr 1fr; gap:8px; width:100%; aspect-ratio:1.12; overflow:hidden; border-radius:22px 70px 22px 22px; }
.grove-popover-collage img { display:block; width:100%; height:100%; min-height:0; margin:0; object-fit:cover; }
.grove-popover-collage .grove-collage-facade { grid-column:1; grid-row:1/3; object-position:center; }
.grove-popover-collage .grove-collage-twin { grid-column:2; grid-row:1; object-position:center 58%; }
.grove-popover-collage .grove-collage-triple { grid-column:2; grid-row:2; object-position:center; }
@media(max-width:650px) {
  .grove-popover-visual { margin:0 0 14px; }
  .grove-popover-collage { aspect-ratio:2.1; gap:5px; border-radius:17px 48px 17px 17px; }
  .grove-popover-copy .eyebrow { margin-bottom:5px; }
  .grove-popover-copy h2 { font-size:28px; }
  .grove-popover-copy > p:not(.eyebrow) { margin:6px 0 12px; font-size:12px; }
}

/* Grove introduction: a quiet editorial panel grounded in Grove’s real spaces. */
.grove-dialog { width:min(94vw,820px); max-height:88vh; overflow:visible; border-radius:30px; background:#f4f0e8; }
.grove-dialog::backdrop { background:rgba(22,35,28,.52); backdrop-filter:blur(7px); }
.grove-popover { position:relative; display:grid; grid-template-columns:minmax(0,.92fr) minmax(0,1.08fr); align-items:center; gap:clamp(28px,4vw,52px); padding:clamp(24px,4vw,46px); border-radius:30px; background:linear-gradient(135deg,#fbf9f3 0%,#f2eee5 100%); color:#26372d; text-align:left; }
.grove-popover .dialog-close { position:absolute; top:15px; right:15px; display:grid; place-items:center; width:40px; height:40px; border:1px solid rgba(61,85,68,.18); border-radius:50%; background:rgba(255,255,255,.84); color:#3d5544; box-shadow:0 5px 16px rgba(36,54,39,.08); font-size:21px; }
.grove-popover-visual { min-width:0; margin:0; }
.grove-editorial-collage { position:relative; isolation:isolate; height:352px; border-radius:24px; }
.grove-editorial-collage::before { position:absolute; z-index:-1; top:10px; right:5px; width:74%; height:84%; border:1px solid rgba(61,85,68,.2); border-radius:180px 180px 18px 18px; content:""; }
.grove-editorial-collage img { position:absolute; display:block; margin:0; border:5px solid #f4f0e8; object-fit:cover; box-shadow:0 14px 32px rgba(35,47,37,.18); }
.grove-editorial-exterior { top:0; left:0; width:82%; height:82%; border-radius:18px 110px 18px 18px; object-position:center; }
.grove-editorial-twin { right:0; bottom:9%; width:48%; height:42%; border-radius:18px; object-position:center 55%; }
.grove-editorial-triple { bottom:0; left:7%; width:35%; height:31%; border-radius:16px; object-position:center; }
.grove-editorial-caption { position:absolute; left:15px; bottom:20%; padding:7px 10px; border:1px solid rgba(255,255,255,.55); border-radius:999px; background:rgba(30,51,38,.72); color:#fff; font:700 9px/1 "DM Sans",sans-serif; letter-spacing:.14em; }
.grove-popover-copy { display:flex; min-width:0; flex-direction:column; align-items:flex-start; padding-right:14px; }
.grove-popover-brand { width:126px!important; height:auto; margin:0 0 23px!important; }
.grove-popover-copy .eyebrow { margin:0 0 8px; color:#6b7b62; font-size:10px; letter-spacing:.16em; }
.grove-popover-copy h2 { margin:0; color:#2d4937; font:400 clamp(36px,4.4vw,50px)/1.04 var(--serif); letter-spacing:-.025em; }
.grove-popover-copy > p:not(.eyebrow) { max-width:360px; margin:13px 0 0; color:#59635b; font:400 14px/1.6 var(--sans); }
.grove-popover-copy .grove-room-note { margin:13px 0 22px!important; padding:9px 0 0 12px; border-top:1px solid rgba(61,85,68,.17); border-left:2px solid #b85c3e; color:#3d5544!important; font-size:12px!important; font-weight:600!important; }
.grove-popover-actions { display:flex; }
.grove-popover-actions .button { display:inline-flex; align-items:center; gap:10px; min-height:46px; padding:0 21px; border:0; border-radius:999px; background:#3d5544; color:#fff; box-shadow:0 8px 20px rgba(61,85,68,.16); font-size:13px; }
.grove-popover-actions .button:hover { transform:translateY(-2px); background:#304737; }
@media(max-width:650px) {
  .grove-dialog { width:min(92vw,420px); max-height:84vh; overflow:auto; border-radius:25px; }
  .grove-popover { grid-template-columns:1fr; gap:0; padding:17px 19px 20px; border-radius:25px; }
  .grove-popover .dialog-close { top:12px; right:12px; width:36px; height:36px; }
  .grove-editorial-collage { height:148px; margin:0 3px 13px; }
  .grove-editorial-collage::before { top:4px; right:3px; height:88%; width:70%; }
  .grove-editorial-exterior { width:79%; height:88%; border-radius:15px 72px 15px 15px; }
  .grove-editorial-twin { right:0; bottom:4%; width:43%; height:48%; border-radius:13px; }
  .grove-editorial-triple { bottom:-2%; left:11%; width:30%; height:35%; border-width:4px; border-radius:12px; }
  .grove-editorial-caption { left:10px; bottom:15%; padding:6px 8px; font-size:8px; }
  .grove-popover-copy { padding:0; }
  .grove-popover-brand { width:95px!important; margin:0 0 11px!important; }
  .grove-popover-copy .eyebrow { margin-bottom:5px; font-size:9px; }
  .grove-popover-copy h2 { font-size:29px; }
  .grove-popover-copy > p:not(.eyebrow) { max-width:none; margin-top:7px; font-size:12px; line-height:1.45; }
  .grove-popover-copy .grove-room-note { margin:9px 0 13px!important; padding-top:7px; font-size:11px!important; }
  .grove-popover-actions .button { min-height:42px; padding:0 18px; font-size:12px; }
}
/* Keep the editorial collage tiles distinct from the generic dialog image styles. */
.grove-popover .grove-editorial-exterior { top:0; left:0; width:82%; height:82%; border-radius:18px 110px 18px 18px; object-position:center; }
.grove-popover .grove-editorial-twin { top:auto; right:0; bottom:9%; left:auto; width:48%; height:42%; border-radius:18px; object-position:center 55%; }
.grove-popover .grove-editorial-triple { top:auto; right:auto; bottom:0; left:7%; width:35%; height:31%; border-radius:16px; object-position:center; }
@media(max-width:650px) {
  .grove-popover .grove-editorial-exterior { width:79%; height:88%; border-radius:15px 72px 15px 15px; }
  .grove-popover .grove-editorial-twin { right:0; bottom:4%; width:43%; height:48%; border-radius:13px; }
  .grove-popover .grove-editorial-triple { bottom:-2%; left:11%; width:30%; height:35%; border-width:4px; border-radius:12px; }
}
@media(max-width:650px) {
  .grove-editorial-collage { height:132px; }
  .grove-popover-copy .grove-room-note { display:none; }
  .grove-popover-copy > p:not(.eyebrow) { margin-bottom:11px; }
}

/* Review cards use deliberate horizontal swipes on touch screens. */
.review-track { touch-action:pan-x pan-y pinch-zoom; }
@media(max-width:800px) {
  .review-controls button { width:44px; height:44px; touch-action:manipulation; }
}


/* Detail-page photos open in a quiet, accessible viewer. */
.detail-page img.detail-expandable { cursor:zoom-in; }
.detail-image-dialog { position:fixed; inset:0; width:min(94vw,1200px); max-width:none; max-height:92vh; margin:auto; padding:0; overflow:visible; border:0; border-radius:24px; background:#111; box-shadow:0 24px 90px rgba(20,38,67,.38); }
.detail-image-dialog::backdrop { background:rgba(18,34,60,.72); backdrop-filter:blur(5px); }
.detail-image-dialog img { display:block; width:100%; height:auto; max-height:88vh; object-fit:contain; border-radius:24px; }
.detail-image-dialog .dialog-close { position:absolute; z-index:2; top:12px; right:12px; }
@media(max-width:650px) { .dialog-inner { padding:clamp(18px,5vw,26px); } .enquiry-form { gap:12px; } .enquiry-form input,.enquiry-form select { min-height:52px; } .meal-detail { font-size:11px; } }

/* Closed dialogs stay hidden even in browsers without native dialog styling. */
dialog:not([open]) { display:none!important; }
body.dialog-fallback-active { overflow:hidden; }
body.dialog-fallback-active::before { content:""; position:fixed; inset:0; z-index:999; background:rgba(18,34,60,.62); backdrop-filter:blur(5px); }
dialog.dialog-fallback-open { position:fixed; z-index:1000; inset:50% auto auto 50%; display:block!important; width:min(92vw,680px); max-height:88vh; margin:0; overflow:auto; transform:translate(-50%,-50%); }
