:root{
  --rust:#131e29; /* accent off for now (was #b75528) */
  --mute:#6b7177;
  --navy:#131e29;
  --mist:#e3e9f0;
  --panel:#f6f6f6;
  --line:#d9dcdf;
  --grey:#97999b;
  --ink:#111;
  --serif:'Playfair Display',Georgia,serif;
  --sans:'Jost','Helvetica Neue',Arial,sans-serif;
  --wrap:1045px;
}
*{box-sizing:border-box;margin:0;padding:0}
html{scroll-behavior:smooth}
body{font-family:var(--sans);color:var(--ink);background:#fff;font-size:15px;line-height:1.6;-webkit-font-smoothing:antialiased}
img{display:block;max-width:100%}
a{color:inherit;text-decoration:none}
button{font:inherit;cursor:pointer;border:0;background:none;color:inherit}

/* header */
.hdr{position:sticky;top:0;z-index:50;background:var(--mist);height:72px;display:flex;align-items:center;padding:0 68px}
.brand{font-family:var(--sans);font-weight:300;font-size:27px;letter-spacing:.2em;color:var(--rust);line-height:1}
.nav{flex:1;display:flex;justify-content:center;gap:34px}
.nav a{font-size:13.5px;letter-spacing:.07em;text-transform:uppercase;color:var(--rust);font-weight:400}
.nav a:hover,.nav a.on{color:var(--navy)}
.hdr-ic{display:flex;gap:22px;align-items:center;color:var(--grey);margin-left:auto}
.hdr-ic svg{width:21px;height:21px}
.hdr-ic a:hover{color:var(--rust)}
.burger{display:none;width:26px;height:18px;position:relative}
.burger span,.burger:before,.burger:after{content:'';position:absolute;left:0;right:0;height:1.5px;background:var(--rust)}
.burger:before{top:0}.burger span{top:8px}.burger:after{bottom:0}
.drawer{display:none}

/* hero */
.hero{position:relative;height:calc(100vh - 72px);min-height:460px;max-height:860px;overflow:hidden;background:#cfd6dd}
.hero .slide{position:absolute;inset:0;opacity:0;transition:opacity 1.4s ease}
.hero .slide.on{opacity:1}
.hero .slide img{width:100%;height:100%;object-fit:cover;transform:scale(1.04);transition:transform 9s ease-out}
.hero .slide.on img{transform:scale(1)}
.chips{position:absolute;top:16px;right:22px;display:flex;gap:6px;z-index:2}
.chip{background:rgba(19,30,41,.72);color:#fff;font-size:11.5px;padding:5px 10px 5px 8px;display:flex;gap:6px;align-items:center;letter-spacing:.02em}
.chip svg{width:11px;height:11px;color:var(--rust)}
.hero-cap{position:absolute;left:0;right:0;bottom:30px;z-index:2;text-align:center;color:#fff;text-shadow:0 1px 18px rgba(0,0,0,.35);transition:opacity .6s ease,transform .6s ease}
.hero-cap.out{opacity:0;transform:translateY(8px)}
.hero-cap .n{font-family:var(--serif);font-size:30px;letter-spacing:.02em;text-transform:uppercase}
.hero-cap .r{font-family:var(--serif);font-style:italic;font-size:17px;opacity:.92}
.hero-dots{position:absolute;bottom:14px;left:0;right:0;display:flex;justify-content:center;gap:8px;z-index:2}
.dot{width:7px;height:7px;border-radius:50%;background:rgba(255,255,255,.5)}
.dot.on{background:#fff}

/* titles */
.intro{text-align:center;padding:30px 24px 38px}
.h1{font-family:var(--serif);font-weight:400;font-size:33px;text-transform:uppercase;color:var(--navy);letter-spacing:.005em;line-height:1.2}
.sub{font-family:var(--serif);font-style:italic;color:var(--rust);font-size:19px;line-height:1.35;max-width:1180px;margin:8px auto 0}

/* quote band */
.band{position:relative;height:330px;overflow:hidden;color:#fff;text-align:center}
.band img{position:absolute;inset:0;width:100%;height:100%;object-fit:cover}
.band:after{content:'';position:absolute;inset:0;background:rgba(10,16,22,.42)}
.band .q{position:absolute;inset:0;z-index:2;display:flex;flex-direction:column;justify-content:center;align-items:center;padding:0 24px;opacity:0;transition:opacity 1s}
.band .q.on{opacity:1}
.band .q b{font-family:var(--serif);font-weight:400;font-size:33px}
.band .q small{font-size:12px;font-weight:600;letter-spacing:.06em;margin:10px 0 18px;text-transform:uppercase}
.band .q i{font-family:var(--serif);font-size:19px}
.band .bdots{position:absolute;bottom:74px;left:0;right:0;z-index:3;display:flex;justify-content:center;gap:8px}

/* buttons */
.btn{display:inline-block;background:var(--navy);color:#fff;font-size:13px;letter-spacing:.06em;font-weight:500;text-transform:uppercase;padding:9px 22px;border-radius:2px}
.btn:hover{background:#24364a}
.btn-ghost{display:inline-block;border:1px solid var(--grey);color:var(--grey);font-size:13px;letter-spacing:.06em;padding:6px 20px;background:#fff;text-transform:uppercase}
.btn-ghost:hover{color:var(--rust);border-color:var(--rust)}

/* collections carousel */
.feat{padding:28px 0 0;text-align:center}
.feat .btn{margin:22px 0 24px}
.rail{position:relative}
.track{display:grid;grid-auto-flow:column;grid-auto-columns:calc((100% - 24px)/4);gap:8px;overflow-x:auto;scroll-snap-type:x mandatory;scrollbar-width:none}
.track::-webkit-scrollbar{display:none}
.ccard{scroll-snap-align:start;background:var(--mist);display:block}
.ccard .im{aspect-ratio:383/335;overflow:hidden}
.ccard img{width:100%;height:100%;object-fit:cover;transition:transform .9s ease}
.ccard:hover img{transform:scale(1.04)}
.ccard .t{font-family:var(--serif);font-style:italic;color:var(--rust);font-size:22px;padding:22px 10px 0}
.ccard .e{font-size:11px;letter-spacing:.04em;color:#7d8084;text-transform:uppercase;padding:2px 0 30px}
.arw{position:absolute;top:calc((25vw - 8px) * 335 / 383 / 2);transform:translateY(-50%);width:48px;height:48px;border:1px solid rgba(255,255,255,.85);color:#fff;display:flex;align-items:center;justify-content:center;z-index:3;background:rgba(0,0,0,.08)}
.arw svg{width:16px;height:16px}
.arw.l{left:0}.arw.r{right:0}

/* search band */
.search{background:var(--mist);padding:22px 24px}
.search form{max-width:792px;margin:0 auto;display:flex;box-shadow:0 1px 0 rgba(0,0,0,.04)}
.search label{flex:1;display:flex;align-items:center;gap:14px;background:var(--panel);padding:0 24px}
.search label svg{width:20px;height:20px;color:#444;flex:none}
.search input{flex:1;border:0;background:transparent;font:inherit;font-size:14px;letter-spacing:.03em;height:46px;outline:0;text-transform:uppercase}
.search input::placeholder{color:#9a9da1}
.search button{background:var(--navy);color:#fff;font-weight:500;text-transform:uppercase;letter-spacing:.06em;font-size:14px;padding:0 54px}

/* grid */
.coll{max-width:1300px;margin:0 auto;padding:54px 24px 70px}
.coll .h1{text-align:center}
/* sliding pill filter */
.filter-wrap{display:flex;justify-content:center;margin:24px 0 40px}
.filters{position:relative;display:flex;max-width:100%;overflow-x:auto;scrollbar-width:none;background:var(--panel);border:1px solid #eceef0;border-radius:999px;padding:5px}
.filters::-webkit-scrollbar{display:none}
.filters .pill{position:absolute;top:5px;bottom:5px;left:0;width:0;background:var(--navy);border-radius:999px;box-shadow:0 6px 18px rgba(19,30,41,.22);
  transition:left .55s cubic-bezier(.65,0,.2,1),width .55s cubic-bezier(.65,0,.2,1)}
.filters button{position:relative;z-index:1;flex:none;font-size:11.5px;letter-spacing:.16em;text-transform:uppercase;padding:11px 20px;color:var(--mute);white-space:nowrap;transition:color .4s ease;border-radius:999px}
.filters button:hover{color:var(--navy)}
.filters button.on{color:#fff}
.filters sup{font-size:9px;letter-spacing:.05em;margin-left:5px;opacity:.6;vertical-align:5px}
.grid .pcard{transition:opacity .45s ease,transform .45s ease}
.grid .pcard.fading{opacity:0;transform:translateY(10px) scale(.985)}
.grid{display:grid;grid-template-columns:repeat(3,1fr);gap:34px 22px}
.pcard{display:block}
.pcard .im{aspect-ratio:4/3;overflow:hidden;background:var(--mist);position:relative}
.pcard img{width:100%;height:100%;object-fit:cover;transition:transform .9s ease}
.pcard:hover img{transform:scale(1.04)}
.pcard .nm{font-family:var(--serif);font-size:19px;text-transform:uppercase;color:var(--navy);margin-top:14px;line-height:1.25}
.pcard .rg{font-family:var(--serif);font-style:italic;color:var(--rust);font-size:16px}
.pcard .ln{font-size:13.5px;color:#555;margin-top:4px;line-height:1.5}
.pcard.hide{display:none}
.empty{text-align:center;color:var(--grey);font-style:italic;font-family:var(--serif);display:none;padding:20px}

/* property page */
.wrap{max-width:var(--wrap);margin:0 auto}
.gal{position:relative;margin-top:6px;aspect-ratio:1045/540;overflow:hidden;background:var(--mist)}
.gal .slide{position:absolute;inset:0;opacity:0;transition:opacity .8s}
.gal .slide.on{opacity:1}
.gal img{width:100%;height:100%;object-fit:cover}
.gal .arw{top:50%}
.gal .count{position:absolute;right:14px;bottom:12px;background:rgba(19,30,41,.72);color:#fff;font-size:11.5px;padding:4px 9px;letter-spacing:.04em}
.info{background:var(--panel);margin-top:10px;padding:38px 164px 34px;display:grid;grid-template-columns:1fr 226px;gap:30px 52px;border-bottom:1px solid #b9bcbf;position:relative}
.info h1{font-family:var(--serif);font-weight:400;font-size:24px;text-transform:uppercase;color:var(--navy);display:flex;align-items:center;gap:16px;line-height:1.2}
.heart{color:var(--rust);display:inline-flex}
.heart svg{width:22px;height:22px}
.heart.on svg path{fill:var(--rust)}
.info .rg{font-family:var(--serif);font-style:italic;color:var(--rust);font-size:19px;margin-top:4px}
.info p.ln{margin-top:22px;font-size:14px;line-height:1.55}
.price .poa{background:var(--mist);text-align:center;padding:16px 0 12px;font-weight:600;font-size:18px}
.price .poa sup{font-weight:400;font-size:10px}
.price .btn{display:block;text-align:center;padding:14px 0;font-size:13px;border-radius:0}
.price small{display:block;text-align:center;font-size:10.5px;margin-top:10px;line-height:1.35}
.feats{grid-column:1/-1;display:flex;flex-wrap:wrap;gap:16px 46px;margin-top:4px}
.feats div{display:flex;align-items:center;gap:16px;font-size:13px;font-weight:600;letter-spacing:.05em;text-transform:uppercase}
.feats i{width:40px;height:40px;border-radius:50%;background:#fff;display:flex;align-items:center;justify-content:center;color:var(--rust)}
.feats i svg{width:20px;height:20px}
.more-note{position:absolute;left:50%;bottom:-16px;transform:translateX(-50%);background:#fff;border:1px solid var(--grey);color:var(--grey);font-size:12.5px;letter-spacing:.06em;padding:5px 20px;text-transform:uppercase}
.split{display:grid;grid-template-columns:1fr 1fr;margin-top:70px}
.split + .split{margin-top:0}
.split .im{aspect-ratio:522/425;overflow:hidden}
.split img{width:100%;height:100%;object-fit:cover}
.split .tx{background:var(--panel);padding:44px;display:flex;flex-direction:column;justify-content:center}
.split h2{font-size:19px;font-weight:600;letter-spacing:.03em;color:var(--navy);text-transform:uppercase;margin-bottom:14px}
.split p{font-size:14px;line-height:1.85}
.split.rev .im{order:2}
.also{max-width:var(--wrap);margin:70px auto 80px}
.also h2{font-family:var(--serif);font-weight:400;font-size:26px;text-transform:uppercase;color:var(--navy);text-align:center;margin-bottom:28px}
.also .grid{gap:22px}

/* enquiry */
.enq{max-width:760px;margin:0 auto;padding:10px 24px 80px}
.enq form{display:grid;grid-template-columns:1fr 1fr;gap:16px 18px;margin-top:30px}
.enq .full{grid-column:1/-1}
.enq label{display:block;font-size:11.5px;letter-spacing:.07em;text-transform:uppercase;color:var(--rust);margin-bottom:5px}
.enq input,.enq select,.enq textarea{width:100%;border:1px solid var(--line);background:var(--panel);font:inherit;font-size:15px;padding:11px 13px;border-radius:0;outline:0;color:var(--ink)}
.enq input:focus,.enq select:focus,.enq textarea:focus{border-color:var(--navy);background:#fff}
.enq textarea{min-height:120px;resize:vertical}
.enq .btn{border:0;padding:14px 40px;font-size:13px}
.enq .note{font-size:12.5px;color:var(--grey);margin-top:8px}
.enq .done{display:none;text-align:center;padding:50px 0}
.enq.sent form{display:none}
.enq.sent .done{display:block}
.err{color:#a33;font-size:13px;grid-column:1/-1;display:none}

/* destinations */
.dest{max-width:1300px;margin:0 auto;padding:0 24px 70px}
.dest h2{font-family:var(--serif);font-weight:400;font-size:24px;text-transform:uppercase;color:var(--navy);border-bottom:1px solid var(--line);padding:42px 0 10px;margin-bottom:26px;display:flex;justify-content:space-between;align-items:baseline}
.dest h2 span{font-family:var(--serif);font-style:italic;text-transform:none;color:var(--rust);font-size:16px}

/* footer */
.ftr{background:var(--panel);padding:44px 24px 30px}
.ftr .in{max-width:960px;margin:0 auto;display:grid;grid-template-columns:1.6fr 1fr 1fr;gap:28px}
.ftr .brand{font-size:26px}
.ftr h4{font-size:11.5px;font-weight:500;letter-spacing:.03em;color:var(--rust);text-transform:uppercase}
.ftr .v{color:#8b8e92;font-size:14px}
.ftr .v a:hover{color:var(--rust)}
.ftr .bot{max-width:960px;margin:42px auto 0;display:grid;grid-template-columns:1.6fr 1fr 1fr;gap:28px;font-size:11px;color:#8b8e92}
.ftr .bot a{margin-right:12px}
.ftr .bot a:hover{color:var(--rust)}
.ftr .assoc{font-family:var(--serif);font-style:italic;font-size:15px;color:#8b8e92}
.ftr .assoc a{color:var(--rust)}

/* spice: hover second photo */
.pcard .im img.alt{position:absolute;inset:0;opacity:0;transition:opacity .7s ease,transform .9s ease}
@media (hover:hover){.pcard:hover .im img.alt{opacity:1}}

/* spice: wordmark curtain (home, once per session) */
.curtain{position:fixed;inset:0;z-index:100;background:var(--mist);display:flex;flex-direction:column;align-items:center;justify-content:center;transition:transform 1s cubic-bezier(.77,0,.18,1)}
.curtain .cw{font-family:var(--sans);font-weight:300;color:var(--rust);font-size:clamp(38px,8vw,92px);letter-spacing:.28em;padding-left:.28em;display:flex}
.curtain .cw span{opacity:0;transform:translateY(18px);animation:cin .8s cubic-bezier(.2,.7,.2,1) forwards;animation-delay:calc(var(--i) * 90ms + 150ms)}
.curtain .cl{font-family:var(--serif);font-style:italic;color:var(--navy);font-size:clamp(15px,2vw,20px);margin-top:14px;opacity:0;animation:cfade .9s ease .95s forwards}
.curtain.up{transform:translateY(-100%)}
.curtain.skip{display:none}
@keyframes cin{to{opacity:1;transform:none}}
@keyframes cfade{to{opacity:1}}

/* spice: parallax band */
.band img{height:130%;top:-15%;will-change:transform}

@media (prefers-reduced-motion:reduce){.curtain{display:none}.hero .slide img{transition:none}}

/* upright pass: no italic script, square letter-spaced caps for regions/labels */
.pcard .rg,.info .rg,.hero-cap .r,.ccard .t,.dest h2 span{
  font-family:var(--sans);font-style:normal;text-transform:uppercase;letter-spacing:.16em;font-weight:400;color:var(--mute)}
.pcard .rg{font-size:11.5px;margin-top:4px}
.info .rg{font-size:12.5px;margin-top:8px}
.hero-cap .r{font-size:12px;color:#fff;opacity:.9;margin-top:4px}
.ccard .t{font-size:13.5px;letter-spacing:.2em;color:var(--navy);font-weight:500;padding-top:26px}
.dest h2 span{font-size:11.5px}
.sub,.band .q i,.curtain .cl,.ftr .assoc,.empty{font-family:var(--sans);font-style:normal;font-weight:300}
.sub{color:var(--mute);font-size:16.5px;letter-spacing:.01em}
.band .q i{font-size:17px;letter-spacing:.02em}
.curtain .cl{text-transform:uppercase;letter-spacing:.3em;font-size:clamp(11px,1.3vw,13px);font-weight:400;color:var(--mute)}
.ftr .assoc{font-size:13px}
.ftr .assoc a{color:var(--navy);text-decoration:underline;text-underline-offset:3px}
.ftr h4{color:var(--navy);font-weight:600;letter-spacing:.1em}
.nav a{color:var(--navy)}
.nav a:hover,.nav a.on{color:var(--mute)}
.chip svg{color:#fff}
@media (max-width:820px){.sub{font-size:15px}}

/* reveal */
.rv{opacity:0;transform:translateY(16px);transition:opacity .9s ease,transform .9s ease}
.rv.in{opacity:1;transform:none}

@media (max-width:1100px){
  .hdr{padding:0 28px}
  .nav{gap:22px}
  .info{padding:34px 48px}
  .wrap,.also{padding:0 24px}
  .gal{margin-left:-24px;margin-right:-24px}
}
@media (max-width:820px){
  .hdr{padding:0 16px;height:60px}
  .brand{font-size:22px}
  .nav{display:none}
  .burger{display:block}
  .hdr-ic{gap:18px}
  .drawer{display:block;position:fixed;top:60px;left:0;right:0;background:var(--mist);z-index:49;max-height:0;overflow:hidden;transition:max-height .35s ease}
  .drawer.open{max-height:340px;border-bottom:1px solid var(--line)}
  .drawer a{display:block;padding:15px 20px;border-top:1px solid rgba(0,0,0,.06);color:var(--rust);font-size:14px;letter-spacing:.08em;text-transform:uppercase}
  .hero{height:calc(100svh - 60px);min-height:420px}
  .hero-cap .n{font-size:23px}
  .chips{right:10px;top:10px}
  .h1{font-size:25px}
  .sub{font-size:16px}
  .band{height:300px}
  .band .q b{font-size:25px}
  .band .q i{font-size:16px}
  .track{grid-auto-columns:78%}
  .arw{display:none}
  .gal .arw{display:flex;width:40px;height:40px}
  .search{padding:18px 16px}
  .search label{padding:0 14px}
  .search button{padding:0 20px;font-size:12px}
  .coll{padding:44px 16px 56px}
  .grid{grid-template-columns:1fr;gap:30px}
  .wrap,.also{padding:0 16px}
  .gal{margin:0 -16px;aspect-ratio:4/3}
  .info{grid-template-columns:1fr;padding:28px 20px 40px;margin:0 -16px}
  .info h1{font-size:21px}
  .feats{gap:14px 26px}
  .split,.split.rev{grid-template-columns:1fr;margin-left:-16px;margin-right:-16px}
  .split.rev .im{order:0}
  .split .tx{padding:28px 20px}
  .enq form{grid-template-columns:1fr}
  .dest{padding:0 16px 56px}
  .ftr .in,.ftr .bot{grid-template-columns:1fr;gap:18px}
}
@media (min-width:821px) and (max-width:1100px){
  .grid{grid-template-columns:repeat(2,1fr)}
  .track{grid-auto-columns:calc((100% - 16px)/3)}
}

/* circular seal logo */
.brand{display:block;width:58px;height:58px;flex:none}
.seal{width:100%;height:100%;display:block;overflow:visible}
.seal .disc{fill:var(--navy)}
.seal .in{fill:none;stroke:#fff;stroke-width:.8;opacity:.85}
.seal .ring{transform-origin:50px 50px;transition:transform 1.4s cubic-bezier(.65,0,.2,1)}
.seal .ring text{font-family:var(--sans);font-size:8.6px;font-weight:500;fill:#fff;letter-spacing:.06em}
.seal .mono{font-family:var(--sans);font-size:33px;font-weight:500;fill:#fff}
.brand:hover .seal .ring{transform:rotate(180deg)}
.ftr .brand{width:110px;height:110px}
@media (max-width:900px){.brand{width:48px;height:48px}.ftr .brand{width:96px;height:96px}}
/* ---- tiny details ---- */
::selection{background:var(--navy);color:#fff}
/* scroll progress hairline under the header */
.prog{position:absolute;left:0;bottom:0;height:2px;width:100%;background:var(--navy);transform:scaleX(0);transform-origin:left;pointer-events:none}
/* nav: underline draws out from the centre */
.nav a{position:relative;padding:4px 0}
.nav a::after{content:"";position:absolute;left:0;right:0;bottom:-2px;height:1px;background:currentColor;transform:scaleX(0);transition:transform .45s cubic-bezier(.65,0,.2,1)}
.nav a:hover::after,.nav a.on::after{transform:scaleX(1)}
/* header icons: heart beats, search tilts */
.hdr-ic svg{transition:transform .4s cubic-bezier(.34,1.6,.5,1)}
.hdr-ic a:first-child:hover svg{animation:beat .9s ease}
.hdr-ic .js-search:hover svg{transform:rotate(-14deg) scale(1.08)}
@keyframes beat{0%,100%{transform:scale(1)}20%{transform:scale(1.22)}40%{transform:scale(.96)}60%{transform:scale(1.12)}}
/* buttons: fill sweeps in */
.btn{background:linear-gradient(#2e4660,#2e4660) left/0 100% no-repeat var(--navy);transition:background-size .5s cubic-bezier(.65,0,.2,1)}
.btn:hover{background-color:var(--navy);background-size:100% 100%}
.btn-ghost{background:linear-gradient(var(--navy),var(--navy)) bottom/100% 0 no-repeat #fff;transition:background-size .4s cubic-bezier(.65,0,.2,1),color .3s,border-color .3s}
.btn-ghost:hover{background-size:100% 100%;color:#fff;border-color:var(--navy)}
/* arrows nudge the way they point */
.arw svg{transition:transform .35s cubic-bezier(.34,1.6,.5,1)}
.arw.l:hover svg{transform:translateX(-4px)}
.arw.r:hover svg{transform:translateX(4px)}
/* slideshow dots stretch into a pill */
.dot{transition:width .45s cubic-bezier(.65,0,.2,1),background .3s}
.dot.on{width:20px;border-radius:4px}
/* property cards: a hairline draws under the name */
.pcard .nm{position:relative;display:inline-block}
.pcard .nm::after{content:"";position:absolute;left:0;bottom:-3px;height:1px;width:100%;background:var(--navy);transform:scaleX(0);transform-origin:left;transition:transform .6s cubic-bezier(.65,0,.2,1)}
.pcard:hover .nm::after{transform:scaleX(1)}
/* escape cards: title letters breathe out */
.ccard .t{transition:letter-spacing .6s cubic-bezier(.65,0,.2,1)}
.ccard:hover .t{letter-spacing:.3em}
/* feature icons: one full turn */
.feats i svg{transition:transform 1s cubic-bezier(.65,0,.2,1)}
.feats div:hover i svg{transform:rotate(360deg)}
/* filter counts bounce when picked */
.filters button.on sup{display:inline-block;animation:hop .5s cubic-bezier(.34,1.6,.5,1)}
@keyframes hop{0%{transform:translateY(0)}40%{transform:translateY(-5px)}100%{transform:translateY(0)}}
/* heart pop + ring burst */
.heart{position:relative}
.heart::after{content:"";position:absolute;inset:-6px;border-radius:50%;border:1px solid var(--navy);opacity:0;transform:scale(.4)}
.heart.pop svg{animation:beat .6s ease}
.heart.pop.on::after{animation:burst .6s ease-out}
@keyframes burst{0%{opacity:.9;transform:scale(.4)}100%{opacity:0;transform:scale(1.5)}}
/* footer + inline links underline */
.assoc a{background:linear-gradient(currentColor,currentColor) left bottom/0 1px no-repeat;transition:background-size .45s cubic-bezier(.65,0,.2,1)}
.assoc a:hover{background-size:100% 1px}
/* back-to-top seal */
.totop{position:fixed;right:22px;bottom:22px;width:66px;height:66px;border-radius:50%;background:#fff;box-shadow:0 2px 14px rgba(19,30,41,.14);z-index:40;opacity:0;transform:translateY(16px) scale(.8);pointer-events:none;transition:opacity .45s,transform .45s cubic-bezier(.34,1.6,.5,1)}
.totop.show{opacity:1;transform:none;pointer-events:auto}
.totop svg{width:100%;height:100%;display:block}
.totop .tr{transform-origin:50px 50px;animation:turn 16s linear infinite}
.totop text{font-family:var(--sans);font-size:8.4px;font-weight:500;fill:var(--navy)}
.totop .ta{stroke:var(--navy);stroke-width:2;stroke-linecap:round;stroke-linejoin:round;transition:transform .4s cubic-bezier(.34,1.6,.5,1)}
.totop:hover .tr{animation-duration:4s}
.totop:hover .ta{transform:translateY(-4px)}
@keyframes turn{to{transform:rotate(360deg)}}
@media (max-width:900px){.totop{width:54px;height:54px;right:14px;bottom:14px}}
@media (prefers-reduced-motion:reduce){.totop .tr{animation:none}}
/* gallery seal: turns one step per photo */
.gseal{position:absolute;left:16px;bottom:14px;width:64px;height:64px;pointer-events:none;opacity:.92;filter:drop-shadow(0 2px 8px rgba(0,0,0,.25))}
.gseal .spin{transform-origin:50px 50px;transition:transform 1.1s cubic-bezier(.65,0,.2,1)}
@media (max-width:640px){.gseal{width:48px;height:48px;left:12px;bottom:10px}}
@media (prefers-reduced-motion:reduce){.gseal .spin{transition:none}}

/* saved page + header heart count */
.hdr-ic .favs{position:relative}
.hdr-ic .favs .fc{position:absolute;top:-6px;right:-9px;min-width:16px;height:16px;padding:0 4px;border-radius:8px;background:var(--navy);color:#fff;font:500 9.5px/16px var(--sans);text-align:center;transform:scale(1);transition:transform .3s cubic-bezier(.3,1.6,.5,1)}
.hdr-ic .favs .fc:empty{transform:scale(0)}
.hdr-ic .favs.on svg{fill:currentColor}
.saved-empty{display:none;text-align:center;padding:30px 24px 10px}
.saved-empty i{display:inline-block;width:34px;height:34px;color:var(--navy);animation:sv-beat 2.4s ease-in-out infinite}
.saved-empty p{margin:14px 0 26px;letter-spacing:.04em}
.coll.saved.none .saved-empty{display:block}
.coll.saved.none .saved-go{display:none}
@keyframes sv-beat{0%,100%{transform:scale(1)}12%{transform:scale(1.15)}24%{transform:scale(1)}36%{transform:scale(1.1)}}
@media (prefers-reduced-motion:reduce){.saved-empty i{animation:none}}
