

@font-face {
    font-family: "Chiffres";
    font-style: normal;
    font-weight: 400;
    font-display: swap;
    src: url(https://fonts.gstatic.com/s/dmsans/v17/rP2Yp2ywxg089UriI5-g7M8btVsD8Ck0q7u0-K4.woff2) format("woff2");
    unicode-range: U+0030-0039, U+002C, U+002E, U+0025, U+002B, U+2212, U+00D7, U+20AC, U+00A0;
}

@font-face {
    font-family: "Chiffres";
    font-style: normal;
    font-weight: 500;
    font-display: swap;
    src: url(https://fonts.gstatic.com/s/dmsans/v17/rP2Yp2ywxg089UriI5-g7M8btVsD8CkGq7u0-K4.woff2) format("woff2");
    unicode-range: U+0030-0039, U+002C, U+002E, U+0025, U+002B, U+2212, U+00D7, U+20AC, U+00A0;
}

@font-face {
    font-family: "Chiffres";
    font-style: normal;
    font-weight: 600;
    font-display: swap;
    src: url(https://fonts.gstatic.com/s/dmsans/v17/rP2Yp2ywxg089UriI5-g7M8btVsD8CnqrLu0-K4.woff2) format("woff2");
    unicode-range: U+0030-0039, U+002C, U+002E, U+0025, U+002B, U+2212, U+00D7, U+20AC, U+00A0;
}

@font-face {
    font-family: "Chiffres";
    font-style: normal;
    font-weight: 700;
    font-display: swap;
    src: url(https://fonts.gstatic.com/s/dmsans/v17/rP2Yp2ywxg089UriI5-g7M8btVsD8CnTrLu0-K4.woff2) format("woff2");
    unicode-range: U+0030-0039, U+002C, U+002E, U+0025, U+002B, U+2212, U+00D7, U+20AC, U+00A0;
}

 :root {
    --navy: #104D84;
    --navy-d: #0B3A66;
    --navy-xd: #072844;
    --blue: #4E91C6;
    --blue-l: #7FB3DA;
    --steel: #B5C7D3;
    --mist: #C8D5DC;
    --wash: #F2F7FB;
    --wash-2: #E8F1F8;
    --line: #DCE7F0;
    --ink: #0E1B26;
    --ink-2: #41586B;
    --ink-3: #6E8598;
    --azur: #2E77B4;
    --azur-l: #9CC5E6;
    --azur-soft: rgba(46, 119, 180, .14);
    --paper: #FBF8F2;
    --cream: #F6F1E7;
    --sand: #EEE6D6;
    --body: "Chiffres", "Raleway", system-ui, -apple-system, sans-serif;
    --ui: "Chiffres", "Poppins", system-ui, -apple-system, sans-serif;
    --display: "Chiffres", "Cormorant Garamond", Georgia, serif;
    --dw: 300;
    --dls: -.004em;
    --dscale: 1.08;
    --dcase: none;
    --display2: "Chiffres", "Great Vibes", cursive;
    --d2w: 400;
    --d2ls: 0;
    --d2scale: 1.34;
    --d2style: normal;
    --accent: "Chiffres", "Cinzel", Georgia, serif;
    --maxw: 1200px;
    --r: 14px;
    --r-lg: 22px;
    --sh-1: 0 1px 2px rgba(11, 58, 102, .06), 0 4px 14px rgba(11, 58, 102, .06);
    --sh-2: 0 10px 30px rgba(11, 58, 102, .10), 0 2px 8px rgba(11, 58, 102, .06);
    --sh-3: 0 26px 70px rgba(11, 58, 102, .20), 0 8px 24px rgba(11, 58, 102, .10);
    --ease: cubic-bezier(.22, .68, .36, 1);
    --swap: cubic-bezier(.32, .86, .3, 1);
    --sweep: cubic-bezier(.16, 1, .3, 1);
    --fill-brand: linear-gradient(0deg, #0B3A66 0%, #104D84 52%, #2C74B8 100%);
}

html[data-font="cormorant"] {
    --display: "Chiffres", "Cormorant Garamond", Georgia, serif;
    --dw: 300;
    --dls: -.004em;
    --dscale: 1.08
}

html[data-font="ebgaramond"] {
    --display: "Chiffres", "EB Garamond", Georgia, serif;
    --dw: 400;
    --dls: -.006em;
    --dscale: 1.02
}

html[data-font="cardo"] {
    --display: "Chiffres", "Cardo", Georgia, serif;
    --dw: 400;
    --dls: -.004em;
    --dscale: 1.00
}

html[data-font="italiana"] {
    --display: "Chiffres", "Italiana", Georgia, serif;
    --dw: 400;
    --dls: .030em;
    --dscale: 1.02
}

html[data-font="gilda"] {
    --display: "Chiffres", "Gilda Display", Georgia, serif;
    --dw: 400;
    --dls: 0;
    --dscale: .99
}

html[data-font="marcellus"] {
    --display: "Chiffres", "Marcellus", Georgia, serif;
    --dw: 400;
    --dls: .002em;
    --dscale: .97
}

html[data-font="tenor"] {
    --display: "Chiffres", "Tenor Sans", Georgia, sans-serif;
    --dw: 400;
    --dls: .012em;
    --dscale: .97
}

html[data-font="spectral"] {
    --display: "Chiffres", "Spectral", Georgia, serif;
    --dw: 300;
    --dls: -.006em;
    --dscale: .98
}

html[data-font="bodoni"] {
    --display: "Chiffres", "Bodoni Moda", Georgia, serif;
    --dw: 400;
    --dls: -.008em;
    --dscale: .96
}

html[data-font="playfair"] {
    --display: "Chiffres", "Playfair Display", Georgia, serif;
    --dw: 400;
    --dls: -.011em;
    --dscale: .95
}

html[data-font="lora"] {
    --display: "Chiffres", "Lora", Georgia, serif;
    --dw: 400;
    --dls: -.008em;
    --dscale: .95
}

html[data-font="abril"] {
    --display: "Chiffres", "Abril Fatface", Georgia, serif;
    --dw: 400;
    --dls: -.016em;
    --dscale: .93
}

html[data-font="prata"] {
    --display: "Chiffres", "Prata", Georgia, serif;
    --dw: 400;
    --dls: -.005em;
    --dscale: .92
}

html[data-font="baskerville"] {
    --display: "Chiffres", "Libre Baskerville", Georgia, serif;
    --dw: 400;
    --dls: -.014em;
    --dscale: .88
}

html[data-font="cinzel"] {
    --display: "Chiffres", "Cinzel", Georgia, serif;
    --dw: 400;
    --dls: .014em;
    --dscale: .85
}

html[data-font="fraunces"] {
    --display: "Chiffres", "Fraunces", Georgia, serif;
    --dw: 400;
    --dls: -.008em;
    --dscale: .98
}

html[data-font="dmserif"] {
    --display: "Chiffres", "DM Serif Display", Georgia, serif;
    --dw: 400;
    --dls: -.005em;
    --dscale: .93
}

html[data-font="forum"] {
    --display: "Chiffres", "Forum", Georgia, serif;
    --dw: 400;
    --dls: .010em;
    --dscale: 1.00
}

html[data-font="philosopher"] {
    --display: "Chiffres", "Philosopher", Georgia, sans-serif;
    --dw: 400;
    --dls: 0;
    --dscale: 1.00
}

html[data-font="josefin"] {
    --display: "Chiffres", "Josefin Sans", Georgia, sans-serif;
    --dw: 500;
    --dls: .010em;
    --dscale: .98
}

html[data-font="cormorant-up"] {
    --display: "Chiffres", "Cormorant Upright", Georgia, serif;
    --dw: 500;
    --dls: .006em;
    --dscale: 1.05
}

html[data-accent="greatvibes"] {
    --display2: "Chiffres", "Great Vibes", cursive;
    --d2w: 400;
    --d2ls: 0;
    --d2scale: 1.34;
    --d2style: normal
}

html[data-accent="allura"] {
    --display2: "Chiffres", "Allura", cursive;
    --d2w: 400;
    --d2ls: 0;
    --d2scale: 1.42;
    --d2style: normal
}

html[data-accent="parisienne"] {
    --display2: "Chiffres", "Parisienne", cursive;
    --d2w: 400;
    --d2ls: 0;
    --d2scale: 1.24;
    --d2style: normal
}

html[data-accent="pinyon"] {
    --display2: "Chiffres", "Pinyon Script", cursive;
    --d2w: 400;
    --d2ls: 0;
    --d2scale: 1.44;
    --d2style: normal
}

html[data-accent="sacramento"] {
    --display2: "Chiffres", "Sacramento", cursive;
    --d2w: 400;
    --d2ls: 0;
    --d2scale: 1.32;
    --d2style: normal
}

html[data-accent="dancing"] {
    --display2: "Chiffres", "Dancing Script", cursive;
    --d2w: 600;
    --d2ls: 0;
    --d2scale: 1.08;
    --d2style: normal
}

html[data-accent="tangerine"] {
    --display2: "Chiffres", "Tangerine", cursive;
    --d2w: 700;
    --d2ls: 0;
    --d2scale: 1.78;
    --d2style: normal
}

html[data-accent="alexbrush"] {
    --display2: "Chiffres", "Alex Brush", cursive;
    --d2w: 400;
    --d2ls: 0;
    --d2scale: 1.42;
    --d2style: normal
}

html[data-accent="yellowtail"] {
    --display2: "Chiffres", "Yellowtail", cursive;
    --d2w: 400;
    --d2ls: 0;
    --d2scale: 1.16;
    --d2style: normal
}

html[data-accent="mrdehaviland"] {
    --display2: "Chiffres", "Mr De Haviland", cursive;
    --d2w: 400;
    --d2ls: 0;
    --d2scale: 1.52;
    --d2style: normal
}

html[data-accent="marck"] {
    --display2: "Chiffres", "Marck Script", cursive;
    --d2w: 400;
    --d2ls: 0;
    --d2scale: 1.20;
    --d2style: normal
}

html[data-accent="petit"] {
    --display2: "Chiffres", "Petit Formal Script", cursive;
    --d2w: 400;
    --d2ls: 0;
    --d2scale: 1.12;
    --d2style: normal
}

html[data-accent="cormorant-i"] {
    --display2: "Chiffres", "Cormorant Garamond", serif;
    --d2w: 500;
    --d2ls: 0;
    --d2scale: 1.00;
    --d2style: italic
}

html[data-accent="playfair-i"] {
    --display2: "Chiffres", "Playfair Display", serif;
    --d2w: 500;
    --d2ls: -.01em;
    --d2scale: .95;
    --d2style: italic
}

html[data-accent="prata"] {
    --display2: "Chiffres", "Prata", serif;
    --d2w: 400;
    --d2ls: 0;
    --d2scale: .90;
    --d2style: normal
}

* {
    box-sizing: border-box
}

html {
    scroll-behavior: smooth;
    scroll-padding-top: 96px
}

body {
    margin: 0;
    font-family: var(--body);
    font-weight: 400;
    color: var(--ink-2);
    background: #fff;
    line-height: 1.7;
    -webkit-font-smoothing: antialiased;
    overflow-x: hidden
}

img {
    max-width: 100%;
    display: block
}

a {
    color: inherit;
    text-decoration: none
}

button {
    font: inherit
}

h1,
h2,
h3,
h4 {
    color: var(--navy);
    line-height: 1.15;
    margin: 0
}

.wrap {
    max-width: var(--maxw);
    margin: 0 auto;
    padding: 0 28px
}

.svg-defs {
    position: absolute;
    width: 0;
    height: 0;
    overflow: hidden
}

.ico {
    width: 1em;
    height: 1em;
    flex: none;
    stroke: currentColor;
    fill: none;
    stroke-width: 1.7;
    stroke-linecap: round;
    stroke-linejoin: round
}

.mi {
    width: 1em;
    height: 1em;
    flex: none;
    fill: currentColor;
    stroke: none
}

.fai {
    line-height: 1;
    display: inline-block
}

.fcard .bub .fai {
    font-size: 25px
}

.eyebrow {
    display: inline-flex;
    align-items: center;
    gap: 12px;
    font-family: var(--accent);
    font-size: 12px;
    font-weight: 500;
    letter-spacing: .24em;
    text-transform: uppercase;
    color: var(--azur);
    margin: 0 0 18px
}

.eyebrow::before {
    content: "";
    width: 28px;
    height: 1px;
    background: var(--azur);
    opacity: .9
}

.eyebrow.c::after {
    content: "";
    width: 28px;
    height: 1px;
    background: var(--azur);
    opacity: .9
}

.pros .eyebrow::before {
    background: var(--azur-l)
}

h2.sec {
    font-family: var(--display);
    font-weight: var(--dw);
    letter-spacing: var(--dls);
    text-transform: var(--dcase);
    font-size: calc(clamp(32px, 4.8vw, 52px) * var(--dscale));
    line-height: 1.12
}

.sub {
    font-size: 17.5px;
    color: var(--ink-2);
    max-width: 60ch;
    margin: 20px 0 0
}

.center {
    text-align: center
}

.center .sub {
    margin-left: auto;
    margin-right: auto
}

section {
    padding: 112px 0
}

.btn {
    position: relative;
    isolation: isolate;
    overflow: hidden;
    --fill: transparent;
    display: inline-flex;
    align-items: center;
    justify-content: center;
    gap: 10px;
    font-family: var(--ui);
    font-size: 14.5px;
    font-weight: 500;
    letter-spacing: .03em;
    padding: 15px 30px;
    border-radius: 999px;
    border: 1.5px solid transparent;
    cursor: pointer;
    white-space: nowrap;
    transition: color .4s var(--ease), transform .4s var(--swap), box-shadow .4s var(--ease), border-color .4s var(--ease), background-color .3s var(--ease), background-position .6s var(--sweep), letter-spacing .4s var(--ease)
}

.btn .ico {
    font-size: 17px
}

.btn:focus-visible {
    outline: 2px solid var(--blue);
    outline-offset: 3px
}

.btn-p {
    background: var(--fill-brand);
    background-size: 100% 200%;
    background-position: 50% 100%;
    color: #fff;
    box-shadow: 0 6px 18px rgba(16, 77, 132, .28)
}

.btn-p:hover {
    background-position: 50% 0;
    transform: translateY(-2px);
    box-shadow: 0 16px 34px rgba(11, 58, 102, .42), 0 0 0 1px rgba(127, 179, 218, .45)
}

.btn-o {
    border-color: var(--navy);
    color: var(--navy);
    background: transparent
}

.btn-o:hover {
    background: var(--navy);
    color: #fff;
    transform: translateY(-2px);
    box-shadow: 0 12px 26px rgba(11, 58, 102, .28)
}

.btn-w {
    background: #fff;
    color: var(--navy);
    box-shadow: 0 8px 26px rgba(0, 0, 0, .22)
}

.btn-w:hover {
    background: var(--wash-2);
    transform: translateY(-2px);
    box-shadow: 0 16px 38px rgba(0, 0, 0, .32)
}

.btn-gw {
    border-color: rgba(255, 255, 255, .6);
    color: #fff
}

.btn-gw:hover {
    background: rgba(255, 255, 255, .14);
    border-color: #fff;
    transform: translateY(-2px);
    box-shadow: 0 10px 30px rgba(0, 0, 0, .18)
}

.btn:active {
    transform: translateY(1px) scale(.975);
    transition-duration: .12s
}

.btn-sm {
    padding: 11px 22px;
    font-size: 13.5px
}

.pbar {
    position: fixed;
    top: 0;
    left: 0;
    right: 0;
    height: 3px;
    z-index: 200;
    transform: scaleX(0);
    transform-origin: 0 50%;
    background: linear-gradient(90deg, var(--navy-xd) 0%, var(--navy) 50%, var(--blue) 100%);
    pointer-events: none;
    will-change: transform
}

.topbar {
    background: var(--navy);
    color: rgba(255, 255, 255, .9);
    font-family: var(--ui);
    font-size: 13px
}

.topbar .wrap {
    display: flex;
    align-items: center;
    gap: 26px;
    height: 42px
}

.topbar a {
    display: inline-flex;
    align-items: center;
    gap: 7px;
    transition: color .2s
}

.topbar a:hover {
    color: #fff
}

.topbar .ico {
    font-size: 15px;
    color: var(--blue-l)
}

.topbar .sp {
    flex: 1
}

.topbar .stars {
    display: inline-flex;
    gap: 2px
}

.topbar .stars .ico {
    color: var(--azur-l);
    fill: var(--azur-l);
    stroke: none;
    font-size: 13px
}

.topbar .rank {
    display: inline-flex;
    align-items: center;
    gap: 9px
}

.hdr {
    position: sticky;
    top: 0;
    z-index: 90;
    background: rgba(255, 255, 255, .92);
    backdrop-filter: blur(14px);
    -webkit-backdrop-filter: blur(14px);
    border-bottom: 1px solid var(--line);
    transition: box-shadow .3s
}

.hdr.stuck {
    box-shadow: 0 6px 26px rgba(11, 58, 102, .09)
}

.hdr .wrap {
    display: flex;
    align-items: center;
    gap: 34px;
    height: 88px;
    transition: height .3s var(--ease)
}

.hdr.stuck .wrap {
    height: 72px
}

.mark {
    display: block;
    position: relative;
    overflow: hidden;
    aspect-ratio: 1.61
}

.mark img {
    position: absolute;
    left: 50%;
    top: 50%;
    transform: translate(-50%, -50%);
    width: 127%;
    max-width: none
}

.brand .mark {
    height: 56px;
    transition: height .3s var(--ease)
}

.hdr.stuck .brand .mark {
    height: 46px
}

.nav {
    margin-left: auto
}

.nav ul {
    display: flex;
    gap: 32px;
    list-style: none;
    margin: 0;
    padding: 0
}

.nav a {
    position: relative;
    font-family: var(--ui);
    font-size: 13.5px;
    font-weight: 500;
    letter-spacing: .11em;
    text-transform: uppercase;
    color: var(--navy);
    padding: 6px 0;
    transition: color .25s
}

.nav a::after {
    content: "";
    position: absolute;
    left: 0;
    right: 100%;
    bottom: 0;
    height: 2px;
    background: var(--blue);
    transition: right .35s var(--ease)
}

.nav a:hover {
    color: var(--blue)
}

.nav a:hover::after {
    right: 0
}

.hdr .cta {
    display: flex;
    align-items: center;
    gap: 14px
}

.burger {
    display: none;
    width: 44px;
    height: 44px;
    border: 1px solid var(--line);
    background: #fff;
    border-radius: 12px;
    cursor: pointer;
    align-items: center;
    justify-content: center;
    color: var(--navy)
}

.burger .ico {
    font-size: 22px
}

.mnav {
    position: fixed;
    inset: 0;
    z-index: 120;
    background: var(--navy);
    display: flex;
    flex-direction: column;
    padding: 26px 28px 40px;
    transform: translateX(100%);
    transition: transform .45s var(--ease);
    visibility: hidden;
    overflow-y: auto
}

.mnav.open {
    transform: none;
    visibility: visible
}

.mnav .top {
    display: flex;
    align-items: center;
    justify-content: space-between;
    margin-bottom: 36px
}

.mnav .plate {
    background: #fff;
    border-radius: 12px;
    padding: 10px 16px
}

.mnav .plate .mark {
    height: 46px
}

.mnav .x {
    width: 44px;
    height: 44px;
    border-radius: 12px;
    border: 1px solid rgba(255, 255, 255, .3);
    background: transparent;
    color: #fff;
    cursor: pointer;
    display: grid;
    place-items: center
}

.mnav .x .ico {
    font-size: 22px
}

.mnav ul {
    list-style: none;
    margin: 0;
    padding: 0;
    display: grid;
    gap: 4px
}

.mnav li {
    opacity: 0;
    transform: translateY(14px)
}

.mnav.open li {
    animation: mIn .5s var(--ease) forwards
}

@keyframes mIn {
    to {
        opacity: 1;
        transform: none
    }
}

.mnav a {
    display: flex;
    align-items: center;
    justify-content: space-between;
    font-family: var(--display);
    font-weight: var(--dw);
    letter-spacing: var(--dls);
    font-size: calc(31px * var(--dscale));
    color: #fff;
    padding: 13px 0;
    border-bottom: 1px solid rgba(255, 255, 255, .13)
}

.mnav a .ico {
    font-size: 19px;
    color: var(--blue-l)
}

.mnav .foot {
    margin-top: auto;
    padding-top: 28px;
    display: grid;
    gap: 12px;
    font-family: var(--ui);
    font-size: 15px;
    color: rgba(255, 255, 255, .85)
}

.mnav .foot a {
    font-family: var(--ui);
    font-size: 15px;
    display: inline-flex;
    gap: 10px;
    border: 0;
    padding: 0;
    justify-content: flex-start;
    letter-spacing: normal
}

.mnav .foot .ico {
    font-size: 17px
}

.hero {
    position: relative;
    min-height: clamp(560px, 88vh, 880px);
    display: grid;
    align-items: center;
    overflow: hidden;
    background: var(--navy-xd)
}

.hero .slides {
    position: absolute;
    inset: 0
}

.hero .slide {
    position: absolute;
    inset: 0;
    opacity: 0;
    transition: opacity 1.5s var(--ease)
}

.hero .slide.on {
    opacity: 1
}

.hero .slide img {
    width: 100%;
    height: 100%;
    object-fit: cover;
    transform: scale(1.04)
}

.hero .slide.on img {
    animation: kb 9s linear forwards
}

@keyframes kb {
    from {
        transform: scale(1.04)
    }
    to {
        transform: scale(1.15)
    }
}

.hero .veil {
    position: absolute;
    inset: 0;
    background: linear-gradient(105deg, rgba(7, 40, 68, .86) 0%, rgba(7, 40, 68, .62) 42%, rgba(7, 40, 68, .28) 100%)
}

.hero .veil2 {
    position: absolute;
    inset: 0;
    background: linear-gradient(to top, rgba(7, 40, 68, .72), transparent 42%)
}

.hero .wrap {
    position: relative;
    z-index: 2;
    padding-top: 104px;
    padding-bottom: 190px
}

.hero .rate {
    display: inline-flex;
    align-items: center;
    gap: 11px;
    background: rgba(255, 255, 255, .13);
    border: 1px solid rgba(255, 255, 255, .26);
    backdrop-filter: blur(8px);
    border-radius: 999px;
    padding: 8px 18px;
    font-family: var(--accent);
    font-size: 11.5px;
    font-weight: 500;
    letter-spacing: .19em;
    text-transform: uppercase;
    color: #fff
}

.hero .rate .ico {
    font-size: 13px;
    color: var(--azur-l);
    fill: var(--azur-l);
    stroke: none
}

.hero h1 {
    font-family: var(--display);
    font-weight: var(--dw);
    letter-spacing: var(--dls);
    text-transform: var(--dcase);
    color: #fff;
    font-size: calc(clamp(42px, 6.8vw, 84px) * var(--dscale));
    line-height: 1.05;
    margin: 26px 0 0;
    max-width: 15ch;
    text-shadow: 0 3px 40px rgba(0, 0, 0, .35)
}

.hero h1 .l {
    font-family: var(--display2);
    font-weight: var(--d2w);
    letter-spacing: var(--d2ls);
    font-style: var(--d2style);
    font-size: calc(1em * var(--d2scale));
    color: var(--blue-l);
    display: inline-block;
    line-height: .95;
    vertical-align: baseline
}

.hero p.tag {
    font-family: var(--ui);
    font-weight: 300;
    font-size: clamp(16px, 2vw, 20px);
    color: rgba(255, 255, 255, .92);
    letter-spacing: .05em;
    margin: 24px 0 0;
    max-width: 46ch
}

.hero .acts {
    display: flex;
    flex-wrap: wrap;
    gap: 14px;
    margin-top: 38px
}

.rv {
    opacity: 0;
    transform: translateY(26px);
    animation: rvUp .9s var(--ease) forwards
}

@keyframes rvUp {
    to {
        opacity: 1;
        transform: none
    }
}

.hero .dots {
    position: absolute;
    left: 0;
    right: 0;
    bottom: 150px;
    z-index: 3;
    display: flex;
    gap: 10px;
    max-width: var(--maxw);
    margin: 0 auto;
    padding: 0 28px
}

.hero .dots button {
    width: 34px;
    height: 4px;
    border-radius: 9px;
    border: 0;
    background: rgba(255, 255, 255, .34);
    cursor: pointer;
    padding: 0;
    transition: background .3s, width .3s
}

.hero .dots button[aria-current="true"] {
    background: #fff;
    width: 52px
}

.scrollcue {
    position: absolute;
    left: 50%;
    bottom: 118px;
    transform: translateX(-50%);
    z-index: 3;
    color: rgba(255, 255, 255, .75);
    display: grid;
    place-items: center;
    gap: 7px;
    font-family: var(--accent);
    font-size: 10px;
    letter-spacing: .24em;
    text-transform: uppercase
}

.scrollcue .ico {
    font-size: 19px;
    animation: bob 2.1s ease-in-out infinite
}

@keyframes bob {
    0%,
    100% {
        transform: translateY(0)
    }
    50% {
        transform: translateY(7px)
    }
}

.bookwrap {
    position: relative;
    z-index: 20;
    margin-top: -92px
}

.book {
    background: #fff;
    border-radius: var(--r-lg);
    box-shadow: var(--sh-3);
    padding: 26px;
    display: grid;
    grid-template-columns: repeat(4, 1fr) auto;
    gap: 18px;
    align-items: end;
    border: 1px solid rgba(255, 255, 255, .7)
}

.book .f {
    display: grid;
    gap: 8px;
    min-width: 0
}

.book label {
    display: flex;
    align-items: center;
    gap: 7px;
    font-family: var(--accent);
    font-size: 11px;
    font-weight: 500;
    letter-spacing: .16em;
    text-transform: uppercase;
    color: var(--ink-3)
}

.book label .ico {
    font-size: 15px;
    color: var(--blue)
}

.book input,
.book select {
    font-family: var(--body);
    font-size: 15.5px;
    font-weight: 500;
    color: var(--navy);
    border: 0;
    border-bottom: 1.5px solid var(--line);
    background: transparent;
    padding: 8px 2px;
    border-radius: 0;
    transition: border-color .25s;
    min-width: 0;
    width: 100%
}

.book input:focus,
.book select:focus {
    outline: 0;
    border-color: var(--blue)
}

.book .go {
    height: 52px;
    padding: 0 30px
}

.book .go[aria-busy="true"] {
    opacity: .75;
    pointer-events: none
}

.book-ferme {
    display: flex;
    align-items: center;
    gap: 18px;
    margin-bottom: 16px;
    padding: 20px 26px;
    background: #fff;
    border: 1px solid var(--line);
    border-left: 4px solid var(--blue);
    border-radius: var(--r-lg);
    box-shadow: var(--sh-2);
    animation: bookresIn .5s var(--ease)
}

.book-ferme[hidden] {
    display: none
}

.book-ferme .rond {
    flex: none;
    width: 46px;
    height: 46px;
    display: grid;
    place-items: center;
    border-radius: 50%;
    background: var(--wash);
    color: var(--blue)
}

.book-ferme .rond .ico {
    font-size: 22px
}

.book-ferme .txt {
    display: grid;
    gap: 4px;
    font-family: var(--ui)
}

.book-ferme .txt b {
    font-family: var(--display);
    font-weight: 500;
    letter-spacing: var(--dls);
    font-size: calc(20px * var(--dscale));
    color: var(--navy)
}

.book-ferme .txt span {
    font-size: 13.5px;
    line-height: 1.6;
    color: var(--ink-2)
}

.book-ferme .txt .quand {
    color: var(--ink-3)
}

.book-ferme .btn {
    margin-left: auto;
    flex: none
}

@media(max-width:700px) {
    .book-ferme {
        flex-wrap: wrap;
        padding: 18px
    }
    .book-ferme .btn {
        margin-left: 0;
        width: 100%
    }
}

.book.ferme .f,
.book.ferme .go {
    opacity: .58;
    filter: grayscale(.25);
    pointer-events: none
}

.bookres {
    margin-top: 16px;
    background: #fff;
    border: 1px solid var(--line);
    border-radius: var(--r-lg);
    box-shadow: var(--sh-2);
    overflow: hidden;
    animation: bookresIn .5s var(--ease)
}

@keyframes bookresIn {
    from {
        opacity: 0;
        transform: translateY(-10px)
    }
    to {
        opacity: 1;
        transform: none
    }
}

.bookres-head {
    display: flex;
    align-items: center;
    gap: 14px;
    flex-wrap: wrap;
    padding: 16px 24px;
    border-bottom: 1px solid var(--line);
    background: var(--wash)
}

.bookres-head .t {
    font-family: var(--display);
    font-weight: 500;
    letter-spacing: var(--dls);
    font-size: calc(21px * var(--dscale));
    color: var(--navy)
}

.bookres-head .s {
    font-family: var(--ui);
    font-size: 12.5px;
    color: var(--ink-3);
    margin-left: auto
}

.bookres-scroll {
    overflow-x: auto
}

.bookres table {
    width: 100%;
    border-collapse: collapse;
    min-width: 780px
}

.bookres th {
    font-family: var(--accent);
    font-size: 10.5px;
    font-weight: 500;
    letter-spacing: .15em;
    text-transform: uppercase;
    color: var(--ink-3);
    padding: 13px 20px;
    border-bottom: 1px solid var(--line);
    white-space: nowrap
}

.bookres td {
    padding: 13px 20px;
    border-bottom: 1px solid var(--line);
    vertical-align: middle;
    font-family: var(--ui);
    font-size: 13.5px;
    color: var(--ink-2);
    white-space: nowrap
}

.bookres th,
.bookres td {
    text-align: center
}

.bookres th:first-child,
.bookres td:first-child {
    text-align: left
}

.bookres th:last-child,
.bookres td:last-child {
    text-align: right
}

.bookres tbody tr {
    transition: background .25s var(--ease)
}

.bookres tbody tr:hover {
    background: var(--wash-2)
}

.bookres tbody tr:last-child td {
    border-bottom: 0
}

.bookres .rm {
    display: flex;
    align-items: center;
    gap: 13px;
    min-width: 210px
}

.bookres .rm img {
    width: 66px;
    height: 50px;
    object-fit: cover;
    border-radius: 9px;
    flex: none;
    box-shadow: var(--sh-1)
}

.bookres .rm b {
    font-family: var(--display);
    font-weight: 500;
    font-size: calc(18px * var(--dscale));
    color: var(--navy);
    display: block;
    line-height: 1.15
}

.bookres .rm em {
    font-style: normal;
    font-size: 12px;
    color: var(--ink-3)
}

.bookres .price b {
    font-family: var(--display);
    font-weight: 500;
    font-size: calc(22px * var(--dscale));
    color: var(--navy);
    line-height: 1
}

.bookres .price em {
    font-style: normal;
    font-size: 11.5px;
    color: var(--ink-3);
    display: block;
    margin-top: 3px
}

.bookres .tag {
    display: inline-flex;
    align-items: center;
    gap: 6px;
    font-size: 12.5px;
    font-weight: 600;
    color: var(--blue)
}

.bookres .tag::before {
    content: "";
    width: 7px;
    height: 7px;
    border-radius: 50%;
    background: #2fa96b;
    box-shadow: 0 0 0 3px rgba(47, 169, 107, .16)
}

.bookres .go2 {
    padding: 9px 20px;
    font-size: 13px
}

.bookres .zone {
    background: rgba(46, 119, 180, .07)
}

.bookres th.zone-sub,
.bookres td.tf {
    width: 15%
}

.bookres .zone-a {
    border-left: 1px solid var(--line)
}

.bookres .zone-b {
    border-right: 1px solid var(--line)
}

.bookres th.zone-top {
    padding-bottom: 4px;
    border-bottom: 0;
    color: var(--ink-2)
}

.bookres th.zone-sub {
    padding-top: 0;
    font-size: 9.5px;
    letter-spacing: .12em;
    color: var(--azur)
}

.bookres th .hint {
    display: block;
    position: relative;
    margin-top: 5px;
    font-family: var(--ui);
    font-size: 9.5px;
    font-weight: 500;
    letter-spacing: 0;
    text-transform: none;
    color: var(--ink-3);
    cursor: help
}

.bookres th .hint::after {
    content: attr(data-hint);
    position: absolute;
    top: calc(100% + 9px);
    left: 50%;
    z-index: 5;
    width: 208px;
    padding: 10px 13px;
    border-radius: 10px;
    background: var(--navy);
    color: #fff;
    font-size: 11.5px;
    font-weight: 400;
    line-height: 1.5;
    letter-spacing: .01em;
    text-transform: none;
    white-space: normal;
    text-align: left;
    box-shadow: 0 8px 24px rgba(7, 40, 68, .28);
    opacity: 0;
    transform: translate(-50%, -5px);
    pointer-events: none;
    transition: opacity .2s var(--ease), transform .2s var(--ease)
}

.bookres th .hint:hover::after,
.bookres th .hint:focus-visible::after {
    opacity: 1;
    transform: translate(-50%, 0)
}

.bookres td.tf {
    padding: 0
}

.bookres td.tf input {
    position: absolute;
    width: 1px;
    height: 1px;
    opacity: 0;
    pointer-events: none
}

.bookres td.tf label {
    display: block;
    padding: 12px 10px;
    margin: 9px 12px;
    border: 1.5px solid rgba(16, 77, 132, .12);
    border-radius: 12px;
    background: rgba(255, 255, 255, .5);
    cursor: pointer;
    transition: background .22s var(--ease), border-color .22s var(--ease), box-shadow .22s var(--ease)
}

.bookres td.tf label:hover {
    background: #fff;
    border-color: var(--steel)
}

.bookres td.tf label b {
    color: var(--ink-3);
    transition: color .22s var(--ease)
}

.bookres td.tf input:checked+label {
    background: #fff;
    border-color: var(--azur);
    box-shadow: 0 4px 16px rgba(16, 77, 132, .15)
}

.bookres td.tf input:checked+label b {
    color: var(--navy)
}

.bookres td.tf input:focus-visible+label {
    outline: 2px solid var(--azur);
    outline-offset: 2px
}

.bookres td.tf.vide {
    color: var(--ink-3)
}

.bookres td.tf .cond {
    display: none
}

.bookres td.total b {
    font-size: calc(26px * var(--dscale))
}

.bookres td.total::after {
    content: attr(data-cond);
    display: block;
    margin-top: 4px;
    font-size: 10.5px;
    font-weight: 600;
    letter-spacing: .02em;
    color: var(--azur)
}

.bookres-msg {
    padding: 26px 24px;
    font-family: var(--ui);
    font-size: 14.5px;
    line-height: 1.6;
    color: var(--ink-2);
    text-align: center
}

.bookres-msg.err {
    color: #b4232a
}

.bookres-none {
    padding: 15px 24px;
    font-family: var(--ui);
    font-size: 12.5px;
    color: var(--ink-3);
    border-top: 1px solid var(--line);
    background: var(--wash)
}

.bookres-load {
    display: flex;
    align-items: center;
    justify-content: center;
    gap: 12px;
    padding: 34px;
    color: var(--ink-3);
    font-family: var(--ui);
    font-size: 14px
}

.bookres-spin {
    width: 22px;
    height: 22px;
    border: 2.5px solid var(--line);
    border-top-color: var(--blue);
    border-radius: 50%;
    animation: brspin .8s linear infinite
}

@keyframes brspin {
    to {
        transform: rotate(360deg)
    }
}

@media(max-width:560px) {
    .bookres-head {
        padding: 14px 18px
    }
    .bookres th,
    .bookres td {
        padding: 11px 16px
    }
}

.bookwrap-foot {
    text-align: center;
    margin-top: 14px
}

.booklink {
    background: #fff;
    border: 1.5px solid transparent;
    cursor: pointer;
    display: inline-flex;
    align-items: center;
    gap: 11px;
    font-family: var(--ui);
    font-size: 15px;
    font-weight: 500;
    color: var(--navy);
    padding: 14px 28px;
    border-radius: 999px;
    box-shadow: var(--sh-1);
    transition: color .25s var(--ease), background .25s var(--ease), border-color .25s var(--ease), box-shadow .3s var(--ease), transform .25s var(--ease)
}

.booklink:hover {
    color: var(--navy);
    border-color: var(--blue);
    box-shadow: 0 0 0 4px rgba(78, 145, 198, .16), var(--sh-2);
    transform: translateY(-2px)
}

.booklink:focus-visible {
    outline: 0;
    border-color: var(--blue);
    box-shadow: 0 0 0 4px rgba(78, 145, 198, .28), var(--sh-2)
}

.booklink:active {
    transform: translateY(0);
    transition-duration: .1s
}

.booklink .ico {
    font-size: 18px;
    color: var(--blue)
}

.rez {
    position: fixed;
    inset: 0;
    z-index: 210;
    display: grid;
    place-items: center;
    padding: 20px
}

.rez[hidden] {
    display: none
}

.rez-bg {
    position: absolute;
    inset: 0;
    background: rgba(7, 40, 68, .55);
    -webkit-backdrop-filter: blur(4px);
    backdrop-filter: blur(4px);
    animation: rezfade .3s var(--ease)
}

@keyframes rezfade {
    from {
        opacity: 0
    }
    to {
        opacity: 1
    }
}

#cgu {
    z-index: 220
}

.rez-box {
    position: relative;
    z-index: 1;
    width: min(520px, 100%);
    max-height: 90vh;
    overflow-y: auto;
    scrollbar-width: none;
    -ms-overflow-style: none;
    background: #fff;
    border-radius: var(--r-lg);
    box-shadow: var(--sh-3);
    padding: 38px 36px;
    animation: rezin .4s var(--ease)
}

.rez-box::-webkit-scrollbar {
    width: 0;
    height: 0
}

@keyframes rezin {
    from {
        opacity: 0;
        transform: translateY(16px) scale(.985)
    }
    to {
        opacity: 1;
        transform: none
    }
}

.rez-x {
    position: absolute;
    top: 15px;
    right: 15px;
    width: 40px;
    height: 40px;
    border: 1px solid var(--line);
    background: #fff;
    border-radius: 12px;
    color: var(--navy);
    cursor: pointer;
    display: grid;
    place-items: center;
    transition: all .25s var(--ease)
}

.rez-x:hover {
    background: var(--navy);
    color: #fff;
    border-color: var(--navy)
}

.rez-x .ico {
    font-size: 20px
}

.rez h3 {
    font-family: var(--display);
    font-weight: var(--dw);
    letter-spacing: var(--dls);
    font-size: calc(31px * var(--dscale));
    margin-bottom: 8px
}

.rez-intro {
    font-family: var(--ui);
    font-size: 13.5px;
    color: var(--ink-3);
    margin: 0 0 22px;
    line-height: 1.6
}

.cgu-box {
    width: min(660px, 100%)
}

.pay-cgu {
    display: flex;
    align-items: flex-start;
    gap: 12px;
    padding: 14px 16px;
    border: 1.5px solid var(--line);
    border-radius: 12px;
    background: var(--wash);
    cursor: pointer;
    transition: border-color .25s var(--ease), background .25s var(--ease)
}

.pay-cgu:hover {
    border-color: var(--steel)
}

.pay-cgu input {
    position: absolute;
    width: 1px;
    height: 1px;
    opacity: 0;
    pointer-events: none
}

.pay-cgu .box {
    flex: none;
    width: 21px;
    height: 21px;
    margin-top: 1px;
    border: 1.5px solid var(--steel);
    border-radius: 6px;
    background: #fff;
    display: grid;
    place-items: center;
    color: #fff;
    transition: background .2s var(--ease), border-color .2s var(--ease)
}

.pay-cgu .box .ico {
    font-size: 13px;
    stroke-width: 3;
    opacity: 0;
    transform: scale(.6);
    transition: opacity .2s var(--ease), transform .2s var(--ease)
}

.pay-cgu input:checked+.box {
    background: var(--azur);
    border-color: var(--azur)
}

.pay-cgu input:checked+.box .ico {
    opacity: 1;
    transform: scale(1)
}

.pay-cgu input:focus-visible+.box {
    outline: 2px solid var(--azur);
    outline-offset: 3px
}

.pay-cgu .txt {
    font-family: var(--ui);
    font-size: 13px;
    line-height: 1.6;
    color: var(--ink-2)
}

.pay-cgu .txt button {
    font: inherit;
    color: var(--azur);
    font-weight: 600;
    background: none;
    border: 0;
    padding: 0;
    text-decoration: underline;
    text-underline-offset: 2px;
    cursor: pointer
}

.pay-cgu.miss {
    border-color: #b4232a;
    background: rgba(180, 35, 42, .05)
}

.pay-cgu.miss .box {
    border-color: #b4232a
}

.cgu-corps {
    font-family: var(--ui);
    font-size: 13.5px;
    line-height: 1.75;
    color: var(--ink-2)
}

.cgu-corps p {
    margin: 0 0 16px
}

.cgu-corps b {
    font-weight: 600;
    color: var(--navy)
}

.cgu-chapo {
    font-size: 14.5px;
    color: var(--navy);
    padding-bottom: 16px;
    border-bottom: 1px solid var(--line)
}

.cgu-fin {
    margin-top: 22px;
    padding-top: 16px;
    border-top: 1px solid var(--line);
    font-size: 13px;
    color: var(--ink-3)
}

.cgu-fin a {
    color: var(--azur);
    font-weight: 600
}

.cgu-corps h4 {
    font-family: var(--accent);
    font-size: 11px;
    font-weight: 500;
    letter-spacing: .14em;
    text-transform: uppercase;
    color: var(--azur);
    margin: 26px 0 10px
}

.cgu-corps h4:first-child {
    margin-top: 4px
}

.cgu-corps ul {
    margin: 0 0 16px;
    padding-left: 20px
}

.cgu-corps li {
    margin-bottom: 7px
}

.cgu-corps a {
    color: var(--azur);
    text-decoration: underline;
    text-underline-offset: 2px
}

.cgu-corps code {
    font-family: ui-monospace, "SFMono-Regular", Menlo, monospace;
    font-size: 12.5px;
    background: var(--wash);
    border: 1px solid var(--line);
    border-radius: 5px;
    padding: 1px 6px
}

.tofill {
    background: rgba(255, 214, 0, .3);
    box-shadow: 0 0 0 1px rgba(201, 162, 39, .55);
    border-radius: 3px;
    padding: 0 4px;
    font-style: italic
}

.tofill::before {
    content: "à compléter : ";
    font-style: normal;
    font-weight: 600;
    font-size: .85em;
    text-transform: uppercase;
    letter-spacing: .04em;
    color: #8a6d16
}

.rez-form {
    display: grid;
    gap: 14px
}

.rez-form label {
    display: grid;
    gap: 6px;
    font-family: var(--accent);
    font-size: 11px;
    font-weight: 500;
    letter-spacing: .14em;
    text-transform: uppercase;
    color: var(--ink-3)
}

.rez-form input {
    font-family: var(--body);
    font-size: 15px;
    color: var(--navy);
    background: var(--wash);
    border: 1.5px solid var(--line);
    border-radius: 11px;
    padding: 13px 15px;
    transition: border-color .25s, box-shadow .25s
}

.rez-form input:focus {
    outline: 0;
    border-color: var(--blue);
    box-shadow: 0 0 0 4px rgba(78, 145, 198, .14)
}

.rez-form .btn {
    margin-top: 6px;
    justify-content: center
}

.rez-box-wide {
    width: min(600px, 100%)
}

.ext-cond {
    margin-top: 0
}

.ext-tarifs {
    display: grid;
    grid-template-columns: 1fr 1fr;
    gap: 10px;
    margin-bottom: 4px
}

.ext-tarif {
    font-family: var(--ui);
    text-align: left;
    padding: 12px 14px;
    border: 1.5px solid var(--line);
    border-radius: var(--r-sm, 10px);
    background: #fff;
    cursor: pointer;
    transition: border-color .2s var(--ease), background .2s var(--ease)
}

.ext-tarif:hover {
    background: var(--wash)
}

.ext-tarif.on {
    border-color: var(--azur);
    background: var(--azur-soft)
}

.ext-tarif b {
    display: block;
    font-size: 13px;
    font-weight: 600;
    color: var(--navy)
}

.ext-tarif .m {
    display: block;
    margin-top: 4px;
    font-family: var(--display);
    font-size: calc(20px * var(--dscale));
    color: var(--navy);
    line-height: 1
}

.ext-tarif .n {
    display: block;
    margin-top: 3px;
    font-size: 11.5px;
    color: var(--ink-3)
}

.ext-tarif .c {
    display: block;
    margin-top: 6px;
    padding-top: 6px;
    border-top: 1px solid var(--line);
    font-size: 11px;
    font-weight: 600;
    color: var(--ink-3)
}

.ext-tarif.on .c {
    color: var(--azur)
}

@media(max-width:560px) {
    .ext-tarifs {
        grid-template-columns: 1fr
    }
}

.ext-group {
    margin-top: 22px
}

.ext-group+.ext-group {
    margin-top: 26px
}

.ext-group>.lbl {
    font-family: var(--accent);
    font-size: 11px;
    font-weight: 500;
    letter-spacing: .14em;
    text-transform: uppercase;
    color: var(--azur);
    margin: 0 0 12px;
    display: flex;
    align-items: center;
    gap: 10px
}

.ext-group>.lbl::after {
    content: "";
    flex: 1;
    height: 1px;
    background: var(--line)
}

.ext-row {
    display: flex;
    align-items: center;
    gap: 14px;
    padding: 11px 0;
    border-bottom: 1px solid var(--line)
}

.ext-row:last-child {
    border-bottom: 0
}

.ext-row .info {
    flex: 1;
    min-width: 0
}

.ext-row .info b {
    font-family: var(--ui);
    font-weight: 600;
    font-size: 14px;
    color: var(--navy);
    display: block
}

.ext-row .info span {
    font-family: var(--ui);
    font-size: 12px;
    color: var(--ink-3)
}

.ext-row .line {
    font-family: var(--ui);
    font-size: 13.5px;
    font-weight: 600;
    color: var(--navy);
    min-width: 62px;
    text-align: right
}

.stepper {
    display: inline-flex;
    align-items: center;
    border: 1.5px solid var(--line);
    border-radius: 999px;
    overflow: hidden;
    flex: none
}

.stepper button {
    width: 32px;
    height: 32px;
    border: 0;
    background: #fff;
    color: var(--navy);
    cursor: pointer;
    font-size: 18px;
    line-height: 1;
    display: grid;
    place-items: center;
    transition: background .2s, color .2s
}

.stepper button:hover:not(:disabled) {
    background: var(--navy);
    color: #fff
}

.stepper button:disabled {
    color: var(--mist);
    cursor: default
}

.stepper input {
    width: 34px;
    text-align: center;
    border: 0;
    background: transparent;
    font-family: var(--ui);
    font-size: 14px;
    font-weight: 600;
    color: var(--navy);
    pointer-events: none;
    -moz-appearance: textfield;
    appearance: textfield
}

.stepper input::-webkit-outer-spin-button,
.stepper input::-webkit-inner-spin-button {
    -webkit-appearance: none;
    margin: 0
}

.ext-foot {
    display: flex;
    align-items: center;
    gap: 16px;
    flex-wrap: wrap;
    margin-top: 26px;
    padding-top: 20px;
    border-top: 2px solid var(--navy)
}

.ext-total {
    display: flex;
    flex-direction: column;
    gap: 2px;
    margin-right: auto
}

.ext-total span {
    font-family: var(--accent);
    font-size: 10.5px;
    font-weight: 500;
    letter-spacing: .13em;
    text-transform: uppercase;
    color: var(--ink-3)
}

.ext-total b {
    font-family: var(--display);
    font-weight: 500;
    letter-spacing: var(--dls);
    font-size: calc(30px * var(--dscale));
    color: var(--navy);
    line-height: 1
}

.ext-total small {
    font-family: var(--ui);
    font-size: 11.5px;
    color: var(--ink-3);
    letter-spacing: normal;
    text-transform: none
}

.ext-note {
    font-family: var(--ui);
    font-size: 12px;
    color: var(--ink-3);
    margin: 14px 0 0;
    line-height: 1.5
}

.pay-grid {
    display: grid;
    grid-template-columns: 1fr 1fr;
    gap: 12px
}

.pay-grid+.pay-grid {
    margin-top: 12px
}

.pay-grid .full {
    grid-column: 1 / -1
}

.pay-grid[hidden],
.typechoice[hidden],
.pay-grid label[hidden] {
    display: none
}

.pay-grid label {
    display: grid;
    grid-template-rows: 18px auto;
    gap: 6px;
    align-content: start;
    font-family: var(--accent);
    font-size: 10.5px;
    font-weight: 500;
    letter-spacing: .13em;
    text-transform: uppercase;
    color: var(--ink-3)
}

.pay-grid label>span:first-child {
    display: block;
    line-height: 18px;
    white-space: nowrap;
    overflow: hidden;
    text-overflow: ellipsis
}

.pay-grid input,
.pay-grid select,
.cc-btn {
    height: 44px;
    box-sizing: border-box;
    font-family: var(--body);
    font-size: 14.5px;
    color: var(--navy);
    background: var(--wash);
    border: 1.5px solid var(--line);
    border-radius: 10px;
    padding: 0 13px;
    transition: border-color .25s, box-shadow .25s, background .25s
}

.pay-grid input::placeholder {
    color: var(--ink-3);
    opacity: .75
}

.pay-grid input:hover:not(:focus),
.pay-grid select:hover:not(:focus) {
    border-color: var(--mist)
}

.pay-grid input:focus,
.pay-grid select:focus {
    outline: 0;
    border-color: var(--blue);
    box-shadow: 0 0 0 4px rgba(78, 145, 198, .14)
}

.req {
    font-style: normal;
    color: #b4232a;
    margin-left: 3px;
    font-weight: 700
}

.pay-legend {
    font-family: var(--ui);
    font-size: 11.5px;
    color: var(--ink-3);
    margin: 12px 0 0
}

.pay-legend .req {
    margin-left: 0;
    margin-right: 3px
}

.pay-grid input.miss,
.pay-grid select.miss {
    border-color: #b4232a;
    background: rgba(180, 35, 42, .04);
    box-shadow: 0 0 0 4px rgba(180, 35, 42, .10)
}

.phone-row {
    display: grid;
    grid-template-columns: minmax(0, 1fr) minmax(0, 1.1fr);
    gap: 8px
}

.cc-tel {
    display: flex;
    align-items: baseline;
    gap: 6px;
    min-width: 0
}

.cc-tel .nom {
    overflow: hidden;
    text-overflow: ellipsis;
    white-space: nowrap
}

.cc-tel .ind {
    font-weight: 600;
    color: var(--navy);
    flex: none
}

.cc-wrap {
    position: relative;
    display: block
}

.cc-btn {
    width: 100%;
    display: flex;
    align-items: center;
    gap: 8px;
    cursor: pointer;
    text-align: left;
    font-family: var(--body);
    font-size: 14.5px;
    color: var(--navy);
    background: var(--wash);
    border: 1.5px solid var(--line);
    border-radius: 10px;
    padding: 10px 12px;
    transition: border-color .25s, box-shadow .25s
}

.cc-btn:hover {
    border-color: var(--blue)
}

.cc-btn[aria-expanded="true"] {
    border-color: var(--blue);
    box-shadow: 0 0 0 4px rgba(78, 145, 198, .14)
}

.cc-btn img {
    width: 22px;
    height: 16px;
    object-fit: cover;
    border-radius: 3px;
    flex: none;
    box-shadow: 0 0 0 1px rgba(0, 0, 0, .08)
}

.cc-btn span {
    overflow: hidden;
    text-overflow: ellipsis;
    white-space: nowrap
}

.cc-btn::after {
    content: "▾";
    margin-left: auto;
    color: var(--ink-3);
    font-size: 11px
}

.cc-list {
    padding: 0
}

.cc-search {
    position: sticky;
    top: 0;
    z-index: 1;
    background: #fff;
    padding: 8px;
    border-bottom: 1px solid var(--line)
}

.cc-search input {
    width: 100%;
    font-family: var(--body);
    font-size: 13.5px;
    padding: 8px 10px;
    border: 1.5px solid var(--line);
    border-radius: 8px;
    background: var(--wash);
    color: var(--navy)
}

.cc-search input:focus {
    outline: 0;
    border-color: var(--blue)
}

.cc-opt {
    display: flex;
    align-items: center;
    gap: 9px;
    padding: 9px 13px;
    cursor: pointer;
    font-family: var(--ui);
    font-size: 13.5px;
    color: var(--ink-2)
}

.cc-opt:hover,
.cc-opt.sel {
    background: var(--wash-2)
}

.cc-opt img {
    width: 22px;
    height: 16px;
    object-fit: cover;
    border-radius: 3px;
    flex: none;
    box-shadow: 0 0 0 1px rgba(0, 0, 0, .08)
}

.cc-opt b {
    color: var(--navy);
    font-weight: 500
}

.cc-opt em {
    font-style: normal;
    margin-left: auto;
    color: var(--ink-3);
    font-size: 12.5px
}

.typechoice {
    display: flex;
    gap: 10px;
    margin: 18px 0 4px
}

.typebtn {
    flex: 1;
    display: inline-flex;
    align-items: center;
    justify-content: center;
    gap: 9px;
    cursor: pointer;
    font-family: var(--ui);
    font-size: 13.5px;
    font-weight: 500;
    color: var(--ink-2);
    background: #fff;
    border: 1.5px solid var(--line);
    border-radius: 12px;
    padding: 12px 14px;
    transition: border-color .25s var(--ease), color .25s var(--ease), background .25s var(--ease), box-shadow .25s var(--ease)
}

.typebtn .ico {
    font-size: 17px;
    color: var(--ink-3);
    transition: color .25s
}

.typebtn:hover {
    border-color: var(--blue);
    color: var(--navy)
}

.typebtn.on {
    border-color: var(--navy);
    background: var(--navy);
    color: #fff;
    font-weight: 600;
    box-shadow: 0 8px 20px rgba(11, 58, 102, .22)
}

.typebtn.on .ico {
    color: #fff
}

.ac-wrap {
    position: relative
}

.ac-list,
.cc-list,
.cc-btn {
    text-transform: none;
    letter-spacing: normal;
    font-weight: 400;
    color: var(--ink-2)
}

.ac-list {
    position: absolute;
    top: 100%;
    left: 0;
    right: 0;
    z-index: 30;
    margin-top: 5px;
    background: #fff;
    border: 1px solid var(--line);
    border-radius: 11px;
    overflow: hidden;
    box-shadow: 0 14px 34px rgba(11, 58, 102, .18);
    max-height: 260px;
    overflow-y: auto
}

.ac-item {
    display: flex;
    flex-direction: column;
    gap: 2px;
    padding: 11px 14px;
    cursor: pointer;
    font-family: var(--ui);
    font-size: 13.5px;
    color: var(--ink-2);
    border-bottom: 1px solid var(--line);
    transition: background .15s
}

.ac-item:last-child {
    border-bottom: 0
}

.ac-item:hover,
.ac-item.sel {
    background: var(--wash-2)
}

.ac-item b {
    display: flex;
    align-items: center;
    gap: 7px;
    color: var(--navy);
    font-weight: 600;
    font-size: 14px;
    line-height: 1.3
}

.ac-item b img {
    width: 20px;
    height: 14px;
    object-fit: cover;
    border-radius: 2px;
    flex: none;
    box-shadow: 0 0 0 1px rgba(0, 0, 0, .08)
}

.ac-item span {
    font-size: 12.5px;
    color: var(--ink-3);
    line-height: 1.4
}

.ac-empty {
    padding: 12px 14px;
    font-family: var(--ui);
    font-size: 12.5px;
    color: var(--ink-3)
}

#payment-element {
    margin-top: 4px
}

.pay-alert {
    margin-top: 14px;
    padding: 13px 16px;
    border-radius: 11px;
    font-family: var(--ui);
    font-size: 13.5px;
    line-height: 1.55
}

.pay-alert.err {
    background: rgba(180, 35, 42, .08);
    color: #b4232a
}

.pay-alert.info {
    background: var(--wash-2);
    color: var(--ink-2)
}

.pay-ok {
    text-align: center;
    padding: 22px 0 6px
}

.pay-ok .tick {
    width: 62px;
    height: 62px;
    border-radius: 50%;
    background: rgba(47, 169, 107, .13);
    color: #1e7a4d;
    display: grid;
    place-items: center;
    margin: 0 auto 18px
}

.pay-ok .tick .ico {
    font-size: 30px;
    stroke-width: 2
}

.pay-ok h4 {
    font-family: var(--display);
    font-weight: var(--dw);
    letter-spacing: var(--dls);
    font-size: calc(30px * var(--dscale));
    margin-bottom: 10px
}

.pay-ok p {
    font-family: var(--ui);
    font-size: 14px;
    color: var(--ink-3);
    margin: 0 auto;
    max-width: 42ch;
    line-height: 1.6
}

.pay-ok .ref {
    display: inline-block;
    margin-top: 18px;
    padding: 10px 20px;
    border-radius: 999px;
    background: var(--wash);
    font-family: var(--ui);
    font-weight: 600;
    font-size: 14px;
    color: var(--navy)
}

@media(max-width:560px) {
    .pay-grid {
        grid-template-columns: 1fr
    }
}

.rezcard {
    margin-top: 22px;
    border: 1px solid var(--line);
    border-radius: var(--r);
    overflow: hidden;
    animation: rezin .35s var(--ease)
}

.rezcard-top {
    display: flex;
    align-items: center;
    gap: 12px;
    flex-wrap: wrap;
    padding: 15px 20px;
    background: var(--wash);
    border-bottom: 1px solid var(--line)
}

.rezcard-top .ref {
    font-family: var(--ui);
    font-weight: 600;
    font-size: 14.5px;
    color: var(--navy)
}

.rez-badge {
    margin-left: auto;
    font-family: var(--ui);
    font-size: 11px;
    font-weight: 600;
    letter-spacing: .04em;
    padding: 5px 12px;
    border-radius: 999px;
    text-transform: uppercase
}

.rez-badge.ok {
    background: rgba(47, 169, 107, .14);
    color: #1e7a4d
}

.rez-badge.wait {
    background: rgba(201, 162, 39, .18);
    color: #8a6d12
}

.rez-badge.ko {
    background: rgba(180, 35, 42, .12);
    color: #b4232a
}

.rezcard dl {
    margin: 0;
    padding: 6px 20px
}

.rezrow {
    display: flex;
    align-items: baseline;
    gap: 16px;
    padding: 11px 0;
    border-bottom: 1px solid var(--line)
}

.rezrow:last-child {
    border-bottom: 0
}

.rezrow dt {
    font-family: var(--accent);
    font-size: 10.5px;
    font-weight: 500;
    letter-spacing: .13em;
    text-transform: uppercase;
    color: var(--ink-3);
    width: 104px;
    flex: none
}

.rezrow dd {
    margin: 0;
    font-family: var(--ui);
    font-size: 14px;
    color: var(--ink-2);
    line-height: 1.55
}

.rezrow dd b {
    color: var(--navy);
    font-weight: 600
}

.rez-services-pris {
    border-top: 1px solid var(--line);
    padding: 16px 20px 18px;
    background: var(--wash)
}

.rez-services-pris .t {
    margin: 0 0 12px;
    font-family: var(--accent);
    font-size: 10.5px;
    font-weight: 500;
    letter-spacing: .13em;
    text-transform: uppercase;
    color: var(--azur)
}

.rez-extras {
    list-style: none;
    margin: 0;
    padding: 0;
    display: grid;
    gap: 11px
}

.rez-extras li {
    display: grid;
    grid-template-columns: 1fr auto;
    align-items: baseline;
    column-gap: 14px;
    font-family: var(--ui);
    font-size: 13.5px;
    color: var(--ink-2)
}

.rez-extras .nom {
    color: var(--navy);
    font-weight: 500
}

.rez-extras .nom b {
    margin-left: 6px;
    font-weight: 700;
    color: var(--blue)
}

.rez-extras .prix {
    font-weight: 600;
    color: var(--navy);
    white-space: nowrap
}

.rez-extras .pu {
    grid-column: 1 / -1;
    font-size: 12px;
    color: var(--ink-3);
    margin-top: 2px
}

.annul-sep {
    height: 1px;
    background: var(--line);
    margin: 26px 0 18px
}

.annul-lien {
    display: block;
    width: 100%;
    background: none;
    border: 0;
    cursor: pointer;
    padding: 8px;
    font-family: var(--ui);
    font-size: 13px;
    color: var(--ink-3);
    text-decoration: underline;
    text-underline-offset: 3px;
    transition: color .2s
}

.annul-lien:hover {
    color: #b4232a
}

.annul-box {
    border: 1px solid var(--line);
    border-radius: var(--r);
    padding: 20px;
    margin-top: 14px;
    background: var(--wash)
}

.annul-t {
    margin: 0 0 12px;
    font-family: var(--accent);
    font-size: 10.5px;
    font-weight: 500;
    letter-spacing: .13em;
    text-transform: uppercase;
    color: var(--azur)
}

.annul-regle {
    font-family: var(--ui);
    font-size: 13.5px;
    color: var(--ink-2);
    line-height: 1.6;
    margin: 0 0 12px
}

.annul-montants {
    display: grid;
    gap: 7px;
    font-family: var(--ui);
    font-size: 13.5px;
    margin-bottom: 4px
}

.annul-montants div {
    display: flex;
    justify-content: space-between;
    gap: 14px
}

.annul-montants .rembourse {
    border-top: 1px solid var(--line);
    padding-top: 8px;
    margin-top: 3px
}

.annul-montants .rembourse b {
    color: #1e7a4d;
    font-size: 16px
}

.annul-note {
    font-family: var(--ui);
    font-size: 12px;
    color: var(--ink-3);
    margin: 14px 0 0;
    line-height: 1.5
}

.annul-actions {
    display: flex;
    gap: 10px;
    justify-content: flex-end;
    margin-top: 16px;
    flex-wrap: wrap
}

.annul-code {
    display: grid;
    gap: 6px;
    margin-top: 14px
}

.annul-code span {
    font-family: var(--accent);
    font-size: 10.5px;
    font-weight: 500;
    letter-spacing: .13em;
    text-transform: uppercase;
    color: var(--ink-3)
}

.annul-code input {
    font-family: var(--body);
    font-size: 20px;
    font-weight: 600;
    letter-spacing: .3em;
    text-align: center;
    color: var(--navy);
    background: #fff;
    border: 1.5px solid var(--line);
    border-radius: 10px;
    padding: 12px
}

.annul-code input:focus {
    outline: 0;
    border-color: var(--blue);
    box-shadow: 0 0 0 4px rgba(78, 145, 198, .14)
}

.ext-row .deja {
    display: inline-block;
    margin-left: 8px;
    padding: 2px 8px;
    border-radius: 999px;
    background: var(--wash-2);
    color: var(--blue);
    font-size: 11px;
    font-weight: 600
}

.rez-msg {
    margin-top: 18px;
    padding: 14px 16px;
    border-radius: 11px;
    font-family: var(--ui);
    font-size: 13.5px;
    line-height: 1.55;
    text-align: center
}

.rez-msg.err {
    background: rgba(180, 35, 42, .08);
    color: #b4232a
}

.rez-load {
    display: flex;
    align-items: center;
    justify-content: center;
    gap: 11px;
    padding: 22px;
    color: var(--ink-3);
    font-family: var(--ui);
    font-size: 14px
}

@media(max-width:560px) {
    .rez-box {
        padding: 30px 22px
    }
}

.avis {
    background: linear-gradient(180deg, #fff 0%, var(--wash) 100%)
}

.avis [data-elfsight-app-lazy] {
    margin-top: 48px;
    min-height: 320px
}

.pin-track2 {
    position: relative
}

#essentiel.pin-stage2 {
    min-height: 100vh;
    display: grid;
    place-items: center;
    padding-top: 0;
    padding-bottom: 0
}

#essentiel.pin-stage2>.wrap {
    width: 100%
}

.feat.staged .fcard {
    opacity: 0;
    transform: translateY(28px);
    transition: opacity .5s var(--ease), transform .5s var(--ease), box-shadow .38s var(--ease), border-color .38s var(--ease)
}

.feat.staged .fcard.show {
    opacity: 1;
    transform: none
}

.feat.staged .fcard.pop {
    opacity: 1;
    transform: translateY(-8px);
    box-shadow: var(--sh-2);
    border-color: transparent
}

.feat.staged .fcard.pop .bub {
    background: var(--navy);
    color: #fff;
    transform: rotate(-6deg) scale(1.06)
}

@media(max-width:1080px) {
    #essentiel.pin-stage2 {
        min-height: 0;
        display: block;
        padding: 112px 0
    }
    .feat.staged .fcard {
        opacity: 1;
        transform: none
    }
}

@media(prefers-reduced-motion:reduce) {
    #essentiel.pin-stage2 {
        min-height: 0;
        display: block
    }
    .feat.staged .fcard {
        opacity: 1;
        transform: none
    }
}

.feat {
    display: grid;
    grid-template-columns: repeat(4, 1fr);
    gap: 22px;
    margin-top: 60px
}

.fcard {
    background: #fff;
    border: 1px solid var(--line);
    border-radius: var(--r);
    padding: 32px 26px;
    transition: transform .38s var(--ease), box-shadow .38s var(--ease), border-color .38s
}

.fcard:hover {
    transform: translateY(-8px);
    box-shadow: var(--sh-2);
    border-color: transparent
}

.fcard .bub {
    width: 56px;
    height: 56px;
    border-radius: 16px;
    background: var(--wash);
    color: var(--navy);
    display: grid;
    place-items: center;
    margin-bottom: 20px;
    transition: background .38s var(--ease), color .38s var(--ease), transform .38s var(--ease)
}

.fcard .bub .ico {
    font-size: 26px
}

.fcard:hover .bub {
    background: var(--navy);
    color: #fff;
    transform: rotate(-6deg) scale(1.06)
}

.fcard h3 {
    font-family: var(--display);
    font-weight: 500;
    letter-spacing: var(--dls);
    font-size: calc(23px * var(--dscale));
    margin-bottom: 9px
}

.fcard p {
    font-size: 15px;
    margin: 0;
    color: var(--ink-3);
    line-height: 1.65
}

.rooms {
    background: linear-gradient(180deg, var(--wash) 0%, #fff 100%)
}

.deckhead {
    display: flex;
    align-items: flex-end;
    justify-content: space-between;
    gap: 30px;
    flex-wrap: wrap;
    margin-bottom: 52px
}

.deckwrap {
    position: relative;
    display: grid;
    grid-template-columns: auto 1fr auto;
    align-items: center;
    gap: 22px
}

.stage {
    position: relative;
    min-height: 520px;
    --peek: 58px
}

.rcard {
    position: absolute;
    top: 0;
    height: 100%;
    left: calc(var(--peek) + 30px);
    right: calc(var(--peek) * 2 + 14px);
    background: #fff;
    border-radius: var(--r-lg);
    overflow: hidden;
    box-shadow: var(--sh-2);
    display: grid;
    grid-template-columns: 1.08fr 1fr;
    transform-origin: center center;
    transition: transform .82s var(--swap), opacity .62s var(--ease), box-shadow .82s var(--ease), filter .82s var(--ease);
    will-change: transform, opacity
}

.rcard.front {
    box-shadow: var(--sh-3)
}

.rcard:not(.front) {
    cursor: pointer
}

.rcard::after {
    content: "";
    position: absolute;
    inset: 0;
    pointer-events: none;
    opacity: 0;
    background: linear-gradient(90deg, rgba(16, 77, 132, 0) 55%, rgba(16, 77, 132, .13));
    transition: opacity .82s var(--ease)
}

.rcard:not(.front)::after {
    opacity: 1
}

.rcard.prev::after {
    background: linear-gradient(270deg, rgba(16, 77, 132, 0) 55%, rgba(16, 77, 132, .13))
}

.rcard .ph {
    position: relative;
    overflow: hidden;
    background: var(--mist);
    min-height: 240px
}

.rcard .ph img {
    position: absolute;
    inset: 0;
    width: 100%;
    height: 100%;
    object-fit: cover;
    transition: transform 1.1s var(--ease)
}

.rcard[data-rt="4"] .ph img {
    object-position: 15% 50%
}

.rcard.front:hover .ph img {
    transform: scale(1.05)
}

.rcard .badge {
    position: absolute;
    top: 20px;
    left: 20px;
    display: inline-flex;
    align-items: center;
    gap: 7px;
    background: rgba(255, 255, 255, .94);
    backdrop-filter: blur(6px);
    border-radius: 999px;
    padding: 8px 15px;
    font-family: var(--ui);
    font-size: 12px;
    font-weight: 600;
    color: var(--navy);
    box-shadow: var(--sh-1)
}

.rcard .badge .ico {
    font-size: 14px;
    color: var(--blue)
}

.rcard .body {
    padding: 40px 42px 38px;
    display: flex;
    flex-direction: column;
    min-width: 0
}

.rcard .num {
    font-family: var(--accent);
    font-size: 11px;
    font-weight: 500;
    letter-spacing: .22em;
    text-transform: uppercase;
    color: var(--azur);
    margin-bottom: 12px
}

.rcard h3 {
    font-family: var(--display);
    font-weight: var(--dw);
    letter-spacing: var(--dls);
    text-transform: var(--dcase);
    font-size: calc(clamp(27px, 2.9vw, 37px) * var(--dscale));
    margin-bottom: 13px;
    line-height: 1.1
}

.rcard p.d {
    font-size: 15px;
    color: var(--ink-3);
    margin: 0 0 8px;
    line-height: 1.65;
    display: -webkit-box;
    -webkit-line-clamp: 3;
    line-clamp: 3;
    -webkit-box-orient: vertical;
    overflow: hidden
}

.rcard p.d.open {
    display: block;
    -webkit-line-clamp: unset;
    line-clamp: unset;
    overflow: visible
}

.rcard .more {
    align-self: flex-start;
    background: none;
    border: 0;
    padding: 2px 0;
    margin: 0 0 20px;
    cursor: pointer;
    font-family: var(--ui);
    font-size: 12.5px;
    font-weight: 600;
    letter-spacing: .01em;
    color: var(--blue);
    display: inline-flex;
    align-items: center;
    gap: 5px;
    transition: color .2s
}

.rcard .more:hover {
    color: var(--navy)
}

.rcard .more::after {
    content: "›";
    font-size: 16px;
    line-height: 1;
    transition: transform .25s var(--ease)
}

.rcard .more.open::after {
    transform: rotate(90deg)
}

.rcard ul {
    list-style: none;
    margin: 0 0 14px;
    padding: 0;
    display: grid;
    grid-template-columns: 1fr 1fr;
    gap: 10px 16px
}

.rcard .opt {
    margin: 0 0 18px;
    padding: 12px 14px;
    border: 1px solid var(--line);
    border-radius: 12px;
    background: var(--wash-2)
}

.rcard .opt-t {
    display: flex;
    align-items: center;
    gap: 8px;
    margin: 0 0 9px;
    font-family: var(--accent);
    font-size: 10px;
    font-weight: 500;
    letter-spacing: .18em;
    text-transform: uppercase;
    color: var(--azur)
}

.rcard .opt-t .ico {
    font-size: 14px;
    flex: none
}

.rcard .opt-l {
    display: flex;
    flex-wrap: wrap;
    gap: 6px
}

.rcard .opt-l span {
    font-family: var(--ui);
    font-size: 11.5px;
    line-height: 1.3;
    color: var(--ink-2);
    background: #fff;
    border: 1px solid var(--line);
    border-radius: 999px;
    padding: 5px 11px
}

.rcard .beds {
    width: 100%;
    border-collapse: separate;
    border-spacing: 0;
    margin: 0 0 20px;
    border: 1px solid var(--line);
    border-radius: 12px
}

.rcard .beds tr:first-child th {
    border-top-left-radius: 11px
}

.rcard .beds tr:first-child td {
    border-top-right-radius: 11px
}

.rcard .beds tr:last-child th {
    border-bottom-left-radius: 11px
}

.rcard .beds tr:last-child td {
    border-bottom-right-radius: 11px
}

.rcard .beds-t {
    margin: 0 0 9px;
    font-family: var(--accent);
    font-size: 10px;
    font-weight: 500;
    letter-spacing: .18em;
    text-transform: uppercase;
    color: var(--azur)
}

.rcard .beds th,
.rcard .beds td {
    padding: 10px 14px;
    border-bottom: 1px solid var(--line);
    font-family: var(--ui);
    font-size: 13px;
    background: var(--wash)
}

.rcard .beds tr:last-child th,
.rcard .beds tr:last-child td {
    border-bottom: 0
}

.rcard .beds th {
    font-weight: 500;
    text-align: left;
    color: var(--navy);
    white-space: nowrap
}

.rcard .beds th .ico {
    font-size: 16px;
    color: var(--blue);
    vertical-align: -3px;
    margin-right: 9px
}

.rcard .beds th em {
    font-style: normal;
    font-size: 11px;
    font-weight: 400;
    color: var(--ink-3);
    margin-left: 8px
}

.rcard .beds td {
    color: var(--ink-2);
    white-space: nowrap;
    width: 1%;
    font-variant-numeric: tabular-nums lining-nums;
    font-feature-settings: "tnum" 1, "lnum" 1
}

.rcard .beds td.q {
    text-align: center;
    font-weight: 600;
    color: var(--navy);
    padding-left: 4px;
    padding-right: 4px
}

.rcard .beds td.d {
    text-align: right
}

.rcard li {
    display: flex;
    align-items: center;
    gap: 9px;
    font-family: var(--ui);
    font-size: 13px;
    color: var(--ink-2);
    min-width: 0
}

.rcard li .ico {
    font-size: 16px;
    color: var(--blue)
}

.rcard li .fai {
    font-size: 15px;
    color: var(--blue);
    width: 16px;
    text-align: center;
    flex: none
}

.rcard li .mi {
    font-size: 17px;
    color: var(--blue)
}

.rcard .bot {
    margin-top: auto;
    display: flex;
    align-items: flex-end;
    justify-content: space-between;
    gap: 20px;
    flex-wrap: wrap;
    border-top: 1px solid var(--line);
    padding-top: 20px
}

.rcard .price em {
    font-style: normal;
    font-family: var(--accent);
    font-size: 10px;
    font-weight: 500;
    letter-spacing: .18em;
    text-transform: uppercase;
    color: var(--ink-3);
    display: block;
    margin-bottom: 7px
}

.rcard .price b {
    font-family: var(--display);
    font-weight: 500;
    letter-spacing: var(--dls);
    font-size: calc(38px * var(--dscale));
    color: var(--navy);
    line-height: 1;
    display: block
}

.rcard .price small {
    font-family: var(--ui);
    font-size: 12px;
    font-weight: 400;
    color: var(--ink-3);
    display: block;
    margin-top: 7px
}

.rcard .price.duo {
    flex: 1 1 100%
}

.rcard .price.duo .duow {
    display: flex;
    align-items: stretch;
    gap: 12px
}

.rcard .price.duo .pr {
    display: flex;
    flex-direction: column;
    justify-content: flex-end
}

.rcard .price.duo .pr+.pr {
    padding-left: 12px;
    border-left: 1px solid var(--line)
}

.rcard .price.duo .pr i {
    font-style: normal;
    font-family: var(--ui);
    font-size: 10px;
    font-weight: 500;
    letter-spacing: .02em;
    color: var(--ink-3);
    display: block;
    margin-top: 6px;
    white-space: nowrap
}

.rcard .price.duo .pr.nr i {
    color: var(--azur);
    font-weight: 600
}

.rcard .price.duo .pr.fx b {
    font-size: calc(24px * var(--dscale));
    color: var(--ink-2)
}

.rcard .price.duo.solo .pr.fx {
    display: none
}

.rcard .price.duo.solo .pr.nr i {
    color: var(--ink-3);
    font-weight: 500
}

.arrow {
    width: 56px;
    height: 56px;
    border-radius: 50%;
    border: 1.5px solid var(--line);
    background: #fff;
    color: var(--navy);
    display: grid;
    place-items: center;
    cursor: pointer;
    transition: all .3s var(--ease);
    box-shadow: var(--sh-1);
    z-index: 40
}

.arrow .ico {
    font-size: 22px
}

.arrow:hover {
    background: var(--navy);
    color: #fff;
    border-color: var(--navy);
    transform: scale(1.08)
}

.arrow:active {
    transform: scale(.96)
}

.deckfoot {
    display: flex;
    align-items: center;
    justify-content: space-between;
    gap: 24px;
    flex-wrap: wrap;
    margin-top: 34px
}

.deckdots {
    display: flex;
    gap: 9px
}

.deckdots button {
    width: 9px;
    height: 9px;
    padding: 0;
    border-radius: 50%;
    border: 0;
    background: var(--mist);
    cursor: pointer;
    transition: all .35s var(--ease)
}

.deckdots button[aria-current="true"] {
    background: var(--navy);
    width: 32px;
    border-radius: 9px
}

.prog {
    flex: 1;
    max-width: 230px;
    height: 3px;
    background: var(--mist);
    border-radius: 9px;
    overflow: hidden
}

.prog i {
    display: block;
    height: 100%;
    width: 0;
    background: var(--blue);
    border-radius: 9px
}

.prog.run i {
    animation: pg 6.5s linear forwards
}

@keyframes pg {
    to {
        width: 100%
    }
}

.pin-track {
    position: relative
}

#services.pin-stage {
    min-height: 100vh;
    display: grid;
    place-items: center;
    padding-top: 0;
    padding-bottom: 0
}

#services.pin-stage>.wrap {
    width: 100%
}

@media(max-width:860px) {
    #services.pin-stage {
        min-height: 0;
        display: block;
        padding: 82px 0
    }
}

@media(prefers-reduced-motion:reduce) {
    #services.pin-stage {
        min-height: 0;
        display: block
    }
}

.svc {
    display: grid;
    grid-template-columns: .95fr 1.05fr;
    gap: 70px;
    align-items: center
}

.collage {
    position: relative;
    display: grid;
    grid-template-columns: 1fr 1fr;
    grid-template-rows: 180px 210px;
    gap: 16px
}

.collage figure {
    margin: 0;
    overflow: hidden;
    border-radius: var(--r);
    box-shadow: var(--sh-2)
}

.collage figure:first-child {
    grid-row: span 2
}

.collage img {
    width: 100%;
    height: 100%;
    object-fit: cover;
    transition: transform 1s var(--ease)
}

.collage figure:hover img {
    transform: scale(1.07)
}

.chip {
    position: absolute;
    right: -14px;
    bottom: -22px;
    background: var(--navy);
    color: #fff;
    border-radius: var(--r);
    padding: 20px 26px;
    box-shadow: var(--sh-3);
    display: flex;
    align-items: center;
    gap: 14px
}

.chip .ico {
    font-size: 26px;
    color: var(--blue-l)
}

.chip b {
    font-family: var(--display);
    font-size: calc(30px * var(--dscale));
    font-weight: 500;
    display: block;
    line-height: 1
}

.chip span {
    font-family: var(--accent);
    font-size: 10.5px;
    letter-spacing: .15em;
    text-transform: uppercase;
    color: rgba(255, 255, 255, .75)
}

.slist {
    list-style: none;
    margin: 34px 0 0;
    padding: 0;
    display: grid;
    gap: 6px
}

.slist li {
    display: flex;
    gap: 18px;
    padding: 18px;
    border-radius: var(--r);
    transition: background .3s var(--ease), transform .3s var(--ease)
}

.slist li:hover,
.slist li.sweep {
    background: var(--wash);
    transform: translateX(6px)
}

.slist .bub {
    width: 46px;
    height: 46px;
    border-radius: 13px;
    background: var(--wash-2);
    color: var(--navy);
    display: grid;
    place-items: center;
    flex: none;
    transition: background .3s, color .3s
}

.slist li:hover .bub,
.slist li.sweep .bub {
    background: var(--navy);
    color: #fff
}

.slist .bub .ico {
    font-size: 22px
}

.slist h4 {
    font-family: var(--display);
    font-weight: 500;
    letter-spacing: var(--dls);
    font-size: calc(21px * var(--dscale));
    margin-bottom: 5px
}

.slist p {
    margin: 0;
    font-size: 14.5px;
    color: var(--ink-3);
    line-height: 1.6
}

.pros {
    position: relative;
    background: var(--navy);
    color: #fff;
    overflow: hidden
}

.pros::before {
    content: "";
    position: absolute;
    inset: 0;
    background: radial-gradient(900px 500px at 12% 0%, rgba(78, 145, 198, .32), transparent 62%), radial-gradient(700px 420px at 92% 100%, rgba(78, 145, 198, .2), transparent 60%)
}

.pros .wrap {
    position: relative;
    z-index: 1
}

.pros h2,
.pros h3 {
    color: #fff
}

.pros .sub {
    color: rgba(255, 255, 255, .8)
}

.pgrid {
    display: grid;
    grid-template-columns: 1.02fr .98fr;
    gap: 70px;
    align-items: center
}

.pshot {
    position: relative;
    border-radius: var(--r-lg);
    overflow: hidden;
    box-shadow: var(--sh-3)
}

.pshot img {
    aspect-ratio: 4/3.2;
    object-fit: cover;
    width: 100%
}

.stats {
    position: relative;
    display: grid;
    grid-template-columns: repeat(3, 1fr);
    margin-top: 46px;
    padding-top: 32px
}

.stats.r {
    opacity: 1;
    transform: none;
    transition: none
}

.stats::before {
    content: "";
    position: absolute;
    top: 0;
    left: 0;
    right: 0;
    height: 1px;
    background: linear-gradient(90deg, rgba(255, 255, 255, .38), rgba(255, 255, 255, .12) 58%, rgba(255, 255, 255, 0));
    transform: scaleX(0);
    transform-origin: left center;
    transition: transform 1.15s var(--sweep)
}

.stats.in::before {
    transform: none
}

.stat {
    --d: 0s;
    position: relative;
    padding-right: 16px;
    opacity: 0;
    transform: translateY(14px);
    transition: opacity .75s var(--ease), transform .75s var(--ease)
}

.stat:nth-child(2) {
    --d: .13s
}

.stat:nth-child(3) {
    --d: .26s
}

.stat+.stat {
    padding-left: 22px
}

.stats.in .stat {
    opacity: 1;
    transform: none;
    transition-delay: var(--d)
}

.stat+.stat::before {
    content: "";
    position: absolute;
    left: 0;
    top: 3px;
    bottom: 5px;
    width: 1px;
    background: linear-gradient(180deg, rgba(255, 255, 255, .22), rgba(255, 255, 255, .06));
    transform: scaleY(0);
    transform-origin: top center;
    transition: transform .85s var(--ease)
}

.stats.in .stat+.stat::before {
    transform: none;
    transition-delay: calc(var(--d) + .07s)
}

.stat b {
    position: relative;
    display: flex;
    align-items: baseline;
    gap: 7px;
    font-family: var(--display);
    font-weight: var(--dw);
    letter-spacing: var(--dls);
    font-size: calc(clamp(36px, 3.5vw, 44px) * var(--dscale));
    line-height: .92;
    color: #fff;
    font-variant-numeric: tabular-nums;
    font-feature-settings: "tnum" 1
}

.stat b i {
    font-style: normal;
    font-family: var(--accent);
    font-size: 12px;
    font-weight: 500;
    letter-spacing: .15em;
    text-transform: uppercase;
    color: var(--azur-l);
    transition: color .45s var(--ease)
}

.stat b::after {
    content: "";
    position: absolute;
    left: 0;
    top: 100%;
    margin-top: 11px;
    width: 26px;
    height: 2px;
    border-radius: 2px;
    background: var(--azur-l);
    opacity: 0;
    transform: scaleX(.2);
    transform-origin: left center;
    transition-property: opacity, transform, width, background-color;
    transition-duration: .6s, .7s, .4s, .4s;
    transition-timing-function: var(--ease), var(--sweep), var(--ease), var(--ease)
}

.stats.in .stat b::after {
    opacity: .55;
    transform: none;
    transition-delay: calc(var(--d) + 1.5s), calc(var(--d) + 1.5s), 0s, 0s
}

.stat>span {
    display: flex;
    align-items: flex-start;
    gap: 8px;
    margin-top: 24px;
    font-family: var(--ui);
    font-size: 13px;
    font-weight: 300;
    line-height: 1.45;
    letter-spacing: .01em;
    color: rgba(255, 255, 255, .6);
    transition: color .45s var(--ease)
}

.stat>span .ico {
    margin-top: 3px;
    font-size: 14px;
    color: var(--azur-l);
    opacity: .8;
    transition: color .45s var(--ease), opacity .45s var(--ease), transform .5s var(--swap)
}

.stat:hover>span {
    color: rgba(255, 255, 255, .86)
}

.stat:hover>span .ico {
    color: #fff;
    opacity: 1;
    transform: translateY(-1px)
}

.stat:hover b i {
    color: #fff
}

.stats .stat:hover b::after {
    width: 44px;
    background-color: #fff
}

.plist {
    list-style: none;
    margin: 30px 0 34px;
    padding: 0;
    display: grid;
    gap: 13px
}

.plist li {
    display: flex;
    align-items: flex-start;
    gap: 12px;
    font-size: 16px;
    color: rgba(255, 255, 255, .9)
}

.plist .ico {
    font-size: 20px;
    color: var(--blue-l);
    margin-top: 2px
}

.gcards {
    display: grid;
    grid-template-columns: repeat(4, 1fr);
    gap: 24px;
    margin-top: 58px
}

.gc {
    position: relative;
    border-radius: var(--r);
    overflow: hidden;
    aspect-ratio: 3/4;
    box-shadow: var(--sh-1);
    transition: transform .45s var(--ease), box-shadow .45s var(--ease);
    display: block
}

.gc:hover {
    transform: translateY(-9px);
    box-shadow: var(--sh-3)
}

.gc img {
    position: absolute;
    inset: 0;
    width: 100%;
    height: 100%;
    object-fit: cover;
    transition: transform 1.1s var(--ease)
}

.gc:hover img {
    transform: scale(1.09)
}

.gc .ov {
    position: absolute;
    inset: 0;
    background: linear-gradient(to top, rgba(7, 40, 68, .9) 6%, rgba(7, 40, 68, .32) 46%, transparent 74%)
}

.gc .txt {
    position: absolute;
    inset: auto 0 0 0;
    padding: 24px 22px;
    color: #fff
}

.gc .km {
    display: inline-flex;
    align-items: center;
    gap: 6px;
    font-family: var(--accent);
    font-size: 10.5px;
    font-weight: 500;
    letter-spacing: .17em;
    text-transform: uppercase;
    color: var(--blue-l);
    margin-bottom: 10px
}

.gc .km .ico {
    font-size: 14px
}

.gc h3 {
    font-family: var(--display);
    font-weight: var(--dw);
    letter-spacing: var(--dls);
    text-transform: var(--dcase);
    font-size: calc(26px * var(--dscale));
    color: #fff;
    margin-bottom: 7px;
    line-height: 1.15
}

.gc p {
    margin: 0;
    font-size: 14px;
    color: rgba(255, 255, 255, .82);
    line-height: 1.55;
    max-height: 0;
    opacity: 0;
    overflow: hidden;
    transition: max-height .5s var(--ease), opacity .4s var(--ease)
}

.gc:hover p {
    max-height: 110px;
    opacity: 1
}

.band {
    position: relative;
    overflow: hidden;
    background: var(--navy-xd)
}

.band>img {
    position: absolute;
    inset: 0;
    width: 100%;
    height: 100%;
    object-fit: cover;
    opacity: .42
}

.band .veil {
    position: absolute;
    inset: 0;
    background: linear-gradient(100deg, rgba(7, 40, 68, .9), rgba(7, 40, 68, .42))
}

.band .wrap {
    position: relative;
    z-index: 2;
    padding-top: 126px;
    padding-bottom: 126px
}

.band h2 {
    color: #fff;
    font-family: var(--display);
    font-weight: var(--dw);
    letter-spacing: var(--dls);
    text-transform: var(--dcase);
    font-size: calc(clamp(34px, 5.4vw, 60px) * var(--dscale));
    max-width: 17ch;
    line-height: 1.1
}

.band p {
    color: rgba(255, 255, 255, .88);
    font-size: 18px;
    max-width: 52ch;
    margin: 22px 0 0
}

.band .acts {
    display: flex;
    gap: 14px;
    flex-wrap: wrap;
    margin-top: 38px
}

.cgrid {
    display: grid;
    grid-template-columns: .92fr 1.08fr;
    gap: 66px;
    align-items: start
}

.cinfo {
    list-style: none;
    margin: 36px 0 0;
    padding: 0;
    display: grid;
    gap: 8px
}

.cinfo li {
    display: flex;
    gap: 18px;
    padding: 18px;
    border-radius: var(--r);
    transition: background .3s
}

.cinfo li:hover {
    background: var(--wash)
}

.cinfo .bub {
    width: 46px;
    height: 46px;
    border-radius: 13px;
    background: var(--wash-2);
    color: var(--navy);
    display: grid;
    place-items: center;
    flex: none
}

.cinfo .bub .ico {
    font-size: 21px
}

.cinfo h4 {
    font-family: var(--accent);
    font-weight: 500;
    font-size: 12px;
    letter-spacing: .16em;
    text-transform: uppercase;
    color: var(--navy);
    margin-bottom: 6px
}

.cinfo p {
    margin: 0;
    font-size: 15.5px;
    color: var(--ink-3);
    line-height: 1.6
}

.fbox {
    background: var(--wash);
    border: 1px solid var(--line);
    border-radius: var(--r-lg);
    padding: 42px
}

.fbox h3 {
    font-family: var(--display);
    font-weight: var(--dw);
    letter-spacing: var(--dls);
    text-transform: var(--dcase);
    font-size: calc(33px * var(--dscale))
}

form.az {
    display: grid;
    gap: 16px;
    margin-top: 26px
}

form.az .row {
    display: grid;
    grid-template-columns: 1fr 1fr;
    gap: 16px
}

form.az .cnt-f {
    display: flex;
    align-items: center;
    justify-content: space-between;
    gap: 14px;
    padding: 9px 10px 9px 16px;
    background: #fff;
    border: 1.5px solid var(--line);
    border-radius: 12px
}

form.az .cnt-f .lbl {
    display: inline-flex;
    align-items: center;
    gap: 9px;
    font-family: var(--ui);
    font-size: 13.5px;
    font-weight: 500;
    color: var(--ink-2)
}

form.az .cnt-f .lbl .ico {
    font-size: 16px;
    color: var(--blue)
}

form.az .stepper input {
    width: 34px;
    padding: 0;
    border: 0;
    border-radius: 0;
    background: transparent;
    text-align: center;
    font-size: 14px;
    font-weight: 600;
    color: var(--navy);
    pointer-events: none
}

form.az .stepper input:focus {
    outline: 0;
    box-shadow: none
}

.c-msg {
    font-family: var(--ui);
    font-size: 13px;
    line-height: 1.6;
    padding: 12px 15px;
    border-radius: 11px;
    border: 1px solid var(--line);
    background: #fff;
    color: var(--ink-2)
}

.c-msg[hidden] {
    display: none
}

.c-msg.ok {
    border-color: rgba(30, 122, 77, .35);
    background: rgba(30, 122, 77, .07);
    color: #1e7a4d
}

.c-msg.err {
    border-color: rgba(180, 35, 42, .35);
    background: rgba(180, 35, 42, .06);
    color: #b4232a
}

.nl-msg {
    font-family: var(--ui);
    font-size: 12.5px;
    line-height: 1.55;
    margin: 10px 0 0;
    color: var(--azur-l)
}

.nl-msg[hidden] {
    display: none
}

.nl-msg.ok {
    color: #8fd6ae
}

.nl-msg.err {
    color: #ffb0b4
}

form.az .dr {
    grid-column: 1 / -1;
    grid-template-columns: 1fr auto 1fr
}

form.az .dr-pan {
    left: auto;
    right: 0
}

@media (max-width: 900px) {
    form.az .dr-pan {
        left: 50%;
        right: auto;
        transform: translateX(-50%)
    }
}

form.az .typechoice {
    margin-bottom: 2px
}

@media(max-width:560px) {
    form.az .cnt-row {
        grid-template-columns: 1fr
    }
}

form.az input,
form.az textarea {
    font-family: var(--body);
    font-size: 15px;
    color: var(--navy);
    background: #fff;
    border: 1.5px solid var(--line);
    border-radius: 11px;
    padding: 15px 17px;
    transition: border-color .25s, box-shadow .25s;
    width: 100%
}

form.az input:focus,
form.az textarea:focus {
    outline: 0;
    border-color: var(--blue);
    box-shadow: 0 0 0 4px rgba(78, 145, 198, .14)
}

form.az textarea {
    min-height: 132px;
    resize: vertical
}

form.az .btn {
    justify-self: start;
    margin-top: 4px
}

footer.ft {
    background: var(--navy-xd);
    color: rgba(255, 255, 255, .72);
    font-family: var(--ui);
    font-weight: 300;
    position: relative;
    overflow: hidden
}

footer.ft::before {
    content: "";
    position: absolute;
    inset: 0;
    background: radial-gradient(760px 420px at 8% 0%, rgba(78, 145, 198, .22), transparent 62%)
}

footer.ft .wrap {
    position: relative;
    z-index: 1
}

.fmain {
    display: grid;
    grid-template-columns: 1.55fr 1fr 1fr 1.35fr;
    gap: 52px;
    padding: 82px 0 58px
}

.fplate {
    background: #fff;
    border-radius: 14px;
    padding: 18px 22px;
    display: inline-block;
    box-shadow: 0 8px 24px rgba(0, 0, 0, .2)
}

.fplate .mark {
    height: 72px
}

.fmain p.ab {
    font-size: 15px;
    line-height: 1.75;
    margin: 22px 0 0;
    max-width: 34ch
}

.ext {
    display: inline-flex;
    align-items: flex-start;
    gap: 8px;
    color: inherit;
    transition: color .25s var(--ease)
}

.ext:hover {
    color: var(--azur)
}

.ext .ext-i {
    font-size: .68em;
    opacity: .4;
    transform: translateY(.15em);
    transition: opacity .25s var(--ease), transform .25s var(--ease)
}

.ext:hover .ext-i,
.ext:focus-visible .ext-i {
    opacity: 1;
    transform: translateY(-.05em)
}

.social {
    display: flex;
    gap: 11px;
    margin-top: 24px
}

.social a {
    width: 42px;
    height: 42px;
    border-radius: 12px;
    border: 1px solid rgba(255, 255, 255, .2);
    display: grid;
    place-items: center;
    color: #fff;
    transition: all .3s var(--ease)
}

.social a:hover {
    background: var(--blue);
    border-color: var(--blue);
    transform: translateY(-3px)
}

.social .ico {
    font-size: 19px
}

.social .mi {
    font-size: 18px
}

footer.ft h4 {
    font-family: var(--accent);
    font-weight: 500;
    font-size: 12.5px;
    letter-spacing: .2em;
    text-transform: uppercase;
    color: var(--azur-l);
    margin-bottom: 24px
}

footer.ft ul {
    list-style: none;
    margin: 0;
    padding: 0;
    display: grid;
    gap: 12px
}

footer.ft li {
    font-size: 15px
}

footer.ft .lk a {
    display: inline-flex;
    align-items: center;
    gap: 9px;
    transition: color .25s, transform .25s var(--ease)
}

footer.ft .lk a .ico {
    font-size: 13px;
    color: var(--blue-l);
    opacity: 0;
    transform: translateX(-6px);
    transition: all .25s var(--ease)
}

footer.ft .lk a:hover {
    color: #fff;
    transform: translateX(5px)
}

footer.ft .lk a:hover .ico {
    opacity: 1;
    transform: none
}

.fcontact li {
    display: flex;
    gap: 12px;
    align-items: flex-start;
    font-size: 15px;
    line-height: 1.6
}

.fcontact .ico {
    font-size: 18px;
    color: var(--blue-l);
    margin-top: 3px;
    flex: none
}

.news p {
    font-size: 14.5px;
    margin: 0 0 16px;
    line-height: 1.65
}

.nform {
    display: flex;
    gap: 9px;
    background: rgba(255, 255, 255, .09);
    border: 1px solid rgba(255, 255, 255, .2);
    border-radius: 999px;
    padding: 6px 6px 6px 20px;
    transition: border-color .25s
}

.nform:focus-within {
    border-color: var(--blue)
}

.nform input {
    flex: 1;
    min-width: 0;
    background: transparent;
    border: 0;
    color: #fff;
    font-family: var(--ui);
    font-size: 14.5px
}

.nform input::placeholder {
    color: rgba(255, 255, 255, .5)
}

.nform input:focus {
    outline: 0
}

.nform button {
    width: 42px;
    height: 42px;
    border-radius: 50%;
    border: 0;
    background: var(--blue);
    color: #fff;
    cursor: pointer;
    display: grid;
    place-items: center;
    transition: background .25s, transform .25s
}

.nform button:hover {
    background: #fff;
    color: var(--navy);
    transform: scale(1.06)
}

.nform .ico {
    font-size: 18px
}

.fbar {
    border-top: 1px solid rgba(255, 255, 255, .13)
}

.fbar .wrap {
    display: flex;
    align-items: center;
    justify-content: space-between;
    gap: 22px;
    flex-wrap: wrap;
    padding-top: 24px;
    padding-bottom: 24px;
    font-size: 13.5px
}

.fbar nav {
    display: flex;
    gap: 24px;
    flex-wrap: wrap
}

.fbar a:hover {
    color: #fff
}

.fbar nav button {
    font: inherit;
    color: inherit;
    background: none;
    border: 0;
    padding: 0;
    cursor: pointer;
    transition: color .25s var(--ease)
}

.fbar nav button:hover {
    color: #fff
}

mark.g {
    background: none;
    color: inherit
}

body.hl mark.g {
    background: rgba(255, 214, 0, .28);
    box-shadow: 0 0 0 1px rgba(201, 162, 39, .5);
    border-radius: 3px
}

.r {
    opacity: 0;
    transform: translateY(30px);
    transition: opacity .85s var(--ease), transform .85s var(--ease)
}

.r.in {
    opacity: 1;
    transform: none
}

.r.d1 {
    transition-delay: .09s
}

.r.d2 {
    transition-delay: .18s
}

.r.d3 {
    transition-delay: .27s
}

.r.d4 {
    transition-delay: .36s
}

@media(max-width:1080px) {
    .nav,
    .hdr .cta .btn {
        display: none
    }
    .burger {
        display: flex
    }
    .hdr .wrap {
        gap: 16px
    }
    .nav {
        margin-left: 0
    }
    .hdr .cta {
        margin-left: auto
    }
    .feat {
        grid-template-columns: repeat(2, 1fr)
    }
    .gcards {
        grid-template-columns: repeat(2, 1fr)
    }
    .svc,
    .pgrid,
    .cgrid {
        grid-template-columns: 1fr;
        gap: 48px
    }
    .chip {
        right: 16px;
        bottom: -18px
    }
    .book {
        grid-template-columns: 1fr 1fr;
        gap: 22px
    }
    .book .go {
        grid-column: span 2;
        width: 100%
    }
    .fmain {
        grid-template-columns: 1fr 1fr;
        gap: 44px
    }
}

@media(max-width:860px) {
    section {
        padding: 82px 0
    }
    .topbar .hideS {
        display: none
    }
    .stage {
        min-height: 620px;
        --peek: 26px
    }
    .rcard {
        grid-template-columns: 1fr;
        grid-template-rows: 210px auto
    }
    .rcard .ph {
        min-height: 210px
    }
    .rcard .body {
        padding: 28px 26px 30px
    }
    .rcard ul {
        grid-template-columns: 1fr 1fr;
        gap: 9px 12px
    }
    .deckwrap {
        grid-template-columns: 1fr
    }
    .arrow {
        position: absolute;
        top: 110px
    }
    .arrow.prev {
        left: 8px
    }
    .arrow.next {
        right: 8px
    }
    .hero .wrap {
        padding-bottom: 150px
    }
    .hero .dots {
        bottom: 118px
    }
    .scrollcue {
        display: none
    }
    .bookwrap {
        margin-top: -70px
    }
    .collage {
        grid-template-rows: 150px 170px
    }
}

@media(max-width:560px) {
    .wrap {
        padding: 0 20px
    }
    .feat,
    .gcards,
    .stats {
        grid-template-columns: 1fr
    }
    .stats {
        padding-top: 26px
    }
    .stat {
        padding-right: 0;
        padding-bottom: 22px
    }
    .stat:last-child {
        padding-bottom: 0
    }
    .stat+.stat {
        padding-left: 0;
        padding-top: 22px
    }
    .stat+.stat::before {
        left: 0;
        right: 0;
        top: 0;
        bottom: auto;
        width: auto;
        height: 1px;
        background: linear-gradient(90deg, rgba(255, 255, 255, .22), rgba(255, 255, 255, .05));
        transform: scaleX(0);
        transform-origin: left center
    }
    .stat>span {
        margin-top: 16px
    }
    .book {
        grid-template-columns: 1fr
    }
    .book .go {
        grid-column: auto
    }
    .fmain {
        grid-template-columns: 1fr;
        gap: 38px
    }
    form.az .row {
        grid-template-columns: 1fr
    }
    .rcard ul {
        grid-template-columns: 1fr
    }
    .stage {
        min-height: 680px;
        --peek: 18px
    }
    .rcard .bot {
        gap: 16px
    }
    .rcard .bot .btn {
        width: 100%
    }
    .fbox {
        padding: 26px
    }
    .tpill span {
        display: none
    }
}

@media(prefers-reduced-motion:reduce) {
    *,
    *::before,
    *::after {
        animation-duration: .01ms!important;
        animation-iteration-count: 1!important;
        transition-duration: .01ms!important
    }
    html {
        scroll-behavior: auto
    }
    .r {
        opacity: 1;
        transform: none
    }
    .stat {
        opacity: 1;
        transform: none
    }
    .stats::before,
    .stat+.stat::before {
        transform: none
    }
    .stat b::after {
        opacity: .55;
        transform: none
    }
}

.rcard .price b,
.stat b,
.chip b,
.ext-total b,
.bookres .price b,
.rez-extras .prix,
.annul-montants b,
.book input,
.pay-grid input,
.annul-code input {
    font-variant-numeric: tabular-nums lining-nums;
    font-feature-settings: "tnum" 1, "lnum" 1
}

.rcard .price b {
    font-size: calc(42px * var(--dscale));
    letter-spacing: -.02em
}

.ext-total b,
.bookres .price b {
    letter-spacing: -.012em
}

.dr {
    position: relative;
    grid-column: span 2;
    display: grid;
    grid-template-columns: 1fr auto 1fr;
    align-items: end;
    gap: 10px
}

.dr-champ {
    display: grid;
    gap: 8px;
    justify-items: start;
    text-align: left;
    background: none;
    border: 0;
    padding: 0 0 8px;
    border-bottom: 1.5px solid var(--line);
    cursor: pointer;
    min-width: 0;
    transition: border-color .25s var(--ease)
}

.dr-champ:hover,
.dr-champ.actif {
    border-bottom-color: var(--blue)
}

.dr-champ:focus-visible {
    outline: 2px solid var(--blue);
    outline-offset: 4px;
    border-radius: 4px
}

.dr-champ .l {
    display: flex;
    align-items: center;
    gap: 7px;
    font-family: var(--accent);
    font-size: 11px;
    font-weight: 500;
    letter-spacing: .16em;
    text-transform: uppercase;
    color: var(--ink-3)
}

.dr-champ .l .ico {
    font-size: 15px;
    color: var(--blue)
}

.dr-champ .v {
    font-family: var(--body);
    font-size: 15.5px;
    font-weight: 500;
    color: var(--navy);
    white-space: nowrap;
    overflow: hidden;
    text-overflow: ellipsis;
    max-width: 100%
}

.dr-champ .v.vide {
    color: var(--ink-3);
    font-weight: 400
}

.dr-sep {
    display: grid;
    place-items: center;
    padding-bottom: 10px;
    color: var(--mist)
}

.dr-sep .ico {
    font-size: 16px
}

.dr-pan {
    position: absolute;
    top: calc(100% + 16px);
    left: 0;
    z-index: 120;
    width: max-content;
    max-width: min(92vw, 720px);
    background: #fff;
    border: 1px solid var(--line);
    border-radius: var(--r-lg);
    box-shadow: var(--sh-3);
    padding: 22px 24px 18px;
    animation: drIn .32s var(--ease)
}

.dr-pan[hidden] {
    display: none
}

@keyframes drIn {
    from {
        opacity: 0;
        transform: translateY(-8px)
    }
    to {
        opacity: 1;
        transform: none
    }
}

.dr-tete {
    display: none;
    align-items: center;
    justify-content: space-between;
    gap: 14px;
    margin-bottom: 14px
}

.dr-titre {
    font-family: var(--display);
    font-weight: 500;
    letter-spacing: var(--dls);
    font-size: calc(21px * var(--dscale));
    color: var(--navy)
}

.dr-x {
    width: 40px;
    height: 40px;
    flex: none;
    border: 1px solid var(--line);
    background: #fff;
    border-radius: 12px;
    color: var(--navy);
    cursor: pointer;
    display: grid;
    place-items: center;
    transition: background .25s var(--ease), color .25s var(--ease)
}

.dr-x:hover {
    background: var(--navy);
    color: #fff
}

.dr-x .ico {
    font-size: 19px
}

.dr-nav {
    position: absolute;
    top: 22px;
    left: 24px;
    right: 24px;
    display: flex;
    justify-content: space-between;
    pointer-events: none
}

.dr-fl {
    pointer-events: auto;
    width: 34px;
    height: 34px;
    border: 1px solid var(--line);
    background: #fff;
    border-radius: 50%;
    color: var(--navy);
    cursor: pointer;
    display: grid;
    place-items: center;
    transition: background .25s var(--ease), color .25s var(--ease), border-color .25s var(--ease), opacity .25s var(--ease)
}

.dr-fl:hover:not(:disabled) {
    background: var(--navy);
    color: #fff;
    border-color: var(--navy)
}

.dr-fl:disabled {
    opacity: .3;
    cursor: default
}

.dr-fl .ico {
    font-size: 17px
}

.dr-mois {
    display: flex;
    gap: 34px
}

.dr-m {
    width: 268px;
    flex: none
}

.dr-m h4 {
    font-family: var(--display);
    font-weight: 500;
    letter-spacing: var(--dls);
    font-size: calc(19px * var(--dscale));
    color: var(--navy);
    text-align: center;
    margin: 0 0 14px;
    text-transform: capitalize
}

.dr-jours,
.dr-grille {
    display: grid;
    grid-template-columns: repeat(7, 1fr);
    gap: 2px
}

.dr-jours {
    margin-bottom: 6px
}

.dr-jours span {
    font-family: var(--accent);
    font-size: 10px;
    font-weight: 500;
    letter-spacing: .1em;
    text-transform: uppercase;
    color: var(--ink-3);
    text-align: center;
    padding-bottom: 4px
}

.dr-grille {
    gap: 3px 0
}

.dr-d {
    position: relative;
    height: 38px;
    border: 0;
    background: none;
    padding: 0;
    cursor: pointer;
    font-family: var(--body);
    font-size: 14px;
    font-weight: 500;
    color: var(--ink);
    font-variant-numeric: tabular-nums;
    transition: color .18s var(--ease)
}

.dr-d.vide {
    visibility: hidden;
    cursor: default
}

.dr-d::before {
    content: "";
    position: absolute;
    inset: 2px 3px;
    border-radius: 10px;
    background: transparent;
    transition: background .18s var(--ease);
    z-index: -1
}

.dr-d {
    isolation: isolate
}

.dr-d:hover:not(:disabled)::before {
    background: var(--wash-2)
}

.dr-d:disabled {
    color: var(--mist);
    cursor: default
}

.dr-d.auj {
    font-weight: 700
}

.dr-d.auj::after {
    content: "";
    position: absolute;
    left: 50%;
    bottom: 5px;
    width: 4px;
    height: 4px;
    border-radius: 50%;
    transform: translateX(-50%);
    background: var(--blue)
}

.dr-d.entre::before {
    background: var(--wash-2);
    inset: 2px 0;
    border-radius: 0
}

.dr-d.deb::before,
.dr-d.fin::before {
    background: var(--navy);
    inset: 2px 3px;
    border-radius: 10px
}

.dr-d.deb,
.dr-d.fin {
    color: #fff;
    font-weight: 600
}

.dr-d.a-suite {
    background: linear-gradient(to right, transparent 50%, var(--wash-2) 50%)
}

.dr-d.a-avant {
    background: linear-gradient(to left, transparent 50%, var(--wash-2) 50%)
}

.dr-d.deb:hover::before,
.dr-d.fin:hover::before {
    background: var(--navy-d)
}

.dr-d.auj.deb::after,
.dr-d.auj.fin::after {
    background: #fff
}

.dr-pied {
    display: flex;
    align-items: center;
    gap: 14px;
    flex-wrap: wrap;
    margin-top: 16px;
    padding-top: 14px;
    border-top: 1px solid var(--line)
}

.dr-bilan {
    font-family: var(--ui);
    font-size: 13px;
    color: var(--ink-3);
    margin-right: auto
}

.dr-bilan b {
    color: var(--navy);
    font-weight: 600
}

.dr-eff {
    background: none;
    border: 0;
    padding: 8px 4px;
    cursor: pointer;
    font-family: var(--ui);
    font-size: 13px;
    color: var(--ink-3);
    text-decoration: underline;
    text-underline-offset: 3px;
    transition: color .2s var(--ease)
}

.dr-eff:hover {
    color: var(--navy)
}

.dr-voile {
    position: fixed;
    inset: 0;
    z-index: 115;
    background: rgba(7, 40, 68, .5);
    -webkit-backdrop-filter: blur(3px);
    backdrop-filter: blur(3px);
    animation: drFade .3s var(--ease)
}

.dr-voile[hidden] {
    display: none
}

@keyframes drFade {
    from {
        opacity: 0
    }
    to {
        opacity: 1
    }
}

@media (max-width: 900px) {
    .dr-pan {
        left: 50%;
        transform: translateX(-50%);
        max-width: 94vw
    }
    @keyframes drIn {
        from {
            opacity: 0;
            transform: translateX(-50%) translateY(-8px)
        }
        to {
            opacity: 1;
            transform: translateX(-50%)
        }
    }
}

@media (max-width: 780px) {
    .dr {
        grid-column: auto
    }
    .dr-pan {
        position: fixed;
        inset: auto 0 0 0;
        left: 0;
        transform: none;
        width: auto;
        max-width: none;
        max-height: 92vh;
        display: flex;
        flex-direction: column;
        border-radius: var(--r-lg) var(--r-lg) 0 0;
        border-bottom: 0;
        padding: 18px 18px 16px;
        animation: drUp .34s var(--ease)
    }
    @keyframes drUp {
        from {
            transform: translateY(100%)
        }
        to {
            transform: none
        }
    }
    .dr-tete {
        display: flex
    }
    .dr-nav {
        display: none
    }
    .dr-mois {
        flex-direction: column;
        gap: 26px;
        overflow-y: auto;
        overscroll-behavior: contain;
        -webkit-overflow-scrolling: touch;
        flex: 1;
        min-height: 0;
        padding-bottom: 4px
    }
    .dr-m {
        width: auto
    }
    .dr-d {
        height: 42px;
        font-size: 15px
    }
    .dr-pied {
        gap: 10px
    }
    .dr-pied .btn {
        flex: 1;
        justify-content: center
    }
    .dr-bilan {
        width: 100%;
        margin-right: 0;
        text-align: center
    }
}

@media (max-width: 780px) and (max-height: 700px) {
    .dr-pan {
        padding: 14px 16px 12px
    }
    .dr-tete {
        margin-bottom: 10px
    }
    .dr-titre {
        font-size: calc(18px * var(--dscale))
    }
    .dr-x {
        width: 34px;
        height: 34px
    }
    .dr-m h4 {
        margin-bottom: 8px;
        font-size: calc(17px * var(--dscale))
    }
    .dr-mois {
        gap: 18px
    }
    .dr-d {
        height: 36px;
        font-size: 14px
    }
    .dr-pied {
        margin-top: 10px;
        padding-top: 10px
    }
    .dr-bilan {
        font-size: 12.5px
    }
}

@media (prefers-reduced-motion: reduce) {
    .dr-pan,
    .dr-voile {
        animation: none
    }
}

@media (max-width: 780px) {
    .bookres-scroll {
        overflow: visible
    }
    .bookres table {
        min-width: 0;
        width: 100%;
        display: block
    }
    .bookres thead {
        display: none
    }
    .bookres tbody {
        display: block
    }
    .bookres tbody tr {
        display: block;
        padding: 16px 18px;
        border-bottom: 1px solid var(--line)
    }
    .bookres tbody tr:last-child {
        border-bottom: 0
    }
    .bookres td {
        display: grid;
        grid-template-columns: auto 1fr;
        align-items: baseline;
        gap: 2px 14px;
        padding: 9px 0;
        border: 0;
        border-top: 1px solid var(--line);
        white-space: normal
    }
    .bookres td[data-l]::before {
        content: attr(data-l);
        grid-column: 1;
        font-family: var(--accent);
        font-size: 10px;
        font-weight: 500;
        letter-spacing: .14em;
        text-transform: uppercase;
        color: var(--ink-3);
        white-space: nowrap
    }
    .bookres td[data-l]>*,
    .bookres td[data-l] {
        text-align: right
    }
    .bookres td[data-l]>* {
        grid-column: 2
    }
    .bookres td.tf {
        display: inline-block;
        width: calc(50% - 3px);
        padding: 10px 0 4px;
        vertical-align: top;
        background: none;
        border: 0
    }
    .bookres td.tf::before {
        display: none
    }
    .bookres .zone {
        background: none
    }
    .bookres .zone-a,
    .bookres .zone-b {
        border-left: 0;
        border-right: 0
    }
    .bookres td.tf label {
        margin: 0;
        padding: 12px 13px;
        text-align: left;
        background: var(--wash)
    }
    .bookres td.tf .cond {
        display: block;
        font-style: normal;
        font-size: 10.5px;
        font-weight: 600;
        letter-spacing: .01em;
        line-height: 1.3;
        color: var(--ink-3);
        margin-bottom: 7px
    }
    .bookres td.tf input:checked+label .cond {
        color: var(--azur)
    }
    .bookres td.tf.vide {
        display: none
    }
    .bookres td.total::after {
        grid-column: 2;
        text-align: right
    }
    .bookres td:first-child {
        display: block;
        border-top: 0;
        padding: 0 0 4px;
        text-align: left
    }
    .bookres .rm {
        min-width: 0
    }
    .bookres .rm img {
        width: 76px;
        height: 58px
    }
    .bookres td.price b {
        font-size: calc(20px * var(--dscale));
        display: block
    }
    .bookres td.price em {
        display: block;
        font-size: 11px
    }
    .bookres td.act {
        display: block;
        padding: 14px 0 0;
        border-top: 0
    }
    .bookres td.act .btn {
        width: 100%;
        justify-content: center
    }
    .bookres-head {
        padding: 15px 18px
    }
    .bookres-head .s {
        margin-left: 0;
        width: 100%;
        margin-top: 4px
    }
    .stage {
        --peek: 0px;
        min-height: 0
    }
    .rcard {
        left: 0;
        right: 0;
        grid-template-columns: 1fr;
        grid-template-rows: auto auto;
        border-radius: var(--r-lg)
    }
    .rcard .ph {
        position: relative;
        min-height: 0;
        aspect-ratio: 4 / 3
    }
    .rcard .ph img {
        position: absolute;
        inset: 0
    }
    .rcard .badge {
        top: 14px;
        left: 14px;
        font-size: 11.5px;
        padding: 7px 13px
    }
    .rcard .body {
        padding: 18px 18px 20px
    }
    .rcard .num {
        font-size: 10px;
        margin-bottom: 6px
    }
    .rcard h3 {
        font-size: calc(25px * var(--dscale));
        margin-bottom: 8px
    }
    .rcard p.d {
        font-size: 14px;
        -webkit-line-clamp: 2;
        line-clamp: 2;
        margin-bottom: 4px
    }
    .hero .dots button,
    .deckdots button {
        position: relative
    }
    .hero .dots button::after,
    .deckdots button::after {
        content: "";
        position: absolute;
        left: 50%;
        top: 50%;
        width: 44px;
        height: 44px;
        transform: translate(-50%, -50%)
    }
    .deckdots {
        gap: 20px
    }
    .rcard .more {
        margin-bottom: 12px;
        font-size: 12.5px;
        min-height: 44px;
        align-items: center
    }
    .rcard ul {
        display: flex;
        flex-wrap: wrap;
        gap: 6px;
        margin: 0 0 10px
    }
    .rcard li {
        gap: 5px;
        font-size: 11.5px;
        line-height: 1.25;
        padding: 5px 9px;
        border-radius: 999px;
        background: var(--wash);
        color: var(--ink-2)
    }
    .rcard li .ico,
    .rcard li .mi,
    .rcard li .fai {
        font-size: 12px
    }
    .rcard .opt {
        font-size: 10.5px;
        margin-bottom: 12px;
        line-height: 1.45
    }
    .rcard .bot {
        gap: 12px;
        padding-top: 14px;
        flex-wrap: nowrap;
        align-items: center
    }
    .rcard .price em {
        font-size: 9px;
        margin-bottom: 3px
    }
    .rcard .price b {
        font-size: calc(29px * var(--dscale))
    }
    .rcard .price small {
        font-size: 10.5px;
        margin-top: 3px
    }
    form.book .f select {
        min-height: 44px
    }
    form.az .stepper button {
        width: 44px;
        height: 44px
    }
    .nform input,
    .nform button {
        min-height: 44px
    }
    .nform button {
        width: 44px
    }
    .topbar .wrap a,
    footer.ft ul li a,
    .fbar nav a,
    .fbar nav button,
    .mnav .foot a,
    .mnav ul li a {
        min-height: 44px;
        display: inline-flex;
        align-items: center
    }
    .rcard .price.duo {
        flex: 0 1 auto
    }
    .rcard .price.duo .duow {
        gap: 10px
    }
    .rcard .price.duo .pr+.pr {
        padding-left: 10px
    }
    .rcard .price.duo .pr.fx b {
        font-size: calc(19px * var(--dscale))
    }
    .rcard .price.duo .pr i {
        font-size: 9px;
        margin-top: 3px
    }
    .rcard .bot .btn {
        width: auto;
        flex: none;
        padding: 12px 20px
    }
    .deckwrap {
        position: relative
    }
    .arrow {
        position: static;
        width: 48px;
        height: 48px
    }
    .arrow .ico {
        font-size: 19px
    }
    .deckwrap {
        display: grid;
        grid-template-columns: 1fr;
        gap: 18px
    }
    .deckwrap .arrow.prev {
        grid-area: nav;
        justify-self: start
    }
    .deckwrap .arrow.next {
        grid-area: nav;
        justify-self: end
    }
    .deckwrap .stage {
        grid-area: deck
    }
    .deckwrap {
        grid-template-areas: "deck" "nav"
    }
    .deckwrap .arrow {
        grid-area: nav
    }
    .deckhead {
        margin-bottom: 34px
    }
    .gcards {
        gap: 16px
    }
    .gc {
        aspect-ratio: 4 / 3
    }
    .gc .ov {
        background: linear-gradient(to top, rgba(7, 40, 68, .92) 0%, rgba(7, 40, 68, .55) 24%, rgba(7, 40, 68, .05) 46%, transparent 62%)
    }
    .gc .txt {
        padding: 18px 18px 20px
    }
    .gc h3 {
        font-size: calc(23px * var(--dscale));
        margin-bottom: 5px
    }
    .gc .km {
        margin-bottom: 7px
    }
    .gc p {
        font-size: 13.5px;
        transition: max-height .6s var(--ease), opacity .5s var(--ease), transform .6s var(--ease);
        transform: translateY(6px)
    }
    .gc.vu p {
        max-height: 130px;
        opacity: 1;
        transform: none
    }
    .gc.vu img {
        transform: scale(1.05)
    }
    .fmain {
        grid-template-columns: 1fr;
        gap: 0;
        padding-top: 52px;
        padding-bottom: 32px
    }
    .fmain>div {
        padding: 26px 0;
        border-top: 1px solid rgba(255, 255, 255, .12)
    }
    .fmain>div:first-child {
        padding-top: 0;
        border-top: 0;
        text-align: center
    }
    .fplate {
        padding: 14px 20px
    }
    .fplate .mark {
        height: 60px
    }
    .fmain p.ab {
        max-width: 40ch;
        margin: 18px auto 0;
        font-size: 14.5px
    }
    .social {
        justify-content: center;
        margin-top: 20px
    }
    .social a {
        width: 46px;
        height: 46px
    }
    footer.ft h4 {
        margin-bottom: 14px;
        font-size: 11.5px
    }
    footer.ft .lk ul {
        grid-template-columns: 1fr 1fr;
        gap: 0 18px
    }
    footer.ft .lk li {
        font-size: 14.5px
    }
    footer.ft .lk li a {
        padding: 11px 0
    }
    footer.ft .fcontact ul {
        gap: 13px
    }
    .fcontact li {
        padding: 0
    }
    .news p {
        max-width: none
    }
    .nform {
        padding: 6px 6px 6px 18px
    }
    .fbar .wrap {
        flex-direction: column;
        align-items: center;
        text-align: center;
        gap: 14px
    }
    .fbar nav {
        justify-content: center;
        gap: 18px
    }
}

@media (max-width: 380px) {
    .pgrid > *,
    .cgrid > * {
        min-width: 0
    }
    .btn {
        white-space: normal;
        padding-left: 22px;
        padding-right: 22px;
        text-align: center
    }

    .rcard h3 {
        font-size: calc(23px * var(--dscale))
    }
    .rcard .body {
        padding: 16px 16px 18px
    }
    .rcard .beds th,
    .rcard .beds td {
        padding-left: 10px;
        padding-right: 10px
    }
    .rcard .beds th em {
        margin-left: 6px;
        font-size: 10px
    }
    .rcard .bot {
        flex-wrap: wrap;
        align-items: flex-start
    }
    .rcard .bot .btn {
        width: 100%
    }
    .bookres .rm img {
        width: 64px;
        height: 50px
    }
    footer.ft .lk ul {
        grid-template-columns: 1fr
    }
}
