/* ================================================================
   Limakdeco - site chrome - HEADER SKIN
   Single source of truth for the header on every page (EN + FR).
   Loaded last in <head>, so it wins without editing page CSS.
   Owns: background, hairline, scroll state, transition.
   Does NOT own: height, grid, breakpoints, drawer layout.
   2026-08-09
   ================================================================ */
:root{
  --lk-hdr-ink:#0D1419;
  --lk-hdr-navy:#101E2C;
  --lk-hdr-line:rgba(201,168,100,.18);
}

/* the bar itself paints nothing; two pseudo layers do the work */
html body nav.nav,
html body .nav{
  background:transparent!important;
  background-image:none!important;
  -webkit-backdrop-filter:none!important;
  backdrop-filter:none!important;
  border-bottom:1px solid transparent!important;
  box-shadow:none!important;
  transition:border-color .3s ease!important;
}

/* layer 1 - the opaque skin, faded in once the page is scrolled */
html body nav.nav::before,
html body .nav::before{
  content:'';position:absolute;left:0;right:0;top:0;bottom:0;
  background:var(--lk-hdr-ink);
  opacity:0;transition:opacity .3s ease;
  pointer-events:none;z-index:-1;
}

/* layer 2 - reading scrim, so the logo and links stay legible on a photo.
   Taller than the bar so it fades out instead of ending on a visible edge. */
html body nav.nav::after,
html body .nav::after{
  content:'';position:absolute;left:0;right:0;top:0;height:210%;
  background:linear-gradient(180deg,
    rgba(13,20,25,.86) 0%,
    rgba(13,20,25,.72) 16%,
    rgba(13,20,25,.54) 32%,
    rgba(13,20,25,.36) 48%,
    rgba(13,20,25,.20) 64%,
    rgba(13,20,25,.09) 78%,
    rgba(13,20,25,.03) 90%,
    rgba(13,20,25,0) 100%);
  opacity:1;transition:opacity .3s ease;
  pointer-events:none;z-index:-1;
}

/* home + faq: the first band is a flat dark surface, so no scrim,
   just match the colour the hero starts on and the seam disappears */
html body nav.nav.nav--flush{ background:var(--lk-hdr-navy)!important; }
html body nav.nav.nav--flush::after{ opacity:0!important; }

/* scrolled, or mobile menu open: one opaque skin on every page */
html body nav.nav.solid::before,
html body .nav.solid::before,
html body nav.nav.open::before,
html body.lk-lock nav.nav::before,
html body.menu-open nav.nav::before,
html body.scroll-locked nav.nav::before{ opacity:1; }

html body nav.nav.solid::after,
html body .nav.solid::after,
html body nav.nav.open::after,
html body.lk-lock nav.nav::after,
html body.menu-open nav.nav::after,
html body.scroll-locked nav.nav::after{ opacity:0; }

html body nav.nav.solid,
html body .nav.solid,
html body nav.nav.open,
html body.lk-lock nav.nav,
html body.menu-open nav.nav,
html body.scroll-locked nav.nav{
  border-bottom-color:var(--lk-hdr-line)!important;
}

/* faq.html un-pinned its header below 640px; align it with every other page */
@media (max-width:640px){
  html body nav.nav.nav--flush{ position:sticky!important; top:0!important; }
}

@media (prefers-reduced-motion:reduce){
  html body nav.nav, html body .nav,
  html body nav.nav::before, html body .nav::before,
  html body nav.nav::after, html body .nav::after{ transition:none!important; }
}

/* ===== v2  nav density + CTA restore (2026-08-09) ===== */
html body nav.nav .nav-tel,
html body nav.nav .nav-book,
html body nav.nav .nav-mid a{white-space:nowrap!important}
@media (min-width:1361px) and (max-width:1560px){
  html body nav.nav .nav-mid{gap:14px!important}
  html body nav.nav .nav-mid a{letter-spacing:1.6px!important}
  html body nav.nav .nav-book{padding:12px 15px!important;letter-spacing:.10em!important}
  html body nav.nav .nav-tel{padding:11px 14px!important}
  html body nav.nav .lang a{padding:8px 8px!important}
}
@media (min-width:1361px) and (max-width:1500px){
  html body nav.nav .nav-book{display:inline-flex!important}
}

/* ===== v3  sticky-header rescue (2026-08-09) =====
   overflow-x:hidden on <body> turns it into a scroll container, which kills
   position:sticky on the nav (this is why faq.html lost its header on scroll).
   overflow-x:clip crops the same way WITHOUT creating a scroll container.
   Browsers without clip support simply ignore this and keep the old value. */
/* handled in chrome.js, scoped to the pages that actually need it */

/* ===== v4  legibility over bright photos (2026-08-09) =====
   Measured: the hero photos average RGB(167,157,133) behind the bar, and the
   old scrim left the nav links at roughly 1.9:1 contrast between 0 and 60px of
   scroll. Scrim strengthened, links lifted to cream while the bar is see-through. */
html body nav.nav::after,
html body .nav::after{
  background:linear-gradient(180deg,
    rgba(13,20,25,.94) 0%,
    rgba(13,20,25,.90) 18%,
    rgba(13,20,25,.84) 34%,
    rgba(13,20,25,.74) 46%,
    rgba(13,20,25,.56) 60%,
    rgba(13,20,25,.36) 72%,
    rgba(13,20,25,.18) 84%,
    rgba(13,20,25,.06) 93%,
    rgba(13,20,25,0) 100%)!important;
}
html body nav.nav:not(.solid):not(.nav--flush) .nav-mid a:not([aria-current]),
html body nav.nav:not(.solid):not(.nav--flush) .lang a:not([aria-current]){
  color:rgba(243,238,231,.94)!important;
  text-shadow:0 1px 2px rgba(0,0,0,.45);
}
html body nav.nav:not(.solid):not(.nav--flush) .nav-logo img{
  filter:drop-shadow(0 1px 3px rgba(0,0,0,.5));
}

/* Hero scrim: the old one dipped to 12% opacity exactly where the headline sits,
   so cream text landed on a white kitchen. Now a directional scrim keeps the left
   column dark for the type and lets the photo stay clean on the right. */
html body header.hero::after{
  background:
    linear-gradient(90deg, rgba(13,20,25,.80) 0%, rgba(13,20,25,.68) 32%, rgba(13,20,25,.36) 56%, rgba(13,20,25,.12) 78%, rgba(13,20,25,0) 100%),
    linear-gradient(180deg, rgba(13,20,25,.76) 0%, rgba(13,20,25,.46) 22%, rgba(13,20,25,.40) 50%, rgba(13,20,25,.58) 74%, rgba(13,20,25,.94) 100%)!important;
}
@media (max-width:980px){
  html body header.hero::after{
    background:linear-gradient(180deg, rgba(13,20,25,.80) 0%, rgba(13,20,25,.60) 24%, rgba(13,20,25,.58) 50%, rgba(13,20,25,.72) 76%, rgba(13,20,25,.96) 100%)!important;
  }
}

/* ===== v5  one header for both nav structures (2026-08-09) =====
   index.html + faq.html (EN/FR) use .nav-logo-wrap/.nav-links/.nav-actions,
   the other 65 pages use .nav-logo/.nav-mid/.nav-right. Same look, two names,
   so every skin rule below is written for both. */
html body nav.nav .nav-phone,
html body nav.nav .nav-bookbtn,
html body nav.nav .nav-links > a,
html body nav.nav .nav-links > .nd > .nd-t{white-space:nowrap!important}
@media (min-width:1361px) and (max-width:1560px){
  html body nav.nav .nav-links{gap:14px!important}
  html body nav.nav .nav-links > a,
  html body nav.nav .nav-links > .nd > .nd-t{letter-spacing:1.6px!important}
  html body nav.nav .nav-bookbtn{padding:12px 15px!important;letter-spacing:.10em!important;margin-left:10px!important}
}
@media (min-width:1361px) and (max-width:1500px){
  html body nav.nav .nav-bookbtn{display:inline-flex!important}
}
/* French labels are longer than English ones, so the FR bar needs its own
   density steps to keep the CTA visible without the links touching it. */
@media (min-width:1361px) and (max-width:1500px){
  html[lang^="fr"] body nav.nav .nav-mid,
  html[lang^="fr"] body nav.nav .nav-links{gap:9px!important}
  html[lang^="fr"] body nav.nav .nav-mid a,
  html[lang^="fr"] body nav.nav .nav-links > a,
  html[lang^="fr"] body nav.nav .nav-links > .nd > .nd-t{letter-spacing:1px!important}
  html[lang^="fr"] body nav.nav .nav-book,
  html[lang^="fr"] body nav.nav .nav-bookbtn{padding:12px 11px!important;letter-spacing:.04em!important;font-size:10px!important}
  html[lang^="fr"] body nav.nav .nav-tel{padding:11px 12px!important}
  html[lang^="fr"] body nav.nav .lang a{padding:8px 8px!important}
  html[lang^="fr"] body nav.nav .nav-right,
  html[lang^="fr"] body nav.nav .nav-actions{gap:8px!important}
}
@media (min-width:1501px) and (max-width:1640px){
  html[lang^="fr"] body nav.nav .nav-mid,
  html[lang^="fr"] body nav.nav .nav-links{gap:12px!important}
  html[lang^="fr"] body nav.nav .nav-mid a,
  html[lang^="fr"] body nav.nav .nav-links > a,
  html[lang^="fr"] body nav.nav .nav-links > .nd > .nd-t{letter-spacing:1.4px!important}
  html[lang^="fr"] body nav.nav .nav-book,
  html[lang^="fr"] body nav.nav .nav-bookbtn{padding:12px 13px!important;letter-spacing:.06em!important}
  html[lang^="fr"] body nav.nav .nav-tel{padding:11px 14px!important}
}

/* ===== v6  shared footer (2026-08-09) =====
   faq.html and fr/faq.html shipped without any footer at all. The markup is now
   the same element the two home pages use, so the styling lives here once. */
footer.lk-foot{padding:26px var(--pad-x,clamp(20px,5vw,80px)) 110px;border-top:1px solid var(--border,rgba(201,168,100,.15));font:300 12px/1.9 'Inter',sans-serif;color:var(--muted2,#9a927f);text-align:center}
footer.lk-foot a{color:inherit;text-decoration:none}
footer.lk-foot a:hover{color:var(--gold,#C9A864)}
@media (max-width:900px){footer.lk-foot{padding-bottom:76px}}

/* Footer skin, one palette everywhere. The interior pages and the two Journals
   still carried a warm grey (139,126,107) from an older palette while their own
   body copy had already moved to the cool grey the rest of the site uses. */
html body > footer{color:var(--muted2,#A8BAC8)!important;border-top:1px solid rgba(201,168,100,.15)!important;padding-top:26px!important}
html body > footer a{color:inherit!important;text-decoration:none!important}
html body > footer a:hover{color:var(--gold,#C9A864)!important}
/* ===== v7 . unified site footer (2026-08-09) =====================
   One footer component for every static page, EN + FR. The markup is
   built by chrome.js so there is a single source of truth; this file is
   only its skin. It replaces three different footers that used to ship:
   the bare <footer> on 64 pages, the rich .footer-v2 on the two home
   pages (which also repeated the bare one underneath) and the
   .footer-v2 + bottom bar on the two FAQ pages. */
html body > footer.lkf{padding:0 0 88px!important;border-top:none!important;color:var(--muted2,#A8BAC8)!important;text-align:left!important}
.lkf{max-width:1920px;margin:0 auto;background:var(--ink,#0D1419);font-family:'Inter',sans-serif}
.lkf *{box-sizing:border-box}
.lkf-main{display:grid;grid-template-columns:1fr 1fr;border-top:1px solid rgba(201,168,100,.15)}
.lkf-brand{padding:64px clamp(24px,5vw,64px);border-right:1px solid rgba(255,255,255,.07);display:flex;flex-direction:column;justify-content:space-between;gap:38px}
.lkf-contact{padding:64px clamp(24px,5vw,64px)}
.lkf-logo{height:46px;width:auto;display:block}
.lkf-tag{font-family:'Cormorant Garamond',serif;font-weight:300;font-size:clamp(23px,2.2vw,29px);line-height:1.24;color:#F3EEE7;margin:24px 0 0}
.lkf-tag em{color:var(--gold,#C9A864);font-style:italic}
.lkf-cta{display:flex;gap:12px;flex-wrap:wrap;margin-bottom:26px}
.lkf-b{font:600 11px/1 'Inter',sans-serif;letter-spacing:.14em;text-transform:uppercase;padding:14px 22px;border-radius:999px;cursor:pointer;border:1px solid transparent;display:inline-flex;align-items:center;gap:8px;transition:.25s ease}
.lkf-b1{background:linear-gradient(135deg,#D9BB7B,#C29A55);color:#0D1419}
.lkf-b1:hover{filter:brightness(1.08)}
.lkf-b2{background:none;border-color:rgba(255,255,255,.22);color:#F3EEE7}
.lkf-b2:hover{border-color:var(--gold,#C9A864);color:var(--gold,#C9A864)}
.lkf-nav{display:flex;flex-wrap:wrap}
.lkf-nav a{font:400 10.5px/2 'Inter',sans-serif;letter-spacing:.18em;text-transform:uppercase;color:var(--muted2,#A8BAC8);text-decoration:none;padding-right:26px;position:relative}
.lkf-nav a:hover{color:var(--gold,#C9A864)}
.lkf-t{font:600 10px/1 'Inter',sans-serif;letter-spacing:.22em;text-transform:uppercase;color:var(--gold,#C9A864);display:flex;align-items:center;gap:14px;margin-bottom:30px}
.lkf-t::before{content:'';width:26px;height:1px;background:var(--gold,#C9A864);flex:none}
.lkf-i{display:flex;gap:14px;align-items:flex-start;margin-bottom:22px}
.lkf-ic{flex:none;width:34px;height:34px;border:1px solid rgba(255,255,255,.12);border-radius:9px;display:flex;align-items:center;justify-content:center;color:var(--gold,#C9A864)}
.lkf-il{display:block;font:600 9.5px/1 'Inter',sans-serif;letter-spacing:.18em;text-transform:uppercase;color:var(--muted,#7A8FA8);margin-bottom:7px}
.lkf-iv{display:block;font:400 15px/1.6 'Inter',sans-serif;color:#E8E0D4}
.lkf-iv a{color:inherit;text-decoration:none}
.lkf-iv a:hover{color:var(--gold,#C9A864)}
.lkf-rev{display:flex;align-items:center;gap:9px;font:400 12px/1 'Inter',sans-serif;color:var(--muted2,#A8BAC8);margin-top:28px}
.lkf-rev b{font-weight:400;font-size:12px;letter-spacing:.12em;color:var(--gold,#C9A864)}
.lkf-soc{display:flex;gap:28px;align-items:center;flex-wrap:wrap;padding:18px clamp(24px,5vw,64px);border-top:1px solid rgba(255,255,255,.07)}
.lkf-soc a{font:600 10px/1 'Inter',sans-serif;letter-spacing:.18em;text-transform:uppercase;color:var(--muted2,#A8BAC8);text-decoration:none}
.lkf-soc a:hover{color:var(--gold,#C9A864)}
.lkf-bar{border-top:1px solid rgba(255,255,255,.07);padding:22px clamp(24px,5vw,64px);display:flex;flex-wrap:wrap;gap:14px 24px;align-items:center;justify-content:space-between}
.lkf-bar-l{font:400 11.5px/1.9 'Inter',sans-serif;color:var(--muted,#7A8FA8)}
.lkf-bar-l a{color:var(--muted2,#A8BAC8);text-decoration:none}
.lkf-bar-l a:hover{color:var(--gold,#C9A864)}
.lkf-lang{display:flex;border:1px solid rgba(255,255,255,.14);border-radius:2px;flex:none;align-self:center}
.lkf-lang a{padding:8px 13px;font:600 10px/1 'Inter',sans-serif;letter-spacing:.14em;color:var(--muted2,#A8BAC8);text-decoration:none}
.lkf-lang a[aria-current]{color:var(--gold,#C9A864)}
.lkf-lang a:hover{color:var(--gold,#C9A864)}
.lkf-lang i{width:1px;background:rgba(255,255,255,.14)}
.lkf a:focus-visible,.lkf button:focus-visible{outline:2px solid var(--gold,#C9A864);outline-offset:3px;border-radius:3px}
@media (max-width:880px){
  .lkf-main{grid-template-columns:1fr}
  .lkf-brand{border-right:none;border-bottom:1px solid rgba(255,255,255,.07);padding:42px 24px;gap:30px}
  .lkf-contact{padding:42px 24px}
  .lkf-bar{justify-content:flex-start}
  html body > footer.lkf{padding-bottom:84px!important}
}
/* ==== LK reading type scale v1 (20260809) ==== */
:root{--lk-h1:clamp(38px,1.771rem + 2.476vw,64px);--lk-h2d:clamp(34px,1.661rem + 1.905vw,54px);--lk-h2:clamp(28px,1.379rem + 1.524vw,44px);--lk-h3:clamp(24px,1.243rem + 0.762vw,34px);--lk-lead:clamp(15.5px,14.2px + 0.36vw,17px)}
html body .hero-main>h1.hero-h1,html body #main .hero-main>h1.hero-h1,html body .faq-page-hero>h1,html body .hubhero-in>h1,html body #main .hubhero-in>h1,html body .hero-c>h1,html body #main .hero-c>h1,html body .jn-head>h1{font-size:var(--lk-h1)!important;line-height:1.06!important;letter-spacing:-.02em!important}
html body .port-head>div>h2,html body #main .port-head>div>h2,html body .feat-txt>h2,html body #main .feat-txt>h2,html body .why>div>h2,html body #main .why>div>h2,html body .proc-hdr>h2,html body #main .proc-hdr>h2,html body .test-hdr>h2,html body #main .test-hdr>h2,html body .contact-intro>h2,html body #main .contact-intro>h2,html body section.close>h2,html body .jn-post-head>h1{font-size:var(--lk-h2d)!important;line-height:1.1!important;letter-spacing:-.015em!important}
html body .story-in>h2,html body .arg-in>h2,html body .faq-in>h2,html body .visit>h2{font-size:var(--lk-h2)!important;line-height:1.16!important;letter-spacing:-.01em!important}
html body .rel-h>h2,html body .read-in>h2{font-size:var(--lk-h3)!important;line-height:1.2!important}
html body .faq-a p{font-size:16px!important;line-height:1.8!important}
html body .faq-page-hero>p{font-size:var(--lk-lead)!important;line-height:1.8!important}
html body .faq-cta-box p{font-size:15px!important;line-height:1.7!important}
html body h2.faq-cat-title{font-size:11px!important}
html body .nd-f p{font-size:12px!important;line-height:1.65!important}
html body p.port-hint{font-size:12.5px!important}
html body .jn-card-c>p{font-size:14.5px!important;line-height:1.72!important}
html body .jn-head>p{font-size:16px!important;line-height:1.75!important}
html body footer.lkf .lkf-bar{font:400 12px/1.85 'Inter',sans-serif!important}
html body footer.lkf .lkf-nav a{font-size:11.5px!important}
html body footer.lkf .lkf-t{font-size:10.5px!important}
html body footer.lkf .lkf-il{font-size:10px!important}
html body footer.lkf .lkf-soc a{font-size:10.5px!important}
html body footer.lkf .lkf-lang a{font-size:10.5px!important}

/* --- hero rhythm on small screens ------------------------------------ */
/* below 640px the nav is sticky, so it already occupies 70px of flow;    */
/* the hero wrappers must not keep the fixed-header allowance on top too. */
@media (max-width:640px){
  html body header.hubhero{padding-top:54px!important}
  html body .jn-wrap>.jn-head{padding-top:42px!important}
  html body .jn-post-head{padding-top:40px!important}
  html body .faq-page-hero{padding-top:100px!important}
}
/* ==== LK A11Y v1 : unified focus ring + reduced motion (all pages) ==== */
html body :focus-visible{outline:2px solid var(--gold2,#D4B87A);outline-offset:3px;border-radius:2px}
html body .card:focus-visible,html body .shot:focus-visible,html body .rt:focus-visible,html body .sbar a:focus-visible,html body .sbar button:focus-visible,html body .zoom-x:focus-visible,html body .z-x:focus-visible,html body .ov-x:focus-visible{outline-offset:-3px}
html body .b1b:focus-visible,html body .nav-book:focus-visible,html body .hub-t:focus-visible{outline-color:var(--cream,#F3EEE7)}
html body .sbar .prim:focus-visible{outline-color:var(--ink,#0D1419)}
html body .skip:focus,html body .skip-link:focus{left:12px;top:12px}
@media (prefers-reduced-motion:reduce){
html body *,html body *::before,html body *::after{animation-duration:.001ms !important;animation-iteration-count:1 !important;transition-duration:.001ms !important}
html{scroll-behavior:auto !important}
}

/* LK A11Y v2 :: WCAG AA contrast for 9px meta label (was 4.26:1) */
html body .tcard-g{color:#968975}
/* LK FIX v1 :: .tcard-g was absolutely positioned against .trow (all 6 badges stacked in one spot); give the card a containing block */
html body .tcard{position:relative}
