:root {
--ink:        var(--nv-sombre);
--ink-soft:   var(--nv-sombre);
--ink-70:     color-mix(in oklab, var(--nv-encre) 55%, transparent);
--ivory:      var(--nv-sur-sombre);
--paper:      var(--nv-papier-2);
--sand:       var(--nv-filet);
--brass:      var(--nv-accent-txt);
--brass-2:    var(--nv-accent-sombre);
--bordeaux:   var(--nv-accent-txt);
--brass-brut: var(--nv-accent);
--text:       var(--nv-encre);
--muted:      var(--nv-encre-2);
--line:       var(--nv-filet);
--line-soft:  color-mix(in oklab, var(--nv-encre) 10%, transparent);
--white:      var(--nv-papier);
--serif:      var(--nv-titre);
--sans:       var(--nv-corps);
--gut:        var(--nv-gout);
--maxw:       var(--nv-maxw);
--head-h:     var(--nv-tete-h);
--topbar-h:   0px;
--ease:       var(--nv-c2);
--ease-out:   var(--nv-c);
}
*, *::before, *::after { box-sizing: border-box; }
html { -webkit-text-size-adjust: 100%; scroll-behavior: smooth; }
body {
margin: 0;
background: var(--ivory);
color: var(--text);
font-family: var(--sans);
font-size: 16px;
line-height: 1.65;
font-weight: 400;
-webkit-font-smoothing: antialiased;
overflow-x: hidden;
overflow-x: clip;
}
body.is-locked { overflow: hidden; }
img { max-width: 100%; display: block; }
a { color: inherit; text-decoration: none; }
button, input, select, textarea { font: inherit; color: inherit; }
button { background: none; border: 0; cursor: pointer; }
h1, h2, h3, h4 { margin: 0; font-weight: 400; }
p { margin: 0 0 1em; }
::selection { background: var(--ink); color: var(--ivory); }
:focus-visible { outline: 1px solid var(--brass); outline-offset: 3px; }
.wrap { width: 100%; max-width: var(--maxw); margin-inline: auto; padding-inline: var(--gut); }
.wrap-narrow { width: 100%; max-width: 980px; margin-inline: auto; padding-inline: var(--gut); }
.display {
font-family: var(--serif);
font-weight: 500;
line-height: 1.0;
letter-spacing: -.012em;
}
.d1 { font-size: clamp(44px, 8.2vw, 124px); font-weight: 600; line-height: .95; }
.d2 { font-size: clamp(33px, 5.1vw, 76px); }
.d3 { font-size: clamp(25px, 3.1vw, 45px); }
.d4 { font-size: clamp(20px, 2vw, 30px); }
.serif { font-family: var(--serif); }
.eyebrow {
font-size: 11px;
letter-spacing: .22em;
text-transform: uppercase;
font-weight: 500;
color: var(--muted);
margin: 0 0 18px;
display: flex;
align-items: center;
gap: 12px;
}
.eyebrow::before {
content: '';
width: 34px;
height: 1px;
background: var(--brass);
flex: none;
}
.eyebrow.no-rule::before { display: none; }
.lede { font-size: clamp(16px, 1.25vw, 19px); color: var(--muted); max-width: 62ch; }
.small { font-size: 13px; color: var(--muted); }
.num {
font-family: var(--serif);
font-size: 13px;
letter-spacing: .1em;
color: var(--brass);
}
.btn {
display: inline-flex;
align-items: center;
justify-content: center;
gap: 10px;
padding: 15px 30px;
border: 1px solid var(--ink);
background: var(--ink);
color: var(--ivory);
font-size: 11px;
letter-spacing: .2em;
text-transform: uppercase;
font-weight: 500;
cursor: pointer;
position: relative;
overflow: hidden;
transition: color .45s var(--ease), border-color .45s var(--ease);
}
.btn::after {
content: '';
position: absolute;
inset: 0;
background: var(--ivory);
transform: scaleY(0);
transform-origin: bottom;
transition: transform .45s var(--ease-out);
}
.btn:hover { color: var(--ink); }
.btn:hover::after { transform: scaleY(1); }
.btn > * { position: relative; z-index: 1; }
.btn span { position: relative; z-index: 1; }
.btn-ghost { background: transparent; color: var(--ink); }
.btn-ghost::after { background: var(--ink); }
.btn-ghost:hover { color: var(--ivory); }
.btn-light { background: transparent; color: var(--ivory); border-color: rgba(248, 245, 239, .6); }
.btn-light::after { background: var(--ivory); }
.btn-light:hover { color: var(--ink); border-color: var(--ivory); }
.btn-solid-light { background: var(--ivory); color: var(--ink); border-color: var(--ivory); }
.btn-solid-light::after { background: var(--ink); }
.btn-solid-light:hover { color: var(--ivory); }
.btn[disabled] { opacity: .4; pointer-events: none; }
.btn-sm { padding: 11px 20px; font-size: 10px; }
.btn-full { width: 100%; }
.link-u {
display: inline-flex;
align-items: center;
gap: 10px;
font-size: 11px;
letter-spacing: .2em;
text-transform: uppercase;
font-weight: 500;
padding-bottom: 5px;
background-image: linear-gradient(currentColor, currentColor);
background-size: 100% 1px;
background-position: 0 100%;
background-repeat: no-repeat;
transition: background-size .5s var(--ease-out), color .3s;
}
.link-u:hover { background-size: 0% 1px; color: var(--brass); }
.topbar {
background: var(--ink);
color: var(--ivory);
font-size: 11px;
letter-spacing: .16em;
text-transform: uppercase;
height: 38px;
display: flex;
align-items: center;
overflow: hidden;
position: relative;
z-index: 60;
}
.topbar-track { display: flex; gap: 60px; white-space: nowrap; animation: slide 42s linear infinite; padding-left: 60px; }
.topbar-track span { opacity: .82; }
.topbar-track em { font-style: normal; color: var(--brass-2); }
@keyframes slide { to { transform: translateX(-50%); } }
.head {
position: sticky;
top: 0;
z-index: 50;
background: var(--ivory);
border-bottom: 1px solid var(--line);
transition: background .4s var(--ease), border-color .4s var(--ease), color .4s var(--ease);
}
.head-inner {
height: var(--head-h);
display: grid;
grid-template-columns: auto minmax(0, 1fr) auto;
grid-template-rows: minmax(0, 1fr);
align-items: center;
gap: clamp(12px, 2vw, 34px);
}
.brandmark {
display: block;
white-space: nowrap;
}
.brand-logo {
display: block;
width: clamp(132px, 13vw, 178px);
height: auto;
}
.foot .brand-logo { width: clamp(150px, 15vw, 200px); }
.brandmark small {
display: block;
font-family: var(--sans);
font-size: 8px;
line-height: 1.3;
letter-spacing: .26em;
text-transform: uppercase;
color: var(--brass);
margin-top: 6px;
font-weight: 500;
}
.head.transparent .brandmark small { color: var(--brass-2); }
.nav { display: flex; gap: clamp(13px, 1.7vw, 30px); align-items: center; justify-content: center; }
.nav > li { list-style: none; }
.nav-link {
font-size: clamp(10px, .86vw, 11.5px);
letter-spacing: .15em;
white-space: nowrap;
text-transform: uppercase;
font-weight: 500;
padding: 28px 0;
display: block;
position: relative;
}
.nav-link::after {
content: '';
position: absolute;
left: 0; right: 0; bottom: 22px;
height: 1px;
background: currentColor;
transform: scaleX(0);
transform-origin: left;
transition: transform .45s var(--ease-out);
}
.nav-link:hover::after, .nav-item.open .nav-link::after, .nav-link.active::after { transform: scaleX(1); }
.head-tools { display: flex; justify-content: flex-end; align-items: center; gap: clamp(12px, 1.3vw, 20px); }
.tool {
font-size: 11px;
letter-spacing: .16em;
text-transform: uppercase;
font-weight: 500;
display: inline-flex;
align-items: center;
gap: 7px;
transition: color .3s;
}
.tool:hover { color: var(--brass); }
.tool i { font-style: normal; }
.cart-count {
min-width: 17px; height: 17px;
border-radius: 50%;
background: var(--ink);
color: var(--ivory);
font-size: 9.5px;
display: inline-flex;
align-items: center;
justify-content: center;
letter-spacing: 0;
padding: 0 4px;
}
.head.on-dark .cart-count { background: var(--ivory); color: var(--ink); }
.burger { display: none; width: 26px; height: 12px; position: relative; }
.burger span { position: absolute; left: 0; right: 0; height: 1px; background: currentColor; transition: transform .35s var(--ease), opacity .3s; }
.burger span:first-child { top: 0; }
.burger span:last-child { bottom: 0; }
body.menu-open .burger span:first-child { transform: translateY(5.5px) rotate(45deg); }
body.menu-open .burger span:last-child { transform: translateY(-5.5px) rotate(-45deg); }
.head.transparent {
background: transparent;
border-color: transparent;
color: var(--ivory);
}
.head.transparent .brandmark small { color: var(--brass-2); }
body.has-hero .hero {
margin-top: calc(-1 * var(--head-h));
height: calc(100svh - var(--topbar-h));
}
.mega {
position: absolute;
left: 0; right: 0;
top: var(--head-h);
background: var(--ivory);
border-top: 1px solid var(--line);
border-bottom: 1px solid var(--line);
color: var(--text);
padding: 44px 0 52px;
display: block;
opacity: 0;
visibility: hidden;
transform: translateY(-8px);
transition: opacity .35s var(--ease), transform .45s var(--ease-out), visibility .35s;
box-shadow: 0 30px 60px -40px rgba(11, 26, 42, .35);
}
.nav-item { position: static; }
.nav-item.open .mega { opacity: 1; visibility: visible; transform: none; }
.mega-inner {
width: 100%; max-width: var(--maxw); margin-inline: auto; padding-inline: var(--gut);
display: grid; grid-template-columns: repeat(3, minmax(0, 1fr)) minmax(0, 1.1fr); gap: clamp(24px, 4vw, 70px);
}
.mega h4 { font-size: 10.5px; letter-spacing: .22em; text-transform: uppercase; color: var(--brass); margin-bottom: 16px; font-weight: 500; }
.mega ul { margin: 0; padding: 0; list-style: none; display: grid; gap: 9px; }
.mega a.m-link { font-size: 14px; color: var(--text); transition: color .25s, padding-left .35s var(--ease-out); display: inline-block; }
.mega a.m-link:hover { color: var(--ink); padding-left: 8px; }
.mega-visual { display: block; position: relative; overflow: hidden; }
.mega-visual img { width: 100%; height: 230px; object-fit: cover; transition: transform 1.2s var(--ease-out); }
.mega-visual:hover img { transform: scale(1.05); }
.mega-visual figcaption {
position: absolute; left: 18px; bottom: 16px; color: var(--white);
font-size: 11px; letter-spacing: .2em; text-transform: uppercase;
text-shadow: 0 1px 14px rgba(0, 0, 0, .5);
}
.mmenu {
position: fixed;
inset: 0;
background: var(--ink);
color: var(--ivory);
z-index: 70;
transform: translateY(-100%);
transition: transform .7s var(--ease-out);
overflow-y: auto;
padding: 26px var(--gut) 60px;
display: flex;
flex-direction: column;
}
body.menu-open .mmenu { transform: none; }
.mmenu-top { display: flex; justify-content: space-between; align-items: center; height: var(--head-h); }
.mmenu-close { font-size: 26px; line-height: 1; }
.mmenu nav { margin-top: 30px; display: grid; gap: 4px; }
.mmenu nav a {
font-family: var(--serif);
font-size: clamp(30px, 8vw, 48px);
padding: 10px 0;
border-bottom: 1px solid rgba(248, 245, 239, .14);
display: flex;
justify-content: space-between;
align-items: baseline;
opacity: 0;
transform: translateY(18px);
}
body.menu-open .mmenu nav a { animation: mIn .7s var(--ease-out) forwards; }
.mmenu nav a i { font-style: normal; font-family: var(--sans); font-size: 10px; letter-spacing: .2em; color: var(--brass-2); }
@keyframes mIn { to { opacity: 1; transform: none; } }
.mmenu-foot { margin-top: auto; padding-top: 40px; display: grid; gap: 8px; font-size: 12px; opacity: .7; }
.hero {
position: relative;
height: 100svh;
min-height: 620px;
background: var(--ink);
overflow: hidden;
color: var(--ivory);
}
.hero canvas, .hero .hero-fallback {
position: absolute;
inset: 0;
width: 100%;
height: 100%;
display: block;
}
.hero-fallback img {
position: absolute; inset: 0; width: 100%; height: 100%; object-fit: cover;
opacity: 0; transition: opacity 1.4s var(--ease);
}
.hero-fallback img.on { opacity: 1; }
.hero::after {
content: '';
position: absolute; inset: 0;
background:
linear-gradient(to right, rgba(6, 15, 26, .72) 0%, rgba(6, 15, 26, .38) 45%, rgba(6, 15, 26, .12) 75%),
linear-gradient(to top, rgba(6, 15, 26, .6), transparent 42%);
pointer-events: none;
}
.hero-content {
position: relative;
z-index: 2;
height: 100%;
display: flex;
flex-direction: column;
justify-content: flex-end;
padding-bottom: clamp(48px, 8vh, 96px);
max-width: var(--maxw);
margin-inline: auto;
padding-inline: var(--gut);
}
.hero-kicker {
font-size: 11px; letter-spacing: .28em; text-transform: uppercase;
color: rgba(248, 245, 239, .8); margin-bottom: 22px;
display: flex; align-items: center; gap: 14px;
}
.hero-kicker::before { content: ''; width: 46px; height: 1px; background: var(--brass-2); }
.hero h1 { max-width: 15ch; margin-bottom: 26px; }
.hero h1 .w { display: inline-block; overflow: hidden; vertical-align: bottom; }
.js .hero h1 .w > span { display: inline-block; transform: translateY(105%); transition: transform 1.05s var(--ease-out); }
.hero.ready h1 .w > span { transform: none; }
.hero-sub { max-width: 46ch; color: rgba(248, 245, 239, .84); font-size: clamp(15px, 1.15vw, 17.5px); margin-bottom: 34px; }
.hero-actions { display: flex; flex-wrap: wrap; gap: 14px; }
.hero-ui {
position: absolute;
right: var(--gut);
bottom: clamp(48px, 8vh, 96px);
z-index: 3;
display: flex;
align-items: center;
gap: 22px;
}
.hero-dots { display: flex; gap: 10px; }
.hero-dot { width: 42px; height: 2px; background: rgba(248, 245, 239, .3); position: relative; overflow: hidden; }
.hero-dot i { position: absolute; inset: 0; background: var(--ivory); transform: scaleX(0); transform-origin: left; }
.hero-dot.on i { animation: dotFill 6.4s linear forwards; }
@keyframes dotFill { to { transform: scaleX(1); } }
.hero-index { font-family: var(--serif); font-size: 14px; letter-spacing: .08em; }
.hero-index b { font-weight: 500; }
.hero-index span { opacity: .5; }
.scroll-cue {
position: absolute; left: 50%; bottom: 26px; transform: translateX(-50%);
z-index: 3; font-size: 9.5px; letter-spacing: .26em; text-transform: uppercase;
color: rgba(248, 245, 239, .65); display: grid; justify-items: center; gap: 10px;
}
.scroll-cue i { width: 1px; height: 46px; background: linear-gradient(rgba(248,245,239,.7), transparent); display: block; }
.hero-caption {
position: absolute; right: 16px; top: 50%; transform: translateY(-50%); z-index: 3;
writing-mode: vertical-rl; font-size: 9.5px; letter-spacing: .26em; text-transform: uppercase;
color: rgba(248, 245, 239, .5); max-height: 46svh; overflow: hidden;
}
.sec { padding-block: clamp(72px, 9vw, 140px); }
.sec-tight { padding-block: clamp(50px, 6vw, 92px); }
.sec-head { display: flex; justify-content: space-between; align-items: flex-end; gap: 30px; margin-bottom: clamp(32px, 4vw, 58px); flex-wrap: wrap; }
.sec-head p { margin: 0; }
.bg-paper { background: var(--paper); }
.bg-ink { background: var(--ink); color: var(--ivory); }
.bg-ink .eyebrow { color: rgba(248, 245, 239, .62); }
.bg-ink .lede { color: rgba(248, 245, 239, .78); }
.bg-ink .small { color: rgba(248, 245, 239, .55); }
.rule { height: 1px; background: var(--line); border: 0; margin: 0; }
.maisons-band { border-block: 1px solid var(--line); overflow: hidden; padding: 22px 0; background: var(--ivory); }
.maisons-track { display: flex; gap: clamp(40px, 6vw, 88px); white-space: nowrap; animation: slide 46s linear infinite; }
.maisons-track:hover { animation-play-state: paused; }
.maisons-track span {
font-family: var(--serif);
font-size: clamp(17px, 1.7vw, 25px);
letter-spacing: .12em;
text-transform: uppercase;
color: var(--ink);
opacity: .62;
transition: opacity .3s;
}
.maisons-track span:hover { opacity: 1; }
.split { display: grid; grid-template-columns: minmax(0, 1.05fr) minmax(0, 1fr); gap: clamp(28px, 5vw, 90px); align-items: center; }
.split.reverse > *:first-child { order: 2; }
.split.wide-left { grid-template-columns: minmax(0, 1.5fr) minmax(0, 1fr); align-items: start; }
.figure { position: relative; overflow: hidden; }
.figure img { width: 100%; height: 100%; object-fit: cover; transition: transform 1.6s var(--ease-out); }
.js .figure img { transform: scale(1.06); }
.figure.is-in img { transform: scale(1); }
.figure-tall { aspect-ratio: 4 / 5; }
.figure-wide { aspect-ratio: 16 / 10; }
.figure-cap { font-size: 11px; letter-spacing: .18em; text-transform: uppercase; color: var(--muted); margin-top: 14px; }
.stat-row {
display: flex;
gap: clamp(20px, 3vw, 48px);
margin-top: 42px;
flex-wrap: wrap;
}
.stat { min-width: 0; }
.stat b { font-family: var(--serif); font-size: clamp(28px, 3vw, 42px); font-weight: 400; display: block; line-height: 1; }
.stat span {
display: block;
font-size: 10.5px;
letter-spacing: .15em;
text-transform: uppercase;
color: var(--muted);
margin-top: 6px;
}
.cats { display: grid; grid-template-columns: repeat(3, minmax(0, 1fr)); gap: 2px; }
.cat-card { position: relative; overflow: hidden; aspect-ratio: 3 / 4; display: block; background: var(--sand); }
.cat-card:nth-child(1), .cat-card:nth-child(6) { aspect-ratio: 3 / 4; }
.cat-card img { width: 100%; height: 100%; object-fit: cover; transition: transform 1.5s var(--ease-out), filter 1s; }
.cat-card:hover img { transform: scale(1.06); }
.cat-card::after { content: ''; position: absolute; inset: 0; background: linear-gradient(to top, rgba(6,15,26,.62), rgba(6,15,26,0) 55%); }
.cat-card-body { position: absolute; left: 0; right: 0; bottom: 0; z-index: 2; padding: 26px; color: var(--ivory); }
.cat-card-body h3 {
font-family: var(--serif);
font-size: clamp(22px, 2.2vw, 32px);
overflow-wrap: break-word;
hyphens: auto;
}
.cat-card-body em {
font-style: normal; font-size: 10.5px; letter-spacing: .2em; text-transform: uppercase;
opacity: .8; display: inline-block; margin-top: 8px;
background-image: linear-gradient(currentColor, currentColor);
background-size: 0% 1px; background-position: 0 100%; background-repeat: no-repeat; padding-bottom: 4px;
transition: background-size .5s var(--ease-out);
}
.cat-card:hover .cat-card-body em { background-size: 100% 1px; }
.grid-prod { display: grid; grid-template-columns: repeat(4, minmax(0, 1fr)); gap: clamp(14px, 1.6vw, 26px) clamp(12px, 1.4vw, 22px); }
.grid-prod.cols-3 { grid-template-columns: repeat(3, minmax(0, 1fr)); }
.prod { position: relative; display: flex; flex-direction: column; }
.prod-media { display: block; position: relative; overflow: hidden; background: var(--paper); aspect-ratio: 3 / 4; }
.prod-media img { width: 100%; height: 100%; object-fit: cover; transition: opacity .7s var(--ease), transform 1.4s var(--ease-out); }
.prod-media img.alt { position: absolute; inset: 0; opacity: 0; }
.prod:hover .prod-media img.alt { opacity: 1; }
.prod:hover .prod-media img { transform: scale(1.04); }
.prod-badge {
position: absolute; top: 12px; left: 12px; z-index: 2;
background: var(--ivory); color: var(--ink);
font-size: 9.5px; letter-spacing: .16em; text-transform: uppercase; padding: 6px 10px;
}
.prod-badge.sale { background: var(--bordeaux); color: var(--ivory); }
.prod-fav {
position: absolute; top: 10px; right: 10px; z-index: 3; width: 32px; height: 32px;
display: grid; place-items: center; color: var(--ink); background: rgba(248,245,239,.86);
opacity: 0; transform: translateY(-4px); transition: opacity .35s, transform .35s, color .3s;
}
.prod:hover .prod-fav, .prod-fav.on { opacity: 1; transform: none; }
.prod-fav.on { color: var(--bordeaux); }
.prod-quick {
position: absolute; left: 12px; right: 12px; bottom: 12px; z-index: 2;
background: var(--ivory); color: var(--ink); text-align: center;
font-size: 10px; letter-spacing: .2em; text-transform: uppercase; padding: 12px;
opacity: 0; transform: translateY(10px); transition: opacity .4s var(--ease), transform .5s var(--ease-out);
}
.prod:hover .prod-quick { opacity: 1; transform: none; }
.prod-quick:hover { background: var(--ink); color: var(--ivory); }
.prod-body { padding: 16px 2px 0; }
.prod-body > a { display: block; }
.prod-maison { font-size: 10px; letter-spacing: .2em; text-transform: uppercase; color: var(--brass); }
.prod-name { font-size: 15px; margin: 5px 0 4px; font-weight: 400; }
.prod-price { font-size: 14px; letter-spacing: .02em; display: flex; gap: 10px; align-items: baseline; }
.prod-price s { color: var(--muted); font-size: 12.5px; }
.prod-price .now { color: var(--bordeaux); }
.prod-sizes {
font-size: 11px; color: var(--muted); margin-top: 6px; letter-spacing: .06em;
white-space: nowrap; overflow: hidden; text-overflow: ellipsis;
}
.prod-sizes .out { text-decoration: line-through; opacity: .45; }
.rail { display: flex; gap: clamp(12px, 1.4vw, 22px); overflow-x: auto; scroll-snap-type: x mandatory; padding-bottom: 10px; scrollbar-width: none; }
.rail::-webkit-scrollbar { display: none; }
.rail > * { flex: 0 0 clamp(240px, 22vw, 340px); scroll-snap-align: start; }
.rail-nav { display: flex; gap: 8px; }
.rail-btn { width: 42px; height: 42px; border: 1px solid var(--line-soft); display: grid; place-items: center; transition: background .3s, color .3s, border-color .3s; }
.rail-btn:hover { background: var(--ink); color: var(--ivory); border-color: var(--ink); }
.pin { position: relative; }
.pin-sticky { position: sticky; top: 0; height: 100svh; display: flex; align-items: center; overflow: hidden; }
.pin-track { display: flex; gap: clamp(16px, 2vw, 34px); padding-inline: var(--gut); will-change: transform; }
.pin-item { flex: 0 0 clamp(260px, 30vw, 460px); }
.pin-item .figure { aspect-ratio: 3 / 4; }
.pin-item h3 { font-family: var(--serif); font-size: clamp(20px, 1.7vw, 26px); margin-top: 18px; }
.pin-item p { font-size: 13px; color: rgba(248, 245, 239, .62); margin: 4px 0 0; }
.pin-intro { flex: 0 0 clamp(260px, 26vw, 400px); align-self: center; }
.maison-list { display: grid; gap: 1px; background: var(--line); border-block: 1px solid var(--line); }
.maison-row {
background: var(--ivory);
display: grid; grid-template-columns: 60px minmax(0, 1.1fr) minmax(0, 1.6fr) auto;
gap: clamp(16px, 3vw, 44px); align-items: center;
padding: clamp(20px, 2.4vw, 34px) 0;
position: relative; transition: background .5s var(--ease), color .5s var(--ease);
}
.maison-row:hover { background: var(--ink); color: var(--ivory); }
.maison-row:hover .maison-desc { color: rgba(248, 245, 239, .7); }
.maison-row:hover .num { color: var(--brass-2); }
.maison-name {
font-family: var(--serif);
font-size: clamp(21px, 2.4vw, 36px);
overflow-wrap: break-word;
hyphens: auto;
}
.maison-desc { font-size: 14px; color: var(--muted); max-width: 60ch; transition: color .5s; }
.maison-go { font-size: 10px; letter-spacing: .2em; text-transform: uppercase; opacity: .5; }
.maison-hover-img {
position: fixed; width: 240px; height: 300px; object-fit: cover; z-index: 40;
pointer-events: none; opacity: 0; transform: translate(-50%, -50%) scale(.94);
transition: opacity .4s var(--ease), transform .6s var(--ease-out);
}
.maison-hover-img.on { opacity: 1; transform: translate(-50%, -50%) scale(1); }
.steps { display: grid; grid-template-columns: repeat(3, minmax(0, 1fr)); gap: 1px; background: var(--line-soft); }
.steps > div { background: var(--ivory); padding: clamp(26px, 3vw, 44px) clamp(20px, 2.4vw, 38px); }
.bg-ink .steps { background: rgba(248, 245, 239, .16); }
.bg-ink .steps > div { background: var(--ink); }
.steps h3 { font-family: var(--serif); font-size: clamp(19px, 1.7vw, 25px); margin: 14px 0 10px; }
.steps p { font-size: 14px; color: var(--muted); margin: 0; }
.bg-ink .steps p { color: rgba(248, 245, 239, .66); }
.shop-block { position: relative; min-height: 88svh; display: flex; align-items: flex-end; overflow: hidden; color: var(--ivory); }
.shop-block > img { position: absolute; inset: 0; width: 100%; height: 100%; object-fit: cover; }
.shop-block::after { content: ''; position: absolute; inset: 0; background: linear-gradient(to top, rgba(6,15,26,.85), rgba(6,15,26,.15) 65%); }
.shop-card { position: relative; z-index: 2; width: 100%; padding-block: clamp(40px, 6vw, 80px); }
.shop-grid { display: grid; grid-template-columns: minmax(0, 1.2fr) minmax(0, 1fr); gap: clamp(24px, 5vw, 80px); align-items: end; }
.info-list { display: grid; gap: 14px; margin: 0; padding: 0; list-style: none; }
.info-list li { display: grid; grid-template-columns: 120px minmax(0, 1fr); gap: 16px; font-size: 14px; padding-bottom: 13px; border-bottom: 1px solid rgba(248, 245, 239, .18); }
.info-list b { font-weight: 400; font-size: 10.5px; letter-spacing: .2em; text-transform: uppercase; opacity: .62; padding-top: 3px; }
.info-list.on-light li { border-bottom-color: var(--line); }
.nl { display: grid; grid-template-columns: minmax(0, 1fr) minmax(0, 1fr); gap: clamp(24px, 5vw, 80px); align-items: center; }
.field-line { display: flex; border-bottom: 1px solid var(--line); }
.field-line input { flex: 1; border: 0; background: none; padding: 14px 0; font-size: 15px; }
.field-line input::placeholder { color: var(--muted); }
.field-line button { padding: 0 4px; font-size: 11px; letter-spacing: .2em; text-transform: uppercase; }
.bg-ink .field-line { border-color: rgba(248, 245, 239, .3); }
.bg-ink .field-line input::placeholder { color: rgba(248, 245, 239, .5); }
.foot { background: var(--ink); color: var(--ivory); padding-top: clamp(56px, 6vw, 96px); }
.foot-grid { display: grid; grid-template-columns: minmax(0, 1.5fr) repeat(3, minmax(0, 1fr)); gap: clamp(26px, 4vw, 60px); padding-bottom: 56px; }
.foot h4 { font-size: 10.5px; letter-spacing: .22em; text-transform: uppercase; color: var(--brass-2); margin-bottom: 18px; }
.foot ul { list-style: none; margin: 0; padding: 0; display: grid; gap: 10px; }
.foot a { font-size: 14px; color: rgba(248, 245, 239, .74); transition: color .3s; }
.foot a:hover { color: var(--ivory); }
.foot-bottom {
border-top: 1px solid rgba(248, 245, 239, .16);
padding: 22px 0 30px; display: flex; justify-content: space-between; gap: 20px; flex-wrap: wrap;
font-size: 11.5px; color: rgba(248, 245, 239, .55);
}
.foot-note { font-size: 11.5px; color: rgba(248, 245, 239, .45); max-width: 76ch; padding-bottom: 26px; line-height: 1.7; }
.scrim { position: fixed; inset: 0; background: rgba(8, 17, 28, .45); opacity: 0; visibility: hidden; transition: opacity .45s, visibility .45s; z-index: 80; backdrop-filter: blur(2px); }
.scrim.on { opacity: 1; visibility: visible; }
.panel {
position: fixed; top: 0; right: 0; bottom: 0; width: min(460px, 100vw);
background: var(--ivory); z-index: 90; transform: translateX(100%);
transition: transform .6s var(--ease-out); display: flex; flex-direction: column;
}
.panel.on { transform: none; }
.panel-head { display: flex; justify-content: space-between; align-items: center; padding: 24px 26px; border-bottom: 1px solid var(--line); }
.panel-head h3 { font-size: 11px; letter-spacing: .22em; text-transform: uppercase; font-weight: 500; }
.panel-body { flex: 1; overflow-y: auto; padding: 22px 26px; }
.panel-foot { border-top: 1px solid var(--line); padding: 22px 26px; display: grid; gap: 14px; }
.panel-close { font-size: 22px; line-height: 1; }
.cart-line { display: grid; grid-template-columns: 84px minmax(0, 1fr); gap: 16px; padding-bottom: 20px; margin-bottom: 20px; border-bottom: 1px solid var(--line); }
.cart-line img { width: 84px; height: 108px; object-fit: cover; background: var(--paper); }
.cart-line-lg { grid-template-columns: 110px minmax(0, 1fr) auto; }
.cart-line-lg img { width: 110px; height: 140px; }
.cart-line-prix { text-align: right; }
.cart-line h4 { font-size: 14px; }
.cart-line .meta { font-size: 12px; color: var(--muted); margin: 3px 0 8px; }
.qty { display: inline-flex; align-items: center; border: 1px solid var(--line); }
.qty button { width: 28px; height: 28px; display: grid; place-items: center; font-size: 14px; }
.qty span { min-width: 26px; text-align: center; font-size: 13px; }
.cart-total { display: flex; justify-content: space-between; font-size: 14px; }
.cart-total b { font-weight: 500; }
.empty { text-align: center; padding: 60px 0; color: var(--muted); }
.search-panel {
position: fixed; left: 0; right: 0; top: 0; background: var(--ivory); z-index: 90;
transform: translateY(-100%); transition: transform .6s var(--ease-out); padding: 30px 0 40px; max-height: 100svh; overflow-y: auto;
}
.search-panel.on { transform: none; }
.search-field { display: flex; align-items: center; gap: 16px; border-bottom: 1px solid var(--ink); padding-bottom: 14px; }
.search-field input {
flex: 1; min-width: 0; width: 100%;
border: 0; background: none; font-family: var(--serif);
font-size: clamp(20px, 4vw, 46px); padding: 0;
}
.search-field .panel-close { flex: none; }
.search-field svg { flex: none; }
.search-field input::placeholder { color: var(--sand); }
.search-results { margin-top: 30px; }
.crumbs { font-size: 11px; letter-spacing: .14em; text-transform: uppercase; color: var(--muted); padding: 22px 0; }
.crumbs a:hover { color: var(--ink); }
.page-head { padding-block: clamp(28px, 4vw, 60px) clamp(28px, 3vw, 44px); }
.page-head h1 { margin-bottom: 16px; }
.page-head .split .d1 { font-size: clamp(38px, 5.6vw, 84px); }
.shop-layout { display: grid; grid-template-columns: 244px minmax(0, 1fr); gap: clamp(24px, 3vw, 56px); align-items: start; }
.filters { position: sticky; top: calc(var(--head-h) + 20px); }
.f-group { border-bottom: 1px solid var(--line); padding: 18px 0; }
.f-group > button { width: 100%; display: flex; justify-content: space-between; align-items: center; font-size: 11px; letter-spacing: .2em; text-transform: uppercase; font-weight: 500; }
.f-body { display: grid; gap: 10px; padding-top: 16px; }
.f-group.closed .f-body { display: none; }
.check { display: flex; align-items: center; gap: 10px; font-size: 14px; color: var(--text); cursor: pointer; }
.check input { appearance: none; width: 13px; height: 13px; border: 1px solid var(--muted); flex: none; transition: background .2s, border-color .2s; }
.check input:checked { background: var(--ink); border-color: var(--ink); }
.check:hover { color: var(--ink); }
.sizes-pick { display: flex; flex-wrap: wrap; gap: 7px; }
.size-chip { border: 1px solid var(--line); padding: 7px 12px; font-size: 12px; cursor: pointer; transition: all .25s; background: none; }
.size-chip.on { background: var(--ink); color: var(--ivory); border-color: var(--ink); }
.size-chip[disabled] { opacity: .32; cursor: not-allowed; text-decoration: line-through; }
.shop-bar { display: flex; justify-content: space-between; align-items: center; gap: 20px; padding-bottom: 22px; border-bottom: 1px solid var(--line); margin-bottom: 26px; flex-wrap: wrap; }
.select-line { border: 1px solid var(--line); padding: 9px 14px; font-size: 11px; letter-spacing: .14em; text-transform: uppercase; background: none; }
.chips { display: flex; gap: 8px; flex-wrap: wrap; }
.chip { border: 1px solid var(--line); padding: 6px 12px; font-size: 11px; letter-spacing: .1em; display: inline-flex; gap: 8px; align-items: center; }
.chip button { font-size: 13px; line-height: 1; opacity: .55; }
.filters-toggle { display: none; }
.pdp { display: grid; grid-template-columns: minmax(0, 1.25fr) minmax(0, 1fr); gap: clamp(26px, 4vw, 76px); align-items: start; }
.pdp-gallery { display: grid; grid-template-columns: minmax(0, 1fr) minmax(0, 1fr); gap: 8px; }
.pdp-gallery .g-item { background: var(--paper); overflow: hidden; aspect-ratio: 3 / 4; }
.pdp-gallery .g-item:first-child:nth-last-child(1) { grid-column: 1 / -1; aspect-ratio: 4 / 3; }
.pdp-gallery img { width: 100%; height: 100%; object-fit: cover; cursor: zoom-in; transition: transform 1.2s var(--ease-out); }
.pdp-gallery img:hover { transform: scale(1.03); }
.pdp-info { position: sticky; top: calc(var(--head-h) + 28px); }
.pdp-price { font-size: 21px; margin: 18px 0 6px; display: flex; gap: 12px; align-items: baseline; }
.pdp-price s { font-size: 16px; color: var(--muted); }
.size-row { display: flex; justify-content: space-between; align-items: baseline; margin: 26px 0 12px; }
.size-row span { font-size: 11px; letter-spacing: .2em; text-transform: uppercase; }
.size-row button { font-size: 11px; letter-spacing: .1em; text-decoration: underline; text-underline-offset: 3px; color: var(--muted); }
.stock-line { font-size: 12.5px; margin-top: 12px; display: flex; align-items: center; gap: 8px; color: var(--muted); }
.dot { width: 6px; height: 6px; border-radius: 50%; background: var(--brass); flex: none; }
.dot.low { background: var(--brass); }
.dot.out { background: var(--brass); }
.acc { border-top: 1px solid var(--line); }
.acc-item { border-bottom: 1px solid var(--line); }
.acc-item > button { width: 100%; display: flex; justify-content: space-between; align-items: center; padding: 18px 0; font-size: 11.5px; letter-spacing: .16em; text-transform: uppercase; }
.acc-body { max-height: 0; overflow: hidden; transition: max-height .5s var(--ease); }
.acc-item.open .acc-body { max-height: 460px; }
.acc-body div { padding-bottom: 20px; font-size: 14px; color: var(--text); }
.pdp-service { display: flex; gap: 22px; flex-wrap: wrap; margin-top: 26px; font-size: 12px; color: var(--muted); }
.pdp-service span { display: inline-flex; gap: 8px; align-items: center; }
.lightbox { position: fixed; inset: 0; background: rgba(12, 12, 14, .95); z-index: 95; display: grid; place-items: center; opacity: 0; visibility: hidden; transition: opacity .4s, visibility .4s; }
.lightbox.on { opacity: 1; visibility: visible; }
.lightbox img { max-width: 92vw; max-height: 88svh; object-fit: contain; }
.lightbox button { position: absolute; top: 24px; right: 28px; color: var(--ivory); font-size: 26px; z-index: 2; }
.guide-card { background: var(--ivory); color: var(--text); padding: clamp(24px, 4vw, 44px); width: min(680px, 92vw); max-height: 84svh; overflow-y: auto; }
.guide-card h3 { font-family: var(--serif); font-size: clamp(22px, 2.4vw, 30px); margin-bottom: 8px; }
.guide-card table { width: 100%; border-collapse: collapse; font-size: 14px; margin-top: 18px; }
.guide-card th, .guide-card td { text-align: left; padding: 10px 8px 10px 0; border-bottom: 1px solid var(--line); }
.guide-card th { font-size: 10px; letter-spacing: .16em; text-transform: uppercase; color: var(--muted); font-weight: 500; }
.form-grid { display: grid; gap: 18px; }
.f-row { display: grid; gap: 7px; }
.f-row label { font-size: 10.5px; letter-spacing: .18em; text-transform: uppercase; color: var(--muted); }
.f-row input, .f-row select, .f-row textarea {
border: 1px solid var(--line); background: var(--white); padding: 12px 14px; font-size: 14.5px; width: 100%; border-radius: 0;
transition: border-color .3s;
}
.f-row textarea { min-height: 120px; resize: vertical; }
.f-row input:focus, .f-row select:focus, .f-row textarea:focus { outline: none; border-color: var(--ink); }
.f-2 { display: grid; grid-template-columns: minmax(0, 1fr) minmax(0, 1fr); gap: 18px; }
.f-3 { display: grid; grid-template-columns: repeat(3, minmax(0, 1fr)); gap: 18px; }
.f-hint { font-size: 12px; color: var(--muted); }
.switch { display: inline-flex; align-items: center; gap: 10px; font-size: 13.5px; cursor: pointer; }
.switch input { appearance: none; width: 38px; height: 20px; background: var(--sand); position: relative; transition: background .3s; flex: none; }
.switch input::after { content: ''; position: absolute; top: 2px; left: 2px; width: 16px; height: 16px; background: var(--white); transition: transform .3s var(--ease); }
.switch input:checked { background: var(--ink); }
.switch input:checked::after { transform: translateX(18px); }
.tbl { width: 100%; border-collapse: collapse; font-size: 14px; }
.tbl th {
text-align: left; font-size: 10px; letter-spacing: .18em; text-transform: uppercase; color: var(--muted);
font-weight: 500; padding: 12px 12px 12px 0; border-bottom: 1px solid var(--line); white-space: nowrap;
}
.tbl td { padding: 14px 12px 14px 0; border-bottom: 1px solid var(--line); vertical-align: middle; }
.tbl tr:hover td { background: rgba(224, 216, 202, .28); }
.tbl img { width: 46px; height: 58px; object-fit: cover; background: var(--paper); }
.tag { font-size: 10px; letter-spacing: .12em; text-transform: uppercase; padding: 4px 9px; border: 1px solid var(--line); display: inline-block; }
.tag.ok { border-color: var(--brass); color: #2F6146; }
.tag.warn { border-color: var(--brass); color: var(--brass); }
.tag.off { border-color: var(--muted); color: var(--muted); }
.tag.bad { border-color: var(--brass); color: var(--brass); }
.kpis { display: grid; grid-template-columns: repeat(4, minmax(0, 1fr)); gap: 1px; background: var(--line); border: 1px solid var(--line); }
.kpi { background: var(--ivory); padding: 24px 22px; }
.kpi b { font-family: var(--serif); font-size: clamp(28px, 3vw, 40px); font-weight: 400; display: block; line-height: 1; }
.kpi span { font-size: 10.5px; letter-spacing: .18em; text-transform: uppercase; color: var(--muted); display: block; margin-top: 10px; }
.kpi i { font-style: normal; font-size: 12px; color: var(--brass); }
.tabs { display: flex; gap: 26px; border-bottom: 1px solid var(--line); margin-bottom: 32px; overflow-x: auto; }
.tabs button {
font-size: 11px; letter-spacing: .18em; text-transform: uppercase; padding: 0 0 16px; white-space: nowrap;
color: var(--muted); position: relative; transition: color .3s;
}
.tabs button::after { content: ''; position: absolute; left: 0; right: 0; bottom: -1px; height: 1px; background: var(--ink); transform: scaleX(0); transition: transform .4s var(--ease-out); }
.tabs button.on { color: var(--ink); }
.tabs button.on::after { transform: scaleX(1); }
.tab-pane { display: none; }
.tab-pane.on { display: block; animation: fade .5s var(--ease); }
@keyframes fade { from { opacity: 0; transform: translateY(8px); } }
.size-matrix { border: 1px solid var(--line); }
.size-matrix-row { display: grid; grid-template-columns: minmax(70px, 1.1fr) minmax(0, 1fr) 110px 40px; gap: 12px; align-items: center; padding: 10px 14px; border-bottom: 1px solid var(--line); }
.size-matrix-row:last-child { border-bottom: 0; }
.size-matrix-row b { font-weight: 500; font-size: 13px; overflow-wrap: anywhere; line-height: 1.25; }
.size-matrix-head { background: var(--paper); font-size: 10px; letter-spacing: .16em; text-transform: uppercase; color: var(--muted); }
.size-matrix-head b { font-size: 10px; font-weight: 500; }
.thumbs { display: flex; gap: 10px; flex-wrap: wrap; }
.thumb { position: relative; width: 84px; height: 106px; background: var(--paper); overflow: hidden; }
.thumb img { width: 100%; height: 100%; object-fit: cover; }
.thumb button { position: absolute; top: 3px; right: 3px; background: rgba(248,245,239,.9); width: 20px; height: 20px; font-size: 13px; line-height: 1; }
.thumb.main::after { content: 'PRINCIPALE'; position: absolute; left: 0; right: 0; bottom: 0; background: var(--ink); color: var(--ivory); font-size: 7.5px; letter-spacing: .12em; text-align: center; padding: 3px; }
.drop {
border: 1px dashed var(--line); padding: 26px; text-align: center; font-size: 13px; color: var(--muted);
transition: border-color .3s, background .3s; cursor: pointer;
}
.drop.over, .drop:hover { border-color: var(--ink); background: var(--paper); }
.auth { display: grid; grid-template-columns: minmax(0, 1fr) minmax(0, 1fr); min-height: calc(100svh - var(--head-h) - 38px); }
.auth-visual { position: relative; overflow: hidden; background: var(--ink); }
.auth-visual img { width: 100%; height: 100%; object-fit: cover; opacity: .85; }
.auth-visual figcaption { position: absolute; left: 0; right: 0; bottom: 0; padding: clamp(24px, 4vw, 56px); color: var(--ivory); background: linear-gradient(to top, rgba(6,15,26,.8), transparent); }
.auth-form { display: flex; align-items: center; padding: clamp(36px, 6vw, 90px); }
.auth-form > div { width: 100%; max-width: 420px; margin-inline: auto; }
.demo-box { border: 1px solid var(--line); background: var(--paper); padding: 16px 18px; font-size: 12.5px; margin-top: 24px; }
.demo-box b { display: block; font-size: 10px; letter-spacing: .18em; text-transform: uppercase; color: var(--brass); margin-bottom: 8px; font-weight: 500; }
.demo-box code { font-family: var(--sans); background: var(--white); padding: 1px 6px; border: 1px solid var(--line); }
.toast-wrap { position: fixed; bottom: 24px; left: 50%; transform: translateX(-50%); z-index: 120; display: grid; gap: 10px; width: min(420px, calc(100vw - 32px)); }
.toast {
background: var(--ink); color: var(--ivory); padding: 15px 20px; font-size: 13px;
display: flex; gap: 14px; align-items: center; justify-content: space-between;
animation: toastIn .5s var(--ease-out);
}
.toast.err { background: var(--bordeaux); }
@keyframes toastIn { from { opacity: 0; transform: translateY(14px); } }
.js .rv { opacity: 0; transform: translateY(26px); transition: opacity 1s var(--ease), transform 1.1s var(--ease-out); }
.js .rv.is-in { opacity: 1; transform: none; }
.rv-d1 { transition-delay: .08s; }
.rv-d2 { transition-delay: .16s; }
.rv-d3 { transition-delay: .24s; }
.rv-d4 { transition-delay: .32s; }
.rv-mask { display: block; overflow: hidden; }
.js .rv-mask > * { display: block; transform: translateY(105%); transition: transform 1.05s var(--ease-out); }
.js .rv-mask.is-in > * { transform: none; }
.js .rv-line { transform: scaleX(0); transform-origin: left; transition: transform 1.1s var(--ease-out); }
.js .rv-line.is-in { transform: none; }
@media (prefers-reduced-motion: reduce) {
.rv, .rv-mask > *, .rv-line { opacity: 1 !important; transform: none !important; }
* { animation-duration: .01ms !important; transition-duration: .01ms !important; }
html { scroll-behavior: auto; }
}
.two-col-text { columns: 2; column-gap: clamp(24px, 4vw, 64px); }
.mono-note { font-size: 11.5px; letter-spacing: .04em; color: var(--muted); }
.hidden { display: none !important; }
.center { text-align: center; }
.mt-s { margin-top: 14px; } .mt-m { margin-top: 26px; } .mt-l { margin-top: 46px; }
.mb-m { margin-bottom: 26px; } .mb-l { margin-bottom: 46px; }
.faq-item { border-bottom: 1px solid var(--line); }
.faq-item > button { width: 100%; text-align: left; display: flex; justify-content: space-between; gap: 20px; padding: 22px 0; font-size: 16px; }
.faq-item .acc-body div { padding-bottom: 22px; max-width: 74ch; }
.map-embed { width: 100%; aspect-ratio: 16 / 9; border: 1px solid var(--line); filter: grayscale(1) contrast(1.05); }
.gal-3 { display: grid; grid-template-columns: repeat(3, minmax(0, 1fr)); gap: 8px; }
.gal-3 .figure { aspect-ratio: 4 / 5; }
@media (max-width: 1340px) {
.head-tools .tool span:not(.cart-count):not(.fav-count) { display: none; }
}
@media (max-width: 1180px) {
.grid-prod { grid-template-columns: repeat(3, minmax(0, 1fr)); }
.foot-grid { grid-template-columns: minmax(0, 1fr) minmax(0, 1fr); }
.kpis { grid-template-columns: repeat(2, minmax(0, 1fr)); }
}
@media (max-width: 1024px) {
.nav, .head-tools .tool-desktop { display: none; }
.burger { display: block; }
.head-inner { grid-template-columns: 26px minmax(0, 1fr) auto; }
.head-inner .brandmark { justify-self: center; min-width: 0; overflow: hidden; }
.shop-layout { grid-template-columns: minmax(0, 1fr); }
.filters { position: fixed; inset: 0; z-index: 88; background: var(--ivory); padding: 20px var(--gut) 90px; overflow-y: auto; transform: translateX(-100%); transition: transform .5s var(--ease-out); }
.filters.on { transform: none; }
.filters-toggle { display: inline-flex; }
.pdp { grid-template-columns: minmax(0, 1fr); }
.pdp-info { position: static; }
.auth { grid-template-columns: minmax(0, 1fr); }
.auth-visual { min-height: 34svh; }
.split, .split.wide-left { grid-template-columns: minmax(0, 1fr); }
.split.reverse > *:first-child { order: 0; }
.nl { grid-template-columns: minmax(0, 1fr); }
.shop-grid { grid-template-columns: minmax(0, 1fr); }
.maison-row { grid-template-columns: 44px minmax(0, 1fr) auto; }
.maison-desc { display: none; }
}
@media (max-width: 760px) {
:root { --head-h: 64px; --topbar-h: 34px; }
.pin { height: auto !important; }
.pin-sticky { position: static; height: auto; padding: 56px 0; display: block; }
.pin-track { overflow-x: auto; scroll-snap-type: x mandatory; transform: none !important; scrollbar-width: none; padding-bottom: 8px; }
.pin-track::-webkit-scrollbar { display: none; }
.pin-item { flex: 0 0 76vw; scroll-snap-align: start; }
.pin-intro { flex: 0 0 82vw; }
.grid-prod, .grid-prod.cols-3 { grid-template-columns: repeat(2, minmax(0, 1fr)); }
.cats { grid-template-columns: repeat(2, minmax(0, 1fr)); }
.steps { grid-template-columns: minmax(0, 1fr); }
.foot-grid { grid-template-columns: minmax(0, 1fr); gap: 34px; }
.kpis { grid-template-columns: minmax(0, 1fr) minmax(0, 1fr); }
.f-2, .f-3 { grid-template-columns: minmax(0, 1fr); }
.two-col-text { columns: 1; }
.gal-3 { grid-template-columns: minmax(0, 1fr) minmax(0, 1fr); }
.pdp-gallery { grid-template-columns: minmax(0, 1fr); }
.hero-ui { left: var(--gut); right: auto; bottom: 22px; }
.hero-caption { display: none; }
.scroll-cue { display: none; }
.info-list li { grid-template-columns: minmax(0, 1fr); gap: 3px; }
.info-list b { padding-top: 0; }
.cat-card-body { padding: 18px 16px; }
.cat-card-body h3 { font-size: clamp(17px, 4.8vw, 24px); }
.maison-name { font-size: clamp(19px, 5.4vw, 26px); }
.shop-bar { gap: 12px; }
.shop-bar > div { flex: 1 1 100%; justify-content: space-between; }
.shop-bar select.select-line { max-width: 62%; }
.size-matrix-row { grid-template-columns: minmax(52px, 1.2fr) minmax(0, 1fr) 84px 32px; gap: 8px; padding: 10px; }
.tbl .hide-sm { display: none; }
.topbar { height: 34px; font-size: 10px; }
}
@media (max-width: 440px) {
.cart-line-lg { grid-template-columns: 78px minmax(0, 1fr); }
.cart-line-lg img { width: 78px; height: 100px; }
.cart-line-prix { grid-column: 2; text-align: left; margin-top: 6px; }
}
@media (max-width: 359px) {
.grid-prod, .grid-prod.cols-3, .cats { grid-template-columns: minmax(0, 1fr); }
}
.rep-list {
list-style: none;
margin: 0;
padding: 0;
display: grid;
grid-template-columns: repeat(auto-fit, minmax(min(270px, 100%), 1fr));
gap: 1px;
margin-top: clamp(24px, 3vw, 40px);
background: var(--line);
border: 1px solid var(--line);
}
.rep-list li {
list-style: none;
display: grid;
grid-template-columns: minmax(0, 1fr) auto;
gap: 4px 14px;
align-content: start;
background: var(--white);
padding: clamp(18px, 2vw, 26px);
min-height: 100%;
}
.rep-list b {
grid-column: 1;
font-family: var(--serif);
font-weight: 600;
font-size: clamp(17px, 1.5vw, 21px);
letter-spacing: -.025em;
overflow-wrap: break-word;
hyphens: auto;
min-width: 0;
}
.rep-prix {
grid-column: 2;
grid-row: 1;
text-align: right;
font-weight: 600;
font-size: 14px;
color: var(--brass);
white-space: nowrap;
}
.rep-duree {
grid-column: 1 / -1;
font-size: 11px;
letter-spacing: .13em;
text-transform: uppercase;
color: var(--muted);
}
.rep-note { grid-column: 1 / -1; margin-top: 6px; }
.bg-paper .rep-list li, .bg-ink .rep-list li { background: var(--white); }
.table-wrap {
position: relative;
overflow-x: auto;
-webkit-overflow-scrolling: touch;
scroll-snap-type: x proximity;
}
.table-wrap::after {
content: 'Faites défiler le tableau →';
display: none;
position: sticky;
left: 0;
padding-top: 10px;
font-size: 10.5px;
letter-spacing: .14em;
text-transform: uppercase;
color: var(--muted);
}
@media (max-width: 720px) {
.table-wrap::after { display: block; }
.guide-table th, .guide-table td { padding-right: 18px; }
}
.guide-table {
width: 100%;
border-collapse: collapse;
font-size: 14px;
min-width: 440px;
}
.guide-table th, .guide-table td { scroll-snap-align: start; }
.guide-table th, .guide-table td {
text-align: left;
padding: 11px 14px 11px 0;
border-bottom: 1px solid var(--line);
vertical-align: top;
}
.guide-table th {
font-size: 10.5px;
letter-spacing: .14em;
text-transform: uppercase;
font-weight: 600;
color: var(--muted);
}
.guide-table td:first-child { color: var(--text); font-weight: 500; }
.guide-table tbody tr:last-child td { border-bottom: 0; }
.size-chip.mien {
border-color: var(--brass);
color: var(--brass);
font-weight: 700;
}
.size-chip.mien.on { color: var(--ivory); }
.coupe {
position: absolute;
inset: 0 auto 0 0;
z-index: 2;
pointer-events: none;
overflow: visible;
}
.coupe-craie {
fill: none;
stroke-width: 1.7;
stroke-linecap: round;
opacity: .95;
}
.coupe-poussiere {
fill: none;
stroke-width: 6;
stroke-linecap: round;
opacity: .11;
}
.coupe-ombre {
fill: none;
stroke-width: 7;
stroke-linecap: round;
opacity: .75;
}
.coupe-couture {
fill: none;
stroke-width: 1;
stroke-dasharray: 6 5;
stroke-linecap: round;
opacity: .55;
}
.coupe-repere {
opacity: 0;
transition: opacity .55s ease;
}
.coupe-repere.pose { opacity: 1; }
.rep-cran { stroke-width: 1.5; stroke-linecap: round; stroke-linejoin: round; }
.rep-epingle line { stroke-width: 1.3; stroke-linecap: round; }
.rep-droitfil {
stroke-width: 1;
stroke-linecap: round;
stroke-linejoin: round;
opacity: 0;
transition: opacity .5s ease .16s;
}
.coupe-repere.pose .rep-droitfil { opacity: .65; }
.rep-piece {
font-family: var(--sans);
font-size: 8.5px;
font-weight: 600;
letter-spacing: .22em;
opacity: 0;
transition: opacity .5s ease .24s;
}
.rep-num {
font-family: var(--sans);
font-size: 8.5px;
font-weight: 600;
letter-spacing: .16em;
opacity: 0;
transition: opacity .5s ease .3s;
}
.coupe-repere.pose .rep-piece { opacity: .72; }
.coupe-repere.pose .rep-num { opacity: .85; }
.coupe-outil { transition: opacity .35s ease; }
.coupe-etroite .coupe-craie { stroke-width: 1.3; }
.coupe-etroite .coupe-poussiere { stroke-width: 4.5; }
.coupe-etroite .coupe-ombre { stroke-width: 5; }
@media (prefers-reduced-motion: reduce) {
.coupe-repere, .rep-droitfil, .rep-piece, .rep-num { transition: none; }
}
@media print { .coupe { display: none; } }
body { background: var(--nv-papier); color: var(--nv-encre); }
.crumbs { color: var(--nv-encre-2); }
::selection { background: var(--nv-accent); color: var(--nv-sombre); }
