html {
    -webkit-text-size-adjust: 100%;
    -ms-text-size-adjust: 100%;
    font-family: sans-serif
}

body {
    margin: 0
}

article,
aside,
details,
figcaption,
figure,
footer,
header,
hgroup,
main,
menu,
nav,
section,
summary {
    display: block
}

audio,
canvas,
progress,
video {
    vertical-align: baseline;
    display: inline-block
}

audio:not([controls]) {
    height: 0;
    display: none
}

[hidden],
template {
    display: none
}

a {
    background-color: #0000
}

a:active,
a:hover {
    outline: 0
}

abbr[title] {
    border-bottom: 1px dotted
}

b,
strong {
    font-weight: 700
}

dfn {
    font-style: italic
}

h1 {
    margin: .67em 0;
    font-size: 2em
}

mark {
    color: #000;
    background: #ff0
}

small {
    font-size: 80%
}

sub,
sup {
    vertical-align: baseline;
    font-size: 75%;
    line-height: 0;
    position: relative
}

sup {
    top: -.5em
}

sub {
    bottom: -.25em
}

img {
    border: 0
}

svg:not(:root) {
    overflow: hidden
}

hr {
    box-sizing: content-box;
    height: 0
}

pre {
    overflow: auto
}

code,
kbd,
pre,
samp {
    font-family: monospace;
    font-size: 1em
}

button,
input,
optgroup,
select,
textarea {
    color: inherit;
    font: inherit;
    margin: 0
}

button {
    overflow: visible
}

button,
select {
    text-transform: none
}

button,
html input[type=button],
input[type=reset] {
    -webkit-appearance: button;
    cursor: pointer
}

button[disabled],
html input[disabled] {
    cursor: default
}

button::-moz-focus-inner,
input::-moz-focus-inner {
    border: 0;
    padding: 0
}

input {
    line-height: normal
}

input[type=checkbox],
input[type=radio] {
    box-sizing: border-box;
    padding: 0
}

input[type=number]::-webkit-inner-spin-button,
input[type=number]::-webkit-outer-spin-button {
    height: auto
}

input[type=search] {
    -webkit-appearance: none
}

input[type=search]::-webkit-search-cancel-button,
input[type=search]::-webkit-search-decoration {
    -webkit-appearance: none
}

legend {
    border: 0;
    padding: 0
}

textarea {
    overflow: auto
}

optgroup {
    font-weight: 700
}

table {
    border-collapse: collapse;
    border-spacing: 0
}

td,
th {
    padding: 0
}

* {
    box-sizing: border-box
}

html {
    height: 100%
}

body {
    color: #333;
    background-color: #fff;
    min-height: 100%;
    margin: 0;
    font-family: Arial, sans-serif;
    font-size: 14px;
    line-height: 20px
}

img {
    vertical-align: middle;
    max-width: 100%;
    display: inline-block
}

html.is-touch * {
    background-attachment: scroll !important
}

.w-inline-block {
    max-width: 100%;
    display: inline-block
}

.w-clearfix:before,
.w-clearfix:after {
    content: " ";
    grid-area: 1/1/2/2;
    display: table
}

.w-clearfix:after {
    clear: both
}

h1,
h2,
h3,
h4,
h5,
h6 {
    margin-bottom: 10px;
    font-weight: 700
}

h1 {
    margin-top: 20px;
    font-size: 38px;
    line-height: 44px
}

h2 {
    margin-top: 20px;
    font-size: 32px;
    line-height: 36px
}

h3 {
    margin-top: 20px;
    font-size: 24px;
    line-height: 30px
}

h4 {
    margin-top: 10px;
    font-size: 18px;
    line-height: 24px
}

h5 {
    margin-top: 10px;
    font-size: 14px;
    line-height: 20px
}

h6 {
    margin-top: 10px;
    font-size: 12px;
    line-height: 18px
}

p {
    margin-top: 0;
    margin-bottom: 10px
}

blockquote {
    border-left: 5px solid #e2e2e2;
    margin: 0 0 10px;
    padding: 10px 20px;
    font-size: 18px;
    line-height: 22px
}

figure {
    margin: 0 0 10px
}

ul,
ol {
    margin-top: 0;
    margin-bottom: 10px;
    padding-left: 40px
}

.w-embed:before,
.w-embed:after {
    content: " ";
    grid-area: 1/1/2/2;
    display: table
}

.w-embed:after {
    clear: both
}

fieldset {
    border: 0;
    margin: 0;
    padding: 0
}

button,
[type=button],
[type=reset] {
    cursor: pointer;
    -webkit-appearance: button;
    border: 0
}

.w-input {
    color: #333;
    vertical-align: middle;
    background-color: #fff;
    border: 1px solid #ccc;
    width: 100%;
    height: 38px;
    margin-bottom: 10px;
    padding: 8px 12px;
    font-size: 14px;
    line-height: 1.42857;
    display: block
}

.w-input::placeholder {
    color: #999
}

.w-input:focus {
    border-color: #3898ec;
    outline: 0
}

.w-input[disabled],
.w-input[readonly],
fieldset[disabled] .w-input {
    cursor: not-allowed
}

.w-input[disabled]:not(.w-input-disabled),
.w-input[readonly],
fieldset[disabled]:not(.w-input-disabled) .w-input {
    background-color: #eee
}

textarea.w-input {
    height: auto
}

@keyframes spin {
    0% {
        transform: rotate(0)
    }

    to {
        transform: rotate(360deg)
    }
}

.w-dyn-empty {
    background-color: #ddd;
    padding: 10px
}

.w-dyn-hide {
    display: none !important
}

.wf-layout-layout {
    display: grid
}

@font-face {
    font-family: Maison Neue Extended;
    src: url(../fonts/maison-neue-ext-book.woff2)format("woff2");
    font-weight: 400;
    font-style: normal;
    font-display: swap
}

@font-face {
    font-family: Maison Neue Extended;
    src: url(../fonts/maison-neue-ext-bold.woff2)format("woff2");
    font-weight: 700;
    font-style: normal;
    font-display: swap
}

:root {
    --_fonts---font-body: "Maison Neue Extended", Arial, sans-serif;
    --_colors---base-1000--primary: var(--_global-colors---base-1000--100);
    --_fonts---font-display: ambroise-francois-std, sans-serif;
    --_fonts---h1--size: calc(192rem/var(--_special-units---scale-ratio));
    --_fonts---h1--line-height: 87.5%;
    --_fonts---h1--letter-spacing: -.024em;
    --_fonts---h2--size: calc(136rem/var(--_special-units---scale-ratio));
    --_fonts---h2--line-height: 88.235%;
    --_fonts---h2--letter-spacing: -.024em;
    --_fonts---h3--size: calc(96rem/var(--_special-units---scale-ratio));
    --_fonts---h3--line-height: 91.667%;
    --_fonts---h3--letter-spacing: -.024em;
    --_fonts---h4--size: calc(63rem/var(--_special-units---scale-ratio));
    --_fonts---h4--line-height: 88.889%;
    --_fonts---h4--letter-spacing: -.016em;
    --_fonts---h5--size: calc(40rem/var(--_special-units---scale-ratio));
    --_fonts---h5--line-height: 100%;
    --_fonts---h5--letter-spacing: -.008em;
    --_fonts---h6--size: calc(28rem/var(--_special-units---scale-ratio));
    --_fonts---h6--line-height: 100%;
    --_fonts---h6--letter-spacing: 0em;
    --_fonts---p1--size: clamp(15px, calc(17rem/var(--_special-units---scale-ratio)), 19px);
    --_fonts---p1--line-height: 138.462%;
    --_fonts---p1--letter-spacing: -.024em;
    --_units---u-0: var(--0px);
    --_special-units---100vh: 100vh;
    --_colors---other--bg: var(--_global-colors---base-0--100);
    --_special-units---offset-r: var(--48px);
    --_special-units---offset-l: var(--48px);
    --_special-units---grid-gap: var(--16px);
    --_units---u-4: var(--4px);
    --_units---u-8: var(--8px);
    --_units---u-12: var(--12px);
    --_units---u-16: var(--16px);
    --_units---u-24: var(--24px);
    --_units---u-32: var(--32px);
    --_units---u-48: var(--48px);
    --_units---u-64: var(--64px);
    --_units---u-96: var(--96px);
    --_units---u-160: var(--160px);
    --_colors---base-0--primary: var(--_global-colors---base-0--100);
    --_colors---base-1000--gray-text: var(--_global-colors---base-1000--60);
    --_colors---additional--success: #1ba64b;
    --_colors---additional--alert: #ffa800;
    --_colors---additional--error: #e23d3d;
    --_units---u-272: var(--272px);
    --_fonts---l1--size: clamp(12px, calc(13rem/var(--_special-units---scale-ratio)), 15px);
    --_fonts---l1--line-height: 145.455%;
    --_fonts---l1--letter-spacing: .048em;
    --_colors---other--transparent: transparent;
    --_colors---base-1000--line: var(--_global-colors---base-1000--10);
    --40px: calc(40rem/var(--_special-units---scale-ratio));
    --112px: calc(112rem/var(--_special-units---scale-ratio));
    --_colors---base-1000--disabled: var(--_global-colors---base-1000--30);
    --_colors---brand-500--primary\<deleted\|variable-91ff398b-1b86-c83e-9325-f542c634d71f\>: var(--_global-colors---brand-500--powder-sky);
    --_fonts---p2--size: clamp(13px, calc(14rem/var(--_special-units---scale-ratio)), 16px);
    --_fonts---p2--line-height: 145.455%;
    --_fonts---p2--letter-spacing: -.024em;
    --_fonts---l2--size: clamp(10px, calc(11.5rem/var(--_special-units---scale-ratio)), 13px);
    --_fonts---l2--line-height: 133.333%;
    --_fonts---l2--letter-spacing: .32em;
    --_fonts---c1--size: calc(25rem/var(--_special-units---scale-ratio));
    --_fonts---c1--line-height: 112%;
    --_fonts---c1--letter-spacing: .8em;
    --_fonts---font-accent: sloop-script-three, sans-serif;
    --_fonts---a1--size: calc(192rem/var(--_special-units---scale-ratio));
    --_fonts---a1--line-height: 100%;
    --_fonts---a1--letter-spacing: 0em;
    --_fonts---a2--size: calc(120rem/var(--_special-units---scale-ratio));
    --_fonts---a2--line-height: 100%;
    --_fonts---a2--letter-spacing: 0em;
    --_special-units---scale-ratio: 16;
    --_special-units---1-cell-v: var(--96px);
    --_special-units---1-cell-h: var(--136px);
    --2px: calc(2rem/var(--_special-units---scale-ratio));
    --24px: calc(24rem/var(--_special-units---scale-ratio));
    --12px: calc(12rem/var(--_special-units---scale-ratio));
    --72px: calc(72rem/var(--_special-units---scale-ratio));
    --16px: calc(16rem/var(--_special-units---scale-ratio));
    --136px: calc(136rem/var(--_special-units---scale-ratio));
    --_global-colors---brand-500--velvet-plum: #340c24;
    --_global-colors---brand-500--feather-olive: #27360d;
    --80px: calc(80rem/var(--_special-units---scale-ratio));
    --192px: calc(192rem/var(--_special-units---scale-ratio));
    --144px: calc(144rem/var(--_special-units---scale-ratio));
    --28px: calc(28rem/var(--_special-units---scale-ratio));
    --56px: calc(56rem/var(--_special-units---scale-ratio));
    --32px: calc(32rem/var(--_special-units---scale-ratio));
    --6px: calc(6rem/var(--_special-units---scale-ratio));
    --20px: calc(20rem/var(--_special-units---scale-ratio));
    --44px: calc(44rem/var(--_special-units---scale-ratio));
    --_global-colors---base-0--100: #f3f3ec;
    --_global-colors---base-0--0: #f3f3ec00;
    --60px: calc(60rem/var(--_special-units---scale-ratio));
    --48px: calc(48rem/var(--_special-units---scale-ratio));
    --96px: calc(96rem/var(--_special-units---scale-ratio));
    --8px: calc(8rem/var(--_special-units---scale-ratio));
    --0px: calc(0rem/var(--_special-units---scale-ratio));
    --1px: calc(1rem/var(--_special-units---scale-ratio));
    --4px: calc(4rem/var(--_special-units---scale-ratio));
    --10px: calc(10rem/var(--_special-units---scale-ratio));
    --36px: calc(36rem/var(--_special-units---scale-ratio));
    --52px: calc(52rem/var(--_special-units---scale-ratio));
    --64px: calc(64rem/var(--_special-units---scale-ratio));
    --68px: calc(68rem/var(--_special-units---scale-ratio));
    --88px: calc(88rem/var(--_special-units---scale-ratio));
    --104px: calc(104rem/var(--_special-units---scale-ratio));
    --120px: calc(120rem/var(--_special-units---scale-ratio));
    --160px: calc(160rem/var(--_special-units---scale-ratio));
    --168px: calc(168rem/var(--_special-units---scale-ratio));
    --240px: calc(240rem/var(--_special-units---scale-ratio));
    --_colors---base-1000--bg: var(--_global-colors---base-1000--5);
    --_colors---base-0--gray-text: var(--_global-colors---base-0--60);
    --_colors---base-0--disabled: var(--_global-colors---base-0--30);
    --_colors---base-0--line: var(--_global-colors---base-0--10);
    --_colors---base-0--bg: var(--_global-colors---base-0--5);
    --_colors---white--primary: var(--_global-colors---white--100);
    --_colors---white--gray-text: var(--_global-colors---white--80);
    --_colors---white--disabled: var(--_global-colors---white--40);
    --_colors---white--line: var(--_global-colors---white--20);
    --_colors---white--bg: var(--_global-colors---white--10);
    --272px: calc(272rem/var(--_special-units---scale-ratio));
    --_global-colors---brand-500--powder-sky: #b5cedb;
    --_global-colors---brand-500--blush-bloom: #f8bbcb;
    --_global-colors---base-1000--100: #17233b;
    --_global-colors---base-1000--60: #17233b99;
    --_global-colors---base-1000--30: #17233b4d;
    --_global-colors---base-1000--10: #17233b1a;
    --_global-colors---base-1000--5: #17233b0d;
    --_global-colors---base-1000--0: #17233b00;
    --_global-colors---base-0--60: #f3f3ec99;
    --_global-colors---base-0--30: #f3f3ec4d;
    --_global-colors---base-0--10: #f3f3ec1a;
    --_global-colors---base-0--5: #f3f3ec0d;
    --_global-colors---white--100: white;
    --_global-colors---white--80: #fffc;
    --_global-colors---white--40: #fff6;
    --_global-colors---white--20: #fff3;
    --_global-colors---white--10: #ffffff1a;
    --_global-colors---white--0: #fff0
}

body {
    font-family: var(--_fonts---font-body);
    color: var(--_colors---base-1000--primary);
    font-size: 1vw;
    font-weight: 400;
    line-height: 1
}

h1 {
    font-family: var(--_fonts---font-display);
    font-size: var(--_fonts---h1--size);
    line-height: var(--_fonts---h1--line-height);
    letter-spacing: var(--_fonts---h1--letter-spacing);
    text-transform: uppercase;
    margin-top: 0;
    margin-bottom: 0;
    font-weight: 400
}

h2 {
    font-family: var(--_fonts---font-display);
    font-size: var(--_fonts---h2--size);
    line-height: var(--_fonts---h2--line-height);
    letter-spacing: var(--_fonts---h2--letter-spacing);
    text-transform: uppercase;
    margin-top: 0;
    margin-bottom: 0;
    font-weight: 400
}

h3 {
    font-family: var(--_fonts---font-display);
    font-size: var(--_fonts---h3--size);
    line-height: var(--_fonts---h3--line-height);
    letter-spacing: var(--_fonts---h3--letter-spacing);
    text-transform: uppercase;
    margin-top: 0;
    margin-bottom: 0;
    font-weight: 400
}

h4 {
    font-family: var(--_fonts---font-display);
    font-size: var(--_fonts---h4--size);
    line-height: var(--_fonts---h4--line-height);
    letter-spacing: var(--_fonts---h4--letter-spacing);
    text-transform: uppercase;
    margin-top: 0;
    margin-bottom: 0;
    font-weight: 400
}

h5 {
    font-family: var(--_fonts---font-display);
    font-size: var(--_fonts---h5--size);
    line-height: var(--_fonts---h5--line-height);
    letter-spacing: var(--_fonts---h5--letter-spacing);
    text-transform: uppercase;
    margin-top: 0;
    margin-bottom: 0;
    font-weight: 400
}

h6 {
    font-family: var(--_fonts---font-display);
    font-size: var(--_fonts---h6--size);
    line-height: var(--_fonts---h6--line-height);
    letter-spacing: var(--_fonts---h6--letter-spacing);
    text-transform: uppercase;
    margin-top: 0;
    margin-bottom: 0;
    font-weight: 400
}

p {
    font-family: var(--_fonts---font-body);
    font-size: var(--_fonts---p1--size);
    line-height: var(--_fonts---p1--line-height);
    letter-spacing: var(--_fonts---p1--letter-spacing);
    margin-bottom: 0;
    font-weight: 400
}

a {
    color: var(--_colors---base-1000--primary);
    text-decoration: none
}

ul,
ol {
    margin-top: var(--_units---u-0);
    margin-bottom: var(--_units---u-0);
    padding-left: var(--_units---u-0)
}

img {
    object-fit: cover;
    max-width: none
}

label {
    margin-bottom: var(--_units---u-0);
    font-weight: 700;
    display: block
}

blockquote {
    margin-bottom: var(--_units---u-0);
    padding: var(--_units---u-0);
    border: 1px #000;
    font-size: 1em;
    line-height: 1
}

figure {
    margin-bottom: 10px
}

figcaption {
    text-align: center;
    margin-top: 5px
}

.a-left {
    text-align: left;
    flex: 1
}

.a-right {
    text-align: right;
    flex: 1
}

.a-center {
    text-align: center
}

.blend-diff {
    mix-blend-mode: difference
}

.d-none,
.style-css,
.scripts-js {
    display: none
}

.utility-page-wrap {
    height: var(--_special-units---100vh);
    flex-flow: column;
    justify-content: center;
    align-items: center;
    display: flex
}

.utility-page-content {
    text-align: center;
    flex-direction: column;
    display: flex
}

.utility-page-form {
    flex-direction: column;
    align-items: stretch;
    display: flex
}

.section {
    background-color: var(--_colors---other--bg)
}

.section.arch {
    z-index: 1;
    border-top-left-radius: 50rem;
    border-top-right-radius: 50rem;
    position: relative
}

.section.arch.clip.theme_on-brand.test {
    z-index: 2
}

.section.z-2 {
    z-index: 2;
    position: relative
}

.h1 {
    font-family: var(--_fonts---font-display);
    color: var(--_colors---base-1000--primary);
    font-size: var(--_fonts---h1--size);
    line-height: var(--_fonts---h1--line-height);
    letter-spacing: var(--_fonts---h1--letter-spacing);
    text-transform: uppercase;
    font-variant-numeric: lining-nums proportional-nums;
    font-feature-settings: "case" on;
    font-weight: 400
}

.h2 {
    font-family: var(--_fonts---font-display);
    color: var(--_colors---base-1000--primary);
    font-size: var(--_fonts---h2--size);
    line-height: var(--_fonts---h2--line-height);
    letter-spacing: var(--_fonts---h2--letter-spacing);
    text-transform: uppercase;
    font-variant-numeric: lining-nums proportional-nums;
    font-feature-settings: "case" on;
    font-weight: 400
}

.h3 {
    font-family: var(--_fonts---font-display);
    color: var(--_colors---base-1000--primary);
    font-size: var(--_fonts---h3--size);
    line-height: var(--_fonts---h3--line-height);
    letter-spacing: var(--_fonts---h3--letter-spacing);
    text-transform: uppercase;
    font-variant-numeric: lining-nums proportional-nums;
    font-feature-settings: "case" on;
    font-weight: 400
}

.h4 {
    font-family: var(--_fonts---font-display);
    color: var(--_colors---base-1000--primary);
    font-size: var(--_fonts---h4--size);
    line-height: var(--_fonts---h4--line-height);
    letter-spacing: var(--_fonts---h4--letter-spacing);
    text-transform: uppercase;
    font-variant-numeric: lining-nums proportional-nums;
    font-feature-settings: "case" on;
    font-weight: 400
}

.h5 {
    font-family: var(--_fonts---font-display);
    color: var(--_colors---base-1000--primary);
    font-size: var(--_fonts---h5--size);
    line-height: var(--_fonts---h5--line-height);
    letter-spacing: var(--_fonts---h5--letter-spacing);
    text-transform: uppercase;
    font-variant-numeric: lining-nums proportional-nums;
    font-feature-settings: "case" on;
    font-weight: 400
}

.h6 {
    font-family: var(--_fonts---font-display);
    color: var(--_colors---base-1000--primary);
    font-size: var(--_fonts---h6--size);
    line-height: var(--_fonts---h6--line-height);
    letter-spacing: var(--_fonts---h6--letter-spacing);
    text-transform: uppercase;
    font-variant-numeric: lining-nums proportional-nums;
    font-feature-settings: "case" on;
    font-weight: 400
}

.p1 {
    font-family: var(--_fonts---font-body);
    color: var(--_colors---base-1000--primary);
    font-size: var(--_fonts---p1--size);
    line-height: var(--_fonts---p1--line-height);
    letter-spacing: var(--_fonts---p1--letter-spacing);
    text-transform: none;
    font-weight: 400
}

.e-none {
    pointer-events: none
}

.container {
    padding-right: var(--_special-units---offset-r);
    padding-left: var(--_special-units---offset-l)
}

.container.loc {
    padding-right: 0
}

.grid {
    grid-column-gap: var(--_special-units---grid-gap);
    grid-row-gap: var(--_units---u-0);
    grid-template-rows: auto;
    grid-template-columns: 1fr 1fr 1fr 1fr 1fr 1fr 1fr 1fr 1fr 1fr;
    grid-auto-columns: 1fr;
    display: grid
}

.grid.fill {
    flex: 1
}

.grid._6-columns {
    grid-template-columns: 1fr 1fr 1fr 1fr 1fr 1fr
}

.grid._5-columns {
    grid-template-columns: 1fr 1fr 1fr 1fr 1fr
}

.grid._4-columns {
    grid-template-columns: 1fr 1fr 1fr 1fr
}

.grid._13-columns {
    grid-template-columns: 1fr 1fr 1fr 1fr 1fr 1fr 1fr 1fr 1fr 1fr 1fr 1fr 1fr
}

.grid._8-columns {
    grid-template-columns: 1fr 1fr 1fr 1fr 1fr 1fr 1fr 1fr
}

.grid._9-columns {
    grid-template-columns: 1fr 1fr 1fr 1fr 1fr 1fr 1fr 1fr 1fr
}

.grid.h-100 {
    height: 100%
}

.b-desk {
    display: block
}

.b-mob,
.f-mob {
    display: none
}

.f-desk {
    display: flex
}

.u-4 {
    height: var(--_units---u-4)
}

.u-8 {
    height: var(--_units---u-8);
    flex: none
}

.u-12 {
    height: var(--_units---u-12)
}

.u-16 {
    height: var(--_units---u-16);
    flex: none
}

.u-24 {
    height: var(--_units---u-24)
}

.u-32 {
    height: var(--_units---u-32)
}

.u-48 {
    height: var(--_units---u-48);
    flex: none
}

.clip {
    overflow: clip
}

.u-64 {
    height: var(--_units---u-64)
}

.u-96 {
    height: var(--_units---u-96)
}

.u-160 {
    height: var(--_units---u-160);
    flex: none
}

.text-dark {
    color: var(--_colors---base-1000--primary)
}

.text-light {
    color: var(--_colors---base-0--primary)
}

.text-gray {
    color: var(--_colors---base-1000--gray-text)
}

.text-success {
    color: var(--_colors---additional--success)
}

.text-alert {
    color: var(--_colors---additional--alert)
}

.text-error {
    color: var(--_colors---additional--error)
}

.u-272 {
    height: var(--_units---u-272)
}

.inline {
    display: inline
}

.l1 {
    font-family: var(--_fonts---font-body);
    color: var(--_colors---base-1000--primary);
    font-size: var(--_fonts---l1--size);
    line-height: var(--_fonts---l1--line-height);
    letter-spacing: var(--_fonts---l1--letter-spacing);
    text-transform: uppercase;
    font-weight: 700
}

.cms_empty-none {
    background-color: var(--_colors---other--transparent);
    display: none
}

.h-hiden {
    position: absolute;
    top: -9999em;
    left: -9999em
}

.theme_on-color {
    --_colors---base-1000--primary: var(--_global-colors---white--100);
    --_colors---other--bg: var(--_global-colors---brand-500--feather-olive);
    --_colors---base-0--primary: var(--_global-colors---base-1000--100);
    --_colors---base-1000--gray-text: var(--_global-colors---white--80);
    --_colors---additional--success: #1ba64b;
    --_colors---additional--alert: #ffa800;
    --_colors---additional--error: #e23d3d;
    --_colors---other--transparent: transparent;
    --_colors---base-1000--line: var(--_global-colors---white--20);
    --_colors---base-1000--disabled: var(--_global-colors---white--40);
    --_colors---brand-500--primary\<deleted\|variable-91ff398b-1b86-c83e-9325-f542c634d71f\>: var(--_global-colors---brand-500--powder-sky);
    --_colors---base-1000--bg: var(--_global-colors---white--10);
    --_colors---base-0--gray-text: var(--_global-colors---base-1000--60);
    --_colors---base-0--disabled: var(--_global-colors---base-1000--30);
    --_colors---base-0--line: var(--_global-colors---base-1000--10);
    --_colors---base-0--bg: var(--_global-colors---base-1000--5);
    --_colors---white--primary: var(--_global-colors---white--100);
    --_colors---white--gray-text: var(--_global-colors---white--80);
    --_colors---white--disabled: var(--_global-colors---white--40);
    --_colors---white--line: var(--_global-colors---white--20);
    --_colors---white--bg: var(--_global-colors---white--10)
}

.theme_on-light {
    --_colors---base-1000--primary: var(--_global-colors---base-1000--100);
    --_colors---other--bg: var(--_global-colors---base-0--100);
    --_colors---base-0--primary: var(--_global-colors---base-0--100);
    --_colors---base-1000--gray-text: var(--_global-colors---base-1000--60);
    --_colors---additional--success: #1ba64b;
    --_colors---additional--alert: #ffa800;
    --_colors---additional--error: #e23d3d;
    --_colors---other--transparent: transparent;
    --_colors---base-1000--line: var(--_global-colors---base-1000--10);
    --_colors---base-1000--disabled: var(--_global-colors---base-1000--30);
    --_colors---brand-500--primary\<deleted\|variable-91ff398b-1b86-c83e-9325-f542c634d71f\>: var(--_global-colors---brand-500--powder-sky);
    --_colors---base-1000--bg: var(--_global-colors---base-1000--5);
    --_colors---base-0--gray-text: var(--_global-colors---base-0--60);
    --_colors---base-0--disabled: var(--_global-colors---base-0--30);
    --_colors---base-0--line: var(--_global-colors---base-0--10);
    --_colors---base-0--bg: var(--_global-colors---base-0--5);
    --_colors---white--primary: var(--_global-colors---white--100);
    --_colors---white--gray-text: var(--_global-colors---white--80);
    --_colors---white--disabled: var(--_global-colors---white--40);
    --_colors---white--line: var(--_global-colors---white--20);
    --_colors---white--bg: var(--_global-colors---white--10)
}

.landscape-cover {
    z-index: 999999;
    display: none;
    position: fixed;
    inset: 0%
}

.landscape-cover_img {
    z-index: 1;
    width: 100%;
    height: 100%;
    position: relative
}

.img {
    flex: none;
    width: 100%;
    height: 100%
}

.img.contain {
    object-fit: contain
}

.img.h-auto {
    display: block
}

.img.h-auto.hero-img {
    min-height: var(--_special-units---100vh)
}

.img.modal_lightbox_img {
    flex: none;
    width: auto;
    max-width: 100%;
    height: auto;
    max-height: 100%
}

.img.loc-path {
    position: absolute;
    inset: 0%
}

.landscape-cover_bg {
    z-index: 0;
    background-color: var(--_colors---base-1000--primary);
    position: absolute;
    inset: 0%
}

.input_field {
    height: var(--_units---u-32);
    margin-bottom: var(--_units---u-0);
    padding: var(--_units---u-8)var(--_units---u-64);
    border-style: none none solid;
    border-width: 0 0 1px;
    border-color: var(--_colors---other--transparent)var(--_colors---other--transparent)var(--_colors---base-1000--line);
    background-color: var(--_colors---other--transparent);
    text-align: center
}

.input_field:focus {
    border-style: none none solid;
    border-width: 0 0 1px;
    border-color: var(--_colors---other--transparent)var(--_colors---other--transparent)var(--_colors---base-1000--primary)
}

.input_field.area {
    width: 100%;
    height: var(--112px);
    max-height: var(--112px);
    max-width: 100%;
    min-height: var(--112px);
    min-width: 100%
}

.form_block {
    flex-flow: row;
    justify-content: space-between;
    height: 100%;
    display: flex
}

.form_success {
    height: 100%;
    padding: var(--_units---u-0);
    background-color: var(--_colors---other--transparent);
    text-align: left
}

.form_error {
    margin-top: var(--_units---u-0);
    padding: var(--_units---u-8)var(--_units---u-64);
    background-color: var(--_colors---additional--error);
    position: absolute;
    inset: auto 0% 0%
}

.article-text blockquote {
    font-size: var(--_fonts---h1--size);
    line-height: var(--_fonts---h1--line-height);
    letter-spacing: var(--_fonts---h1--letter-spacing)
}

.article-text ol,
.article-text ul {
    font-size: var(--_fonts---p1--size);
    line-height: var(--_fonts---p1--line-height);
    letter-spacing: var(--_fonts---p1--letter-spacing)
}

.article-text a {
    text-decoration: underline
}

.article-text a:hover {
    text-decoration: none
}

.article-text figure {
    margin-bottom: var(--_units---u-0)
}

.article-text figcaption {
    margin-top: var(--_units---u-0);
    font-size: var(--_fonts---p1--size);
    line-height: var(--_fonts---p1--line-height);
    letter-spacing: var(--_fonts---p1--letter-spacing)
}

.body {
    background-color: var(--_colors---other--transparent)
}

.img-w {
    flex-flow: column;
    justify-content: center;
    align-items: stretch;
    width: 100%;
    height: 100%;
    display: flex;
    overflow: clip
}

.img-p {
    flex: none;
    width: 100%;
    height: 140%
}

.btn-list {
    grid-column-gap: var(--_units---u-8);
    grid-row-gap: var(--_units---u-8);
    flex-flow: wrap;
    justify-content: flex-start;
    align-items: flex-start;
    display: flex
}

.btn-list.center {
    justify-content: center;
    align-items: flex-start
}

.ico {
    width: 100%;
    height: 100%;
    color: var(--_colors---base-1000--primary);
    position: relative
}

.ico.ia-2 {
    position: absolute;
    inset: 0%
}

.main-css {
    display: none
}

.text-disabled {
    color: var(--_colors---base-1000--disabled)
}

.bg-dark {
    background-color: var(--_colors---base-1000--primary)
}

.bg-light {
    background-color: var(--_colors---base-0--primary)
}

.bg-brand {
    background-color: var(--_colors---brand-500--primary\<deleted\|variable-91ff398b-1b86-c83e-9325-f542c634d71f\>)
}

.text-brand {
    color: var(--_colors---brand-500--primary\<deleted\|variable-91ff398b-1b86-c83e-9325-f542c634d71f\>)
}

.theme_on-dark {
    --_colors---base-1000--primary: var(--_global-colors---base-0--100);
    --_colors---other--bg: var(--_global-colors---brand-500--feather-olive);
    --_colors---base-0--primary: var(--_global-colors---base-1000--100);
    --_colors---base-1000--gray-text: var(--_global-colors---base-0--60);
    --_colors---additional--success: #1ba64b;
    --_colors---additional--alert: #ffa800;
    --_colors---additional--error: #e23d3d;
    --_colors---other--transparent: transparent;
    --_colors---base-1000--line: var(--_global-colors---base-0--10);
    --_colors---base-1000--disabled: var(--_global-colors---base-0--30);
    --_colors---brand-500--primary\<deleted\|variable-91ff398b-1b86-c83e-9325-f542c634d71f\>: var(--_global-colors---brand-500--powder-sky);
    --_colors---base-1000--bg: var(--_global-colors---base-0--5);
    --_colors---base-0--gray-text: var(--_global-colors---base-1000--60);
    --_colors---base-0--disabled: var(--_global-colors---base-1000--30);
    --_colors---base-0--line: var(--_global-colors---base-1000--10);
    --_colors---base-0--bg: var(--_global-colors---base-1000--5);
    --_colors---white--primary: var(--_global-colors---white--100);
    --_colors---white--gray-text: var(--_global-colors---white--80);
    --_colors---white--disabled: var(--_global-colors---white--40);
    --_colors---white--line: var(--_global-colors---white--20);
    --_colors---white--bg: var(--_global-colors---white--10)
}

.input {
    position: relative
}

.input_label {
    left: 0%;
    top: var(--_units---u-8);
    position: absolute;
    bottom: auto;
    right: auto
}

.ui-kit {
    padding-right: var(--_special-units---offset-r);
    padding-left: var(--_special-units---offset-l)
}

.master-preloader {
    z-index: 999999;
    background-color: var(--_colors---other--bg);
    display: none;
    position: fixed;
    inset: 0% 0% -100%
}

.truncate {
    text-overflow: ellipsis;
    white-space: nowrap;
    overflow: hidden
}

.modal {
    z-index: 5000;
    pointer-events: none;
    display: none;
    position: fixed;
    inset: 0%
}

.modal.show {
    display: block
}

.modal.menu {
    z-index: 1100
}

.logo {
    width: 100%;
    height: 100%;
    color: var(--_colors---base-1000--primary);
    object-fit: contain
}

.logo.b {
    object-position: 50% 100%
}

.logo_symbol {
    z-index: 1;
    aspect-ratio: 1;
    position: relative
}

.logo_symbol.header {
    width: var(--_units---u-48);
    height: var(--_units---u-48)
}

.preloader {
    z-index: 11000;
    padding-bottom: var(--_special-units---100vh);
    pointer-events: auto;
    top: 0%;
    left: 0%;
    right: 0%;
    bottom: calc(var(--_special-units---100vh)*-1);
    display: none;
    position: fixed
}

.preloader_ctn {
    z-index: 1;
    width: 100%;
    height: 100%;
    padding-right: var(--_special-units---offset-r);
    padding-left: var(--_special-units---offset-l);
    flex-flow: column;
    justify-content: space-between;
    display: flex;
    position: relative
}

.flip-h {
    transform: scaleX(-1)
}

._w-auto {
    width: auto
}

.flip-v {
    transform: scaleY(-1)
}

.h-auto {
    height: auto
}

.p2 {
    font-family: var(--_fonts---font-body);
    color: var(--_colors---base-1000--primary);
    font-size: var(--_fonts---p2--size);
    line-height: var(--_fonts---p2--line-height);
    letter-spacing: var(--_fonts---p2--letter-spacing);
    text-transform: none;
    font-weight: 400
}

.l2 {
    font-family: var(--_fonts---font-body);
    color: var(--_colors---base-1000--primary);
    font-size: var(--_fonts---l2--size);
    line-height: var(--_fonts---l2--line-height);
    letter-spacing: var(--_fonts---l2--letter-spacing);
    text-transform: uppercase;
    font-weight: 700
}

.l2.text-disabled {
    color: var(--_colors---base-1000--disabled)
}

.c1 {
    font-family: var(--_fonts---font-display);
    color: var(--_colors---base-1000--primary);
    font-size: var(--_fonts---c1--size);
    line-height: var(--_fonts---c1--line-height);
    letter-spacing: var(--_fonts---c1--letter-spacing);
    text-transform: uppercase;
    font-variant-numeric: lining-nums proportional-nums;
    font-feature-settings: "case" on;
    font-weight: 400
}

/* Kannada script. Ambroise François has no Kannada coverage, so the family is
   swapped for Noto Serif Kannada. Kannada has no letter case, so text-transform
   is dropped, and the wide Latin tracking is pulled back — anything looser
   starts pushing vowel signs off their consonants.
   The size compensation is deliberately NOT on this class. Kannada sets no cap
   height, so it always needs a nudge to carry the same optical weight as the
   Latin beside it, but how big a nudge depends entirely on what it sits in:
   1.55em is right for the .c1 eyebrow with its 0.8em tracking and absurd on an
   11px label. Baking it into .is-kannada made the class unusable anywhere except
   the single place it was first written for. */
.is-kannada {
    font-family: "Noto Serif Kannada", "Kannada MN", "Kannada Sangam MN", "Nirmala UI", "Tunga", sans-serif;
    text-transform: none;
    letter-spacing: .06em;
    font-feature-settings: normal
}

/* The location eyebrow: ಕರ್ನಾಟಕ, set large and widely tracked above a title. */
.c1.is-kannada {
    font-size: 1.55em
}

/* .c1 is tuned for ONE OR TWO WORDS. At 0.8em the tracking is the whole effect —
   "Near", "Bengaluru", "ಕರ್ನಾಟಕ", "Availability" — and those uses should keep it.
   What 0.8em cannot do is carry a sentence. Put a phrase through it and the gap
   between two letters equals the gap between two words, so the reader has no
   word boundary left to hold on to and has to assemble "KING OR TWIN" one letter
   at a time; a middle dot separator disappears into the same gap on both sides.
   It is also about three times as wide as the words themselves, so on a phone it
   breaks in the wrong place — "KING OR TWIN ·" over "DEVANAHALLI" — and the
   orphaned separator ends the first line.

   So the phrase eyebrows get their own modifier rather than a rewritten .c1:

     letter-spacing  0.2em, which is still unmistakably this typeface being
                     tracked out, and still wider than .l2's small-caps voice,
                     but back inside the range where words read as words.
     word-spacing    stated rather than inherited. Letter-spacing adds its 0.2em
                     after the space character too, so without this the word gap
                     and the letter gap stay proportionally closer than they
                     should; 0.16em restores the hierarchy the eye needs.
     text-wrap       balance, so a two-line eyebrow splits evenly instead of
                     dropping one word — usually the place name — onto its own
                     line under a nearly full one.

   Applied to the hero eyebrow on the seven detail pages and to the closing CTA
   line, i.e. everywhere .c1 is handed a phrase instead of a label. */
.c1.is-phrase {
    letter-spacing: .2em;
    word-spacing: .16em;
    text-wrap: balance
}

/* Tracking is added AFTER the final letter as well as between letters, so a
   centred tracked line carries 0.2em of empty space on its right that the
   browser still counts as text. Left alone, the line sits visibly off-centre
   against the h1 above it. Pulling the trailing space back off the right edge
   re-centres the ink rather than the box. */
.c1.is-phrase.a-center {
    margin-right: -.2em
}

/* The detail-page eyebrows are `.a-center .mob_a-left`: centred beside a desktop
   h1, flush left on a phone. Once the line is left-aligned there is no trailing
   space to compensate for, and the correction above would instead pull the first
   letter a fraction past the text it is meant to line up with. Cancelled at the
   site's one breakpoint, the same 991px .mob_a-left itself uses. */
@media screen and (max-width:991px) {
    .c1.is-phrase.a-center.mob_a-left {
        margin-right: 0
    }
}

/* The preloader's closing couplet, and only there — ಶ್ರೀ ರಾಗ beside the Latin
   "Resorts" on one baseline. Scoped to [data-preloader] on purpose rather than
   written as a bare `.l1 .is-kannada`: the Kannada name is an intro flourish,
   not a site-wide convention, and an unscoped rule would silently style any
   Kannada dropped into any label line later. If a second place ever wants the
   same treatment, widen this selector deliberately.
   Tighter tracking than the eyebrow, because at this size the vowel signs are
   the first thing to come apart.
   1.4em is cap-height matching, not a flourish. Uppercase Latin fills about 0.7
   of its em; Kannada's body height is nearer 0.5, so at equal font-size the
   Kannada reads as the smaller of the two words in the same name. 0.7/0.5 is
   where the 1.4 comes from — measured on the rendered result, both words land at
   the same ink height — so the number should not be nudged for taste without
   re-checking it against the Latin it stands beside. */
[data-preloader] .l1 .is-kannada {
    font-size: 1.4em;
    letter-spacing: .03em;
    /* The label inherits 700 and Noto Serif Kannada ships only a 400 face here,
       so without this the browser synthesises the bold. Faux bold smears an
       Indic script in a way it does not smear Latin — it thickens the vowel
       signs and the virama at the same rate as the stems, and at this size they
       start closing up against the consonant. Real 400, and the size bump above
       carries the weight instead. */
    font-weight: 400
}

.reg {
    font-weight: 400
}

.bd {
    font-weight: 700
}

.a1 {
    font-family: var(--_fonts---font-accent);
    color: var(--_colors---base-1000--primary);
    font-size: var(--_fonts---a1--size);
    line-height: var(--_fonts---a1--line-height);
    letter-spacing: var(--_fonts---a1--letter-spacing);
    text-transform: none;
    margin-top: .175em;
    margin-bottom: -.175em;
    font-weight: 400
}

.a1.test {
    margin-top: .175em;
    margin-bottom: -.175em;
    font-family: sloop-script-three, sans-serif
}

.a2 {
    font-family: var(--_fonts---font-accent);
    color: var(--_colors---base-1000--primary);
    font-size: var(--_fonts---a2--size);
    line-height: var(--_fonts---a2--line-height);
    letter-spacing: var(--_fonts---a2--letter-spacing);
    text-transform: none;
    margin-top: .175em;
    margin-bottom: -.175em;
    font-weight: 400
}

.a2.preloader_a {
    font-size: calc(64rem/var(--_special-units---scale-ratio))
}

.apart-info-w {
    position: relative
}

.theme_on-brand {
    --_colors---base-1000--primary: var(--_global-colors---base-1000--100);
    --_colors---other--bg: var(--_global-colors---brand-500--powder-sky);
    --_colors---base-0--primary: var(--_global-colors---base-0--100);
    --_colors---base-1000--gray-text: var(--_global-colors---base-1000--60);
    --_colors---additional--success: #1ba64b;
    --_colors---additional--alert: #ffa800;
    --_colors---additional--error: #e23d3d;
    --_colors---other--transparent: transparent;
    --_colors---base-1000--line: var(--_global-colors---base-1000--10);
    --_colors---base-1000--disabled: var(--_global-colors---base-1000--30);
    --_colors---brand-500--primary\<deleted\|variable-91ff398b-1b86-c83e-9325-f542c634d71f\>: var(--_global-colors---brand-500--powder-sky);
    --_colors---base-1000--bg: var(--_global-colors---base-1000--5);
    --_colors---base-0--gray-text: var(--_global-colors---base-0--60);
    --_colors---base-0--disabled: var(--_global-colors---base-0--30);
    --_colors---base-0--line: var(--_global-colors---base-0--10);
    --_colors---base-0--bg: var(--_global-colors---base-0--5);
    --_colors---white--primary: var(--_global-colors---white--100);
    --_colors---white--gray-text: var(--_global-colors---white--80);
    --_colors---white--disabled: var(--_global-colors---white--40);
    --_colors---white--line: var(--_global-colors---white--20);
    --_colors---white--bg: var(--_global-colors---white--10)
}

.divider {
    height: calc((var(--_special-units---1-cell-v)*2) + (var(--_special-units---grid-gap)));
    flex-flow: row;
    justify-content: center;
    display: flex
}

.line-v {
    background-color: var(--_colors---base-1000--primary);
    width: .75px;
    height: 100%
}

.s_title {
    z-index: 1;
    padding-right: var(--_units---u-48);
    padding-left: var(--_units---u-48);
    grid-area: 1/5/2/7;
    position: relative
}

.info-s_lead {
    grid-area: 1/3/2/9
}

.info-s_desc {
    grid-area: 1/5/2/7
}

.s_logo {
    z-index: 1;
    grid-column-gap: var(--_units---u-32);
    grid-row-gap: var(--_units---u-32);
    justify-content: center;
    align-items: center;
    display: flex;
    position: relative
}

.ico-48 {
    width: var(--_units---u-48);
    height: var(--_units---u-48)
}

.loc-info-w {
    width: calc((var(--_special-units---1-cell-h)*10) + (var(--_special-units---grid-gap)*9));
    flex: none;
    position: relative
}

.loc-info-s {
    height: var(--_special-units---100vh);
    flex-flow: column;
    justify-content: space-between;
    display: flex
}

.loc-info-s_t {
    flex: 1
}

.loc-info-s_b {
    flex-flow: column;
    flex: 1;
    justify-content: flex-end;
    display: flex
}

.benefits-s {
    height: var(--_special-units---100vh);
    flex-flow: column;
    display: flex
}

.benefits-s_cms {
    flex-flow: column;
    grid-area: 1/2/2/10;
    justify-content: center;
    display: flex;
    position: relative
}

.benefits-cms {
    height: 100%
}

.benefits-cms_list {
    z-index: 0;
    height: 100%;
    position: relative
}

.benefits-cms_list_item {
    height: 100%;
    display: none;
    position: absolute;
    inset: 0%
}

.benefits-cms_list_item:first-child {
    display: block;
    position: relative
}

.benefit-slide {
    flex-flow: column;
    justify-content: space-between;
    height: 100%;
    display: flex
}

.benefit-slide_t {
    flex: 1
}

.benefit-slide_c {
    flex-flow: column;
    justify-content: center;
    align-items: center;
    display: flex
}

.benefit-slide_b {
    flex-flow: column;
    flex: 1;
    justify-content: flex-end;
    display: flex
}

.benefit-slide_cap {
    padding-right: var(--_units---u-48);
    padding-left: var(--_units---u-48);
    grid-area: 1/4/2/6
}

.benefit-slide_desc {
    grid-area: 1/3/2/7
}

.benefit-slide_img {
    aspect-ratio: 6/3;
    height: calc((var(--_special-units---1-cell-v)*2) + (var(--_special-units---grid-gap)));
    grid-area: 1/3/1/6
}

.pag {
    height: var(--_units---u-48);
    grid-column-gap: var(--_units---u-32);
    grid-row-gap: var(--_units---u-32);
    pointer-events: auto;
    justify-content: center;
    align-items: center;
    display: flex
}

.benefits-s_cms_pag {
    z-index: 1;
    pointer-events: none;
    flex-flow: column;
    display: flex;
    position: absolute;
    inset: auto 0%
}

.pag_progress {
    width: var(--_units---u-160);
    background-color: var(--_colors---base-1000--line);
    height: 1px
}

.pag_progress.lightbox {
    flex: 1
}

.pag_next {
    height: var(--_units---u-48);
    padding-right: var(--_units---u-8);
    grid-column-gap: var(--_units---u-16);
    grid-row-gap: var(--_units---u-16);
    cursor: pointer;
    justify-content: center;
    align-items: center;
    display: flex
}

.pag_prev {
    height: var(--_units---u-48);
    padding-left: var(--_units---u-8);
    grid-column-gap: var(--_units---u-16);
    grid-row-gap: var(--_units---u-16);
    cursor: pointer;
    justify-content: center;
    align-items: center;
    display: flex
}

.pag_progress_fill {
    background-color: var(--_colors---base-1000--primary);
    width: 0%;
    height: 100%
}

.ico-16 {
    width: var(--_units---u-16);
    height: var(--_units---u-16)
}

.pag_prev_label {
    width: var(--_units---u-24);
    margin-top: var(--2px);
    justify-content: center;
    align-items: center;
    display: flex
}

.benefits-intro-w {
    margin-top: calc((50rem + var(--_special-units---100vh))*-1)
}

.benefits-intro-w.test {
    margin-top: -50rem
}

.benefits-intro-s {
    z-index: 0;
    flex-flow: column;
    justify-content: flex-end;
    height: 50rem;
    display: flex;
    position: relative
}

.info-s_logo_r {
    grid-column-gap: 16px;
    grid-row-gap: 16px;
    flex: 1;
    grid-template-rows: auto auto;
    grid-template-columns: 1fr 1fr;
    grid-auto-columns: 1fr;
    justify-content: flex-start;
    align-items: center;
    display: flex
}

.info-s_logo_l {
    flex: 1;
    justify-content: flex-end;
    align-items: center;
    display: flex
}

.benefits-intro-s_title_svg {
    z-index: 0;
    position: relative
}

.hero-s_title {
    pointer-events: auto;
    grid-area: 1/3/2/9;
    justify-content: space-between;
    align-items: center;
    display: flex
}

.apart-type-s {
    height: var(--_special-units---100vh);
    flex-flow: column;
    display: flex
}

.apart-type-s_cms {
    flex-flow: column;
    grid-area: 1/2/2/10;
    display: flex
}

.apart-type-cms {
    flex: 1
}

.apart-type-cms_list_item {
    height: 100%;
    display: none;
    position: absolute;
    inset: 0%
}

.apart-type-cms_list_item:first-child {
    display: block;
    position: relative
}

.apart-type-cms_list {
    height: 100%;
    position: relative
}

.apart-type-slide {
    flex-flow: column;
    justify-content: center;
    height: 100%;
    display: flex
}

.apart-type-slide_t {
    flex: 1
}

.apart-type-slide_c {
    z-index: 1;
    position: relative
}

.apart-type-slide_b {
    z-index: 1;
    flex-flow: column;
    flex: 1;
    justify-content: flex-end;
    display: flex;
    position: relative
}

.apart-type-slide_desc {
    grid-area: 1/7/2/9
}

.btn {
    height: var(--40px);
    padding: var(--_units---u-12)var(--24px);
    border-radius: var(--40px);
    justify-content: center;
    align-items: center;
    display: flex;
    position: relative
}

.btn:where(.btn-sec-circle) {
    width: var(--40px);
    padding-right: var(--12px);
    padding-left: var(--12px);
    white-space: nowrap
}

.apart-type-slide_data {
    grid-area: 1/2/2/4
}

.data-list {
    grid-column-gap: var(--_units---u-32);
    grid-row-gap: var(--_units---u-32);
    flex-flow: column;
    display: flex
}

.apart-type-slide_img-w {
    z-index: 0;
    flex-flow: column;
    justify-content: center;
    align-items: center;
    width: 100%;
    height: 0;
    display: flex;
    position: absolute
}

.apart-type-slide_img {
    aspect-ratio: 3/4;
    width: calc((var(--_special-units---1-cell-h)*3) + (var(--_special-units---grid-gap)*2))
}

.btn_label {
    position: relative;
    overflow: clip
}

.btn_label_text {
    z-index: 0;
    position: relative
}

.btn_label_text.is-2 {
    z-index: 2;
    position: absolute;
    inset: 0% auto auto 0%
}

.btn_bg {
    z-index: 0;
    border: 1px solid var(--_colors---base-1000--primary);
    border-radius: var(--40px);
    position: absolute;
    inset: 0%;
    overflow: clip
}

.btn_bg_fill {
    background-color: var(--_colors---base-1000--primary);
    width: 100%;
    height: 100%;
    position: absolute;
    inset: 0%
}

.amen-s {
    height: var(--_special-units---100vh)
}

.amen-s_cms {
    height: 100%;
    position: relative
}

.amen-cms {
    height: 100%
}

.amen-cms_list {
    height: 100%;
    position: relative
}

.amen-cms_list_item {
    height: 100%;
    display: none;
    position: absolute;
    inset: 0%
}

.amen-cms_list_item:first-child {
    display: block;
    position: relative
}

.amen-slide {
    z-index: 0;
    flex-flow: column;
    justify-content: flex-end;
    height: 100%;
    display: flex;
    position: relative
}

.amen-slide_b {
    z-index: 1;
    position: relative
}

.amen-slide_desc {
    grid-area: 2/2/3/6
}

.amen-slide_title {
    grid-area: 1/3/2/6
}

.red-line {
    height: var(--_units---u-16);
    float: left;
    width: calc(var(--_special-units---1-cell-h) + var(--_special-units---grid-gap))
}

.amen-slide_img {
    z-index: 0;
    top: 0%;
    bottom: 0%;
    left: calc(var(--_special-units---offset-l)*-1);
    right: calc(var(--_special-units---offset-r)*-1);
    position: absolute
}

.img-over-grad {
    z-index: 1;
    pointer-events: none;
    background-image: linear-gradient(#0000, #0000004d);
    position: absolute;
    inset: 0%
}

.img-over-grad.from-top {
    background-image: linear-gradient(#0000004d, #0000)
}

.img-over-grad._4x {
    height: calc((var(--_special-units---1-cell-v)*4) + (var(--_special-units---grid-gap)*3))
}

.img-over-grad.bot {
    inset: auto 0% 0%
}

.img-over-grad._100vh {
    height: var(--_special-units---100vh)
}

.img-over-grad._6x {
    height: calc((var(--_special-units---1-cell-v)*6) + (var(--_special-units---grid-gap)*5))
}

.amm-s_cms_tabs-w {
    left: 0%;
    top: var(--_units---u-160);
    z-index: 1;
    position: absolute;
    bottom: auto;
    right: 0%
}

.amm-s_cms_tabs {
    grid-area: 1/8/2/10;
    position: relative
}

.amen-tab {
    cursor: pointer
}

.amm-s_cms_tabs_line {
    background-color: var(--_colors---base-1000--line);
    width: 1.25px;
    top: 0%;
    bottom: 0%;
    right: auto;
    left: calc(var(--_units---u-16)*-1);
    position: absolute
}

.amm-s_cms_tabs_line_hilight {
    width: 100%;
    height: var(--40px);
    background-color: var(--_colors---base-1000--primary);
    border-radius: 2px
}

.interior-w {
    margin-top: calc((50rem + var(--_special-units---100vh))*-1);
    position: relative
}

.interior-s {
    z-index: 1;
    position: relative
}

.interior-s_title {
    flex-flow: column;
    grid-area: 1/4/2/8;
    justify-content: flex-start;
    align-items: center;
    display: flex
}

.interior-s_title_a {
    margin-top: calc(var(--72px)*-1);
    margin-left: calc(var(--40px)*-1);
    transform: rotate(-12deg)
}

.interior-s_imgs {
    grid-column-gap: var(--_special-units---grid-gap);
    grid-row-gap: var(--_special-units---grid-gap);
    grid-template-rows: auto auto;
    grid-template-columns: 1fr 1fr;
    grid-auto-columns: 1fr;
    justify-content: space-between;
    width: 100%;
    display: flex
}

.interior-s_l,
.interior-s_r {
    flex: 1;
    min-width: 0
}

.interior-s_l_img-w {
    padding-right: var(--136px);
    padding-left: var(--136px);
    aspect-ratio: 3/4;
    background-color: var(--_global-colors---brand-500--feather-olive);
    margin-left: calc(var(--_special-units---offset-l)*-1);
    flex-flow: column;
    grid-area: 1/1/2/5;
    justify-content: center;
    align-items: center;
    display: flex;
    position: relative;
    overflow: clip
}

.interior-s_r_img {
    aspect-ratio: 4/3;
    margin-right: calc(var(--_special-units---offset-r)*-1);
    grid-area: 1/2/2/6
}

.interior-s_r_lead {
    grid-area: 2/1/3/5
}

.interior-s_r_desc {
    grid-area: 3/3/4/5
}

.interior-s_l_img {
    aspect-ratio: 3/4;
    width: 100%
}

.interior-s_l_desc {
    grid-area: 2/3/3/5
}

.interior-s_gallery-cms {
    margin-right: calc(var(--_special-units---offset-r)*-1);
    grid-area: 1/3/2/11
}

.gallery-cms {
    aspect-ratio: 16/10;
    width: 100%
}

.gallery-cms_list {
    height: 100%;
    position: relative
}

.gallery-cms_list_item {
    height: 100%;
    display: none;
    position: absolute;
    inset: 0%
}

.gallery-cms_list_item:first-child {
    display: block;
    position: relative
}

.gallery-slide {
    height: 100%;
    position: relative
}

.interior-s_gallery-cms_pag {
    margin-left: calc(var(--_units---u-8)*-1);
    display: flex
}

.other-w {
    position: relative
}

.other-s {
    z-index: 1;
    grid-area: 1/3/2/9;
    position: relative
}

.other-s_cms {
    grid-area: 1/3/2/9
}

.other-card {
    cursor: pointer
}

.other-card_name {
    justify-content: center;
    align-items: flex-start;
    display: flex
}

.other-card_ico {
    top: var(--_units---u-4);
    bottom: auto;
    right: auto;
    left: calc(100% + var(--_units---u-4));
    position: absolute
}

.other-card_info_desc {
    flex-flow: column;
    grid-area: 1/2/2/6;
    justify-content: flex-start;
    align-items: center;
    display: flex
}

.other-card_info_logo {
    width: var(--192px);
    aspect-ratio: 3/2
}

.info_divider {
    width: var(--_units---u-64)
}

.line-h {
    background-color: var(--_colors---base-1000--primary);
    width: 100%;
    height: .75px
}

.other-card_name_label,
.cta-w {
    position: relative
}

.cta-s {
    z-index: 1;
    aspect-ratio: 144/168;
    pointer-events: none;
    position: relative
}

.w_bg {
    z-index: 0;
    top: 0%;
    bottom: 0%;
    left: calc(var(--_special-units---offset-l)*-1);
    right: calc(var(--_special-units---offset-r)*-1);
    position: absolute
}

.cta-s_desc {
    pointer-events: auto;
    grid-area: 1/4/2/8
}

.cta-s_title {
    pointer-events: auto;
    grid-area: 1/3/2/9
}

.cta-s_title_btn {
    flex-flow: column;
    justify-content: center;
    align-items: center;
    display: flex
}

.loc-scroll-area_track {
    flex: none;
    display: flex
}

.loc-scroll-area {
    z-index: 3;
    position: relative
}

.loc-intro-w {
    width: calc((var(--_special-units---1-cell-h)*13) + (var(--_special-units---grid-gap)*12));
    flex: none;
    position: relative
}

.loc-intro-s {
    height: var(--_special-units---100vh);
    flex-flow: column;
    display: flex
}

.grid-ui {
    z-index: 999999;
    padding-right: var(--_special-units---offset-r);
    padding-left: var(--_special-units---offset-l);
    pointer-events: none;
    flex-flow: column;
    display: flex;
    position: fixed;
    inset: 0%
}

.grid-ui_cell {
    background-color: var(--_colors---additional--error);
    opacity: .25
}

.loc-intro-s_img {
    grid-area: 1/6/2/10
}

.loc-intro-s_desc {
    grid-area: 1/10/2/13;
    align-self: end
}

.loc-intro-s_title {
    z-index: 1;
    flex-flow: column;
    grid-area: 1/3/2/8;
    justify-content: center;
    align-self: center;
    align-items: stretch;
    display: flex;
    position: relative
}

.loc-intro-s_cap {
    grid-area: 1/2/2/4;
    align-self: center
}

.loc-scroll-area_screen {
    top: var(--_units---u-0);
    display: flex;
    position: sticky
}

.slow-scroll-trigger {
    z-index: 0;
    height: var(--_special-units---100vh);
    pointer-events: none;
    position: absolute;
    inset: auto 0% 0%
}

.loc-intro-s_title_line {
    display: block
}

.loc-intro-s_title_line.is-2 {
    margin-left: calc((var(--_special-units---1-cell-h)) + (var(--_special-units---grid-gap)))
}

.loc-intro-s_title_line.is-1 {
    margin-left: calc(var(--_special-units---1-cell-h)/2)
}

.interior-s_r_btn {
    flex-flow: column;
    grid-area: 4/2/5/4;
    justify-content: center;
    align-items: center;
    display: flex
}

.btn-circle {
    padding-top: var(--_units---u-48);
    padding-right: var(--_units---u-48);
    padding-bottom: var(--_units---u-48);
    padding-left: var(--_units---u-48);
    aspect-ratio: 1;
    height: calc((var(--_special-units---1-cell-v)*2) + (var(--_special-units---grid-gap)));
    flex-flow: column;
    justify-content: center;
    align-items: center;
    display: flex;
    position: relative
}

.btn-circle_bg {
    z-index: 0;
    color: var(--_colors---base-1000--primary);
    border-radius: 50%;
    position: absolute;
    inset: 0%
}

.btn-circle_label {
    z-index: 1;
    width: 100%;
    position: relative
}

.nav-item_label {
    position: relative;
    overflow: clip
}

.nav-item_label_text.is-2 {
    position: absolute;
    inset: 0% auto auto 0%
}

.btn-circle_link {
    z-index: 3;
    position: absolute;
    inset: 0%
}

.amm-s_cms_btn-w {
    top: auto;
    left: 0%;
    right: 0%;
    bottom: var(--_units---u-48);
    z-index: 2;
    pointer-events: none;
    position: absolute
}

.amm-s_cms_btn {
    pointer-events: auto;
    grid-area: 1/8/2/10
}

.footer-w {
    margin-top: calc((var(--_special-units---offset-l) + (var(--_special-units---1-cell-v)*2) + (var(--_special-units---grid-gap)))*-1);
    position: relative
}

.footer-s {
    z-index: 1;
    height: var(--_special-units---100vh);
    flex-flow: column;
    justify-content: space-between;
    display: flex;
    position: relative
}

.footer-s_t {
    flex: 1;
    min-width: 0
}

.footer-s_b {
    flex-flow: column;
    flex: 1;
    justify-content: flex-end;
    min-width: 0;
    display: flex
}

.footer-s_contact {
    grid-area: 1/3/2/9
}

.footer-s_address {
    padding-right: var(--_units---u-48);
    padding-left: var(--_units---u-48);
    grid-area: 2/5/3/7
}

.ico-64 {
    width: var(--_units---u-64);
    height: var(--_units---u-64)
}

.contact-cms_list {
    grid-column-gap: var(--_units---u-4);
    grid-row-gap: var(--_units---u-4);
    flex-flow: column;
    display: flex
}

.contact-cms_list_item {
    text-align: center;
    flex-flow: column;
    justify-content: flex-start;
    align-items: center;
    display: flex
}

.footer-s_info {
    flex-flow: column;
    grid-area: 1/3/2/6;
    justify-content: flex-end;
    align-items: flex-start;
    display: flex
}

.legal-cms_list {
    grid-column-gap: var(--_units---u-4);
    grid-row-gap: var(--_units---u-4);
    flex-flow: wrap;
    justify-content: flex-start;
    align-items: flex-start;
    display: flex
}

.legal-cms_list.inline {
    display: inline
}

.legal-cms_list_item {
    justify-content: center;
    align-items: center;
    display: flex
}

.legal-cms_list_item.inline {
    display: inline
}

.error-s {
    height: var(--_special-units---100vh);
    flex-flow: column;
    display: flex
}

.error-s_l {
    grid-area: 1/2/2/4;
    align-self: center
}

.error-s_r {
    grid-area: 1/8/2/10;
    align-self: center
}

.error-s_c {
    flex-flow: column;
    grid-area: 1/4/2/8;
    justify-content: space-between;
    display: flex
}

.error-s_t {
    flex: 1
}

.error-s_b {
    flex-flow: column;
    flex: 1;
    justify-content: flex-end;
    display: flex
}

.error-s_c_c {
    position: relative
}

.error-s_desc {
    grid-area: 1/2/2/4;
    position: relative
}

.error-s_btn {
    margin-bottom: calc(var(--_units---u-16)*-1);
    flex-flow: column;
    grid-area: 1/8/2/10;
    justify-content: center;
    align-self: end;
    align-items: center;
    display: flex
}

.error-s_title {
    flex-flow: column;
    justify-content: center;
    align-items: center;
    display: flex;
    position: relative
}

.error-s_title_row {
    justify-content: center;
    align-items: center;
    display: flex
}

.error-s_title_item {
    width: var(--_special-units---1-cell-h)
}

.error-s_title_a {
    margin-left: calc(var(--24px)*-1);
    margin-top: calc(var(--56px)*-1);
    position: absolute;
    inset: 100% 0% auto;
    transform: rotate(-12deg)
}

.header-logo {
    left: var(--_special-units---offset-l);
    top: var(--_special-units---offset-l);
    z-index: 1200;
    width: var(--_special-units---1-cell-h);
    aspect-ratio: 1;
    flex-flow: column;
    justify-content: center;
    align-items: center;
    display: flex;
    position: fixed;
    bottom: auto;
    right: auto
}

.header-logo_bg {
    z-index: 0;
    color: var(--_colors---base-1000--primary);
    position: absolute;
    inset: 0%
}

.header-nav {
    left: auto;
    top: var(--_special-units---offset-r);
    right: var(--_special-units---offset-r);
    z-index: 1200;
    width: var(--_special-units---1-cell-h);
    text-align: right;
    position: fixed;
    bottom: auto
}

.s-bar {
    pointer-events: auto;
    height: calc((var(--_special-units---1-cell-h)*2) + (var(--_special-units---grid-gap)));
    flex-flow: column;
    justify-content: flex-start;
    align-items: center;
    display: flex;
    position: relative
}

.arch-w {
    top: var(--_units---u-0);
    position: sticky
}

.arch-s {
    z-index: 1;
    aspect-ratio: 144/168;
    pointer-events: none;
    flex-flow: column;
    justify-content: space-between;
    display: flex;
    position: relative
}

.arch-intro-s {
    top: var(--_units---u-0);
    z-index: 1;
    height: var(--_special-units---100vh);
    pointer-events: none;
    margin-bottom: calc(var(--_special-units---100vh)*-1);
    position: sticky
}

.arch-intro-s_bg_l {
    background-color: var(--_colors---base-0--primary);
    position: absolute;
    inset: -1% calc(50% - 1px) 0% 0%
}

.arch-scroll-area {
    position: relative
}

.arch-intro-s_bg_r {
    background-color: var(--_colors---base-0--primary);
    position: absolute;
    inset: -1% 0% 0% 50%
}

.arch-s_t {
    pointer-events: auto
}

.arch-s_desc {
    grid-area: 1/4/2/8
}

.arch-s_b {
    pointer-events: auto
}

.arch-s_quote {
    grid-area: 1/2/2/6
}

.arch-s_author,
.quote-s_ico {
    grid-area: 1/2/2/5
}

.arch-s_btn {
    flex-flow: column;
    grid-area: 1/7/2/9;
    justify-content: center;
    align-self: end;
    align-items: center;
    display: flex
}

.link {
    position: relative
}

._100vh {
    height: var(--_special-units---100vh)
}

.hero-w {
    top: var(--_units---u-0);
    height: var(--_special-units---100vh);
    flex-flow: column;
    display: flex;
    position: sticky
}

.hero-s {
    z-index: 1;
    pointer-events: none;
    flex-flow: column;
    flex: none;
    justify-content: flex-start;
    height: 100%;
    display: flex;
    position: relative
}

.hero-w_bg {
    z-index: 0;
    height: auto;
    margin-left: calc(var(--_special-units---offset-l)*-1);
    margin-right: calc(var(--_special-units---offset-r)*-1);
    flex-flow: column;
    flex: none;
    display: flex;
    position: absolute;
    inset: 0% 0% auto
}

.hero-s_logo {
    pointer-events: auto;
    flex-flow: column;
    grid-area: 1/3/2/9;
    justify-content: flex-start;
    align-items: center;
    display: flex
}

.hero-s_logo_a {
    margin-left: calc(var(--40px)*-1);
    margin-top: calc(var(--40px)*-1);
    transform: rotate(-12deg)
}

.hero-w_bg_master {
    position: relative
}

.hero-s_b {
    left: var(--_special-units---offset-l);
    top: auto;
    right: var(--_special-units---offset-r);
    z-index: 5;
    pointer-events: none;
    position: absolute;
    bottom: 0%
}

.hero-s_desc {
    pointer-events: auto;
    grid-area: 1/4/2/8
}

.hero-s_btn {
    justify-content: center;
    display: flex;
    /* Added when a second circle (Book a room) joined Discover Events here. Both
       declarations were no-ops while this had one child, so nothing else moves.
       flex-wrap is the mobile guard: two 2-cell circles plus the gap exceed the
       slot on a narrow phone, and wrapping is better than overflowing it. */
    flex-wrap: wrap;
    gap: var(--_units---u-24)
}

.pins-cms {
    z-index: 5;
    pointer-events: none;
    position: absolute;
    inset: 0%
}

.pins-cms_list {
    width: 100%;
    height: 100%;
    position: relative
}

.pins-cms_list_item {
    pointer-events: auto;
    position: absolute;
    inset: 0% auto auto 0%;
    transform: translate(-50%, -50%)
}

.pin {
    width: var(--32px);
    height: var(--32px);
    padding: var(--_units---u-8);
    outline-color: var(--_colors---base-1000--primary);
    outline-offset: -.75px;
    border-radius: 50%;
    outline-width: .75px;
    outline-style: solid;
    justify-content: center;
    align-items: center;
    display: flex;
    position: relative
}

.pin_bg {
    z-index: 0;
    pointer-events: none;
    justify-content: center;
    align-items: center;
    display: flex;
    position: absolute;
    inset: 0%
}

.pin_bg_pulse {
    outline-color: var(--_colors---base-1000--primary);
    outline-offset: -.75px;
    border-radius: 50%;
    outline-width: .75px;
    outline-style: solid;
    position: absolute
}

.hero-w_bg_master_img {
    position: relative
}

.pin_dot {
    width: var(--6px);
    height: var(--6px);
    background-color: var(--_colors---base-1000--primary);
    border-radius: 50%;
    flex-flow: column;
    flex: none;
    justify-content: center;
    align-items: center;
    display: flex
}

.e-auto {
    pointer-events: auto
}

.floating-tips {
    z-index: 11000;
    pointer-events: none;
    display: block;
    position: fixed;
    inset: 0%
}

.floating-tips_list {
    flex-flow: column;
    justify-content: flex-start;
    align-items: flex-start;
    display: flex;
    position: absolute;
    inset: 0%
}

.floating-tip {
    grid-column-gap: 16px;
    grid-row-gap: 16px;
    grid-template-rows: auto auto;
    grid-template-columns: 1fr 1fr;
    grid-auto-columns: 1fr;
    justify-content: flex-start;
    align-items: center;
    position: absolute;
    inset: 0% auto auto 0%
}

.floating-tip-card {
    z-index: 0;
    padding-top: var(--_units---u-24);
    padding-right: var(--_units---u-24);
    padding-bottom: var(--_units---u-24);
    padding-left: var(--_units---u-24);
    aspect-ratio: 17/21;
    border-top-left-radius: var(--_units---u-4);
    border-top-right-radius: var(--_units---u-4);
    border-bottom-left-radius: var(--_units---u-4);
    border-bottom-right-radius: var(--_units---u-4);
    background-color: var(--_colors---base-0--primary);
    width: calc((var(--_special-units---1-cell-h)*2) + var(--_special-units---grid-gap) + var(--_special-units---grid-gap));
    flex-flow: column;
    justify-content: space-between;
    display: flex;
    position: relative
}

.floating-tip-card_t,
.floating-tip-card_b {
    z-index: 1;
    position: relative
}

.hero_themes {
    top: 0%;
    left: 0%;
    right: 0%;
    bottom: var(--_special-units---100vh);
    pointer-events: none;
    flex-flow: column;
    display: flex;
    position: absolute
}

.hero_themes_color {
    flex: 1
}

.hero_themes_light {
    height: 35rem
}

.arch_themes {
    pointer-events: none;
    flex-flow: column;
    display: flex;
    position: absolute;
    inset: 0%
}

.arch_themes_color {
    flex: 1
}

.arch_themes_light {
    height: calc(var(--_special-units---100vh)*1.5)
}

.cookies_c {
    padding-right: var(--_special-units---offset-r);
    padding-bottom: var(--_special-units---offset-r);
    padding-left: var(--_special-units---offset-l)
}

.cookies_card {
    padding-top: var(--_units---u-24);
    padding-right: var(--_units---u-24);
    padding-bottom: var(--_units---u-24);
    padding-left: var(--_units---u-24);
    aspect-ratio: 17/21;
    border-top-left-radius: var(--_units---u-4);
    border-top-right-radius: var(--_units---u-4);
    border-bottom-left-radius: var(--_units---u-4);
    border-bottom-right-radius: var(--_units---u-4);
    background-color: var(--_colors---base-0--primary);
    pointer-events: auto;
    margin-left: calc(var(--_units---u-8)*-1);
    margin-right: calc(var(--_units---u-8)*-1);
    margin-bottom: calc(var(--_units---u-8)*-1);
    margin-top: calc(var(--_units---u-8)*-1);
    flex-flow: column;
    grid-area: 1/9/2/11;
    justify-content: space-between;
    display: flex;
    position: relative;
    overflow: clip
}

.cookies_card_title {
    margin-left: calc(var(--_units---u-48)*-1);
    transform: rotate(-12deg)
}

.cookies {
    z-index: 99;
    pointer-events: none;
    position: fixed;
    inset: auto 0% 0%
}

.cookies_card_t {
    z-index: 1;
    flex-flow: column;
    justify-content: flex-start;
    align-items: center;
    display: flex;
    position: relative
}

.cookies_card_b {
    z-index: 1;
    position: relative
}

.cookies_card_btn-list {
    grid-column-gap: var(--_units---u-8);
    grid-row-gap: var(--_units---u-8);
    justify-content: center;
    align-items: center;
    display: flex
}

.contact-w {
    position: relative
}

.contact-s_title {
    grid-area: 1/3/2/9
}

.contact-s_email {
    z-index: 1;
    grid-area: 1/2/2/4;
    position: relative
}

.contact-s_loc {
    z-index: 1;
    padding-right: var(--_units---u-48);
    padding-left: var(--_units---u-48);
    grid-area: 1/5/2/7;
    position: relative
}

.contact-s_phone {
    z-index: 1;
    grid-area: 1/8/2/10;
    position: relative
}

.loc-cms_list {
    grid-column-gap: var(--_units---u-24);
    grid-row-gap: var(--_units---u-24);
    flex-flow: column;
    display: flex
}

.loc-cms_list_item {
    text-align: center;
    flex-flow: column;
    justify-content: flex-start;
    align-items: center;
    display: flex
}

.footer-w_bg {
    z-index: -1;
    background-color: var(--_colors---other--bg);
    height: calc(var(--_special-units---100vh)*2);
    top: auto;
    bottom: 100%;
    left: calc(var(--_special-units---offset-l)*-1);
    right: calc(var(--_special-units---offset-r)*-1);
    position: absolute
}

.contact-s_map {
    z-index: 0;
    margin-left: calc(var(--_special-units---offset-l)*-1);
    margin-right: calc(var(--_special-units---offset-r)*-1);
    flex-flow: column;
    grid-area: 1/1/2/11;
    justify-content: center;
    align-items: center;
    display: flex;
    position: relative
}

.contact-s_btn {
    z-index: 2;
    flex-flow: column;
    grid-area: 1/8/2/10;
    justify-content: flex-start;
    align-self: center;
    align-items: center;
    display: flex;
    position: relative
}

.contact-s_map_pin {
    width: var(--_units---u-16);
    height: var(--_units---u-16);
    flex-flow: column;
    justify-content: center;
    align-items: center;
    display: flex;
    position: absolute;
    inset: 43% 44% auto auto
}

.contact-s_map_pin_c {
    top: auto;
    left: auto;
    bottom: var(--_units---u-8);
    padding-top: var(--_units---u-12);
    padding-right: var(--_units---u-12);
    padding-left: var(--_units---u-24);
    grid-column-gap: var(--_units---u-16);
    grid-row-gap: var(--_units---u-16);
    background-color: var(--_colors---base-0--primary);
    white-space: nowrap;
    padding-bottom: calc(var(--_units---u-12) + var(--_units---u-8));
    right: calc((var(--_units---u-16) + var(--2px))*-1);
    display: flex;
    position: absolute
}

.contact-s_map_pin_info {
    grid-column-gap: var(--_units---u-4);
    grid-row-gap: var(--_units---u-4);
    flex-flow: column;
    justify-content: center;
    align-items: flex-end;
    display: flex
}

.ico-28 {
    width: var(--28px);
    height: var(--28px)
}

.loc-w {
    z-index: 2;
    position: relative
}

.loc-s {
    z-index: 1;
    pointer-events: none;
    position: absolute;
    inset: auto 0% 0%
}

.loc-w_bg {
    margin-left: calc(var(--_special-units---offset-l)*-1);
    margin-right: calc(var(--_special-units---offset-r)*-1);
    position: relative
}

.loc-s_desc {
    pointer-events: auto;
    grid-area: 1/8/2/9;
    position: relative
}

.loc-s_desc_line {
    top: 0%;
    bottom: 0%;
    right: auto;
    left: calc(var(--_special-units---grid-gap)*-1);
    position: absolute
}

.header-cramps {
    left: var(--_special-units---offset-l);
    z-index: 1200;
    height: var(--_special-units---1-cell-h);
    grid-column-gap: var(--_units---u-16);
    grid-row-gap: var(--_units---u-16);
    transform-origin: 0 0;
    width: calc(var(--_special-units---100vh) - var(--_special-units---offset-l) - var(--_special-units---offset-l) - var(--_special-units---1-cell-h) - var(--_special-units---grid-gap));
    bottom: auto;
    right: auto;
    top: calc(100% - var(--_special-units---offset-l));
    flex-flow: row;
    justify-content: flex-start;
    align-items: center;
    display: flex;
    position: fixed;
    transform: rotate(-90deg)
}

.contact_themes {
    pointer-events: none;
    top: 0%;
    left: 0%;
    right: 0%;
    bottom: calc(var(--_special-units---offset-l) + (var(--_special-units---1-cell-v)*2) + (var(--_special-units---grid-gap)));
    flex-flow: column;
    display: flex;
    position: absolute
}

.contact_themes_light {
    flex: 1
}

.contact-s_social {
    z-index: 2;
    flex-flow: column;
    grid-area: 1/2/2/4;
    justify-content: flex-start;
    align-self: center;
    align-items: center;
    display: flex;
    position: relative
}

.social-cms_list {
    padding-top: var(--_units---u-4);
    padding-bottom: var(--_units---u-4);
    outline-color: var(--_colors---base-1000--primary);
    outline-offset: -.75px;
    outline-width: .75px;
    outline-style: solid;
    flex-flow: column;
    display: flex
}

.social-btn {
    z-index: 1;
    padding: var(--_units---u-12);
    flex-flow: column;
    justify-content: center;
    align-items: center;
    display: flex;
    position: relative
}

.social-btn_line {
    padding-right: var(--_units---u-16);
    padding-left: var(--_units---u-16);
    position: absolute;
    inset: auto 0% 0%
}

.contact_themes_dark {
    height: var(--_units---u-64)
}

.modal_over {
    z-index: 0;
    pointer-events: auto;
    background-color: #0009;
    position: absolute;
    inset: 0%
}

.modal_c {
    z-index: 1;
    width: 100%;
    height: 100%;
    padding-right: var(--_special-units---offset-r);
    padding-left: var(--_special-units---offset-l);
    flex-flow: column;
    display: flex;
    position: relative
}

.modal_cta {
    flex-flow: column;
    justify-content: center;
    width: 100%;
    height: 100%;
    display: flex
}

.modal_cta_c {
    padding-top: var(--_units---u-64);
    padding-right: var(--_units---u-64);
    padding-bottom: var(--_units---u-64);
    padding-left: var(--_units---u-64);
    aspect-ratio: 2;
    background-color: var(--_colors---other--bg);
    pointer-events: auto;
    flex-flow: column;
    grid-area: 1/2/2/10;
    display: flex;
    position: relative;
    overflow: clip
}

.modal_cta_l {
    flex-flow: column;
    flex: 1;
    justify-content: space-between;
    min-width: 0;
    display: flex
}

.modal_cta_r {
    flex: 1;
    justify-content: center;
    min-width: 0;
    display: flex
}

.modal_cta_l_t {
    flex-flow: column;
    justify-content: flex-start;
    align-items: flex-start;
    display: flex
}

.modal_cta_desc {
    width: var(--192px)
}

.modal_cta_a {
    margin-left: calc(var(--40px)*-1);
    margin-top: calc(var(--40px)*-1);
    transform: rotate(-12deg)
}

.modal_cta_c_c {
    grid-column-gap: var(--_units---u-32);
    grid-row-gap: var(--_units---u-32);
    flex-flow: column;
    justify-content: center;
    align-items: center;
    min-width: 0;
    display: flex
}

.modal_cta_c_line {
    flex: 1
}

.modal_cta_c_logo {
    z-index: 1200;
    width: var(--_special-units---1-cell-h);
    aspect-ratio: 1;
    flex-flow: column;
    justify-content: center;
    align-items: center;
    display: flex;
    position: relative
}

.form_block_b {
    grid-column-gap: var(--_units---u-32);
    grid-row-gap: var(--_units---u-32);
    justify-content: space-between;
    align-items: center;
    display: flex
}

.text-link {
    text-decoration: underline
}

.text-link:hover {
    text-decoration: none
}

.form_block_legal {
    width: calc(var(--16px)*10)
}

.modal_cta_close {
    left: auto;
    top: var(--_units---u-16);
    right: var(--_units---u-16);
    position: absolute;
    bottom: auto
}

.btn-ico {
    width: var(--40px);
    height: var(--40px);
    padding: var(--_units---u-12);
    border-radius: var(--40px);
    justify-content: center;
    align-items: center;
    display: flex;
    position: relative
}

.btn_ico {
    z-index: 1;
    position: relative
}

.btn-ico_link {
    z-index: 5;
    position: absolute;
    inset: 0%
}

.modal_cta_form {
    width: 100%;
    margin-bottom: var(--_units---u-0);
    flex: 1
}

.modal_cta_form_c {
    height: 100%;
    width: calc((var(--_special-units---1-cell-h)*2.5) + (var(--_special-units---grid-gap)));
    flex-flow: column;
    justify-content: space-between;
    display: flex
}

.form_success_c {
    flex-flow: column;
    justify-content: center;
    align-items: center;
    height: 100%;
    display: flex;
    position: relative
}

.form_success_social {
    position: absolute;
    left: 0%
}

.form_success_desc {
    width: calc(var(--32px)*10);
    flex-flow: column;
    flex: 1;
    justify-content: flex-end;
    display: flex
}

.form_success_title {
    width: calc(var(--20px)*10);
    flex: 1
}

.form_success_a {
    margin-left: calc(var(--24px)*-1);
    margin-top: calc(var(--44px)*-1);
    transform: rotate(-12deg)
}

.hero-scroll-area {
    height: calc((var(--_special-units---100vh)*4) + (50rem + var(--_special-units---100vh)));
    position: relative
}

.s-bar_track {
    z-index: 0;
    background-color: var(--_colors---base-1000--line);
    width: 1px;
    height: 100%;
    position: absolute;
    inset: 0% auto
}

.s-bar_fill {
    z-index: 1;
    background-color: var(--_colors---base-1000--primary);
    width: 1px;
    height: 100%;
    position: absolute;
    inset: 0% auto
}

.s-bar_thumb {
    z-index: 3;
    width: var(--_units---u-48);
    height: var(--_units---u-48);
    -webkit-user-select: none;
    user-select: none;
    flex-flow: column;
    justify-content: center;
    align-items: stretch;
    display: flex;
    position: absolute;
    inset: auto;
    transform: translateY(-50%)
}

.s-bar-w {
    left: var(--_special-units---offset-l);
    z-index: 1200;
    width: var(--_special-units---1-cell-h);
    pointer-events: none;
    right: auto;
    top: calc(var(--_special-units---offset-l) + var(--_special-units---1-cell-h) + var(--_special-units---offset-l));
    bottom: calc(var(--_special-units---offset-l) + var(--_special-units---1-cell-h) + var(--_special-units---offset-l));
    flex-flow: column;
    justify-content: center;
    align-items: center;
    display: flex;
    position: fixed
}

.s-down {
    left: var(--_special-units---offset-l);
    z-index: 1200;
    height: var(--_special-units---1-cell-h);
    grid-column-gap: var(--_units---u-24);
    grid-row-gap: var(--_units---u-24);
    transform-origin: 0 0;
    bottom: auto;
    right: auto;
    top: calc(100% - var(--_special-units---offset-l));
    flex-flow: row;
    justify-content: center;
    align-items: center;
    display: flex;
    position: fixed;
    transform: rotate(-90deg)
}

.s-down_arrow {
    height: var(--_units---u-12);
    aspect-ratio: 48/12;
    color: var(--_colors---base-1000--primary)
}

.quote-w {
    position: relative
}

.quote-s {
    z-index: 1;
    position: absolute;
    inset: auto 0% 0%
}

.quote-w_bg {
    z-index: 0;
    margin-left: calc(var(--_special-units---offset-l)*-1);
    margin-right: calc(var(--_special-units---offset-r)*-1);
    position: relative
}

.quote-s_c {
    grid-area: 1/6/2/10
}

.quote-s_author {
    grid-area: 1/1/2/4
}

.loc-w_over-grad {
    z-index: 5;
    background-image: linear-gradient(180deg, var(--_global-colors---base-0--100), var(--_global-colors---base-0--0));
    pointer-events: none;
    height: calc((var(--_special-units---1-cell-v)*3) + (var(--_special-units---grid-gap)*2));
    top: -1px;
    bottom: auto;
    left: calc(var(--_special-units---offset-l)*-1);
    right: calc(var(--_special-units---offset-r)*-1);
    position: absolute
}

.loc-w_clouds {
    z-index: 4;
    pointer-events: none;
    bottom: auto;
    left: calc(var(--_special-units---offset-l)*-1);
    right: calc(var(--_special-units---offset-r)*-1);
    top: calc(var(--_units---u-96)*-1);
    position: absolute
}

.marquee {
    z-index: 0;
    pointer-events: none;
    justify-content: flex-start;
    align-items: center;
    display: flex;
    position: relative;
    overflow: clip
}

.marquee_track,
.marquee_list {
    flex: none;
    justify-content: flex-start;
    align-items: center;
    display: flex
}

.marquee_list_item {
    flex: none
}

.clouds.is-33 {
    height: calc(var(--60px)*10)
}

.clouds.is-02,
.clouds.is-47 {
    height: calc(var(--48px)*10)
}

.loc-intro-s_btn {
    flex-flow: column;
    grid-area: 1/12/2/14;
    justify-content: center;
    align-self: center;
    align-items: center;
    display: flex
}

.loc-path-w {
    width: calc((var(--_special-units---1-cell-h)*10) + (var(--_special-units---grid-gap)*9));
    flex: none;
    position: relative
}

.loc-path-s {
    height: var(--_special-units---100vh);
    flex-flow: column;
    justify-content: space-between;
    display: flex
}

.loc-path-s_title {
    grid-area: 1/3/2/9
}

.loc-path-s_title_line {
    display: block
}

.loc-path-s_title_a {
    margin-top: calc(var(--32px)*-1);
    display: block;
    transform: rotate(-12deg)
}

.loc-path-s_path {
    grid-area: 1/2/2/10
}

.apart-type-slide_btn {
    grid-column-gap: var(--_units---u-8);
    grid-row-gap: var(--_units---u-8);
    flex-flow: wrap;
    justify-content: flex-start;
    align-items: flex-start;
    display: flex
}

.loc-w_bg_img,
.loc-path-s_path_c {
    position: relative
}

.benefits-intro-s_title {
    top: 0%;
    bottom: auto;
    left: calc(var(--_special-units---offset-l)*-1);
    right: calc(var(--_special-units---offset-r)*-1);
    position: absolute
}

.soon-s {
    height: var(--_special-units---100vh);
    flex-flow: column;
    justify-content: center;
    align-items: center;
    display: flex
}

.soon-s_title {
    grid-area: 1/4/2/8
}

.soon-s_btn {
    justify-content: center;
    align-items: center;
    display: flex
}

.soon-s_desc {
    grid-area: 1/2/2/4
}

.link_label {
    position: relative
}

.link_label_text.is-2 {
    position: absolute;
    inset: 0% 0% auto auto
}

.link_line {
    background-color: var(--_colors---base-1000--primary);
    border-radius: 2px;
    width: 100%;
    height: .6px;
    display: block
}

.modal_bg {
    z-index: 0;
    background-color: var(--_colors---other--bg);
    pointer-events: auto;
    position: absolute;
    inset: 0%
}

.modal_menu {
    pointer-events: auto;
    flex-flow: column;
    grid-template-rows: auto auto;
    grid-template-columns: 1fr 1fr;
    grid-auto-columns: 1fr;
    justify-content: space-between;
    width: 100%;
    height: 100%;
    display: flex
}

.modal_menu_title {
    flex-flow: column;
    grid-area: 1/4/2/8;
    justify-content: flex-start;
    align-items: center;
    display: flex
}

.modal_menu_a {
    margin-bottom: calc(var(--32px)*-1);
    margin-left: calc(var(--96px)*-1);
    transform: rotate(-12deg)
}

.modal_menu_list {
    grid-column-gap: var(--_units---u-32);
    grid-row-gap: var(--_units---u-32);
    text-align: center;
    flex-flow: column;
    grid-area: 1/5/2/7;
    justify-content: center;
    align-items: center;
    display: flex
}

.btn-menu_label {
    display: none
}

.btn-menu_label.is-active {
    display: block
}

.header-nav_list {
    flex-flow: column;
    justify-content: flex-start;
    align-items: flex-end;
    display: flex
}

.header-nav_list.f-mob {
    display: none
}

.btn-menu {
    grid-column-gap: var(--_units---u-4);
    grid-row-gap: var(--_units---u-4);
    cursor: pointer;
    justify-content: center;
    align-items: center;
    display: flex
}

.ico-24 {
    width: var(--24px);
    height: var(--24px)
}

.modal_list {
    width: 100%;
    height: 100%;
    position: relative
}

.modal_list_item {
    display: none;
    position: absolute;
    inset: 0%
}

.moda_tip {
    pointer-events: auto;
    flex-flow: column;
    justify-content: flex-end;
    align-items: center;
    width: 100%;
    height: 100%;
    display: flex
}

.moda_tip_close {
    z-index: 1;
    position: relative
}

.apart-w {
    position: relative
}

.apart-s {
    z-index: 1;
    position: relative
}

.apart-s_title {
    grid-area: 1/2/2/9;
    justify-content: space-between;
    align-items: flex-start;
    display: flex
}

.apart-s_cms {
    grid-area: 1/2/2/11
}

.apart-s_cms_filter {
    z-index: 1;
    padding-top: var(--_units---u-32);
    padding-bottom: var(--_units---u-32);
    flex-flow: column;
    justify-content: center;
    align-items: stretch;
    display: flex;
    position: relative
}

.apart-cms {
    z-index: 0;
    position: relative
}

.apart-benefits-cms_list {
    grid-column-gap: var(--_special-units---grid-gap);
    grid-row-gap: var(--_special-units---grid-gap);
    grid-template-rows: auto;
    grid-template-columns: 1fr 1fr 1fr;
    grid-auto-columns: 1fr;
    display: grid
}

.apart-benefits-cms_list.c-2 {
    grid-template-columns: 1fr 1fr
}

.apart-card {
    width: 100%;
    height: 100%;
    padding: var(--_units---u-48)var(--_units---u-32)var(--_units---u-24);
    aspect-ratio: 392/544;
    display: block;
    position: relative
}

.apart-card_img {
    aspect-ratio: 1;
    position: relative
}

.apart-card_data-list {
    grid-column-gap: var(--_units---u-12);
    grid-row-gap: var(--_units---u-12);
    justify-content: center;
    align-items: center;
    display: flex
}

.data-divider {
    width: var(--2px);
    height: var(--2px);
    background-color: var(--_colors---base-1000--primary);
    border-radius: 50%
}

.apart-card_info {
    grid-column-gap: var(--_units---u-8);
    grid-row-gap: var(--_units---u-8);
    justify-content: center;
    align-items: center;
    display: flex
}

.benefit-card {
    width: 100%;
    height: 100%;
    padding: var(--_units---u-32);
    aspect-ratio: 392/544;
    flex-flow: column;
    justify-content: flex-end;
    display: flex;
    position: relative;
    overflow: clip
}

.benefit-card_bg {
    z-index: 0;
    position: absolute;
    inset: 0%
}

.benefit-card_info {
    z-index: 1;
    position: relative
}

.apart-card_img_prim {
    z-index: 0;
    width: 100%;
    height: 100%;
    position: relative
}

.apart-card_img_sec {
    z-index: 1;
    width: 100%;
    height: 100%;
    position: absolute;
    inset: 0%
}

.apart-card_decor {
    z-index: 1;
    pointer-events: none;
    position: absolute;
    inset: 0%
}

.apart-card_c {
    z-index: 3;
    position: relative
}

.apart-s_cms_filter_item {
    padding-right: var(--_units---u-32);
    padding-left: var(--_units---u-32);
    flex-flow: row;
    grid-column: span 3;
    justify-content: space-between;
    align-items: center;
    display: flex
}

.lot-s_info {
    top: var(--_units---u-0);
    z-index: 1;
    height: var(--_special-units---100vh);
    pointer-events: none;
    flex-flow: column;
    display: flex;
    position: sticky
}

.preloader_t {
    flex: 1
}

.preloader_b {
    flex-flow: column;
    flex: 1;
    grid-template-rows: auto auto;
    grid-template-columns: 1fr 1fr;
    grid-auto-columns: 1fr;
    justify-content: flex-end;
    display: flex
}

.preloader_title-l {
    grid-area: 1/2/2/4;
    align-self: center
}

.preloader_title-r {
    grid-area: 1/8/2/10;
    align-self: center
}

.preloader_logo {
    flex-flow: column;
    grid-area: 1/4/2/8;
    justify-content: center;
    align-self: center;
    align-items: center;
    display: flex
}

.preloader_logo_a {
    margin-top: calc(var(--24px)*-1);
    margin-left: calc(var(--32px)*-1);
    transform: rotate(-12deg)
}

.preloader_bg {
    z-index: 0;
    background-color: var(--_colors---other--bg);
    position: absolute;
    inset: 0%
}

.preloader_progress {
    flex-flow: column;
    justify-content: center;
    align-items: center;
    display: flex
}

.preloader_progress_fill {
    width: 1px;
    height: var(--_units---u-96);
    background-color: var(--_colors---base-1000--line);
    overflow: clip
}

.preloader_progress_track {
    background-color: var(--_colors---base-1000--primary);
    width: 100%;
    height: 100%
}

.frame_lt {
    z-index: 1;
    width: var(--24px);
    height: var(--24px);
    position: absolute;
    inset: 0% auto auto 0%
}

.frame_lt:where(.decor-med) {
    width: var(--16px);
    height: var(--16px)
}

.decor {
    color: var(--_colors---base-1000--line);
    position: absolute;
    inset: 0%
}

.preloader_bg_decor {
    left: var(--_units---u-24);
    top: var(--_units---u-24);
    right: var(--_units---u-24);
    bottom: calc(var(--_special-units---100vh) + var(--_units---u-24));
    position: absolute
}

.frame_rt {
    z-index: 1;
    width: var(--24px);
    height: var(--24px);
    position: absolute;
    inset: 0% 0% auto auto
}

.frame_rt:where(.decor-med) {
    width: var(--16px);
    height: var(--16px)
}

.frame_rb {
    z-index: 1;
    width: var(--24px);
    height: var(--24px);
    position: absolute;
    inset: auto 0% 0% auto
}

.frame_rb:where(.decor-med) {
    width: var(--16px);
    height: var(--16px)
}

.frame_lb {
    z-index: 1;
    width: var(--24px);
    height: var(--24px);
    position: absolute;
    inset: auto auto 0% 0%
}

.frame_lb:where(.decor-med) {
    width: var(--16px);
    height: var(--16px)
}

.frame_t-lr {
    left: var(--24px);
    right: var(--24px);
    z-index: 1;
    height: var(--24px);
    bottom: auto;
    top: calc(var(--12px)*-1);
    position: absolute
}

.frame_t-lr:where(.decor-med) {
    left: var(--16px);
    right: var(--16px);
    height: var(--16px);
    top: calc(var(--8px)*-1)
}

.frame_b-lr {
    left: var(--24px);
    top: auto;
    right: var(--24px);
    z-index: 1;
    height: var(--24px);
    bottom: calc(var(--12px)*-1);
    position: absolute
}

.frame_b-lr:where(.decor-med) {
    left: var(--16px);
    right: var(--16px);
    height: var(--16px);
    bottom: calc(var(--8px)*-1)
}

.frame_r-tb {
    left: auto;
    top: var(--24px);
    bottom: var(--24px);
    z-index: 1;
    width: var(--24px);
    right: calc(var(--12px)*-1);
    position: absolute
}

.frame_r-tb:where(.decor-med) {
    top: var(--16px);
    bottom: var(--16px);
    width: var(--16px);
    right: calc(var(--8px)*-1)
}

.frame_l-tb {
    top: var(--24px);
    right: auto;
    bottom: var(--24px);
    z-index: 1;
    width: var(--24px);
    left: calc(var(--12px)*-1);
    position: absolute
}

.frame_l-tb:where(.decor-med) {
    top: var(--16px);
    bottom: var(--16px);
    width: var(--16px);
    left: calc(var(--8px)*-1)
}

.card_decor {
    left: var(--_units---u-8);
    top: var(--_units---u-8);
    right: var(--_units---u-8);
    bottom: var(--_units---u-8);
    z-index: 0;
    position: absolute
}

.preloader_bg_a {
    left: var(--_units---u-24);
    top: var(--_units---u-24);
    right: var(--_units---u-24);
    opacity: .05;
    bottom: calc(var(--_special-units---100vh) + var(--_units---u-24));
    position: absolute
}

.preloader_bg_arch_is-1 {
    z-index: 1;
    background-color: var(--_colors---other--bg);
    outline-color: var(--_colors---base-1000--line);
    outline-offset: -1px;
    width: calc(var(--arch-w)*1.02);
    height: calc(var(--arch-h)*1.01);
    border-top-left-radius: var(--arch-w);
    border-top-right-radius: var(--arch-w);
    bottom: auto;
    left: auto;
    right: auto;
    top: calc(var(--arch-y) - (var(--arch-h)*.005));
    outline-width: 1px;
    outline-style: solid;
    position: absolute
}

.preloader_bg_arch {
    z-index: 2;
    pointer-events: none;
    flex-flow: column;
    justify-content: flex-start;
    align-items: center;
    display: flex;
    position: absolute;
    inset: 0%
}

.preloader_bg_arch_is-2 {
    z-index: 0;
    background-color: var(--_colors---other--bg);
    outline-color: var(--_colors---base-1000--line);
    outline-offset: -1px;
    width: calc(var(--arch-w)*1.1);
    height: calc(var(--arch-h)*1.03);
    bottom: auto;
    left: auto;
    right: auto;
    top: calc(var(--arch-y) - (var(--arch-h)*.015));
    border-top-left-radius: var(--arch-w);
    border-top-right-radius: var(--arch-w);
    outline-width: 1px;
    outline-style: solid;
    position: absolute
}

.hero-w_bg_master_img_day {
    display: block;
    position: relative;
    inset: 0% 0% auto
}

.footer-s_s-top {
    left: var(--_units---u-0);
    z-index: 1200;
    height: var(--_special-units---1-cell-h);
    grid-column-gap: var(--_units---u-24);
    grid-row-gap: var(--_units---u-24);
    transform-origin: 0 0;
    bottom: auto;
    right: auto;
    top: calc(100% - var(--_special-units---offset-l));
    flex-flow: row;
    justify-content: center;
    align-items: center;
    display: flex;
    position: absolute;
    transform: rotate(-90deg)
}

.frame_fill_tb {
    left: var(--24px);
    top: 0%;
    right: var(--24px);
    z-index: 0;
    position: absolute;
    bottom: 0%
}

.frame_fill_tb:where(.decor-med) {
    left: var(--16px);
    right: var(--16px)
}

.frame_fill_lr {
    left: 0%;
    top: var(--24px);
    right: 0%;
    bottom: var(--24px);
    z-index: 0;
    position: absolute
}

.frame_fill_lr:where(.decor-med) {
    top: var(--16px);
    bottom: var(--16px)
}

.frame_fill-c {
    z-index: 0;
    width: calc(var(--24px)*2);
    height: calc(var(--24px)*2);
    position: absolute;
    inset: auto
}

.frame_fill-c:where(.decor-med) {
    width: calc(var(--16px)*2);
    height: calc(var(--16px)*2)
}

.frame_fill-c.lt {
    inset: 0% auto auto 0%
}

.frame_fill-c.lt:where(.decor-med) {
    width: calc(var(--16px)*2)
}

.frame_fill-c.rt {
    inset: 0% 0% auto auto
}

.frame_fill-c.rb {
    inset: auto 0% 0% auto
}

.frame_fill-c.lb {
    inset: auto auto 0% 0%
}

.filter_select_drop-down_list_item {
    padding: var(--_units---u-12)var(--_units---u-16);
    border-radius: var(--_units---u-4);
    cursor: pointer
}

.apart-s_cms_decor {
    z-index: 0;
    pointer-events: none;
    position: absolute;
    inset: 0%
}

.apart-s_cms_filter_c {
    z-index: 1;
    position: relative
}

.filter_select {
    flex-flow: column;
    justify-content: flex-start;
    align-items: flex-start;
    display: flex;
    position: relative
}

.filter_select_btn {
    grid-column-gap: var(--_units---u-8);
    grid-row-gap: var(--_units---u-8);
    cursor: pointer;
    justify-content: flex-start;
    align-items: center;
    display: flex
}

.filter_select_btn_label {
    grid-column-gap: var(--_units---u-4);
    grid-row-gap: var(--_units---u-4);
    justify-content: flex-start;
    align-items: center;
    display: flex
}

.ico-12 {
    width: var(--_units---u-12);
    height: var(--_units---u-16)
}

.filter_select_drop-down {
    z-index: 50;
    padding-top: var(--_units---u-8);
    padding-right: var(--_units---u-8);
    padding-bottom: var(--_units---u-8);
    padding-left: var(--_units---u-8);
    background-color: var(--_colors---other--bg);
    outline-color: var(--_colors---base-1000--line);
    outline-offset: -1px;
    white-space: nowrap;
    bottom: auto;
    right: auto;
    top: calc(100% + var(--_units---u-16));
    min-width: calc(var(--24px)*10);
    left: calc(var(--_units---u-24)*-1);
    outline-width: 1px;
    outline-style: solid;
    position: absolute
}

.filter_select_drop-down_list {
    grid-column-gap: var(--2px);
    grid-row-gap: var(--2px);
    flex-flow: column;
    display: flex
}

.apart-card_shadow {
    z-index: 0;
    border-radius: var(--_units---u-32);
    pointer-events: none;
    flex: none;
    position: absolute;
    inset: 0%
}

.lot-s_info_c {
    pointer-events: auto;
    flex-flow: column;
    grid-area: 1/8/2/10;
    justify-content: space-between;
    height: 100%;
    min-height: 0;
    display: flex;
    position: relative
}

.lot-s_info_t {
    flex: 1;
    height: 100%;
    overflow: auto
}

.lot-s_info_b {
    flex: none;
    position: relative
}

.lot-s_info_header.is-top {
    margin-left: calc(((var(--_special-units---1-cell-h)*5) + (var(--_special-units---grid-gap)*5))*-1)
}

.lot-s_info_data {
    grid-column-gap: var(--_units---u-32);
    grid-row-gap: var(--_units---u-32);
    flex-flow: column;
    display: flex
}

.tabs {
    grid-column-gap: var(--_units---u-24);
    grid-row-gap: var(--_units---u-24);
    display: flex;
    position: relative
}

.tabs.test {
    pointer-events: auto;
    justify-content: center
}

.tab {
    padding-top: var(--_units---u-8);
    padding-bottom: var(--_units---u-8);
    cursor: pointer
}

.lot-s_info_more_contents {
    position: relative
}

.lot-s_info_more_content {
    display: none;
    position: absolute;
    inset: 0% 0% auto
}

.lot-s_info_more_content.is-1 {
    display: block;
    position: relative
}

.tag-list {
    grid-column-gap: var(--_units---u-4);
    grid-row-gap: var(--_units---u-4);
    flex-flow: wrap;
    justify-content: flex-start;
    align-items: flex-start;
    display: flex
}

.tag {
    padding: var(--_units---u-4)var(--_units---u-12);
    border-radius: var(--_units---u-48);
    outline-color: var(--_colors---base-1000--line);
    outline-offset: -1px;
    outline-width: 1px;
    outline-style: solid;
    justify-content: center;
    align-items: center;
    display: flex
}

.tabs_line {
    z-index: 0;
    opacity: .1;
    position: absolute;
    inset: auto 0% 0%
}

.tabs_hilight {
    z-index: 1;
    background-color: var(--_colors---base-1000--primary);
    height: 1px;
    position: absolute;
    inset: auto auto 0% 0%
}

.lot-s_media {
    z-index: 0;
    margin-top: calc(var(--_special-units---100vh)*-1);
    position: relative
}

.lot-s_media_c {
    grid-area: 1/2/2/8
}

.lot-media-cms_list {
    padding-right: var(--_units---u-16);
    padding-left: var(--_units---u-24);
    grid-column-gap: var(--_units---u-16);
    grid-row-gap: var(--_units---u-16);
    flex-flow: column;
    display: flex
}

.lot-s_media_layout {
    flex-flow: column;
    justify-content: flex-end;
    display: flex
}

.lot-s_info_line {
    top: var(--_units---u-48);
    right: auto;
    bottom: var(--_units---u-48);
    opacity: .1;
    left: calc(var(--_special-units---grid-gap)*-1);
    position: absolute
}

.lot-s_info_line.is-top {
    top: calc(var(--_units---u-48) + var(--_units---u-96) + var(--_units---u-24) + var(--_units---u-8) + var(--_units---u-4) + var(--_units---u-8) + var(--_units---u-16) + var(--_units---u-64))
}

.lot-s_media_layout_img-prim {
    margin-bottom: var(--_units---u-48);
    padding-right: var(--_units---u-64);
    padding-left: var(--_units---u-64);
    cursor: pointer;
    height: calc(var(--_special-units---100vh) - var(--_units---u-48) - var(--_units---u-160) - var(--_units---u-32) - var(--_units---u-48));
    margin-top: calc(var(--_units---u-48) + var(--_units---u-160) + var(--_units---u-32));
    flex-flow: column;
    grid-area: 1/1/2/6;
    justify-content: center;
    display: flex;
    position: relative
}

.lot-s_media_layout_diagrams {
    bottom: var(--_units---u-48);
    padding-right: var(--_units---u-16);
    grid-column-gap: var(--_units---u-16);
    grid-row-gap: var(--_units---u-16);
    flex-flow: column;
    grid-area: 1/5/2/6;
    justify-content: flex-end;
    align-self: end;
    align-items: flex-end;
    display: flex;
    position: sticky
}

.compass {
    width: var(--_units---u-64);
    height: var(--_units---u-64);
    padding: var(--_units---u-4);
    outline-color: var(--_colors---base-1000--line);
    outline-offset: -1px;
    border-radius: 50%;
    outline-width: 1px;
    outline-style: solid;
    flex-flow: column;
    justify-content: flex-start;
    align-items: center;
    display: flex
}

.block-diagram {
    box-sizing: border-box;
    width: var(--_units---u-64);
    aspect-ratio: 8/11;
    position: relative
}

.block-diagram_hilight {
    flex: none;
    width: 100%;
    height: 100%;
    position: absolute;
    inset: 0%
}

.lot-s_media_layout_img-sec {
    margin-top: var(--_units---u-48);
    margin-bottom: var(--_units---u-48);
    padding-right: var(--_units---u-64);
    padding-left: var(--_units---u-64);
    height: calc(var(--_special-units---100vh) - var(--_units---u-48) - var(--_units---u-160) - var(--_units---u-32) - var(--_units---u-48));
    grid-area: 2/1/3/6
}

.contact-s_map_c {
    width: 100%
}

.hero-w_bg_master_img_night {
    display: none;
    position: absolute;
    inset: 0% 0% auto
}

.hero-s_tabs {
    grid-column-gap: var(--_units---u-16);
    grid-row-gap: var(--_units---u-16);
    justify-content: center;
    align-items: center;
    display: flex
}

.hero-s_tabs_divider {
    width: var(--_units---u-64);
    height: 1px
}

.amen-scroll-area {
    height: calc((var(--_special-units---100vh)*2.5) + 50rem);
    position: relative
}

.scroll-area_screen {
    top: var(--_units---u-0);
    z-index: 1;
    position: sticky
}

.other-title-w {
    margin-top: calc((50rem + var(--_special-units---100vh))*-1);
    position: relative
}

.other-title-w.test {
    margin-top: -50rem
}

.other-title-s {
    z-index: 1;
    flex-flow: column;
    justify-content: space-between;
    height: 50rem;
    display: flex;
    position: relative
}

.other-title-s_title {
    z-index: 1;
    grid-area: 1/4/2/8;
    position: relative
}

.apart-cms_list {
    grid-column-gap: var(--_special-units---grid-gap);
    grid-row-gap: var(--_special-units---grid-gap);
    grid-template-rows: auto;
    grid-template-columns: 1fr 1fr 1fr;
    grid-auto-columns: 1fr;
    display: grid
}

.apart-cms_list.c-2 {
    grid-template-columns: 1fr 1fr
}

.apart-s_cms_empty {
    z-index: 0;
    padding-top: var(--_units---u-64);
    padding-bottom: var(--_units---u-64);
    flex-flow: column;
    justify-content: center;
    align-items: stretch;
    display: flex;
    position: relative
}

.apart-s_cms_empty_info {
    padding-right: var(--_special-units---grid-gap);
    padding-left: var(--_special-units---grid-gap);
    grid-area: 1/4/2/7
}

.apart-s_cms_empty_desc {
    padding-right: var(--_units---u-64);
    padding-left: var(--_units---u-64)
}

.apart-s_cms_empty_title {
    padding-left: var(--_units---u-24)
}

.video {
    object-fit: cover;
    width: 100%;
    height: 100%
}

.video.stone {
    pointer-events: none;
    width: 140%;
    height: 140%
}

.flower {
    z-index: 1;
    pointer-events: none;
    width: calc(var(--80px)*10);
    height: calc(var(--80px)*10);
    position: absolute;
    inset: auto
}

.flower.loc-info {
    bottom: auto;
    right: auto;
    top: calc((96rem/var(--_special-units---scale-ratio))*-1);
    left: calc(((64rem/var(--_special-units---scale-ratio))*-1) - var(--_special-units---offset-r))
}

.flower.loc-intro {
    top: auto;
    right: auto;
    bottom: calc((144rem/var(--_special-units---scale-ratio))*-1);
    left: calc((224rem/var(--_special-units---scale-ratio))*-1);
    transform: rotate(90deg)
}

.flower.loc-path {
    margin-top: calc((144rem/var(--_special-units---scale-ratio))*-1);
    margin-right: calc((64rem/var(--_special-units---scale-ratio))*-1);
    position: static;
    inset: 0% 0% auto auto;
    transform: scaleX(-1)
}

.flower.arch-intro-l {
    top: auto;
    right: auto;
    left: calc(((96rem/var(--_special-units---scale-ratio))*-1) - var(--_special-units---offset-r));
    bottom: calc((96rem/var(--_special-units---scale-ratio))*-1);
    transform: rotate(-150deg)
}

.flower.arch-intro-r {
    top: auto;
    right: calc(((48rem/var(--_special-units---scale-ratio))*-1) - var(--_special-units---offset-r));
    bottom: calc((96rem/var(--_special-units---scale-ratio))*-1);
    transform: rotate(65deg)
}

.flower.apart-info {
    top: auto;
    right: auto;
    left: calc(((64rem/var(--_special-units---scale-ratio))*-1) - var(--_special-units---offset-l));
    bottom: calc((32rem/var(--_special-units---scale-ratio))*-1);
    transform: scaleY(-1)
}

.flower.interior {
    aspect-ratio: 1;
    width: 100%;
    height: auto;
    bottom: auto;
    left: auto;
    right: 0%;
    top: calc((64rem/var(--_special-units---scale-ratio))*-1)
}

.flower.asd {
    inset: 0% 0% auto auto
}

.flower.apart {
    bottom: auto;
    left: auto;
    right: calc(((120rem/var(--_special-units---scale-ratio))*-1) - var(--_special-units---offset-r));
    top: calc((120rem/var(--_special-units---scale-ratio))*-1);
    transform: rotate(30deg)
}

.flower.apart-info-copy {
    top: auto;
    bottom: 0%;
    right: auto;
    left: calc(((64rem/var(--_special-units---scale-ratio))*-1) - var(--_special-units---offset-r));
    transform: scaleY(-1)
}

.flower.other {
    top: 0%;
    bottom: auto;
    left: auto;
    right: calc(((160rem/var(--_special-units---scale-ratio))*-1) - var(--_special-units---offset-r));
    transform: rotate(45deg)
}

.loc-path-w_flower {
    top: 0%;
    bottom: auto;
    left: auto;
    right: calc(var(--_special-units---offset-r)*-1);
    display: block;
    position: absolute;
    overflow: hidden
}

.interior-s_l_img_flower {
    width: 100%;
    height: 125%;
    position: absolute
}

.modal_over-copy {
    z-index: 0;
    pointer-events: auto;
    background-color: #0009;
    position: absolute;
    inset: 0%
}

.modal_lightbox {
    pointer-events: auto;
    flex-flow: column;
    justify-content: center;
    align-items: center;
    width: 100%;
    height: 100%;
    display: flex;
    position: relative
}

.modal_close {
    left: auto;
    top: var(--_special-units---offset-r);
    right: var(--_units---u-0);
    z-index: 1;
    position: absolute;
    bottom: auto
}

.modal_lightbox_content {
    z-index: 0;
    width: calc(100% - ((var(--_special-units---1-cell-h)*2) + (var(--_special-units---grid-gap)*2)));
    height: calc(100% - (var(--_units---u-48)*2));
    flex-flow: column;
    justify-content: center;
    align-items: center;
    display: flex;
    position: relative
}

.modal_lightbox_pag {
    z-index: 1;
    padding-bottom: var(--_special-units---offset-r);
    pointer-events: none;
    position: absolute;
    inset: auto 0% 0%
}

.modal_lightbox_pag_list {
    grid-column-gap: var(--_units---u-32);
    grid-row-gap: var(--_units---u-32);
    pointer-events: auto;
    justify-content: flex-end;
    align-items: center;
    display: flex
}

.div-block {
    grid-column-gap: var(--_units---u-32);
    grid-row-gap: var(--_units---u-32);
    justify-content: center;
    align-items: center;
    display: flex
}

.lot-media-item_btn {
    pointer-events: none;
    justify-content: center;
    align-items: center;
    display: flex;
    position: absolute;
    inset: auto 0%
}

.lot-media-item {
    cursor: pointer;
    position: relative
}

.modal_decor {
    left: var(--_units---u-24);
    top: var(--_units---u-24);
    right: var(--_units---u-24);
    bottom: var(--_units---u-24);
    position: absolute
}

.apart_themes {
    pointer-events: none;
    flex-flow: column;
    display: flex;
    position: absolute;
    inset: 0%
}

.themes_row {
    justify-content: space-between;
    display: flex
}

.apart_themes_light-1,
.apart_themes_color-1 {
    flex: 1;
    height: 15rem
}

.apart_themes_light-2 {
    flex: 1
}

.amen_themes {
    pointer-events: none;
    top: 0%;
    left: 0%;
    right: 0%;
    bottom: calc(var(--_special-units---100vh) + 50rem);
    flex-flow: column;
    display: flex;
    position: absolute
}

.amen_themes_color {
    flex: 1
}

.interior_themes {
    pointer-events: none;
    flex-flow: column;
    display: flex;
    position: absolute;
    inset: 50rem 0% 0%
}

.interior_themes_light-1 {
    height: 25rem
}

.interior_themes_light-2,
.interior_themes_dark-2 {
    flex: 1;
    height: 52.5rem
}

.interior_themes_light-3 {
    flex: 1
}

.sdda {
    justify-content: flex-start;
    align-items: flex-start;
    display: flex
}

.loc-w_decor {
    height: var(--_special-units---offset-r);
    background-color: var(--_colors---other--bg);
    margin-left: calc(var(--_special-units---offset-l)*-1);
    margin-right: calc(var(--_special-units---offset-r)*-1)
}

.w_themes {
    pointer-events: none;
    flex-flow: column;
    display: flex;
    position: absolute;
    inset: 0%
}

.w_themes_row {
    justify-content: space-between;
    display: flex
}

.w_themes_row.fill {
    flex: 1
}

.quote-w_themes_color-1,
.quote-w_themes_light-1 {
    flex: 1;
    height: 100%
}

.quote-w_themes_color-2,
.quote-w_themes_light-2 {
    flex: 1;
    height: 30rem
}

.p-btn {
    z-index: 2147483647;
    width: var(--_units---u-24);
    height: var(--_units---u-24);
    position: fixed;
    inset: auto auto 0% 0%
}

.r-btn {
    top: auto;
    left: 0%;
    right: auto;
    bottom: var(--_units---u-24);
    z-index: 2147483647;
    width: var(--_units---u-24);
    height: var(--_units---u-24);
    position: fixed
}

.slider {
    height: var(--_special-units---100vh)
}

.slide {
    height: 100%;
    display: none;
    position: absolute;
    inset: 0%
}

.slide.is-1 {
    display: block;
    position: relative
}

@media screen and (max-width:991px) {
    body {
        --_fonts---font-body: "Maison Neue Extended", Arial, sans-serif;
        --_fonts---font-display: ambroise-francois-std, sans-serif;
        --_fonts---h1--size: calc(96rem/var(--_special-units---scale-ratio));
        --_fonts---h1--line-height: 91.667%;
        --_fonts---h1--letter-spacing: -.024em;
        --_fonts---h2--size: calc(73rem/var(--_special-units---scale-ratio));
        --_fonts---h2--line-height: 87.671%;
        --_fonts---h2--letter-spacing: -.024em;
        --_fonts---h3--size: calc(56rem/var(--_special-units---scale-ratio));
        --_fonts---h3--line-height: 92.857%;
        --_fonts---h3--letter-spacing: -.024em;
        --_fonts---h4--size: calc(40rem/var(--_special-units---scale-ratio));
        --_fonts---h4--line-height: 100%;
        --_fonts---h4--letter-spacing: -.016em;
        --_fonts---h5--size: calc(28rem/var(--_special-units---scale-ratio));
        --_fonts---h5--line-height: 100%;
        --_fonts---h5--letter-spacing: -.008em;
        --_fonts---h6--size: calc(28rem/var(--_special-units---scale-ratio));
        --_fonts---h6--line-height: 100%;
        --_fonts---h6--letter-spacing: 0em;
        --_fonts---p1--size: clamp(15px, calc(17rem/var(--_special-units---scale-ratio)), 19px);
        --_fonts---p1--line-height: 138.462%;
        --_fonts---p1--letter-spacing: -.024em;
        --_fonts---l1--size: clamp(12px, calc(13rem/var(--_special-units---scale-ratio)), 15px);
        --_fonts---l1--line-height: 145.455%;
        --_fonts---l1--letter-spacing: .048em;
        --_fonts---p2--size: clamp(13px, calc(14rem/var(--_special-units---scale-ratio)), 16px);
        --_fonts---p2--line-height: 145.455%;
        --_fonts---p2--letter-spacing: -.024em;
        --_fonts---l2--size: clamp(10px, calc(11.5rem/var(--_special-units---scale-ratio)), 13px);
        --_fonts---l2--line-height: 133.333%;
        --_fonts---l2--letter-spacing: .32em;
        --_fonts---c1--size: calc(19rem/var(--_special-units---scale-ratio));
        --_fonts---c1--line-height: 126.316%;
        --_fonts---c1--letter-spacing: .8em;
        --_fonts---font-accent: sloop-script-three, sans-serif;
        --_fonts---a1--size: calc(96rem/var(--_special-units---scale-ratio));
        --_fonts---a1--line-height: 100%;
        --_fonts---a1--letter-spacing: 0em;
        --_fonts---a2--size: calc(72rem/var(--_special-units---scale-ratio));
        --_fonts---a2--line-height: 100%;
        --_fonts---a2--letter-spacing: 0em;
        --40px: calc(40rem/var(--_special-units---scale-ratio));
        --112px: calc(112rem/var(--_special-units---scale-ratio));
        --2px: calc(2rem/var(--_special-units---scale-ratio));
        --24px: calc(24rem/var(--_special-units---scale-ratio));
        --12px: calc(12rem/var(--_special-units---scale-ratio));
        --72px: calc(72rem/var(--_special-units---scale-ratio));
        --16px: calc(16rem/var(--_special-units---scale-ratio));
        --136px: calc(136rem/var(--_special-units---scale-ratio));
        --80px: calc(80rem/var(--_special-units---scale-ratio));
        --192px: calc(192rem/var(--_special-units---scale-ratio));
        --144px: calc(144rem/var(--_special-units---scale-ratio));
        --28px: calc(28rem/var(--_special-units---scale-ratio));
        --56px: calc(56rem/var(--_special-units---scale-ratio));
        --32px: calc(32rem/var(--_special-units---scale-ratio));
        --6px: calc(6rem/var(--_special-units---scale-ratio));
        --20px: calc(20rem/var(--_special-units---scale-ratio));
        --44px: calc(44rem/var(--_special-units---scale-ratio));
        --60px: calc(60rem/var(--_special-units---scale-ratio));
        --48px: calc(48rem/var(--_special-units---scale-ratio));
        --96px: calc(96rem/var(--_special-units---scale-ratio));
        --8px: calc(8rem/var(--_special-units---scale-ratio));
        --0px: calc(0rem/var(--_special-units---scale-ratio));
        --1px: calc(1rem/var(--_special-units---scale-ratio));
        --4px: calc(4rem/var(--_special-units---scale-ratio));
        --10px: calc(10rem/var(--_special-units---scale-ratio));
        --36px: calc(36rem/var(--_special-units---scale-ratio));
        --52px: calc(52rem/var(--_special-units---scale-ratio));
        --64px: calc(64rem/var(--_special-units---scale-ratio));
        --68px: calc(68rem/var(--_special-units---scale-ratio));
        --88px: calc(88rem/var(--_special-units---scale-ratio));
        --104px: calc(104rem/var(--_special-units---scale-ratio));
        --120px: calc(120rem/var(--_special-units---scale-ratio));
        --160px: calc(160rem/var(--_special-units---scale-ratio));
        --168px: calc(168rem/var(--_special-units---scale-ratio));
        --240px: calc(240rem/var(--_special-units---scale-ratio));
        --272px: calc(272rem/var(--_special-units---scale-ratio));
        --_special-units---100vh: var(--_100svh);
        --_special-units---offset-r: var(--24px);
        --_special-units---offset-l: var(--24px);
        --_special-units---grid-gap: var(--16px);
        --_special-units---scale-ratio: 4.16;
        --_special-units---1-cell-v: var(--80px);
        --_special-units---1-cell-h: var(--80px);
        --_units---u-0: var(--0px);
        --_units---u-4: var(--4px);
        --_units---u-8: var(--8px);
        --_units---u-12: var(--12px);
        --_units---u-16: var(--16px);
        --_units---u-24: var(--16px);
        --_units---u-32: var(--24px);
        --_units---u-48: var(--32px);
        --_units---u-64: var(--48px);
        --_units---u-96: var(--64px);
        --_units---u-160: var(--96px);
        --_units---u-272: var(--120px)
    }

    .container.loc {
        padding-right: var(--_special-units---offset-r)
    }

    .grid,
    .grid._6-columns,
    .grid._8-columns,
    .grid._5-columns,
    .grid._4-columns,
    .grid._13-columns,
    .grid._8-columns,
    .grid._9-columns {
        grid-template-columns: 1fr 1fr 1fr 1fr
    }

    .grid.h-100 {
        height: auto
    }

    .b-desk {
        display: none
    }

    .b-mob {
        display: block
    }

    .f-mob {
        display: flex
    }

    .f-desk {
        display: none
    }

    .img {
        height: 100%
    }

    .img.h-auto.hero-img {
        min-height: 100vh
    }

    .img.h-auto.quote-w_bg_img {
        object-position: 0% 50%;
        height: 100%
    }

    .input_field {
        height: var(--40px);
        padding-right: var(--_units---u-96);
        padding-left: var(--_units---u-96)
    }

    .form_block {
        flex-flow: column;
        justify-content: flex-start;
        height: auto
    }

    .form_success {
        height: auto
    }

    .form_error {
        margin-top: var(--_units---u-64);
        margin-left: calc(var(--_units---u-64)*-1);
        margin-right: calc(var(--_units---u-64)*-1);
        position: relative
    }

    .img-w.h-auto.quote-w_bg_img {
        height: 100%
    }

    .mob_a-left {
        text-align: left
    }

    .mob_a-center {
        text-align: center
    }

    .mob_a-right {
        text-align: right
    }

    ._w-auto {
        width: auto
    }

    .h-auto {
        height: auto
    }

    .a2.preloader_a {
        font-size: calc(48rem/var(--_special-units---scale-ratio))
    }

    .s_title {
        padding-right: var(--_units---u-0);
        padding-left: var(--_units---u-0);
        margin-left: calc(var(--_special-units---grid-gap)*-1);
        margin-right: calc(var(--_special-units---grid-gap)*-1);
        grid-area: 1/2/2/4
    }

    .info-s_lead,
    .info-s_desc {
        grid-area: 1/1/2/5
    }

    .ico-48 {
        width: var(--_units---u-64);
        height: var(--_units---u-64)
    }

    .loc-info-w {
        width: auto
    }

    .loc-info-s {
        justify-content: flex-start;
        height: auto
    }

    .loc-info-s_t,
    .loc-info-s_b {
        flex: 0 auto
    }

    .benefits-s_cms {
        grid-area: 1/1/2/5
    }

    .benefit-slide_cap {
        padding-right: var(--_units---u-0);
        padding-left: var(--_units---u-0);
        margin-left: calc(var(--_special-units---grid-gap)*-1);
        margin-right: calc(var(--_special-units---grid-gap)*-1);
        grid-area: 1/2/2/4
    }

    .benefit-slide_desc {
        grid-area: 1/1/2/5
    }

    .benefit-slide_img {
        width: 100%;
        height: auto;
        min-height: 0
    }

    .pag_progress {
        width: var(--_units---u-272)
    }

    .benefits-intro-w {
        margin-bottom: -1px
    }

    .benefits-intro-s {
        height: auto
    }

    .benefits-intro-s_title_svg {
        aspect-ratio: 1
    }

    .hero-s_title {
        grid-area: 1/1/2/5
    }

    .apart-type-s {
        height: auto
    }

    .apart-type-s_cms {
        grid-area: 1/1/2/5
    }

    .apart-type-cms {
        flex: 0 auto
    }

    .apart-type-cms_list_item {
        height: auto;
        inset: 0% 0% auto
    }

    .apart-type-cms_list {
        height: auto
    }

    .apart-type-slide {
        justify-content: flex-start;
        height: auto
    }

    .apart-type-slide_c {
        order: 3
    }

    .apart-type-slide_b {
        margin-top: calc(var(--_units---u-32)*-1);
        flex: 0 auto;
        order: 2;
        justify-content: flex-start
    }

    .apart-type-slide_desc {
        grid-area: 2/1/3/5
    }

    .apart-type-slide_data {
        text-align: center;
        grid-area: 1/1/2/5
    }

    .data-list {
        flex-flow: wrap;
        justify-content: center
    }

    .apart-type-slide_img-w {
        order: 1;
        height: auto;
        position: relative
    }

    .amen-slide_desc {
        grid-area: 2/1/3/5
    }

    .amen-slide_title {
        grid-area: 1/2/2/5
    }

    .amm-s_cms_tabs-w {
        top: var(--_units---u-272)
    }

    .amm-s_cms_tabs {
        grid-area: 1/2/2/5
    }

    .interior-s_title {
        grid-area: 1/1/2/5
    }

    .interior-s_title_a {
        margin-top: calc(var(--40px)*-1);
        margin-left: calc(var(--16px)*-1)
    }

    .interior-s_imgs {
        grid-column-gap: var(--_units---u-0);
        grid-row-gap: var(--_units---u-0);
        flex-flow: column;
        justify-content: flex-start
    }

    .interior-s_l,
    .interior-s_r {
        flex: 0 auto
    }

    .interior-s_l_img-w {
        padding-right: var(--80px);
        padding-left: var(--80px)
    }

    .interior-s_r_img {
        grid-area: 1/2/2/5
    }

    .interior-s_r_desc {
        grid-area: 3/2/4/5
    }

    .interior-s_l_desc {
        grid-area: 2/2/3/5
    }

    .interior-s_gallery-cms {
        grid-area: 1/1/2/5
    }

    .gallery-cms {
        aspect-ratio: 16/12
    }

    .other-s,
    .other-s_cms,
    .other-card_info_desc {
        grid-area: 1/1/2/5
    }

    .other-card_info_logo {
        width: var(--144px)
    }

    .cta-s {
        aspect-ratio: 2/6
    }

    .cta-s_desc,
    .cta-s_title {
        grid-area: 1/1/2/5
    }

    .loc-scroll-area_track {
        flex-flow: column
    }

    .loc-intro-w {
        width: auto
    }

    .loc-intro-s {
        height: auto
    }

    .loc-intro-s_img {
        aspect-ratio: 3/4;
        grid-area: 2/2/3/5
    }

    .loc-intro-s_desc {
        grid-area: 3/2/4/5
    }

    .loc-intro-s_title {
        grid-area: 1/2/2/5
    }

    .loc-intro-s_cap {
        grid-area: 1/1/2/3
    }

    .loc-scroll-area_screen {
        flex-flow: column;
        position: static
    }

    .loc-intro-s_title_line.is-2 {
        margin-left: 0
    }

    .interior-s_r_btn {
        grid-area: 4/2/5/5;
        justify-content: flex-start;
        align-items: flex-start
    }

    .btn-circle {
        height: calc((var(--_special-units---1-cell-v)*2) + (var(--_special-units---grid-gap)))
    }

    .amm-s_cms_btn {
        grid-area: 1/2/2/5
    }

    .footer-s_contact {
        grid-area: 1/1/2/5
    }

    .footer-s_address {
        margin-left: calc(var(--_special-units---grid-gap)*-1);
        margin-right: calc(var(--_special-units---grid-gap)*-1);
        grid-area: 2/2/3/4;
        padding-left: 0;
        padding-right: 0
    }

    .ico-64 {
        width: var(--_units---u-64);
        height: var(--_units---u-64)
    }

    .footer-s_info {
        grid-area: 1/1/2/3
    }

    .error-s_l {
        grid-area: 2/1/3/3
    }

    .error-s_r {
        grid-area: 2/3/3/5
    }

    .error-s_c {
        grid-area: 1/1/2/5
    }

    .error-s_t {
        flex: 0 auto
    }

    .error-s_desc {
        grid-area: 1/2/2/4
    }

    .error-s_btn {
        grid-area: 2/1/3/5
    }

    .error-s_title {
        grid-column-gap: var(--_special-units---grid-gap);
        grid-row-gap: var(--_special-units---grid-gap)
    }

    .error-s_title_a {
        margin-top: calc(var(--32px)*-1)
    }

    .header-nav {
        width: calc((var(--_special-units---1-cell-h)*2) + (var(--_special-units---grid-gap)))
    }

    .s-bar {
        display: none
    }

    .arch-w {
        position: relative
    }

    .arch-s {
        aspect-ratio: 2/6
    }

    .arch-s_desc,
    .arch-s_quote {
        grid-area: 1/1/2/5
    }

    .arch-s_btn {
        grid-area: 2/1/3/5
    }

    .hero-s_logo {
        grid-area: 1/1/2/5
    }

    .hero-s_logo_a {
        margin-top: calc(var(--24px)*-1);
        margin-left: calc(var(--16px)*-1)
    }

    .hero-w_bg_master {
        max-height: var(--_special-units---100vh)
    }

    .hero-s_desc {
        grid-area: 1/1/2/8
    }

    .floating-tips {
        display: none
    }

    .floating-tip-card {
        z-index: 2;
        padding-top: var(--_units---u-32);
        padding-right: var(--_units---u-32);
        padding-bottom: var(--_units---u-32);
        padding-left: var(--_units---u-32);
        width: calc((var(--_special-units---1-cell-h)*3) + (var(--_special-units---grid-gap)*2))
    }

    .cookies_card {
        padding: var(--_units---u-32);
        grid-column-gap: var(--_units---u-16);
        grid-row-gap: var(--_units---u-16);
        aspect-ratio: auto;
        flex-flow: row;
        justify-content: flex-start;
        align-items: flex-start
    }

    .cookies_card_title {
        padding-right: 4.44444rem
    }

    .cookies {
        z-index: 899
    }

    .cookies_card_t {
        width: var(--_units---u-160);
        flex: none;
        justify-content: flex-start;
        align-items: flex-start
    }

    .cookies_card_btn-list {
        justify-content: flex-start;
        align-items: center
    }

    .contact-s_title,
    .contact-s_email {
        grid-area: 1/1/2/5
    }

    .contact-s_loc {
        margin-left: calc(var(--_special-units---grid-gap)*-1);
        margin-right: calc(var(--_special-units---grid-gap)*-1);
        grid-area: 3/2/4/4;
        padding-left: 0;
        padding-right: 0
    }

    .contact-s_phone {
        grid-area: 2/1/3/5
    }

    .contact-s_map {
        grid-area: 1/1/2/5;
        margin-left: -65rem;
        margin-right: -75rem
    }

    .contact-s_btn {
        grid-area: 2/2/3/5
    }

    .contact-s_map_pin {
        top: 42%
    }

    .contact-s_map_pin_c {
        left: auto
    }

    .loc-w_bg {
        overflow: auto
    }

    .loc-s_desc {
        flex-flow: column;
        grid-area: 1/1/2/5;
        justify-content: flex-end;
        align-items: center;
        display: flex
    }

    .header-cramps {
        display: none
    }

    .contact-s_social {
        grid-area: 2/1/3/2
    }

    .no-wrap {
        white-space: nowrap
    }

    .modal_cta {
        justify-content: flex-end
    }

    .modal_cta_c {
        max-height: var(--_special-units---100vh);
        aspect-ratio: auto;
        margin-left: calc(var(--_special-units---offset-l)*-1);
        margin-right: calc(var(--_special-units---offset-r)*-1);
        grid-area: 1/1/2/5;
        overflow: auto
    }

    .modal_cta_l {
        flex: 0 auto;
        justify-content: flex-start
    }

    .modal_cta_l_b,
    .modal_cta_desc {
        flex-flow: column;
        justify-content: flex-start;
        align-items: center;
        display: flex
    }

    .modal_cta_a {
        margin-left: calc(var(--80px)*-1);
        margin-top: calc(var(--24px)*-1)
    }

    .modal_cta_c_c {
        display: none
    }

    .modal_cta_form {
        height: auto
    }

    .modal_cta_form_c {
        justify-content: flex-start;
        width: 100%
    }

    .form_success_c {
        height: auto
    }

    .form_success_social {
        position: relative
    }

    .form_success_desc {
        flex: 0 auto
    }

    .form_success_title {
        width: calc(var(--20px)*8);
        flex: 0 auto
    }

    .s-bar-w,
    .s-down {
        display: none
    }

    .quote-w_bg {
        aspect-ratio: 1
    }

    .quote-s_c {
        grid-area: 1/1/2/5
    }

    .loc-w_over-grad {
        height: calc((var(--_special-units---1-cell-v)*2) + (var(--_special-units---grid-gap)*1))
    }

    .clouds.is-33 {
        height: calc(var(--60px)*5)
    }

    .clouds.is-02,
    .clouds.is-47 {
        height: calc(var(--48px)*5)
    }

    .loc-intro-s_btn {
        grid-area: 4/2/5/5
    }

    .loc-path-w {
        width: auto
    }

    .loc-path-s {
        justify-content: flex-start;
        height: auto
    }

    .loc-path-s_title {
        grid-area: 1/1/2/5
    }

    .loc-path-s_title_a.a2 {
        margin-top: calc(var(--24px)*-1)
    }

    .loc-path-s_path {
        margin-left: calc(var(--_special-units---offset-l)*-1);
        margin-right: calc(var(--_special-units---offset-r)*-1);
        grid-area: 1/1/2/5;
        overflow: auto
    }

    .apart-type-slide_btn {
        justify-content: center;
        align-items: flex-start
    }

    .loc-w_bg_img {
        width: 200%
    }

    .loc-path-s_path_c {
        width: 250%
    }

    .soon-s_title {
        grid-area: 1/1/2/5
    }

    .modal_menu_title {
        grid-area: 1/2/2/4
    }

    .modal_menu_a {
        margin-bottom: calc(var(--20px)*-1);
        margin-left: calc(var(--48px)*-1)
    }

    .modal_menu_list {
        grid-area: 1/1/2/5
    }

    .header-nav_list.f-mob {
        display: flex
    }

    .moda_tip_close {
        position: relative
    }

    .apart-s_title {
        flex-flow: column;
        justify-content: flex-start;
        align-items: center
    }

    .apart-s_cms {
        grid-area: 1/1/2/5
    }

    .apart-benefits-cms_list {
        grid-row-gap: var(--_units---u-8);
        grid-template-columns: 1fr
    }

    .apart-benefits-cms_list.c-2 {
        grid-template-columns: 1fr
    }

    .apart-card_img_sec {
        display: none
    }

    .apart-s_cms_filter_item {
        margin-bottom: var(--_units---u-16);
        grid-column: span 4
    }

    .apart-s_cms_filter_item.is-last {
        margin-bottom: var(--_units---u-0)
    }

    .lot-s_info {
        height: auto;
        position: static
    }

    .preloader_title-l,
    .preloader_title-r {
        display: none
    }

    .preloader_logo {
        grid-area: 1/2/2/4
    }

    .preloader_logo_a {
        margin-top: calc(var(--16px)*-1);
        margin-left: calc(var(--16px)*-1)
    }

    .preloader_progress_fill {
        height: var(--_units---u-160)
    }

    .footer-s_s-top {
        display: none
    }

    .apart-card_shadow {
        height: 100%;
        display: none
    }

    .lot-s_info_c {
        grid-area: 1/1/2/5;
        justify-content: flex-start
    }

    .lot-s_info_t {
        flex: 0 auto;
        height: auto;
        overflow: visible
    }

    .lot-s_info_header.is-top {
        margin-left: 0
    }

    .lot-s_info_data {
        grid-column-gap: var(--_special-units---grid-gap);
        grid-row-gap: var(--_units---u-32);
        grid-template-rows: auto;
        grid-template-columns: 1fr 1fr;
        grid-auto-columns: 1fr;
        display: grid
    }

    .lot-s_info_more_content {
        padding-right: var(--_units---u-160)
    }

    .lot-s_media {
        margin-top: 0
    }

    .lot-s_media_c {
        padding-right: var(--_special-units---offset-r);
        padding-left: var(--_special-units---offset-l);
        grid-column-gap: var(--_units---u-16);
        grid-row-gap: var(--_units---u-16);
        aspect-ratio: 1/.8;
        margin-left: calc(var(--_special-units---offset-l)*-1);
        margin-right: calc(var(--_special-units---offset-r)*-1);
        overscroll-behavior: none;
        grid-area: 1/1/2/5;
        display: flex;
        position: relative;
        overflow: auto
    }

    .lot-media-cms {
        flex: none;
        height: 100%
    }

    .lot-media-cms_list {
        flex-flow: row;
        height: 100%;
        padding-left: 0;
        padding-right: 0
    }

    .lot-media-cms_list_item {
        flex: none;
        height: 100%
    }

    .lot-s_media_layout {
        grid-column-gap: var(--_units---u-16);
        grid-row-gap: var(--_units---u-16);
        flex-flow: row;
        flex: none;
        justify-content: flex-start;
        height: 100%
    }

    .lot-s_info_line {
        display: none
    }

    .lot-s_media_layout_img-prim {
        aspect-ratio: 1;
        flex: none;
        width: auto;
        height: 100%;
        margin-top: 0;
        margin-bottom: 0;
        padding-left: 0;
        padding-right: 0
    }

    .lot-s_media_layout_diagrams {
        bottom: var(--_units---u-0);
        height: var(--_units---u-64);
        padding-right: var(--_units---u-0);
        flex-flow: row;
        justify-content: center;
        align-items: center;
        position: relative
    }

    .block-diagram_hilight {
        height: 100%
    }

    .lot-s_media_layout_img-sec {
        aspect-ratio: 1;
        flex: none;
        width: auto;
        height: 100%;
        margin-top: 0;
        margin-bottom: 0;
        padding-left: 0;
        padding-right: 0
    }

    .hero-s_tabs {
        display: none
    }

    .lot-s_info_header_num {
        justify-content: space-between;
        align-items: center;
        display: flex
    }

    .scroll-area_screen {
        flex-flow: column
    }

    .other-title-w {
        margin-bottom: -1px
    }

    .other-title-s {
        height: auto
    }

    .other-title-s_title {
        grid-area: 1/1/2/5
    }

    .apart-cms_list {
        grid-row-gap: var(--_units---u-8);
        grid-template-columns: 1fr
    }

    .apart-s_cms_empty_info {
        grid-area: 1/1/2/5
    }

    .apart-s_cms_empty_title {
        padding-left: var(--_units---u-32)
    }

    .video {
        height: 100%
    }

    .flower {
        width: calc(var(--40px)*10);
        height: calc(var(--40px)*10)
    }

    .flower.loc-info {
        left: calc(((32rem/var(--_special-units---scale-ratio))*-1) - var(--_special-units---offset-r));
        top: calc((48rem/var(--_special-units---scale-ratio))*-1)
    }

    .flower.loc-intro {
        left: calc((96rem/var(--_special-units---scale-ratio))*-1);
        bottom: calc((0rem/var(--_special-units---scale-ratio))*-1);
        transform: rotate(180deg)
    }

    .flower.apart-info {
        left: calc(((32rem/var(--_special-units---scale-ratio))*-1) - var(--_special-units---offset-r))
    }

    .flower.asd {
        left: calc(((32rem/var(--_special-units---scale-ratio))*-1) - var(--_special-units---offset-r));
        top: calc((48rem/var(--_special-units---scale-ratio))*-1)
    }

    .flower.apart {
        top: calc((64rem/var(--_special-units---scale-ratio))*-1);
        right: calc(((64rem/var(--_special-units---scale-ratio))*-1) - var(--_special-units---offset-r))
    }

    .flower.apart-info-copy {
        left: calc(((32rem/var(--_special-units---scale-ratio))*-1) - var(--_special-units---offset-r))
    }

    .flower.other {
        right: calc(((96rem/var(--_special-units---scale-ratio))*-1) - var(--_special-units---offset-r))
    }

    .loc-path-w_flower {
        display: none
    }

    .modal_lightbox_content {
        z-index: 2;
        width: 100%;
        height: calc(100% - (var(--_units---u-48)*6))
    }

    .modal_decor {
        left: var(--_units---u-8);
        top: var(--_units---u-8);
        right: var(--_units---u-8);
        bottom: var(--_units---u-8)
    }

    .apart_themes_light-1,
    .apart_themes_color-1 {
        height: 25rem
    }

    .interior_themes_light-1 {
        height: 80rem
    }

    .interior_themes_light-2 {
        flex: none;
        display: none
    }

    .interior_themes_dark-2 {
        height: 125rem
    }

    .l1-list {
        grid-column-gap: var(--_units---u-8);
        grid-row-gap: var(--_units---u-8);
        justify-content: center;
        align-items: center;
        display: flex
    }
}

@media screen and (max-width:767px) {
    .hero-scroll-area {
        height: calc((var(--_special-units---100vh)*2) + (50rem + var(--_special-units---100vh)))
    }
}

@media screen and (max-width:991px) {
    #w-node-a93c3093-e77a-7926-27af-e0a2d9898e16-d9898e13 {
        grid-column: 1/5
    }
}

/** -------------------------------------------------
 * FORM STATES
 *
 * Replaces the show/hide that the Webflow runtime used to apply inline to
 * its form-state elements. Those base classes have since been removed, so
 * the default hidden state is declared here and owned by this file alone.
 *
 * State is driven by /assets/js/form-handler.js, which sets
 * data-form-state="success" | "error" on the [data-form-wrap] element.
 * ------------------------------------------------- */

[data-form-wrap] .form_success,
[data-form-wrap] .form_error {
    display: none
}

[data-form-wrap][data-form-state="success"] .form_block {
    display: none
}

[data-form-wrap][data-form-state="success"] .form_success {
    display: block
}

[data-form-wrap][data-form-state="error"] .form_error {
    display: block
}

/** -------------------------------------------------
 * MOBILE MENU MODAL
 *
 * Below 992px the desktop header list (.header-nav_list.f-desk) is hidden and
 * the burger panel is the only navigation, so the panel mirrors every desktop
 * link. That makes the list roughly twice as tall as the original four-item
 * version, which no longer clears a short phone viewport at the inherited
 * rhythm. Tighten the leading gap and the panel's top spacer, and let the list
 * area scroll so the last item is always reachable.
 *
 * The spacer went u-64 -> u-32 when the list gained its three group labels (see
 * GROUPED NAVIGATION below). The labels cost about 14px of height; this returns
 * more than that from leading whitespace instead of from the row gap, because
 * the gap is already the tighter half of a ~34px tap pitch on a 27px link and
 * squeezing it further would push the targets further below the 44px guideline.
 * ------------------------------------------------- */

@media screen and (max-width:991px) {
    .modal.menu .modal_menu_t .u-272 {
        height: var(--_units---u-32)
    }

    .modal.menu .modal_menu_list {
        grid-row-gap: var(--_units---u-16)
    }

    /* The panel itself scrolls, rather than a flex-sized middle section: the
       header block and footer logo alone can exceed a short landscape
       viewport, which would leave a `flex: 1` list with no free space to
       claim and collapse it to zero height. Letting .modal_menu grow past
       100% keeps every item laid out at its natural size and reachable,
       while min-height preserves the space-between spread when it fits. */
    .modal.menu .modal_c {
        overflow-y: auto;
        overscroll-behavior: contain
    }

    .modal.menu .modal_menu {
        height: auto;
        min-height: 100%;
        flex: none
    }
}

/** -------------------------------------------------
 * PRELOADER DESCENT (home page only)
 *
 * The loading rule doubles as an approach path: a plane rides its leading edge
 * from top to bottom while the solid track fills in behind it as a contrail, so
 * the loading beat reads as a landing. Only index.html carries the markup.
 *
 * The plane is a sibling of the rule rather than a child, because the rule is
 * [data-part="line"] and animateLine() leaves an inline clip-path on it — any
 * child wider or taller than the 1px rule would be cropped by that clip.
 *
 * Centring uses negative margins, not `translate`. GSAP animates the plane's
 * `transform`, and per CSS Transforms the individual `translate`/`rotate`
 * properties apply BEFORE `transform`, so a CSS `translate` here would be
 * composed with GSAP's matrix and skew the travel path.
 * ------------------------------------------------- */

.preloader_descent {
    flex-flow: column;
    justify-content: center;
    align-items: center;
    display: flex;
    position: relative
}

.preloader_descent_plane {
    --plane-size: var(--20px);
    /* Cream straight off the global palette, not the --_colors---base-1000--primary
       theme alias. The alias resolves correctly here today, but this div carries
       no typography class, so the moment the rule fails to reach it — a stale
       cached stylesheet is enough — `color` falls back to the inherited body
       value, which resolves against :root rather than .theme_on-dark and comes
       out navy. Navy on feather olive is unreadable, and `width` collapses to
       auto at the same time, which lets the SVG grow to its intrinsic size. The
       literal cream cannot invert, and the element repeats it inline for the
       same reason. */
    color: var(--_global-colors---base-0--100);
    width: var(--plane-size);
    height: var(--plane-size);
    margin-top: calc(var(--plane-size)/-2);
    margin-left: calc(var(--plane-size)/-2);
    /* Duplicated inline on the element, deliberately. In flow the plane sits
       below the rail instead of on it, and preloader.js would then measure the
       travel off a wrapper that had grown by the plane's own height — the plane
       would fly past the end of the line. Position is the one part of this rule
       that never varies by breakpoint, so it is safe to state twice; size and
       centring stay here alone because they do vary. */
    position: absolute;
    top: 0;
    left: 50%
}

/* The SVG carries width/height attributes so it still measures 20px if this
   rule never lands; here it hands sizing back to the wrapper. */
.preloader_descent_plane svg {
    width: 100%;
    height: 100%;
    display: block;
    /* Lifts the silhouette off the olive, and reads as the haze around a light
       at altitude rather than a UI shadow. */
    filter: drop-shadow(0 0 calc(var(--plane-size)/2) rgb(243 243 236/.34))
}

/* Contrail. Sits above the plane because the icon is rotated to fly downward,
   and fades out over roughly three plane-lengths, so the brightest point is the
   tail itself. It rides in the plane's own stacking context, which puts a hot
   leading section over the filled track — the track reads as the path already
   flown, this reads as the air still moving. */
.preloader_descent_plane:before {
    content: "";
    /* display and grid-area both reset .w-embed's clearfix pseudo, which this
       selector overrides. */
    display: block;
    grid-area: auto;
    background-image: linear-gradient(to bottom, rgb(243 243 236/0), rgb(243 243 236/.72));
    width: 1px;
    height: calc(var(--plane-size)*3);
    position: absolute;
    bottom: 50%;
    left: 50%;
    transform: translateX(-50%)
}

/* Banking.
 *
 * GSAP owns the wrapper's `transform` for the descent, so the sway lives on the
 * SVG instead of fighting that matrix — and on the SVG the roll pivots on the
 * fuselage rather than swinging the contrail with it.
 *
 * Rotation only, no lateral component. A roll pairs with a sideways drift on a
 * real aircraft, but here the plane has to stay on a 1px rail: even a 4% shift
 * reads as misalignment, and because a sway oscillates, the plane would sit on
 * the line only at the midpoint of each cycle. transform-origin is stated
 * because the initial value differs between an <svg> root and the SVG elements
 * inside it, and the pivot has to be the fuselage.
 *
 * Slower than the four-second progress fill and deliberately out of step with
 * it, so the plane never appears to snap back to level on a beat. Opt-in per
 * prefers-reduced-motion: the descent still reads without it.
 */
@media (prefers-reduced-motion: no-preference) {
    .preloader_descent_plane svg {
        transform-origin: 50% 50%;
        animation: plane-bank 5.2s ease-in-out infinite
    }
}

@keyframes plane-bank {

    0%,
    100% {
        transform: rotate(-3.5deg)
    }

    50% {
        transform: rotate(3.5deg)
    }
}

/** -------------------------------------------------
 * MOBILE MENU — PEACOCK ACCENT
 *
 * The burger panel is the one full-screen moment the brand owns, and the only
 * ornament the identity has is the peacock feather in the logo. So the panel
 * carries one — a single feather easing in from the bottom-right corner, cropped
 * by both edges, on the flat feather olive the theme already paints.
 *
 * TWO REJECTED VERSIONS, BECAUSE THE RESTRAINT IS THE POINT
 *   The first pass drew the motif in CSS: a conic-gradient tail fan, three
 *   radial-gradient ocelli, a plume above the title. It got the shapes and not
 *   the material — a feather has barb structure and a sheen that gradients
 *   cannot fake — and at four simultaneous layers it was busy.
 *
 *   The second pass generated a feather macro and used it as the panel's
 *   background. Better image, worse idea: a wall of feathers stops being an
 *   accent and becomes a theme, the olive the brand owns disappeared behind it,
 *   and the menu read as some other site's menu.
 *
 *   What is here is the third: same subject, roughly a fiftieth of the coverage.
 *   One object, one corner, everything else left alone.
 *
 * THE ASSET
 *   assets/images/decor/peacock-feather.webp is generated, not shot and not
 *   drawn — tools/make-menu-feather.py, FLUX.2, with the prompt, the alpha
 *   keying and the crop all recorded there and reproducible from the repo. It
 *   ships as a 60KB cut-out with a real alpha channel, so it sits on the olive
 *   rather than carrying a rectangle of its own background. The crop is the eye
 *   and the barbs immediately around it rather than the whole feather: the metre
 *   of bare quill below an eye is what a corner would have cut off anyway, and
 *   cropping it here rather than with a negative offset in CSS means the asset
 *   has no wasted pixels and the geometry stays predictable.
 *
 * COST
 *   The panel is display:none until the burger is tapped, and browsers do not
 *   fetch background images for elements that are not displayed. So this is
 *   never on the first-paint path; only someone who opens the menu pays for it.
 *
 * WHY IT HANGS OFF .modal_bg
 *   modals.js already fades [data-modal-over] from 0 to 1 with the panel, and
 *   .modal_bg is that element, so the accent arrives and leaves on the existing
 *   timeline with no tween of its own. It is also a sibling of the scrolling
 *   .modal_c, so on a short phone the feather stays put in its corner while the
 *   link list scrolls past, which is what a backdrop should do.
 *
 * WHY NO MARKUP CHANGED
 *   Both layers are pseudo-elements on elements that already exist. modals.js
 *   reveals the [data-part] nodes through SplitText, and adding children to
 *   those nodes, or touching their fill, would fight that.
 * ------------------------------------------------- */

/* overflow clips the accent to the panel. Without it the negative offsets below
   push a rotated box past the viewport, and an overflowing fixed-position layer
   is how a phone ends up with a horizontal scrollbar on an open menu. */
.modal.menu .modal_bg {
    overflow: hidden
}

/* The accent.
   Sized from the panel's HEIGHT, not its width. An earlier version set width:46%
   and let aspect-ratio derive the height, which is fine on a phone and absurd at
   768x700: 46% of 768 is 353px, and at the asset's proportions that made a 910px
   feather in a 700px panel, towering over the title. Height is the dimension a
   full-screen panel is actually bounded by, so the accent is a share of that and
   width follows.
   Anchored just off both edges on purpose: an ornament fully in frame reads as an
   illustration, one the frame cuts reads as a detail. */
.modal.menu .modal_bg::before {
    content: "";
    pointer-events: none;
    position: absolute;
    right: -5%;
    bottom: -6%;
    height: 34%;
    width: auto;
    aspect-ratio: 341/420;
    background: url("/assets/images/decor/peacock-feather.webp") 50% 50%/contain no-repeat;
    transform: rotate(-8deg);
    transform-origin: 100% 100%;
    opacity: .62
}

/* Marker. One crisp feather eye beside the current link, and the hovered one on
   a pointer device — never more than one at a time, so the centred list keeps
   its calm instead of growing nine bullets. Sits to the right of the label so it
   does not compete with the underline hover.js wipes beneath the text. */
.modal.menu {
    --peacock-core: var(--_global-colors---base-1000--100);
    --peacock-cyan: #30d8fc;
    --peacock-green: #84cc00;
    --peacock-gold: #ccb46c
}

.modal.menu .modal_menu_list .link::after {
    content: "";
    pointer-events: none;
    position: absolute;
    top: 50%;
    left: calc(100% + var(--_units---u-12));
    width: var(--12px);
    height: var(--12px);
    border-radius: 50%;
    background: radial-gradient(circle,
            var(--peacock-core) 0 30%,
            var(--peacock-cyan) 30% 54%,
            var(--peacock-green) 54% 74%,
            var(--peacock-gold) 74% 100%);
    opacity: 0;
    transform: translate(calc(var(--_units---u-8)*-1), -50%)scale(.4);
    transition: opacity .45s ease, transform .45s ease
}

.modal.menu .modal_menu_list .link.w--current::after,
.modal.menu .modal_menu_list .link:hover::after {
    opacity: 1;
    transform: translate(0, -50%)scale(1)
}

/* The feather sways, far slower than anything else on the site — a menu is read,
   not watched, so the movement should register only if you stay. The keyframes
   restate the base rotation because an animated transform replaces it outright
   rather than composing with it. Opt-in per prefers-reduced-motion: the panel is
   complete and correct without it. */
@media (prefers-reduced-motion: no-preference) {
    .modal.menu .modal_bg::before {
        animation: peacock-sway 46s ease-in-out infinite
    }
}

@keyframes peacock-sway {

    0%,
    100% {
        transform: rotate(-6.5deg)
    }

    50% {
        transform: rotate(-9.5deg)
    }
}

/** -------------------------------------------------
 * HEADER NAV LEGIBILITY SCRIM
 *
 * THE PROBLEM
 *   .header-nav is fixed white text sitting over whatever the hero is showing.
 *   On the day tab that was the white soffit of the pergola the pool was shot
 *   from — white on white, the nav effectively invisible. That particular
 *   collision is fixed in the image now (tools/enhance-photos.py, `pool`), but
 *   the night tab is a warm-lit facade covered in golden point lights and cannot
 *   be fixed the same way: there is no single object to take out, the whole
 *   top-right corner is bright. And every future image swap re-rolls the dice.
 *
 *   So contrast is guaranteed here rather than left to the photography.
 *
 * WHY A FEATHER AND NOT A PANEL
 *   A solid bar behind the links would read as browser chrome bolted onto a
 *   full-bleed hero. A wide, low-opacity radial fade reads as a vignette — the
 *   kind of corner falloff that is already in the photographs — so it lifts the
 *   text without announcing itself. It compounds with .img-over-grad.from-top,
 *   which contributes its own 30% at the very top of the frame.
 *
 * WHY IT STOPS AT THE VIEWPORT EDGE
 *   Top and right extend by exactly -1 * offset-r, which lands the scrim flush
 *   with the viewport corner: far enough that there is no visible seam, not one
 *   pixel further. A fixed layer pushed past the edge is how a phone ends up
 *   with a horizontal scrollbar, the same trap noted on the menu feather above.
 *   Left and bottom spread further because they open onto the page, not an edge.
 *
 * WHEN IT TURNS OFF
 *   theme.js swaps .header-nav to theme_on-light over pale sections, where the
 *   link colour flips to navy — a dark scrim behind dark text would be actively
 *   worse, so it fades out. modals.js marks the nav [data-modal-themed] while
 *   the burger panel is open; the panel is z-index 1100 and the nav 1200, so
 *   without that second selector the scrim would hang over the open menu.
 *   Both hooks already exist, so no JS or markup changed.
 * ------------------------------------------------- */

.header-nav::before {
    content: "";
    position: absolute;
    z-index: -1;
    pointer-events: none;
    top: calc(var(--_special-units---offset-r)*-1);
    right: calc(var(--_special-units---offset-r)*-1);
    bottom: calc(var(--_special-units---offset-r)*-1.5);
    left: calc(var(--_special-units---offset-r)*-2);
    background: radial-gradient(ellipse at 72% 34%,
            #00000070 0%,
            #00000047 40%,
            #00000020 64%,
            #0000 82%);
    transition: opacity .4s ease
}

.header-nav.theme_on-light::before,
.header-nav[data-modal-themed]::before {
    opacity: 0
}

/** -------------------------------------------------
 * GROUPED NAVIGATION
 *
 * Nine links in one undifferentiated column made the visitor read the whole
 * list before choosing, and the burger panel carried ten. That panel had
 * already been patched twice to fit a short phone — see MOBILE MENU MODAL
 * above, where the row gap and the top spacer were both cut to buy height.
 * Grouping treats the cause rather than the symptom: three labelled sets of
 * three, so someone booking a room never reads past "Stay" and someone
 * pricing a wedding goes straight to "Celebrate".
 *
 * The sets are Stay (Rooms & Villas / Dining / Day Outing), Celebrate
 * (Weddings / Corporate / Events) and Connect (Enquire / WhatsApp / Contact).
 * Events sits under Celebrate rather than Stay because the calendar's second
 * job is showing which dates are already taken, which is what a couple
 * choosing a date needs — its own copy frames it that way ("alongside the
 * weddings, offsites and celebrations our guests are already hosting here").
 *
 * WHY THE LABEL IS A DIV
 *   A group heading here would be decoration in the page outline, not part of
 *   it: the rail is chrome that repeats on every page, so an <h*> would inject
 *   phantom levels above each page's real h1. The grouping is exposed to
 *   assistive tech with role="group" + aria-label on the wrapper instead, which
 *   states the relationship without touching the heading order. The visible
 *   label is then aria-hidden, otherwise the name is announced twice.
 *
 * LABEL COLOUR
 *   gray-text, not text-disabled. Both flip per theme, but disabled resolves to
 *   30% (40% on the colour theme), too faint for 9px type over a hero
 *   photograph even with the scrim behind it. gray-text lands at 60-80%:
 *   clearly subordinate to the 100% links, still legible.
 *
 * SPACING
 *   Gaps replace the u-4 / u-24 spacer divs the flat list used. Those were
 *   fixed rungs in a single sequence; once items nest, spacing is two-level —
 *   tight inside a group, loose between them — which is what gap expresses and
 *   what stacked spacer divs cannot.
 *
 *   Alignment is inherited rather than declared. The rail pins right
 *   (.header-nav_list is align-items: flex-end) and the menu panel centres
 *   (.modal_menu_list is align-items: center), so `align-items: inherit` lets
 *   one class serve both without a modifier per context.
 * ------------------------------------------------- */

.nav-group {
    grid-row-gap: var(--_units---u-4);
    flex-flow: column;
    align-items: inherit;
    display: flex
}

.nav-group_label {
    margin-bottom: var(--_units---u-4);
    color: var(--_colors---base-1000--gray-text)
}

.header-nav_list .nav-group+.nav-group {
    margin-top: var(--_units---u-24)
}

/* The panel's own row gap already separates one group from the next, so only
   the rhythm inside a group is set here. Its links are h6 rather than the
   rail's l2, and need more room to breathe than u-4 gives. */
.modal_menu_list .nav-group {
    grid-row-gap: var(--_units---u-8)
}

/** -------------------------------------------------
 * TOP NAVIGATION BAR (>= 992px)
 *
 * Centred at the top, with the three groups from the burger panel as its items
 * and each one opening its members beneath it. Nine links could not go across
 * the top — at l2's .32em tracking they run past 1000px — but three can, so
 * grouping is what makes a horizontal bar possible at all.
 *
 * Only >= 992px is touched. Below it .f-desk is display: none and the burger
 * panel is the whole navigation, where the same groups stay a flat labelled
 * list: a hover menu has nothing to hover on a touch screen.
 *
 * WHY THIS IS NOT THE l2 LABEL STYLE
 *   The first pass reused the group label as the trigger — l2, 8px, .32em
 *   tracking, gray-text — which is the eyebrow style this file uses for filter
 *   captions and the "Scroll" hint. At that size and 60% opacity it reads as a
 *   caption someone forgot to finish, and the hit area was the 11px line box
 *   itself, under even the 24px WCAG minimum. A primary navigation has to look
 *   clickable before it can be clicked, so on the bar the trigger steps up to
 *   l1, to full primary colour, and gets padding that carries a ~40px target.
 *   The dimmed l2 treatment stays in the burger panel, where those words really
 *   are captions over a list that is already fully visible.
 *
 * CENTRED WITH A TRANSFORM, NOT A FULL-WIDTH BAR
 *   left: 50% + translateX(-50%). The alternative — left: 0; right: 0 with a
 *   centred flex row — puts a full-width fixed layer across the top of every
 *   page at z-index 1200, which swallows clicks on the hero behind it and
 *   covers the logo. Sizing to content keeps the bar exactly as wide as its
 *   three items. Nothing animates this element's transform: header.js drives
 *   only .header-logo and the scrollbar, and theme.js only swaps classes.
 *
 * NO JAVASCRIPT
 *   Opening is :hover / :focus-within. Listeners here have to be released in
 *   teardownPage() because Barba swaps the container on every navigation, and a
 *   CSS menu cannot leak an open panel across a page swap.
 *
 *   Closed panels are opacity: 0 + pointer-events: none, NOT display: none or
 *   visibility: hidden. Those pull the links out of the tab order, and then
 *   :focus-within can never fire — nothing inside could receive the focus meant
 *   to open it. Staying focusable means the first Tab into a group reveals it,
 *   with no aria-expanded to keep honest, and leaves all nine links in the
 *   accessibility tree rather than behind a gesture a screen reader cannot make.
 *
 *   The trigger is a div, not a button, for the same reason: nothing is hidden
 *   from assistive tech, so there is no disclosure to announce, and a button
 *   with no maintainable aria-expanded would describe state it does not have.
 *
 * WHY THERE IS NO GAP ABOVE THE PANEL
 *   The panel sits at top: 100% and the trigger's own padding-bottom supplies
 *   the visual space. :hover on .nav-group stays true while the pointer is over
 *   the absolutely positioned panel, because :hover counts descendants wherever
 *   they paint — but only while the pointer never crosses a pixel belonging to
 *   neither. A margin there is exactly that pixel, and the menu would shut as
 *   the mouse travelled down into it.
 *
 * THE PANEL IS A SURFACE, THE BAR IS NOT
 *   The scrim note above argues against a plate behind the header links, and
 *   that still holds for the bar itself, which keeps its feather. A dropdown is
 *   the opposite case: it is a menu that appears over photography and has to be
 *   read quickly, so it gets a real surface — base-0--primary at 94% with a
 *   blur and a hairline. base-0--primary is the inverse of the text token in
 *   every theme block, so the panel follows theme.js from light to dark without
 *   a second rule. The 6% translucency and the blur are what keep it from
 *   reading as a browser widget dropped on the hero.
 *
 * ITEMS ARE LEFT-ALIGNED INSIDE A CENTRED PANEL
 *   The panel centres under its trigger, but its links align left. Centring
 *   three items of different lengths gives a block ragged on both edges and no
 *   scan line; left alignment inside a centred box keeps the composition
 *   symmetric and the list readable.
 * ------------------------------------------------- */

@media screen and (min-width:992px) {

    /* Column at the right edge -> row at the centre.
       Centred with auto margins against left:0/right:0, NOT translateX(-50%).
       A transform would establish a backdrop root and kill the pill's
       backdrop-filter — that is exactly how the first version ended up shipping
       a blur that never ran. width: fit-content keeps the box only as wide as
       the three items, so nothing invisible spans the viewport and swallows
       clicks on the hero. */
    .header-nav {
        left: var(--_units---u-0);
        right: var(--_units---u-0);
        width: -webkit-fit-content;
        width: fit-content;
        margin-left: auto;
        margin-right: auto;
        text-align: center;
        transform: none
    }

    /* THE CONTAINER
       One capsule holds the buttons and grows downward to hold the open group's
       links, rather than the links arriving as a separate card.
       The capsule is this element's ::before at inset: 0, so it is exactly as
       tall as the button row; the panel below carries its own matching glass and
       supplies its own height. Neither is given a fixed size.
       An earlier version expanded one shape by a fixed distance on :has(),
       computed from "three rows" because every group had three links. Stay now
       has six — Executive Rooms, Luxury Villas and The Duplex arrived with the
       villas page — and that number will keep moving. A magic distance is wrong
       the moment someone adds a link, and wrong silently: the shape just stops
       reaching the bottom of its own menu. Letting content do the measuring
       means there is no number to keep in sync.
       This element is also position: relative, which makes it the containing
       block for the panel — see .nav-group_menu for why that has to be the list
       and not the group. */
    .header-nav_list.f-desk {
        grid-column-gap: var(--_units---u-8);
        flex-flow: row;
        align-items: flex-start;
        padding: var(--_units---u-4) var(--_units---u-24);
        position: relative
    }

    /* A tint, not a fill. color-mix keeps it tied to the theme token —
       base-0--primary is the inverse of the text colour in every theme block —
       so the bar darkens over the hero and lightens over pale sections without a
       second rule, while staying transparent. The rgba above it is the fallback
       for engines without color-mix; it is deliberately neutral dark, the safer
       of the two cases because the bar sits over photography most often.
       border-radius var(--40px) is the file's pill value; the browser clamps it
       to half the height, so the closed bar is a true capsule.
       The blur is what makes a transparent bar legible over the hero, and it is
       not decorative here: the home hero's wordmark is a ~180px white serif
       sitting directly behind this panel, and at tint alone "SREE" read straight
       through the links. Blur dissolves it into a wash instead of hiding it.
       IT ONLY WORKS BECAUSE NOTHING IN THIS NAV IS TRANSFORMED. A transform on
       any ancestor establishes a backdrop root, inside which there is no outside
       content to sample and backdrop-filter becomes a silent no-op — an earlier
       version shipped exactly that, a blur that never ran, because the bar was
       centred with translateX(-50%). The bar now centres with auto margins and
       the panel is pinned with left/right, deliberately. DO NOT ADD A TRANSFORM
       TO .header-nav, .header-nav_list, .nav-group OR .nav-group_menu.
       The tint alone is NOT a sufficient fallback, and it was measured rather
       than assumed: with the blur switched off, 58% still lets the wordmark read
       through the links plainly. The @supports block after this rule raises the
       tint to 88% where backdrop-filter is unsupported, which is legible if less
       pretty. That query cannot help in the transform case — the property is
       supported, it simply has nothing to sample — so the comment above is the
       only guard there is. */
    .header-nav_list.f-desk:before {
        content: "";
        z-index: -1;
        pointer-events: none;
        background-color: #00000080;
        background-color: color-mix(in srgb, var(--_colors---base-0--primary) 58%, transparent);
        border: 1px solid var(--_colors---base-1000--line);
        border-radius: var(--40px);
        -webkit-backdrop-filter: blur(20px) saturate(120%);
        backdrop-filter: blur(20px) saturate(120%);
        transition: border-radius .35s ease, border-color .35s ease;
        position: absolute;
        inset: 0
    }

    /* Stacking from the vertical rail, undone for the row.
       position: STATIC, deliberately. The panel below is absolute and needs the
       list as its containing block, not the group — that is what stops a group's
       width being set by its own menu. When this was position: relative the menu
       sized the column, "Executive Rooms" made the Stay column half again as
       wide as the others, and the three centred words ended up with 108px of
       glass on one side of the bar and 44px on the other. */
    .header-nav_list .nav-group {
        grid-row-gap: var(--_units---u-0);
        cursor: pointer;
        align-items: center
    }

    .header-nav_list .nav-group+.nav-group {
        margin-top: var(--_units---u-0)
    }

    /* THE TRIGGER
       Padding, not a bare line box: this is what turns an 11px strip of text
       into a ~40px target, and it doubles as the gap the pointer crosses to
       reach the panel without ever leaving the group. */
    .header-nav_list .nav-group_label {
        grid-column-gap: var(--_units---u-4);
        color: var(--_colors---base-1000--primary);
        white-space: nowrap;
        align-items: center;
        margin-bottom: var(--_units---u-0);
        padding: var(--_units---u-12) var(--_units---u-12) var(--_units---u-16);
        font-size: var(--_fonts---l1--size);
        letter-spacing: var(--_fonts---l1--letter-spacing);
        display: flex;
        position: relative
    }

    /* Caret. Viable now that the type is l1 rather than l2 — at 8px it read as
       grit. currentColor so it follows the theme and the hover lift. */
    .header-nav_list .nav-group_label:after {
        content: "";
        width: .34em;
        height: .34em;
        border-right: 1px solid currentColor;
        border-bottom: 1px solid currentColor;
        opacity: .7;
        margin-top: -.18em;
        transition: transform .3s ease, opacity .3s ease;
        transform: rotate(45deg)
    }

    .header-nav_list .nav-group:hover .nav-group_label:after,
    .header-nav_list .nav-group:focus-within .nav-group_label:after {
        opacity: 1;
        transform: rotate(225deg) translate(-.06em, -.06em)
    }

    /* Underline. Grows from the centre on hover, and stays put for the group
       holding the current page — which is why it is keyed off :has() rather
       than a class theme.js would have to maintain. */
    .header-nav_list .nav-group_label:before {
        content: "";
        background-color: currentColor;
        width: 100%;
        height: 1px;
        transition: transform .3s ease;
        transform: scaleX(0);
        position: absolute;
        left: 0;
        right: 0;
        bottom: var(--_units---u-8)
    }

    .header-nav_list .nav-group:hover .nav-group_label:before,
    .header-nav_list .nav-group:focus-within .nav-group_label:before,
    .header-nav_list .nav-group:has(.w--current) .nav-group_label:before {
        transform: scaleX(1)
    }

    /* THE LINKS INSIDE IT
       Absolute against the LIST (the groups are static), pinned left: 0 /
       right: 0, so the panel spans the whole bar and contributes no width to any
       column. That is what makes the buttons evenly spaced and the set
       symmetric inside the capsule: each column is sized by its own text and
       nothing else. In flow it did the opposite — "Executive Rooms" set the
       width of the Stay column and threw the whole bar off centre.
       Height still comes from content rather than from a number: the collapse is
       grid-template-rows 0fr -> 1fr, which resolves to the links' real height,
       so a group gaining a link (Stay has six) needs nothing updated here. Where
       the property is unsupported the panel snaps open, which is a degradation
       rather than a fault. Being out of flow, it grows without moving the
       buttons at all. */
    .nav-group_menu {
        grid-template-rows: 0fr;
        transition: grid-template-rows .35s ease;
        display: grid;
        position: absolute;
        top: 100%;
        left: var(--_units---u-0);
        right: var(--_units---u-0)
    }

    /* The panel's own tint, continuing the capsule downward: same colour, square
       across the top, rounded across the bottom, and the capsule squares its own
       bottom corners while open, so the pair reads as one shape growing rather
       than a card arriving under a pill.
       position: absolute keeps it out of the grid — a pseudo-element of a grid
       container would otherwise become a grid item and break the single-child
       collapse.
       IT MUST BE FADED OUT WHEN CLOSED, and "0 tall" is not enough. A collapsed
       panel is a zero-height box sitting exactly on the capsule's bottom edge,
       and a zero-height box still paints its 1px bottom border and its
       background. With three groups that put three hairlines and three coats of
       tint on the same row of pixels, drawing a crisp line across the middle of
       the bar — visible even with every border at the join set transparent, which
       is what made it look like a blur artifact rather than the collapsed
       siblings it actually was. */
    .nav-group_menu:before {
        content: "";
        z-index: -1;
        opacity: 0;
        pointer-events: none;
        transition: opacity .2s ease;
        background-color: #00000080;
        background-color: color-mix(in srgb, var(--_colors---base-0--primary) 58%, transparent);
        border: 1px solid var(--_colors---base-1000--line);
        border-top: none;
        border-radius: 0 0 var(--_units---u-24) var(--_units---u-24);
        -webkit-backdrop-filter: blur(20px) saturate(120%);
        backdrop-filter: blur(20px) saturate(120%);
        position: absolute;
        inset: 0
    }

    /* While open the capsule gives up its bottom edge entirely: square corners so
       the two shapes line up, and a transparent bottom border so the hairline
       does not draw a seam across the middle of what should read as one shape.
       Transparent rather than `none` — the border box stays the same size, so
       nothing shifts by a pixel as it disappears. */
    .header-nav_list.f-desk:has(.nav-group:hover):before,
    .header-nav_list.f-desk:has(.nav-group:focus-within):before {
        border-bottom-color: #0000;
        border-bottom-right-radius: var(--_units---u-0);
        border-bottom-left-radius: var(--_units---u-0)
    }

    .nav-group:hover .nav-group_menu,
    .nav-group:focus-within .nav-group_menu {
        grid-template-rows: 1fr
    }

    .nav-group:hover .nav-group_menu:before,
    .nav-group:focus-within .nav-group_menu:before {
        opacity: 1
    }

    /* overflow: clip, NOT hidden. Both clip the collapsed links, but hidden
       makes this a scroll container, and tabbing to a clipped link would then
       scroll it into view inside a box that is still animating open — a visible
       lurch. clip creates no scrollport, so focus cannot scroll it. The file
       already relies on this distinction for .nav-item_label. */
    /* min-height: 0 is load-bearing, not tidying. A grid item defaults to
       min-height: auto, so the row cannot shrink below this list's min-content
       height and `grid-template-rows: 0fr` collapses to nothing — the capsule
       measured 230px tall while closed. Releasing the minimum is what lets the
       0fr row actually reach zero. */
    /* Links centred, because the panel is now the full width of the bar rather
       than a column under one button. The active button is marked by its
       underline and flipped caret, so the panel does not also have to point at
       it by sitting underneath.
       HORIZONTAL padding only. Vertical padding here cannot collapse: with
       border-box, min-height: 0 lets the border box reach zero but padding is
       incompressible, so `padding: 8px … 16px` held the 0fr row open at 24px and
       left a dark ledge of glass under the closed capsule. The breathing room
       above and below the links is therefore child margins, which are inside the
       clipped content and vanish with it. */
    .nav-group_menu_c {
        pointer-events: none;
        opacity: 0;
        min-height: var(--_units---u-0);
        padding: var(--_units---u-0) var(--_units---u-24);
        overflow: clip;
        flex-flow: column;
        align-items: center;
        transition: opacity .3s ease;
        display: flex
    }

    .nav-group_menu_c>.nav-item:first-child {
        margin-top: var(--_units---u-8)
    }

    .nav-group_menu_c>.nav-item:last-child {
        margin-bottom: var(--_units---u-16)
    }

    .nav-group:hover .nav-group_menu_c,
    .nav-group:focus-within .nav-group_menu_c {
        pointer-events: auto;
        opacity: 1
    }

    /* No surface of its own. An earlier pass gave this panel an opaque fill,
       because the blur it was supposed to use never ran — .header-nav and the
       panel were both translated, and a transform establishes a BACKDROP ROOT,
       inside which there is no outside content left for backdrop-filter to
       sample. Removing both transforms is what makes the capsule's glass real,
       and once the capsule grows to contain these links they need no plate
       behind them at all. */

    /* Each row carries its own target height. text-align resets to left
       because .header-nav centres the bar. */
    .nav-group_menu .nav-item {
        white-space: nowrap;
        padding: var(--_units---u-8) var(--_units---u-12);
        font-size: var(--_fonts---l1--size);
        letter-spacing: var(--_fonts---l1--letter-spacing);
        text-align: left;
        display: block
    }

    .nav-group_menu .nav-item .l2 {
        font-size: var(--_fonts---l1--size);
        letter-spacing: var(--_fonts---l1--letter-spacing)
    }

    /* The row fill is the `line` token, not `bg`. Both flip per theme, but bg
       resolves to 5% and on the panel's own dark fill that is close to
       invisible — a hover state nobody can see is not one. line is 10%, still
       restrained, and actually reads as the row lighting up. */
    .nav-group_menu .nav-item:hover {
        background-color: var(--_colors---base-1000--line)
    }

    /* HERO CLEARANCE
       The home hero's wordmark begins at the same top offset as the bar, so a
       centred bar lands inside it: measured 29-51px of vertical overlap at
       every desktop size from 1100 to 1920, with "STAY" painting over the S of
       SREE. Nothing was mis-tuned — the two simply want the same band, which is
       the cost of centring a bar over a centred hero. The bar is chrome and has
       to stay legible, so the hero yields.
       Padding on the grid item, not on .grid or .hero-s. .hero-s is height:
       100% with border-box, so padding there would shorten its content box and
       push every block below down too, compressing the tabs and the button
       instead of just clearing the header. .hero-s_logo is a grid-area child:
       insetting it moves the wordmark and nothing else, and .hero-s_b beneath
       is absolutely positioned so it does not move at all.
       u-64 rather than a pixel value: every offset in this file scales with the
       viewport through --scale-ratio, and the bar's own band scales with it, so
       a token keeps the clearance proportional instead of correct at one width. */
    .hero-s_logo {
        padding-top: var(--_units---u-64)
    }

    /* The bar moved to the centre, so the feather follows it.
       NO EXPLICIT ELLIPSE SIZE. A sized ellipse (the first attempt used
       `ellipse 120% 260%`) is larger than the box that paints it, so the stops
       never reach #0000 inside the element and the gradient is cut off at the
       edges — a visible dark rectangle behind the bar, which is precisely the
       plate the scrim note above rejects. Left to default farthest-corner the
       ellipse is sized so its corners are the outermost point, which puts the
       transparent stop inside every edge and leaves no seam anywhere.
       The bleed is wide because a soft gradient needs room to resolve; the
       panel carries its own surface, so this only has to lift three words. */
    .header-nav::before {
        top: calc(var(--_special-units---offset-r)*-1);
        right: calc(var(--_special-units---offset-r)*-2.5);
        bottom: calc(var(--_special-units---offset-r)*-1);
        left: calc(var(--_special-units---offset-r)*-2.5);
        background: radial-gradient(ellipse at 50% 38%,
                #00000059 0%,
                #00000038 40%,
                #00000017 64%,
                #0000 82%)
    }
}

/* Where there is no backdrop-filter the bar cannot rely on a blur to separate
   itself from the hero, so it stops pretending to be glass and becomes a panel.
   88% rather than fully opaque keeps a trace of the photograph behind it, which
   is enough to still read as part of the page. */
@media screen and (min-width:992px) {
    @supports not ((-webkit-backdrop-filter: blur(2px)) or (backdrop-filter: blur(2px))) {

        .header-nav_list.f-desk:before,
        .nav-group_menu:before {
            background-color: #000000e0;
            background-color: color-mix(in srgb, var(--_colors---base-0--primary) 88%, transparent)
        }
    }
}

/* The capsule's growth is the motion now, so it is the part held back under
   reduced-motion; the fade and the caret still run. There is deliberately no
   transform anywhere in this nav — the panel used to slide on translateY, and
   that transform was half of what stopped the blur from working. */
@media screen and (min-width:992px) and (prefers-reduced-motion: reduce) {
    .nav-group_menu {
        transition: none
    }
}


/** -------------------------------------------------
 * EVENTS CALENDAR
 *
 * WHAT THIS HAS TO COMMUNICATE
 *   Two things at once, and they pull in opposite directions. The grid is a
 *   density read — "is this place busy, and is my date free" — answered in one
 *   glance without reading a word. The agenda underneath is the opposite: a
 *   close read of one evening, everything about it in one place.
 *
 *   So the grid is almost entirely non-textual and the agenda is almost
 *   entirely text, and they share nothing but the accent that marks a bookable
 *   date.
 *
 * WHY HELD DATES ARE HATCHED RATHER THAN COLOURED
 *   A held date is not a category alongside the others, it is an absence — the
 *   resort is unavailable and there is deliberately nothing to read. A colour
 *   fill would give it the same visual weight as an event you can attend and
 *   invite a click that goes nowhere. Diagonal hatching reads as "ruled out" in
 *   any culture, needs no legend to decode, and matches the hairline drawing
 *   the rest of the site is built from (see the frame_* line SVGs). It also
 *   survives being printed or screenshotted in greyscale, which is what happens
 *   when a couple sends this page to their parents.
 *
 * WHY ONLY BOOKABLE CELLS ARE BUTTONS
 *   Held and past cells render as divs, not disabled buttons. There is no panel
 *   behind them, so there is nothing for a keyboard user to reach — putting them
 *   in the tab order would mean tabbing through thirty dead stops to get to the
 *   three that open. The state is carried on the element and announced through
 *   aria-label instead.
 *
 * SIZING
 *   Everything uses the --Npx tokens rather than raw px. Those resolve through
 *   --_special-units---scale-ratio, which changes from 16 to 4.16 at the mobile
 *   breakpoint, so the whole calendar rescales with the rest of the page for
 *   free. A hardcoded px value here would hold its size while its neighbours
 *   shrank.
 * ------------------------------------------------- */

.ev-head {
    grid-column: 2/10
}

/* Inset to match .ev-head, and not for symmetry alone: .header-cramps is a
   fixed, -90deg-rotated breadcrumb pinned to the left edge at z-index 1200, and
   it covers roughly the first grid column. A calendar starting at the container
   edge has its Monday column sitting underneath it. Starting at column 2 clears
   the strip on every viewport, because both are measured in the same units. */
.ev {
    grid-column: 2/10;
    /* The hatch tone, in one place so the density of a booked month can be tuned
       without hunting through four gradients. A literal rather than a token: the
       nearest tokens are the 10% line (too faint to read as density once half the
       month is hatched) and the 30% disabled (too heavy, the grid turns into
       noise). This sits between them. Safe as a literal because the section is
       always data-bg="light" — it never renders on the dark or olive themes. */
    --ev-hatch: #17233b26
}

/* ---- Section heads ----
   The page is two tools stacked: "Open to book", which is an offer, and
   "Availability", which is a reference. Each gets a titled head so it is
   obvious that scrolling past the cards does not mean scrolling past the
   events — a visitor who meets the month grid first reads the hatching as
   "nothing for me here". */

.ev_sec_head {
    grid-column-gap: var(--_units---u-24);
    grid-row-gap: var(--_units---u-16);
    flex-flow: wrap;
    justify-content: space-between;
    align-items: flex-end;
    display: flex;
    padding-bottom: var(--_units---u-24);
    border-bottom: var(--1px) solid var(--_colors---base-1000--line)
}

.ev_sec_head_t {
    flex: 1;
    min-width: var(--240px)
}

.ev_upw[hidden] {
    display: none
}

/* ---- Open to book: the upcoming cards ----

   Two columns, not three. These carry the full offer — summary, price both ways
   round, inclusions and exclusions — and a third column squeezes the exclusion
   list to two words a line. Two is also what keeps the date stamp legible
   against the photograph at the sizes this grid produces. */

/* Cards stretch to match their neighbour rather than sizing to content. Two
   cards side by side with unequal inclusion lists otherwise end with their
   buttons a few pixels apart, which reads as a mistake rather than a
   difference. Equal height plus the auto margin on .ev_acts puts every "Book on
   WhatsApp" on one line across the row. */
.ev_ups {
    grid-column-gap: var(--_special-units---grid-gap);
    grid-row-gap: var(--_units---u-48);
    grid-template-columns: 1fr 1fr;
    display: grid
}

.ev_up {
    border: var(--1px) solid var(--_colors---base-1000--line);
    flex-flow: column;
    height: 100%;
    display: flex;
    transition: border-color .8s ease
}

.ev_up:hover {
    border-color: var(--_global-colors---brand-500--feather-olive)
}

.ev_up_media {
    aspect-ratio: 16/9;
    flex: none;
    position: relative;
    overflow: clip
}

.ev_up_img {
    width: 100%;
    height: 100%;
    object-fit: cover;
    display: block;
    transition: transform 1.2s cubic-bezier(.22, 1, .36, 1)
}

.ev_up:hover .ev_up_img {
    transform: scale(1.03)
}

/* The date, set as a block of olive sitting on the photograph rather than a
   line of text inside the body. It is the one thing a person scanning this
   strip is actually looking for, and at a glance a numeral beats a sentence.
   Bottom-left so it never lands on the lead pill in the opposite corner. */
.ev_up_stamp {
    background-color: var(--_global-colors---brand-500--feather-olive);
    flex-flow: column;
    align-items: center;
    padding: var(--_units---u-12)var(--_units---u-16);
    display: flex;
    position: absolute;
    bottom: 0;
    left: 0
}

/* Set at the title's size. It is the anchor the eye lands on when scanning a
   column of cards, and it is separated from the title by the photograph, so the
   two carrying equal weight reads as two headings rather than a clash. */
.ev_up_stamp_d {
    font-family: var(--_fonts---font-display);
    font-size: var(--_fonts---h5--size);
    line-height: 100%;
    color: var(--_colors---other--bg);
    font-variant-numeric: lining-nums tabular-nums
}

.ev_up_stamp_m {
    color: var(--_colors---other--bg);
    padding-top: var(--_units---u-4);
    opacity: .8
}

/* "In 3 days" — nearness, which the date stamp cannot convey on its own. On the
   page background rather than olive so it reads as a note about the card, not a
   second label belonging to the date. */
.ev_up_lead {
    background-color: var(--_colors---other--bg);
    padding: var(--_units---u-8)var(--_units---u-12);
    position: absolute;
    top: 0;
    right: 0
}

.ev_up_body {
    flex-flow: column;
    flex: 1;
    padding: var(--_units---u-32)
}

.ev_up_tag {
    color: var(--_global-colors---brand-500--feather-olive)
}

/* "Every Sunday, until 27 Dec". In olive, not grey, because it is a reason to
   come rather than a footnote — a visitor who cannot make the next date needs to
   see that there is another one. */
.ev_up_repeat {
    color: var(--_global-colors---brand-500--feather-olive)
}

/* Pinned to the foot of the body, so the actions sit on a common line across a
   stretched row. Any slack from a shorter inclusion list collects above them
   rather than pushing them out of alignment. */
.ev_up_body .ev_acts {
    margin-top: auto
}

/* One step below the title, not level with it. Both at h5 gives the card two
   equal headings and no hierarchy — the eye cannot tell what the card is about.
   At c1 the figure is still unmistakably the second thing you read. */
.ev_up_price_v {
    font-family: var(--_fonts---font-display);
    font-size: var(--_fonts---c1--size);
    line-height: 110%;
    color: var(--_colors---base-1000--primary);
    font-variant-numeric: lining-nums proportional-nums
}

/* The qualifier rides on the same line as the figure but drops back to body
   type, because "+ 18% GST per child" is a condition of the number, not part
   of it — setting both in display type makes neither readable. */
.ev_up_price_u {
    color: var(--_colors---base-1000--gray-text);
    white-space: normal
}

.ev_up_facts {
    grid-column-gap: var(--_units---u-24);
    grid-row-gap: var(--_units---u-16);
    grid-template-columns: 1fr 1fr;
    display: grid
}

/* ---- Show more ---- */

.ev_more {
    color: var(--_colors---base-1000--primary);
    background-color: var(--_colors---other--transparent);
    border: var(--1px) solid var(--_colors---base-1000--line);
    justify-content: center;
    align-items: center;
    width: 100%;
    padding: var(--_units---u-24);
    display: flex;
    cursor: pointer;
    font-family: inherit;
    transition: border-color .8s ease, background-color .8s ease
}

.ev_more:hover {
    border-color: var(--_colors---base-1000--primary);
    background-color: var(--_colors---base-1000--bg)
}

.ev_more[hidden] {
    display: none
}

/* ---- Agenda filters ----
   The agenda is mostly other people's bookings — sixteen held rows to six
   bookable ones in a busy month. Unfiltered that is honest but it buries the
   offer, so the chips let a visitor drop the holds and read only what they can
   come to. */

.ev_filters {
    grid-column-gap: var(--_units---u-8);
    grid-row-gap: var(--_units---u-8);
    flex-flow: wrap;
    align-items: center;
    display: flex
}

.ev_chip {
    grid-column-gap: var(--_units---u-8);
    color: var(--_colors---base-1000--primary);
    background-color: var(--_colors---other--transparent);
    border: var(--1px) solid var(--_colors---base-1000--line);
    border-radius: var(--48px);
    align-items: center;
    padding: var(--_units---u-12)var(--_units---u-24);
    display: inline-flex;
    cursor: pointer;
    font-family: inherit;
    transition: color .8s ease, background-color .8s ease, border-color .8s ease
}

.ev_chip:hover {
    border-color: var(--_colors---base-1000--primary)
}

.ev_chip.is-on {
    color: var(--_colors---other--bg);
    background-color: var(--_colors---base-1000--primary);
    border-color: var(--_colors---base-1000--primary)
}

/* Same reason as .ev_btn:hover .l2 — the label sets its own colour, so the
   selected chip has to say so explicitly or its text disappears into the fill. */
.ev_chip.is-on .l2 {
    color: var(--_colors---other--bg)
}

.ev_chip_n {
    color: var(--_colors---base-1000--gray-text);
    font-variant-numeric: tabular-nums
}

.ev_chip.is-on .ev_chip_n {
    color: var(--_colors---other--bg);
    opacity: .7
}

/* ---- Month bar ---- */

.ev_bar {
    justify-content: space-between;
    align-items: center;
    display: flex;
    padding-bottom: var(--_units---u-24);
    border-bottom: var(--1px) solid var(--_colors---base-1000--line)
}

.ev_bar_label {
    flex: 1
}

.ev_nav {
    width: var(--56px);
    height: var(--56px);
    color: var(--_colors---base-1000--primary);
    background-color: var(--_colors---other--transparent);
    border: var(--1px) solid var(--_colors---base-1000--line);
    border-radius: 50%;
    flex: none;
    justify-content: center;
    align-items: center;
    padding: 0;
    display: flex;
    cursor: pointer;
    transition: border-color .8s ease, background-color .8s ease, opacity .4s ease
}

.ev_nav:hover {
    border-color: var(--_colors---base-1000--primary);
    background-color: var(--_colors---base-1000--bg)
}

/* Disabled rather than hidden: the control keeps its place, so the bar does not
   reflow when you reach the first or last month with anything in it. */
.ev_nav:disabled {
    opacity: .25;
    cursor: default
}

.ev_nav:disabled:hover {
    border-color: var(--_colors---base-1000--line);
    background-color: var(--_colors---other--transparent)
}

.ev_nav_ico {
    width: var(--24px);
    height: var(--24px)
}

/* ---- Legend ---- */

.ev_legend {
    grid-column-gap: var(--_units---u-32);
    grid-row-gap: var(--_units---u-12);
    flex-flow: wrap;
    justify-content: center;
    align-items: center;
    display: flex
}

.ev_legend_item {
    grid-column-gap: var(--_units---u-8);
    align-items: center;
    display: flex
}

.ev_key {
    width: var(--10px);
    height: var(--10px);
    flex: none
}

.ev_key.is-open {
    background-color: var(--_global-colors---brand-500--feather-olive);
    border-radius: 50%
}

.ev_key.is-free {
    border: var(--1px) solid var(--_colors---base-1000--disabled);
    border-radius: 50%
}

.ev_key.is-private {
    background-image: repeating-linear-gradient(-45deg, #0000 0 var(--2px), var(--_colors---base-1000--disabled) var(--2px) var(--4px));
    border: var(--1px) solid var(--_colors---base-1000--disabled)
}

/* ---- Month grid ---- */

/* minmax(0, 1fr), not 1fr. A bare 1fr is minmax(auto, 1fr), so a column floors
   at its content's min-content width — and .ev_day_name is white-space: nowrap,
   which makes "Poolside Halloween" that floor. The columns then grow past their
   share and the seventh overflows the container, taking the day cells out of
   alignment with the weekday headers above them. Zeroing the minimum lets
   ellipsis truncation do its job. */
.ev_wds,
.ev_days {
    grid-column-gap: var(--_units---u-8);
    grid-template-columns: repeat(7, minmax(0, 1fr));
    display: grid
}

.ev_wds {
    padding-bottom: var(--_units---u-12)
}

.ev_wd {
    text-align: center
}

.ev_days {
    grid-row-gap: var(--_units---u-8)
}

.ev_day {
    aspect-ratio: 4/3;
    color: var(--_colors---base-1000--primary);
    background-color: var(--_colors---other--transparent);
    border: var(--1px) solid var(--_colors---base-1000--line);
    flex-flow: column;
    justify-content: space-between;
    align-items: flex-start;
    padding: var(--_units---u-12);
    display: flex;
    position: relative;
    text-align: left;
    /* Same reason as the minmax above: a flex item's default min-width is auto,
       so the nowrap label would push the cell wider than its column. */
    min-width: 0;
    transition: border-color .8s ease, background-color .8s ease
}

.ev_day.is-blank {
    border-color: var(--_colors---other--transparent)
}

.ev_day.is-past {
    opacity: .3
}

/* The current day is marked with an inner ring rather than a thicker border,
   which would change the cell's box size and nudge the whole row. */
.ev_day.is-today {
    box-shadow: inset 0 0 0 var(--1px)var(--_colors---base-1000--primary)
}

.ev_day.is-open {
    cursor: pointer
}

.ev_day.is-open:hover {
    border-color: var(--_global-colors---brand-500--feather-olive);
    background-color: #27360d0a
}

.ev_day.is-private {
    background-image: repeating-linear-gradient(-45deg, #0000 0 var(--4px), var(--ev-hatch) var(--4px) var(--6px))
}

/* Dimmed only when the whole day is unavailable. A day that is hatched *and*
   carries a dot still has something you can book on it, so its date stays at
   full strength. */
.ev_day.is-private:not(.is-open) .ev_day_n {
    color: var(--_colors---base-1000--disabled)
}

.ev_day_n {
    font-variant-numeric: tabular-nums
}

.ev_day_mark {
    grid-column-gap: var(--_units---u-8);
    align-items: center;
    width: 100%;
    min-width: 0;
    display: flex;
    overflow: hidden
}

.ev_day_dot {
    width: var(--8px);
    height: var(--8px);
    background-color: var(--_global-colors---brand-500--feather-olive);
    border-radius: 50%;
    flex: none
}

.ev_day_name {
    font-family: var(--_fonts---font-body);
    font-size: var(--_fonts---p2--size);
    line-height: 120%;
    color: var(--_global-colors---brand-500--feather-olive);
    text-overflow: ellipsis;
    white-space: nowrap;
    min-width: 0;
    overflow: hidden
}

/* Mirrors .ev_day_name, in grey rather than olive. That is the whole visual
   grammar of the grid: olive means Sree Raaga is running it and you can book in,
   grey-on-hatch means a customer has it. Sentence case, not the uppercase tag
   this used to be — "CORPORATE OFFSITE" with letter-spacing does not survive a
   146px cell, and these labels are content now rather than a status stamp. */
.ev_day_held {
    font-family: var(--_fonts---font-body);
    font-size: var(--_fonts---p2--size);
    line-height: 120%;
    color: var(--_colors---base-1000--gray-text);
    text-overflow: ellipsis;
    white-space: nowrap;
    min-width: 0;
    overflow: hidden
}

/* ---- Agenda ---- */

.ev_row {
    border-bottom: var(--1px) solid var(--_colors---base-1000--line)
}

/* A date that has passed stays listed — the month summary counts it, and paging
   back to a month with silent gaps in its agenda would be worse — but it drops
   out of the visual hierarchy. Matches .ev_day.is-past, so a faded row and a
   faded cell read as the same fact. Opacity rather than a grey override because
   it has to dim the photograph in an expanded panel too. */
.ev_row.is-past {
    opacity: .4
}

.ev_row_head {
    grid-column-gap: var(--_units---u-24);
    grid-template-columns: var(--136px)1fr auto var(--24px);
    align-items: center;
    width: 100%;
    padding: var(--_units---u-32)var(--_units---u-0);
    display: grid;
    text-align: left
}

.ev_row_head.is-btn {
    color: var(--_colors---base-1000--primary);
    background-color: var(--_colors---other--transparent);
    border: none;
    cursor: pointer;
    font-family: inherit
}

.ev_row_when {
    font-variant-numeric: tabular-nums
}

.ev_row_meta {
    text-align: right;
    white-space: nowrap
}

.ev_row_chev {
    width: var(--24px);
    height: var(--24px);
    justify-self: end;
    transition: transform .8s ease
}

.ev_row.is-expanded .ev_row_chev {
    transform: rotate(180deg)
}

/* A held row is legible but deliberately quiet — it is scaffolding for the date,
   not an offer. The hatched left edge ties it back to its cell in the grid. */
.ev_row.is-private .ev_row_head {
    padding-left: var(--_units---u-16);
    border-left: var(--2px) solid var(--_colors---base-1000--line);
    background-image: repeating-linear-gradient(-45deg, #0000 0 var(--4px), var(--ev-hatch) var(--4px) var(--6px));
    background-size: var(--8px)100%;
    background-repeat: no-repeat
}

.ev_row.is-private .h5 {
    color: var(--_colors---base-1000--gray-text)
}

/* ---- Detail panel ---- */

.ev_panel[hidden] {
    display: none
}

.ev_panel {
    padding-bottom: var(--_units---u-48)
}

.ev_panel_in {
    grid-column-gap: var(--_units---u-32);
    grid-template-columns: var(--240px)1fr;
    align-items: start;
    display: grid
}

.ev_panel_media {
    aspect-ratio: 4/3;
    position: relative;
    overflow: clip
}

.ev_panel_img {
    width: 100%;
    height: 100%;
    object-fit: cover;
    display: block
}

.ev_facts {
    grid-column-gap: var(--_units---u-24);
    grid-row-gap: var(--_units---u-16);
    grid-template-columns: repeat(3, 1fr);
    display: grid
}

.ev_cols {
    grid-column-gap: var(--_units---u-32);
    grid-template-columns: 1fr 1fr;
    align-items: start;
    display: grid
}

.ev_list_ul {
    margin: 0;
    padding: 0;
    list-style: none
}

.ev_li {
    font-family: var(--_fonts---font-body);
    font-size: var(--_fonts---p1--size);
    line-height: var(--_fonts---p1--line-height);
    padding-left: var(--_units---u-16);
    position: relative
}

.ev_li+.ev_li {
    margin-top: var(--_units---u-8)
}

/* A dash for both lists rather than a tick and a cross. The column heading
   already says which list this is, and two competing glyph systems in one panel
   is noise. Exclusions carry the meaning in their colour instead. */
.ev_li::before {
    content: "—";
    position: absolute;
    left: 0;
    color: var(--_colors---base-1000--disabled)
}

.ev_li.is-out {
    color: var(--_colors---base-1000--gray-text)
}

/* ---- Buttons ---- */

.ev_acts {
    grid-column-gap: var(--_units---u-12);
    grid-row-gap: var(--_units---u-12);
    flex-flow: wrap;
    align-items: center;
    display: flex
}

.ev_btn {
    color: var(--_colors---base-1000--primary);
    background-color: var(--_colors---other--transparent);
    border: var(--1px) solid var(--_colors---base-1000--primary);
    border-radius: var(--48px);
    align-items: center;
    padding: var(--_units---u-16)var(--_units---u-32);
    display: inline-flex;
    cursor: pointer;
    font-family: inherit;
    /* .4s / .8s throughout this block mirror DUR_SHORT / DUR_MEDIUM in
       config.js. They are literals because the --dur-* custom properties that
       module's comment refers to were never actually declared in this file. */
    transition: color .8s ease, background-color .8s ease
}

.ev_btn:hover {
    color: var(--_colors---other--bg);
    background-color: var(--_colors---base-1000--primary)
}

/* The label has to be recoloured by name, not left to inherit. The button's own
   `color` never reaches it: the label is a child `.l2`, and `.l2` sets
   `color: primary` itself, which beats inheritance at any specificity. Without
   this the text turns navy on a navy fill on hover and the button reads as
   empty — and this is the Book on WhatsApp button. */
.ev_btn:hover .l2 {
    color: var(--_colors---other--bg)
}

.ev_btn.is-sec:hover .l2 {
    color: var(--_colors---base-1000--primary)
}

.ev_btn.is-sec {
    border-color: var(--_colors---base-1000--line)
}

.ev_btn.is-sec:hover {
    color: var(--_colors---base-1000--primary);
    background-color: var(--_colors---base-1000--bg);
    border-color: var(--_colors---base-1000--primary)
}

/* ---- Empty and error states ---- */

.ev_empty,
.ev_fallback {
    border: var(--1px) solid var(--_colors---base-1000--line);
    flex-flow: column;
    align-items: center;
    padding: var(--_units---u-64)var(--_units---u-32);
    display: flex
}

.ev_fallback[hidden] {
    display: none
}

@media screen and (max-width:991px) {

    .ev-head,
    .ev {
        grid-column: 1/-1
    }

    /* Square cells on a narrow screen: at a seventh of the viewport a 4/3 cell
       is too short to hold the date and its marker without them colliding. */
    .ev_day {
        aspect-ratio: 1;
        justify-content: space-between;
        padding: var(--_units---u-8)
    }

    .ev_wds,
    .ev_days {
        grid-column-gap: var(--_units---u-4)
    }

    .ev_days {
        grid-row-gap: var(--_units---u-4)
    }

    .ev_nav {
        width: var(--44px);
        height: var(--44px)
    }

    /* The row collapses to two lines: date above, everything else below. The
       chevron moves to the top-right corner so the tap target stays obvious. */
    .ev_row_head {
        grid-column-gap: var(--_units---u-12);
        grid-template-columns: 1fr var(--24px);
        grid-template-areas: "when chev" "what what" "meta meta";
        padding: var(--_units---u-24)var(--_units---u-0)
    }

    .ev_row_when {
        grid-area: when
    }

    .ev_row_what {
        grid-area: what;
        padding-top: var(--_units---u-8)
    }

    .ev_row_meta {
        grid-area: meta;
        text-align: left;
        padding-top: var(--_units---u-8)
    }

    .ev_row_chev {
        grid-area: chev
    }

    .ev_panel_in,
    .ev_cols {
        grid-template-columns: 1fr;
        grid-row-gap: var(--_units---u-24)
    }

    .ev_facts {
        grid-template-columns: 1fr 1fr
    }

    .ev_acts .ev_btn {
        flex: 1;
        justify-content: center
    }

    /* One card per row. Two columns of this much text at phone width leaves the
       exclusion list running two words to a line. */
    .ev_ups {
        grid-template-columns: 1fr;
        grid-row-gap: var(--_units---u-32)
    }

    .ev_up_body {
        padding: var(--_units---u-24)
    }

    /* The card's own inclusion columns stay side by side even on a phone: the
       two lists are read against each other, and stacking them puts "Not
       included" far enough below "Included" to be missed. The items are short
       enough to survive the halved measure. */
    .ev_up_body .ev_cols {
        grid-template-columns: 1fr 1fr;
        grid-column-gap: var(--_units---u-16);
        grid-row-gap: var(--_units---u-0)
    }

    /* The section head's button drops below its title rather than squeezing the
       count into a two-word column beside it. */
    .ev_sec_head {
        align-items: flex-start
    }

    .ev_sec_head_t {
        min-width: 100%
    }

    .ev_chip {
        padding: var(--_units---u-8)var(--_units---u-16)
    }
}

/* ==================================================================
 * THE FRAMED WALKTHROUGH
 * ------------------------------------------------------------------
 * The resort walkthrough, opened from the "Watch the walkthrough" button in
 * location section and driven by assets/js/animations/video-modal.js. Markup:
 * src/components/VideoModal.astro.
 *
 * WHAT THE CLIENT ASKED FOR
 *   "It should look like in a nice Frame for the customers."
 * So this is not a bare full-bleed player. The film sits inside a navy card
 * that carries a title, a caption and the same corner-tick ornament the
 * floating tip cards use — the site's existing frame vocabulary rather than a
 * new one invented for this panel.
 *
 * GEOMETRY, AND WHY object-fit IS contain
 * The card is a flex column: head, screen, foot. The screen states its 16/9
 * preference through aspect-ratio and gives that up to max-height when the
 * viewport is short — a phone in portrait, or a laptop with a shallow window.
 * At that point the box is wider than the footage, so the video is fitted with
 * `contain` against a black screen and letterboxes rather than cropping. For a
 * three-minute walkthrough, losing the edges of the frame would be worse than
 * two black bars, and black bars on black read as part of the frame.
 *
 * The alternative — deriving the card width from the available height so the
 * ratio always holds exactly — needs the height of the head and foot as a
 * number, which the site's scale-ratio units do not hand out. Fitting inside a
 * box that is always correct beats computing a box that is occasionally wrong.
 * ================================================================== */

/* Above the enquiry dialog's 5000, because the enquiry modal's own markup stays
   in the DOM behind this one. */
.modal.video {
    z-index: 5300
}

/* A plain dark wash would leave the page legible enough behind the video to
   compete with it. The blur is what makes the card read as the only thing on
   screen; the fallback colour alone is dark enough to work without it. */
.modal.video .modal_over {
    background-color: #0b1220e6;
    -webkit-backdrop-filter: blur(10px) saturate(120%);
    backdrop-filter: blur(10px) saturate(120%)
}

.modal.video .modal_c {
    justify-content: center;
    align-items: center
}

.modal_video {
    pointer-events: auto;
    width: 100%;
    height: 100%;
    padding-top: var(--_units---u-48);
    padding-bottom: var(--_units---u-48);
    flex-flow: column;
    justify-content: center;
    align-items: center;
    display: flex;
    position: relative
}

/* The card. max-width caps it on a 27" display, where a 16/9 box spanning the
   full grid would put the visitor further from the picture than from their own
   desk. min-height:0 is what lets max-height reach the screen below — without
   it a flex child refuses to shrink past its content. */
.modal_video_frame {
    --film-radius: 4px;
    background-color: var(--_global-colors---base-1000--100);
    width: 100%;
    max-width: calc((var(--_special-units---1-cell-h)*8) + (var(--_special-units---grid-gap)*7));
    max-height: 100%;
    min-height: 0;
    padding: var(--_units---u-24);
    border-radius: var(--film-radius);
    flex-flow: column;
    display: flex;
    position: relative;
    /* Two shadows: a tight one to seat the card, and a wide soft one so it
       floats clear of the blurred page rather than sitting flat on it. */
    box-shadow: 0 2px 8px #00000040, 0 40px 80px -20px #000000a6
}

/* Clearance for the 40px close button plus its offset, so a longer title wraps
   rather than running under it. */
.modal_video_head {
    padding-right: var(--_units---u-96);
    padding-bottom: var(--_units---u-16);
    flex: none
}

.modal_video_kicker {
    color: var(--_colors---base-1000--gray-text);
    margin: 0
}

.modal_video_title {
    color: var(--_colors---base-1000--primary);
    margin: 0
}

/* The screen. See the geometry note in the block header for the aspect-ratio /
   max-height pair. */
.modal_video_screen {
    aspect-ratio: 16/9;
    background-color: #000;
    border-radius: calc(var(--film-radius)*.5);
    width: 100%;
    max-height: 100%;
    min-height: 0;
    flex: none;
    justify-content: center;
    align-items: center;
    display: flex;
    position: relative;
    overflow: hidden
}

.modal_video_media {
    object-fit: contain;
    background-color: #000;
    width: 100%;
    height: 100%;
    display: block
}

/* The sound prompt.
   Playback starts muted, so this is on screen every time the panel opens rather
   than being an error path — which is why it is styled as a control the visitor
   is meant to press, with a hover state and a cursor, and not as a badge.
   video-modal.js toggles both `hidden` and `is-active`: the attribute takes it
   out of the tab order, the class runs the transition.

   Top-left, not top-right: the close button is top-right of the card, and two
   affordances stacked in one corner is how someone turning on the sound closes
   the panel instead. It also stays clear of the native control bar at the
   bottom, which has its own volume control. */
.modal_video_sound {
    color: var(--_global-colors---base-1000--100);
    cursor: pointer;
    -webkit-backdrop-filter: blur(4px);
    backdrop-filter: blur(4px);
    background-color: var(--_global-colors---base-0--100);
    border: 0;
    border-radius: 100px;
    padding: var(--_units---u-12) var(--_units---u-16);
    grid-column-gap: var(--_units---u-8);
    align-items: center;
    display: flex;
    position: absolute;
    top: var(--_units---u-16);
    left: var(--_units---u-16);
    opacity: 0;
    transform: translateY(-4px);
    /* Two shadows again, for the same reason as the card: the prompt sits over
       moving footage and needs to hold its edge against every frame. */
    box-shadow: 0 1px 2px #0000004d, 0 8px 24px -8px #000000a6;
    transition: opacity var(--dur-s, .4s) ease, transform var(--dur-s, .4s) ease,
        background-color var(--dur-s, .4s) ease, color var(--dur-s, .4s) ease
}

.modal_video_sound.is-active {
    opacity: 1;
    transform: translateY(0)
}

/* Inverts rather than tints, so the state change is unmistakable on footage of
   any brightness. */
.modal_video_sound:hover,
.modal_video_sound:focus-visible {
    color: var(--_global-colors---base-0--100);
    background-color: var(--_global-colors---base-1000--100)
}

.modal_video_sound:active {
    transform: translateY(1px)
}

.modal_video_sound[hidden] {
    display: none
}

.modal_video_sound_ico {
    width: var(--16px);
    height: var(--16px);
    flex: none;
    display: block
}

.modal_video_foot {
    padding-top: var(--_units---u-16);
    flex: none
}

.modal_video_caption {
    color: var(--_colors---base-1000--gray-text);
    margin: 0
}

/* The corner ticks. Inset so they sit inside the card's padding and read as a
   frame around the whole composition, head and caption included. The colour is
   lifted off .decor's default: theme_on-dark resolves --base-1000--line to cream
   at 10%, which disappears against navy at this size. */
.modal_video_decor {
    pointer-events: none;
    position: absolute;
    inset: var(--_units---u-8)
}

.modal_video_decor .decor {
    color: var(--_global-colors---base-0--30)
}

.modal_video_close {
    z-index: 2;
    position: absolute;
    top: var(--_units---u-24);
    right: var(--_units---u-24)
}

/* Focus rings.
   video-modal.js puts focus on the close control as the panel opens, so the
   browser's default ring — a bright blue rounded box — was the first thing on
   screen over the navy card. :focus-visible rather than :focus, so it is shown
   to someone navigating by keyboard and not to someone who just clicked.

   Each ring follows the shape of what it surrounds: circular on the close
   button, pill on the sound prompt, inset on the video. A square ring around a
   round button reads as a rendering fault. */
.modal.video a:focus-visible,
.modal.video button:focus-visible,
.modal.video video:focus-visible {
    outline: 1px solid var(--_global-colors---base-0--100);
    outline-offset: 3px;
    border-radius: 2px
}

/* The video is a tab stop because it carries `controls`, and it fills the
   screen — an outline offset outside it would sit on the card, so this one goes
   inward. */
.modal.video video:focus-visible {
    outline-offset: -3px
}

.modal.video .modal_video_sound:focus-visible {
    outline-offset: 2px;
    border-radius: 100px
}

.modal.video .modal_video_close a:focus-visible {
    border-radius: 100px
}

@media screen and (max-width:991px) {

    /* A phone has no width to give away. .modal_c carries the site's 24px
       container gutter, which on a 390px screen spends an eighth of the picture's
       width on empty backdrop; the video is the content here, so the gutter is
       pulled back to 16px and the card takes the difference. Vertical padding
       tightens for the same reason — --u-48 is 32px at this breakpoint and the
       frame needs the height more than the breathing room. */
    .modal.video .modal_c {
        padding-left: var(--_units---u-16);
        padding-right: var(--_units---u-16)
    }

    .modal_video {
        padding-top: var(--_units---u-32);
        padding-bottom: var(--_units---u-32)
    }

    .modal_video_frame {
        max-width: 100%;
        padding: var(--_units---u-16)
    }

    .modal_video_head {
        padding-right: var(--_units---u-64)
    }

    .modal_video_close {
        top: var(--_units---u-16);
        right: var(--_units---u-16)
    }

    /* The prompt has to shrink with the picture it sits on. At desktop padding
       it covered two fifths of a 330px-wide frame, which is no longer a hint
       over the footage but a banner across it. Tighter box, smaller type and
       icon, pushed further into the corner. */
    .modal_video_sound {
        top: var(--_units---u-8);
        left: var(--_units---u-8);
        padding: var(--_units---u-8) var(--_units---u-12);
        grid-column-gap: var(--_units---u-4);
        font-size: var(--10px);
        letter-spacing: .06em
    }

    .modal_video_sound_ico {
        width: var(--12px);
        height: var(--12px)
    }

    /* The caption is the first thing to go when the walkthrough is competing for
       height. The title above it already says what this is. */
    .modal_video_foot {
        display: none
    }
}

/* ── Hero tagline legibility ───────────────────────────────────────────────
   "WHERE NATURE — PLAYS A HIGHER NOTE" is the h5 step in Ambroise François, a
   Didone. Didones pair thick stems with hairline thins and hairline serifs, and
   at 36px desktop / 26px mobile those hairlines land at roughly one device
   pixel. Set in white straight onto the hero photograph with no scrim, they go
   white-on-near-white wherever the frame is bright — the pale boundary wall
   behind "WHERE NATURE", the sunlit foliage behind the second half — and the
   phrase drops to fragments. Measured on the day frame at 1440, as shipped:
   19.6% of the background hugging the strokes sat below the 3:1 WCAG large-text
   threshold and 27.0% below 4.5:1. With this block, 9.1% and 19.6%.

   The typeface stays. It is the identity, it sets the logotype directly above,
   and it is perfectly legible at h1 where the hairlines have mass. What was
   wrong is the contrast and the tracking, so that is what changes. */
.hero-s_title>span {
    /* Three tight shadows rather than one soft one. Compared head to head on the
       same frame, a single wide blur spreads the ink so thinly that it barely
       lifts the strokes off the photo (7.8% still under 3:1, 20.6% under 4.5:1);
       stacking short radii at higher opacity builds a close keyline and reached
       7.7% / 16.9%, the better result on both thresholds and the crisper of the
       two by eye.

       Carried on the text rather than as a gradient band behind it, because the
       hero cross-fades a day and a night frame and takes its master image from
       the CMS: a fixed scrim would be tuned to today's photograph and drift on
       the next one. A halo travels with the glyphs and holds on any frame.

       Brand navy rather than black — at this opacity black reads as a drop
       shadow on the day frame, navy reads as depth already in the image. */
    text-shadow:
        0 0 1px rgba(23, 35, 59, .95),
        0 0 3px rgba(23, 35, 59, .85),
        0 1px 4px rgba(23, 35, 59, .65)
}

/* Tracking is desktop-only, deliberately. The h5 step carries -.008em, drawn for
   mixed-case display lines where ascenders and descenders already give a word its
   silhouette. This line is uppercased, so every glyph is the same height with
   flat sidebearings and the word shape has to come from the space between
   letters — negative tracking fights the one cue left, and HIGHER closes up.
   Opened to +.04em, which still leaves 56px between the tabs and the right half
   at 1440 and 39px at 1024.

   Below 992px the tracking stays as drawn. There is no room to give: at 320px
   the phrase already runs 18px to 302px of the viewport, and adding this much
   letter space made the second half wrap in testing. Clarity per letter is not
   worth a broken line, so on phones the keyline above carries it alone. */
@media screen and (min-width:992px) {
    .hero-s_title>span {
        letter-spacing: .04em
    }
}

/* The same sentence repeats at the foot of the hero in Maison Neue at 9.9px,
   uppercase and letterspaced, white on the same photograph and with no contrast
   protection either. Caps that small are already at the edge of comfortable
   reading. Given a lighter keyline so it stops dissolving into the paving; the
   duplication itself is a content question, flagged rather than changed. */
.hero-s_desc .l1 {
    text-shadow:
        0 0 1px rgba(23, 35, 59, .9),
        0 1px 3px rgba(23, 35, 59, .6)
}

/** -------------------------------------------------
 *  Feature stack
 *  -------------------------------------------------
 *  Six panels, one per thing the resort does, that layer over one another as the
 *  visitor scrolls.
 *
 *  THE ARCH IS THE SITE'S ARCH, AND IT IS A CONSTANT. Every panel but the first wears
 *  the same shape `.section.arch` already uses elsewhere on the page — full width,
 *  `50rem` top corner radii — held at one silhouette for the entire run. Nothing here
 *  invents a frame: reusing the one the page already has is what makes the section
 *  look like it belongs to the page.
 *
 *  An earlier build ran each panel's radii from a full dome down to square across its
 *  own climb, so the frame was continuously morphing and the frame became the thing
 *  being watched. A second attempt inset the panels behind a smaller elliptical
 *  window of its own invention, which came out as a gothic point and read as a
 *  different site. The arch is scenery. The panels move.
 *
 *  ONLY THE LAST PANEL OPENS. After it lands there is one extra beat, across which
 *  `feature-stack.js` runs `--feat-open` from 1 to 0 and the radii retract, so the
 *  arch resolves into a full-bleed rectangle and hands the page on to the next section
 *  as a clean plate. The run therefore reads: plate, arches stacking, plate.
 *
 *  Each card is `position: sticky; top: 0` and exactly one beat tall. With the extra
 *  opening beat that makes the section seven beats of document. A card pins at the
 *  top of the viewport when its slot arrives and stays there for the rest of the
 *  run, while the next climbs up from below and — being later in the DOM — paints
 *  over it.
 *
 *  THE CARDS BUTT DIRECTLY AGAINST ONE ANOTHER, WITH NO FIELD BEHIND THEM. That is
 *  what makes it read as layering: the arch's shoulders are the only place anything
 *  behind shows, and what has to show there is the previous panel, so the two are
 *  plainly sheets stacked front to back. An earlier attempt put a navy field there,
 *  and the shoulders exposed that instead — which read as a row of separate framed
 *  pictures rather than one sheet lying on another, and killed the effect.
 *
 *  For the same reason the FIRST card is not arched. There is nothing behind it to be
 *  seen at the shoulders but the section above. It arrives square and full-bleed, the
 *  section takes its colour, and the arches start with the second.
 *
 *  Content sits vertically centred, which keeps it clear of the curve without any
 *  special casing: the arc closes above the composition and the composition occupies
 *  the middle, where the panel is at its full width.
 */
.feat-stack {
    /* The first card's colour, so the section reads as that plate before anything
       arches over it. `.section` already paints `--_colors---other--bg`, so
       overriding the token is enough. */
    --_colors---other--bg: var(--_global-colors---base-0--100);
    /* One card's worth of scroll. Card height and slot height both derive from
       this, and the two must agree or the sticky arithmetic drifts. */
    --feat-beat: var(--_special-units---100vh);
    position: relative
}

.feat-stack-area {
    position: relative
}

/* The static reference column, doing two jobs that both need a box which stays
   where the document put it.
   Triggers: the cards are sticky, so their boxes sit wherever the scroller has
   pinned them and cannot be measured for a trigger position. Each slot here is
   one beat tall and stays put, so slot N's top reaches the top of the viewport at
   precisely the moment card N lands.
   Chrome theming: it carries `data-bg`, so the fixed logo and nav get a single
   consistent treatment for the length of the stack instead of flickering between
   six card colours. */
.feat-stack_marks {
    z-index: 0;
    pointer-events: none;
    flex-flow: column;
    display: flex;
    position: absolute;
    inset: 0%
}

.feat-stack_marks_slot {
    height: var(--feat-beat);
    flex: none
}

.feat-stack_card {
    top: var(--_units---u-0);
    height: var(--feat-beat);
    position: sticky
}

/* The extra beat, and the only reason the section is seven beats rather than six.
   The last panel is pinned for its length while `--feat-open` is scrubbed from the
   window down to a full-bleed rectangle; without it the last panel would land on the
   section's final pixel with no scroll left to open in.
   It has to be a real box in the flow. The marks column is `position: absolute`, so
   its seventh slot lengthens the column and nothing else — the document still ended
   at six beats and the seventh slot simply overflowed, never reaching the top of the
   viewport. */
.feat-stack_tail {
    height: var(--feat-beat)
}

/* How arched this panel is: 1 is the site's arch, 0 is a square full-bleed plate.
   It is a constant for the length of the run. The only thing that animates it is
   the final opening on the last panel — see `buildFinalOpening` in
   feature-stack.js.
   Registered rather than left as a plain custom property so the browser knows it is
   a number and interpolates it, instead of swapping one string for another and
   jumping straight from 1 to 0. */
@property --feat-open {
    syntax: "<number>";
    inherits: false;
    initial-value: 0;
}

.feat-arch {
    background-color: var(--_colors---other--bg);
    --feat-open: 0;
    /* THE SITE'S OWN ARCH, NOT A NEW SHAPE. `.section.arch` near the top of this file
       is `border-top-left-radius: 50rem` and full width, and that is the arch the rest
       of the page already uses — the one over "Reasons to choose Sree Raaga". These
       panels reuse it verbatim so the section reads as part of the same page instead
       of introducing a second, competing frame.
       ONE VALUE PER CORNER, SO THE ARC IS CIRCULAR. An earlier attempt gave the corner
       two radii — half the width across, a quarter of the height down — to control how
       far the curve reached. When the vertical radius is the larger of the two the two
       arcs rise faster than they spread and meet in a point at the centre: the frame
       came out as a gothic arch rather than the site's dome. A single value cannot do
       that at any viewport size.
       WHY THE CAP. `50rem` is half the viewport width, because `html` is `font-size:
       1vw` — the right dome on a portrait panel, where it lands at 195px on a 390pt
       phone and the arc closes well above the composition. On a landscape panel it is
       enormous: 712px at 1440x900, which is a semicircle three quarters of the way down
       a 900px panel, and the curve is still closing in at the top of the 80vw
       photographic band, so it cut the corners off every photograph. Solving the corner
       arc for the depth at which the panel is wide enough to hold the band gives a
       ceiling of about 40vh. Below the cap this is exactly `.section.arch`; above it,
       the arc is the largest circle that still clears the composition. */
    border-top-left-radius: calc(var(--feat-open)*min(50rem, 40vh));
    border-top-right-radius: calc(var(--feat-open)*min(50rem, 40vh));
    /* Cast upward, so a climbing panel reads as being in front of the one it is
       covering rather than a hole cut into it. box-shadow follows the corner radii,
       so it traces the arch. */
    box-shadow: 0 calc(var(--_units---u-24)*-1) var(--_units---u-64) #17233b33;
    flex-flow: column;
    justify-content: center;
    align-items: center;
    height: 100%;
    display: flex;
    position: relative;
    overflow: clip
}

/* Marks a panel as arched, which is what gives it the site's arch shape.
   THIS IS A CSS DEFAULT AND NOT AN INLINE STARTING VALUE, DELIBERATELY. The final
   opening is a scrubbed tween, and a scrubbed tween is free to revert its own start
   value while its trigger is out of range — it did so unpredictably across viewport
   sizes when the shape was written inline by the script, leaving panels square at
   load on some widths and domed on others. Declaring it here means a revert lands
   back on the arch, which is what a panel should look like before the opening.
   feature-stack.js adds `is-arching` to every panel but the first — the first has
   nothing behind it to be seen at the shoulders. Marking the panels themselves
   rather than the section avoids having to single the first one back out by
   position: it is not the first child of anything, since the marks column precedes
   it, and `:first-child` silently matched nothing when this was tried that way.
   With no script the class never lands, every panel stays square and full-bleed,
   and nothing is cropped or hidden. */
.feat-arch.is-arching {
    --feat-open: 1
}

/* Two brand colours have no theme class of their own. Rather than duplicate a
   whole token block, each pairs with whichever existing theme sets the right text
   colour and overrides only the background: blush over `theme_on-brand` for dark
   text, plum over `theme_on-color` for light. */
.feat-arch.is-blush {
    --_colors---other--bg: var(--_global-colors---brand-500--blush-bloom)
}

.feat-arch.is-plum {
    --_colors---other--bg: var(--_global-colors---brand-500--velvet-plum)
}

.feat-arch_c {
    flex-flow: column;
    align-items: center;
    display: flex
}

.feat-arch_index {
    opacity: .55
}

/* A hard-cornered rectangle across 80% of the screen, deliberately not arched.
   The arch is the frame and the photograph is the thing framed, so repeating the
   curve here would blunt the one shape the section is built on, and the contrast
   is what makes the opening legible: square edges emerging from behind a curve
   read as a curtain drawing back.
   Measured against the viewport rather than the container so it is 80% of the
   screen, not 80% of what is left after the page gutters. The cell figure sets the
   height and the viewport cap is what keeps the composition inside a short laptop
   screen — the band gives way before the type does. */
.feat-arch_media {
    width: 80vw;
    height: min(calc((var(--_special-units---1-cell-v)*4) + (var(--_special-units---grid-gap)*3)), 46vh);
    flex: none;
    overflow: clip
}

/* Wide but short — a 1920x620 laptop window, or any window carrying a lot of
   browser chrome.
   Everything in this composition is sized from rem, and rem on this site is 1vw,
   so the type and the spacing grow with the window's WIDTH and take no notice of
   its HEIGHT. The panel is one viewport tall. Past roughly 3:1 the two stop
   agreeing and the end of the composition runs out of the bottom of the panel,
   where `overflow: clip` removes it — the link disappears first, silently.
   Hand back the two largest gaps and hold the band to a smaller share of the
   height. These are the only declarations in the section measured against height,
   and they are deliberately in `vh` so they answer the axis that is actually
   short. */
@media screen and (min-width:992px) and (max-height:780px) {
    .feat-arch_media {
        height: min(calc((var(--_special-units---1-cell-v)*4) + (var(--_special-units---grid-gap)*3)), 38vh)
    }

    .feat-arch_c>.u-48 {
        height: 3.6vh
    }

    .feat-arch_c>.u-32 {
        height: 2.4vh
    }
}

/* Held to the band's width so that when the label wraps — which it does on a
   phone, where "Banquet hall for 800 · Open lawn for 1,000" needs two lines — the
   two rules stop at the edges of the photograph above rather than being shoved out
   to the edges of the panel. Without the cap this row takes the arch's full width,
   because it is a fit-content flex child and the label's max-content width exceeds
   the band. */
.feat-arch_meta {
    grid-column-gap: var(--_units---u-16);
    justify-content: center;
    align-items: center;
    max-width: 80vw;
    display: flex
}

.feat-arch_meta_line {
    background-color: var(--_colors---base-1000--primary);
    width: var(--_units---u-48);
    height: .75px;
    flex: none;
    opacity: .4
}

/* Tablets, and the awkward band between a phone and a laptop.
   Below 992px the site swaps to a smaller `--_special-units---scale-ratio`, which
   divides into every rem-derived token and so makes all of them BIGGER. Paired
   with `html { font-size: 1vw }` that is calibrated for a phone: at 390pt across
   the display step lands around 52pt, which is right. At 991pt across the same
   arithmetic gives 133pt, and the title, the label and the logo all come out
   roughly two and a half times too large.
   Restated here against the viewport, which sidesteps the ratio entirely.
   Overriding `--_special-units---scale-ratio` on the section looks like the tidier
   fix and does nothing: the font tokens are declared on `body`, so their
   `var(--_special-units---scale-ratio)` is substituted using body's value before
   the result inherits down. Re-pointing the ratio further in is too late to change
   a token that has already resolved.

   ONE RULE FOR THE WHOLE BRANCH, not a tablet band and a phone band. The first
   attempt corrected only 768-991px and left the inherited scale below it, which
   put a cliff in the middle of the range: 46px of display type at 768 and 100px at
   744, for the same words. The clamps below run continuously from 320px to 991px
   and land on 60px at the top, which is what the desktop branch computes at 992 —
   so crossing the breakpoint changes the layout and not the type size.
   The arch's own radius and padding are in px and vh, so they need no correction
   here. */
@media screen and (max-width:991px) {
    .feat-arch [data-part="h"] {
        font-size: clamp(46px, 12vw, 60px)
    }

    .feat-arch .l1 {
        font-size: clamp(11px, 2.6vw, 14px)
    }

    /* Measured against the panel's height, not its width.
       The base rule takes the smaller of a four-cell figure and 46vh. On a laptop
       the cell figure wins and gives a wide band. On a phone the cell figure is
       about 345pt while the panel is a whole portrait viewport, so it won that
       comparison too and left the composition filling barely a third of the panel
       — a small block of content marooned in the middle of a tall panel of colour.
       Going to 46vh here puts the fill at about two thirds at every size in the
       branch, matching what the laptop already does. The 100vw term is the guard
       for the other extreme: on a landscape phone 46vh is short, and without it a
       tall narrow panel could ask for a band taller than the screen is wide.
       The images carry `object-fit: cover`, so a more upright crop costs framing
       rather than distortion.
       Specificity rather than source order: the base rule comes later in the file. */
    .feat-arch .feat-arch_media {
        height: min(46vh, 100vw)
    }

    .feat-arch_c>.u-48 {
        height: clamp(20px, 4vw, 34px)
    }

    .feat-arch_c>.u-32 {
        height: clamp(14px, 2.8vw, 24px)
    }

    .feat-arch_c>.u-24 {
        height: clamp(10px, 2vw, 18px)
    }
}

/* A phone held sideways — 844x390, and anything else under 480px tall.
   The counterpart to the `min-width:992px and max-height:780px` rule above, and it
   exists for the same reason: every figure in the branch above is measured against
   the viewport's WIDTH, and a landscape phone is wide and very short. At 844x390 the
   composition came to 403px inside a 390px panel and `overflow: clip` took the last
   13px — the enquiry link — off the bottom of every panel, silently.
   The band gives way before the type does, as on the desktop rule: it is the one
   element that can lose a third of its height and still read as a photograph, where
   the display step cannot lose a third and still read as the display step. Measured
   again in vh, because height is the axis that is short. Together these bring the
   composition to about 340px, which leaves the same proportion of breathing room the
   taller sizes have. */
@media screen and (max-width:991px) and (max-height:480px) {
    .feat-arch .feat-arch_media {
        height: min(38vh, 100vw)
    }

    .feat-arch_c>.u-48 {
        height: clamp(14px, 2.6vw, 22px)
    }

    .feat-arch_c>.u-32 {
        height: clamp(10px, 2vw, 16px)
    }
}

/* Phones and tablets run the same mechanic as the desktop, not a flattened
   version of it: the panels pin and climb through the same window at every width.
   An earlier build gave this branch a static run of arches overlapped by negative
   margins. It read correctly as layering, but it was a different thing to look at
   — the climb IS the animation, and dropping it at the sizes most visitors arrive
   on meant most visitors never saw it.
   So the only thing that changes below 992px is the one thing that has to. The
   beat is already right: `--_special-units---100vh` is re-pointed at `--_100svh`
   earlier in this file, which animations/index.js publishes from
   `window.innerHeight`, so a panel is the height actually visible between a
   phone's toolbars rather than the taller `100vh` those toolbars overlap.
   The shadow goes, because a viewport-sized blur traced around a curve and
   re-rasterised under a moving panel is the one part of this that costs real frames
   on a phone. The arch silhouette carries the depth without it. */
@media screen and (max-width:991px) {
    .feat-arch {
        box-shadow: none
    }
}

/** -------------------------------------------------
 * READING SCALE — why the four reading tokens above carry a max()
 *
 * Every size in this file is calc(N rem / scale-ratio) against
 * html{font-size:1vw}, with scale-ratio 16 on desktop and 4.16 below 992px.
 * That normalises the breakpoints — a given N lands on roughly the same pixel
 * size on a phone and on a laptop — but the N chosen for reading text was far
 * too low. As originally authored, measured:
 *
 *                 1512px    1280px    1024px     390px
 *   p1 body        12.3px    10.4px     8.3px    12.2px
 *   p2 caption     10.4px     8.8px     7.0px    10.3px
 *   l1 label       10.4px     8.8px     7.0px    10.3px
 *   l2 micro        8.5px     7.2px     5.8px     8.4px
 *   h1            181.4px   153.6px   122.9px   180.0px
 *
 * Body copy at 12px against a 181px heading is what made the photography look
 * oversized on every page — the images were never the problem. Two changes,
 * and only to these four:
 *
 * 1. N raised so body lands near 16px, captions near 13px, labels near 12px.
 *    Because scale-ratio already normalises the breakpoints, one set of
 *    numbers serves desktop and mobile, which is why each token is edited in
 *    both the :root block and the max-width:991px body block.
 *
 * 2. A px floor via max(). Between 992px and ~1300px the 1vw base collapses
 *    and body text fell to 8.3px with nothing to catch it; the same happened
 *    on a 320px phone. The floor keeps the scale fluid above a readable
 *    minimum instead of all the way down.
 *
 * h1..h6, c1, a1 and a2 are untouched, so the display voice is exactly as
 * designed.
 *
 * ONE KNOCK-ON, FIXED BELOW: .apart-card pins itself to aspect-ratio 392/544.
 * Its content already exceeded that box before this change — measured 33px of
 * overflow on /corporate at 1512px and 7-22px on phones — so the card was
 * relying on the text being too small to notice. Larger labels make it worse,
 * so the ratio becomes a floor rather than a cap.
 * ------------------------------------------------- */

/* The card becomes content-sized. It keeps height:100% from the rule above, and
 * its grid row is auto, so the row resolves to the tallest card's content and
 * all three cards in a row still come out identical — the even row was never
 * coming from the ratio, it was coming from the grid.
 *
 * aspect-ratio is dropped rather than turned into a min-height floor: on a block
 * box the ratio computes the used height outright and content silently
 * overflows, which is exactly the behaviour being removed, and a percentage
 * min-height would resolve against the parent's height rather than this box's
 * own width, so it cannot express "at least this proportion" here. Since the
 * content already exceeded 392:544, content-sized lands very close to the
 * intended proportion anyway. */
.apart-card {
    aspect-ratio: auto;
}

/* .benefit-card keeps its 392/544 ratio. It holds one heading and one short
 * paragraph over a photograph, it measured no overflow at any width, and the
 * ratio is doing real work there — it is the frame of the image. */

/** -------------------------------------------------
 * /stay — DECORATIVE FLOWER ESCAPING THE VIEWPORT
 *
 * Symptom: 151px of horizontal scroll on /stay at 390px wide. Nothing else on
 * the site does this (/villas, /day-outing and / all measure zero).
 *
 * Cause: .flower.apart is position:absolute and is meant to sit inside
 * .apart-w, which is position:relative and would be its containing block. In
 * the Webflow-to-Astro export it ended up as a direct child of
 * <section class="section clip"> instead, skipping both .container and
 * .apart-w. That section is position:static, so it is not in the flower's
 * containing-block chain — the flower resolves against the initial containing
 * block, and the section's overflow:clip therefore never applies to it. It
 * hangs 151px past the right edge and drags the document scroll width with it.
 *
 * This is one symptom of a wider mis-nesting on that page: the same export also
 * stripped the list-item wrappers off two of the three room cards, pulled the
 * three benefit cards into the room-card list, and left the duplex card outside
 * the list entirely — which is why the filter, the sort and the "N" counter next
 * to the heading do not work there. The real fix for all of it is to rebuild
 * that listing page; this rule only stops the page scrolling sideways in the
 * meantime.
 *
 * Scoped to the stay namespace deliberately. Putting position:relative on
 * .section.clip globally would make every such section a containing block, and
 * several full-bleed descendants elsewhere (.w_bg, the _100vh gradient overlays,
 * the sticky .lot-s_info) currently resolve against an ancestor further up on
 * purpose.
 * ------------------------------------------------- */
[data-barba-namespace="stay"] .section.clip {
    position: relative;
}

/** -------------------------------------------------
 * PRINT
 *
 * There was no print stylesheet at all. That is not a cosmetic gap on this
 * site: a venue is a document people save to PDF and pass around a family, and
 * two things made those PDFs actively wrong rather than merely plain.
 *
 * 1. TEXT COULD PRINT BLANK. Every heading and paragraph that animates goes
 *    through GSAP SplitText, which rewrites the element into
 *    span.split-line-mask > span.split-line, puts `overflow: clip` on the mask
 *    and parks the line at `transform: translate(0%, 110%)` until its
 *    ScrollTrigger fires. Printing is not scrolling — so every block below the
 *    fold was still parked, still clipped, and came out as empty space. The
 *    page looked like it had lost half its copy, because on paper it had.
 *
 * 2. LINES COULD NOT REFLOW. SplitText measures line breaks once, at the
 *    window width, and freezes each line as its own block. Paper is narrower
 *    than the window it was measured at, so those frozen blocks wrapped a
 *    second time and the copy came out visibly ragged — breaking mid-clause
 *    with a couple of words orphaned on the next line.
 *
 * Both are undone here by returning the split spans to ordinary inline text,
 * which lets the browser break the lines again for the paper it is actually
 * given.
 *
 * ON !important: GSAP writes transform and opacity as INLINE styles, and an
 * inline style beats any selector. Overriding it from a stylesheet is the one
 * case where !important is the correct tool rather than a shortcut. It is
 * confined to @media print, so it cannot affect the animations on screen.
 * ------------------------------------------------- */
@media print {

    /* Undo SplitText. `display: inline` is what actually restores reflow —
     * the rest stops the clip and the parked transform from hiding the text. */
    .split-line-mask,
    .split-line,
    .split-word,
    .split-char {
        display: inline !important;
        overflow: visible !important;
        transform: none !important;
        translate: none !important;
        rotate: none !important;
        scale: none !important;
        clip-path: none !important;
        opacity: 1 !important;
        visibility: visible !important;
    }

    /* Anything else staged by a ScrollTrigger that never fired, for the same
     * reason: on paper there is no scroll to trigger it. */
    [data-scroll-reveal],
    [data-reveal-first] {
        opacity: 1 !important;
        transform: none !important;
        translate: none !important;
        scale: none !important;
        clip-path: none !important;
    }

    /* Fixed chrome. A position:fixed element is painted onto EVERY sheet, so
     * the logo and the MENU button were burning themselves over the body copy
     * of all twenty-two pages. None of it is usable on paper anyway — a
     * printed nav button cannot be pressed. */
    .header-logo,
    .header-nav,
    .header-cramps,
    .preloader,
    .modal,
    .modal_over,
    .modal_cta {
        display: none !important;
    }

    /* Lenis sets overflow and a transform on these to drive smooth scroll;
     * both confuse pagination. */
    html.lenis,
    html.lenis body {
        overflow: visible !important;
        height: auto !important;
    }

    /* Let the document paginate rather than being cut to one viewport. */
    body {
        overflow: visible !important;
        height: auto !important;
    }

    /* Dark sections cost a cartridge of ink and read worse than the light
     * ones. Print the type dark on white instead. */
    .theme_on-dark,
    .section.theme_on-dark {
        background-color: #fff !important;
        color: #111 !important;
    }

    /* Keep a heading with the copy it introduces. */
    h1,
    h2,
    h3,
    h4,
    h5,
    h6 {
        break-after: avoid;
    }
}

/** -------------------------------------------------
 * READING SCALE — WHY THE FOUR BODY TOKENS ARE CLAMPED, NOT JUST FLOORED
 *
 * p1, p2, l1 and l2 were given a `max()` FLOOR earlier, because
 * `calc(17rem/16)` resolves to only 10.5px at a 992px window and body copy
 * cannot be 10px. A floor solves the small end and does nothing for the large
 * end, and the large end turned out to be the worse of the two. Measured on
 * /villas:
 *
 *     width   root(1vw)  ratio    h1      body    label
 *     390       3.90     4.16     90px    15.9px  10.8px   <- correct
 *     768       7.68     4.16    177px    31.4px  21.2px
 *     991       9.91     4.16    229px    40.5px  27.4px   <- 2.5x too big
 *     992       9.92    16       119px    15.0px  10.0px   <- correct
 *
 * Everything halves across a single pixel. The cause is the pair noted above
 * against .feat-arch: below 992px the scale-ratio drops to 4.16, and every
 * rem-derived token divides by it, so all of them grow — while the root is
 * `1vw` and therefore ALSO grows with the window. Two multipliers pulling the
 * same way. The ratio is calibrated for a ~390px phone, where the result is
 * right; by 991px the same arithmetic is off by two and a half times.
 *
 * The clamp caps reading text. It cannot regress the phone band, where these
 * values already sit under the cap (15.9px against a 19px ceiling), and it
 * also fixes the opposite end: at a 2560px window p1 was resolving to 27px.
 *
 * WHAT THIS DELIBERATELY DOES NOT FIX: the display tokens — h1 to h6, c1, a1,
 * a2 — are still ~2.5x oversized between 600px and 991px. They are not clamped
 * here for two reasons. Their size IS the brand voice, so a global ceiling is a
 * design decision rather than a bug fix; and the honest repair is to extend the
 * desktop ratio down through that band, which changes every one of the twelve
 * pages at once and needs to be looked at rather than assumed. The existing
 * .feat-arch block above is the current state of the art: one component,
 * restated in vw, fixed by hand.
 *
 * Note the constraint recorded there, which applies to any wider fix too:
 * re-pointing --_special-units---scale-ratio on a section does nothing, because
 * these tokens are declared on `body` and resolve there before inheriting down.
 * It has to be overridden on `body` itself.
 * ------------------------------------------------- */

/** -------------------------------------------------
 * THE STORY / NEW GOLDEN MILE — MOBILE FRAMING
 *
 * The location strip is authored as one horizontal filmstrip: a 10-column
 * story card followed by a 13-column intro panel, both a viewport tall, both
 * composed against a wide canvas where the copy sits in the middle and the
 * decoration and labels live out in the margins beside it. Below 992px the
 * track re-stacks vertically and every one of those margins disappears, so
 * what sat beside the copy now sits on top of it: the bougainvillea over the
 * eyebrow, the Kannada label through the headline. Two sizing bugs surface in
 * the same section for the same reason, and are fixed alongside them.
 *
 * All four are corrected where they break. Nothing here touches the desktop
 * composition — verified at 1440px, where every one of these properties still
 * computes to the value it did before.
 * ------------------------------------------------- */
@media screen and (max-width:991px) {

    /* 1. The bougainvillea.
     *
     * `.flower.loc-info` hangs off the top-left corner of the story card at
     * ten grid cells square. On the wide canvas that is the empty column to
     * the left of a centred card; stacked, the card is the full width and the
     * same flower reaches past the horizontal centre, burying the "The story"
     * eyebrow in petals — navy caps on magenta, which is unreadable at label
     * size.
     *
     * The size comes down so the curtain stays a corner flourish instead of a
     * full-width band, and `.loc-info-s_t` reserves the height the flower now
     * occupies so the eyebrow starts below the fringe rather than inside it.
     * That spacer div already exists for exactly this job (`u-160 b-mob`); it
     * was simply measured against the desktop flower.
     *
     * The card is also lifted above the flower's z-index as insurance: the
     * clearance is arithmetic on two independent tokens, and if it ever goes
     * slightly negative the type should win rather than the petals. */
    .flower.loc-info {
        width: calc(var(--40px)*5.5);
        height: calc(var(--40px)*5.5)
    }

    .loc-info-s_t {
        min-height: calc(var(--40px)*5)
    }

    .loc-info-s {
        z-index: 2;
        position: relative
    }

    /* 2. The Kannada eyebrow's size.
     *
     * `.c1.is-kannada` was written as `font-size: 1.55em` to give ಕರ್ನಾಟಕ the
     * optical bump Kannada needs beside Latin. On font-size, `em` resolves
     * against the PARENT, not against the `.c1` size it was meant to scale —
     * and the parent here is the bare root step (`html{font-size:1vw}`), which
     * is 14.4px at a 1440px window and 4.3px at 430px. Desktop got away with
     * it by coincidence: 1.55 x 14.4 = 22.3px, which is within a rounding
     * error of the c1 token's own 22.5px, so the bump was always a no-op
     * there. On a phone the same arithmetic gives 6.7px against a 19.6px
     * token — a third of the size, rendered as unreadable specks beside a
     * 99px headline.
     *
     * Pointing at the token instead makes the size follow the scale it was
     * always meant to follow. Restated here rather than on the shared rule,
     * and at 1x rather than 1.55x, so desktop keeps the exact rendering it has
     * today: reinstating a 1.55x bump would grow that eyebrow by half again on
     * every page that uses it, which is a type decision for both breakpoints
     * at once and not something to slip into a mobile fix. */
    .c1.is-kannada {
        font-size: var(--_fonts---c1--size)
    }

    /* 3. The Kannada eyebrow's position.
     *
     * Caption and title are both row 1 — columns 2-4 on the wide canvas
     * (cap 2-4, title 3-8 of thirteen), which reads as a label set beside a
     * headline. Every grid collapses to four columns below 992px, where
     * `1/1/2/3` and `1/2/2/5` overlap in column 2 and the label is simply
     * printed through "New Golden Mile".
     *
     * Stacked, the label belongs above the headline, so it takes a row of its
     * own and the three panels below shift down one. Aligned to the title's
     * own column start so the eyebrow reads as attached to it. */
    .loc-intro-s_cap {
        grid-area: 1/2/2/5;
        align-self: auto
    }

    .loc-intro-s_title {
        grid-area: 2/2/3/5
    }

    .loc-intro-s_img {
        grid-area: 3/2/4/5
    }

    .loc-intro-s_desc {
        grid-area: 4/2/5/5
    }

    /* 4. The title's first line.
     *
     * The three lines are staggered by hand on desktop — "New" indented half
     * a cell, "Golden" a full cell and a gap. The stacked layout resets
     * `.is-2` and gives it `mob_a-right` instead, but `.is-1` kept its indent,
     * so "New" sat 41px in while "Mile" sat flush and the block read as an
     * accident rather than an arrangement. */
    .loc-intro-s_title_line.is-1 {
        margin-left: 0
    }
}