/* ============================================================
   offquiet — stay unlouder
   три тона · один гротеск · всё в нижнем регистре
   ============================================================ */
:root{
  --paper:#ECEAE6;
  --ink:#1A1A18;
  --olive:#63613F;          /* только цены и одна строка на страницу */
  --line:rgba(26,26,24,.14);
  --mute:rgba(26,26,24,.52);
  --gut:clamp(20px,5vw,72px);
  --fade:600ms;
}
*{margin:0;padding:0;box-sizing:border-box}
body{
  background:var(--paper);color:var(--ink);
  font-family:'PP Neue Montreal','Neue Haas Grotesk Display','Suisse Int\'l','Inter',
              -apple-system,BlinkMacSystemFont,'Segoe UI',sans-serif;
  font-weight:300;font-size:15px;line-height:1.55;letter-spacing:.01em;
  -webkit-font-smoothing:antialiased;text-transform:lowercase;
}
img{display:block;max-width:100%}
a{color:inherit;text-decoration:none}
button,input,select{font:inherit;color:inherit;letter-spacing:inherit;text-transform:inherit;
  background:none;border:none;border-radius:0;-webkit-appearance:none;appearance:none}
button{cursor:pointer}
.micro{font-size:11px;letter-spacing:.04em;line-height:1.6}
.price{color:var(--olive)}
.wrap{padding-inline:var(--gut)}

/* плёночное зерно */
.ph{display:block;position:relative;overflow:hidden;background:#E3E0DB}
.ph>img{width:100%;height:100%;object-fit:cover;display:block}
.ph::after{content:'';position:absolute;inset:0;pointer-events:none;opacity:.17;
  background-image:url("data:image/svg+xml;utf8,<svg xmlns='http://www.w3.org/2000/svg' width='160' height='160'><filter id='n'><feTurbulence type='fractalNoise' baseFrequency='0.9' numOctaves='3' stitchTiles='stitch'/><feColorMatrix type='saturate' values='0'/></filter><rect width='160' height='160' filter='url(%23n)'/></svg>");
  background-size:160px 160px;mix-blend-mode:multiply}
.ph.plain{background:var(--paper)}
.ph.plain::after{display:none}  /* рендер уже на бумаге — зерно даёт видимый квадрат */

/* вуаль и курсор shh */
.veil{position:fixed;inset:0;background:var(--ink);opacity:0;z-index:40;
  pointer-events:none;transition:opacity var(--fade) linear}
body.veiled .veil{opacity:.1}
.shh{position:fixed;top:0;left:0;z-index:90;pointer-events:none;
  font-size:11px;letter-spacing:.18em;opacity:0;transition:opacity var(--fade) linear;
  will-change:transform}
body.shh-on .shh{opacity:1}
@media (hover:hover) and (pointer:fine){ body.shh-on,body.shh-on *{cursor:none} }

/* ---------- шапка ---------- */
.bar{display:flex;align-items:baseline;justify-content:space-between;gap:20px;
  padding:22px var(--gut);flex-wrap:wrap}
.bar .mark{font-size:14px;letter-spacing:.06em}
.nav{display:flex;gap:22px}
.nav a{font-size:11px;letter-spacing:.04em;border-bottom:1px solid transparent;padding-bottom:2px;
  transition:border-color var(--fade) linear}
.nav a:hover,.nav a[aria-current]{border-bottom-color:var(--ink)}
.bar.over{position:absolute;top:0;left:0;right:0;z-index:5;color:#F2F0EB}
.bar.over .nav a:hover,.bar.over .nav a[aria-current]{border-bottom-color:#F2F0EB}

/* ---------- hero ---------- */
.hero{position:relative;height:100svh;min-height:520px;display:flex;
  align-items:flex-end;justify-content:flex-start}   /* заголовок — в пустую часть кадра */
.hero .ph{position:absolute;inset:0}
.hero .ph::before{content:'';position:absolute;inset:0;z-index:1;background:var(--ink);opacity:.24}
.hero h1{position:relative;z-index:3;font-weight:300;
  font-size:clamp(40px,8.4vw,152px);line-height:.92;letter-spacing:-.02em;
  color:#F2F0EB;text-align:start;padding:0 var(--gut);margin-bottom:clamp(54px,11vh,120px)}
.hero h1 span{display:block}
.scroll{position:absolute;bottom:26px;left:50%;transform:translateX(-50%);z-index:3;
  color:#F2F0EB;opacity:.75}

/* ---------- общие блоки ---------- */
.page{padding:clamp(40px,8vh,96px) 0 clamp(70px,12vh,150px)}
.lede{max-width:34ch;font-size:clamp(16px,1.8vw,21px);line-height:1.6;letter-spacing:.01em}
.manifest{padding:clamp(80px,16vh,180px) var(--gut);text-align:center}
.manifest p{max-width:34ch;margin-inline:auto;font-size:clamp(15px,1.5vw,18px);line-height:1.75}
h1.t,h2.t{font-weight:300;text-transform:lowercase;letter-spacing:.2em;font-size:11px;
  margin-bottom:26px}
.big{font-weight:300;font-size:clamp(26px,4vw,52px);line-height:1.05;letter-spacing:-.01em}
.prose{max-width:62ch;margin-inline:auto;text-align:center}
.prose .lede{margin-inline:auto}
.prose h2{font-weight:300;letter-spacing:.2em;font-size:11px;margin:38px 0 10px}
.prose p{margin-bottom:14px}
.prose a{border-bottom:1px solid var(--line)}

/* ---------- сетки товара ---------- */
.grid{display:grid;grid-template-columns:repeat(4,1fr);gap:1px;background:var(--line);
  border-block:1px solid var(--line)}
.cell{background:var(--paper);padding:18px 18px 22px;display:block;
  transition:opacity var(--fade) linear}
.cell .ph{aspect-ratio:1/1;background:var(--paper)}
.cell .ph img{object-fit:contain}
.cell>span{display:block}
.cell .n{font-size:11px;letter-spacing:.3em;color:var(--mute);margin-top:10px}
.cell .nm{margin-top:4px;font-size:15px}
.cell .fm{color:var(--mute);margin-top:4px}
.cell .pr{margin-top:8px}
body.veiled .cell{opacity:.45}
body.veiled .cell:hover{opacity:1;z-index:60;position:relative}

.strip{display:flex;gap:clamp(10px,1.4vw,20px);overflow-x:auto;overflow-y:hidden;
  padding:0 var(--gut) 6px;scroll-snap-type:x proximity;
  scroll-padding-inline-start:var(--gut);scrollbar-width:none}
.strip::-webkit-scrollbar{display:none}
.card{flex:0 0 auto;width:min(68vw,340px);scroll-snap-align:start;text-align:left;
  position:relative;transition:opacity var(--fade) linear}
.card .ph{aspect-ratio:4/5}
.card .ph img{transition:opacity var(--fade) linear}
.card .ph img.swap{opacity:0}
.card .row{display:flex;justify-content:space-between;gap:14px;padding-top:12px}
.card[aria-pressed="true"] .name{border-bottom:1px solid var(--ink)}
body.veiled .card{opacity:.45}
body.veiled .card:hover{opacity:1;z-index:60}

/* ---------- страница товара ---------- */
.item{display:grid;grid-template-columns:minmax(0,1fr) minmax(0,1fr);
  gap:clamp(26px,5vw,80px);align-items:start;padding-inline:var(--gut)}
.item .shot{background:var(--paper)}
.item .shot .ph{aspect-ratio:1/1}
.item .shot .ph img{object-fit:contain}
.item .shot.wide .ph{aspect-ratio:4/5}
.item .shot.wide .ph img{object-fit:cover}
.num{font-size:11px;letter-spacing:.3em;color:var(--mute)}
.fam{color:var(--mute);margin-top:6px}
.poem{font-size:clamp(17px,2vw,23px);line-height:1.45;margin:22px 0 14px;max-width:26ch}
.desc{max-width:44ch;color:#54503f;line-height:1.7}
.pyr{margin-top:26px;border-top:1px solid var(--line)}
.pyr div{display:flex;gap:16px;padding:10px 0;border-bottom:1px solid var(--line)}
.pyr span{flex:0 0 60px;color:var(--mute);font-size:11px;letter-spacing:.04em}
.sizes{display:flex;gap:10px;flex-wrap:wrap;margin:24px 0 20px}
.sizes button{padding:11px 16px;font-size:11px;letter-spacing:.04em;border:1px solid var(--line);
  transition:border-color var(--fade) linear}
.sizes button[aria-pressed="true"]{border-color:var(--ink)}
.chosen{font-size:11px;letter-spacing:.04em;margin-bottom:8px}
.req{display:flex;gap:12px;align-items:flex-end;flex-wrap:wrap;max-width:430px}
.req input{flex:1 1 180px;border-bottom:1px solid var(--line);padding:9px 0;outline:none}
.req input:focus{border-bottom-color:var(--ink)}
.req input::placeholder{color:rgba(26,26,24,.4)}
.req button{border-bottom:1px solid var(--ink);padding:9px 0;font-size:11px;letter-spacing:.04em}
.ok{display:none;margin-top:14px}
form.done{display:none} form.done + .ok{display:block}
.note{color:var(--mute);margin-top:14px;max-width:44ch}

/* состав масла */
.comp{display:grid;grid-template-columns:1fr 1fr;gap:0 clamp(24px,4vw,60px);margin-top:10px}
.ing{padding:12px 0;border-bottom:1px solid var(--line)}
.ing b{font-weight:300;display:block;color:var(--olive)}
.ing i{font-style:normal;color:#54503f}

/* кампания */
.campaign{display:grid;grid-template-columns:repeat(4,1fr);gap:1px;margin-top:clamp(40px,8vh,90px)}
.campaign .ph{aspect-ratio:3/2}

/* подвал */
footer{padding:clamp(40px,7vh,80px) var(--gut) clamp(34px,6vh,60px);border-top:1px solid var(--line)}
footer .row{display:flex;gap:22px;flex-wrap:wrap;align-items:baseline}
footer a{border-bottom:1px solid transparent;transition:border-color var(--fade) linear}
footer a:hover{border-bottom-color:var(--ink)}
footer .c{margin-left:auto;color:var(--mute)}

@media(max-width:1000px){ .grid{grid-template-columns:repeat(3,1fr)} }
@media(max-width:860px){
  .hero h1{font-size:13vw;margin-bottom:clamp(60px,13vh,130px)}
  .item{grid-template-columns:1fr}
  .grid{grid-template-columns:repeat(2,1fr)}
  .campaign{grid-template-columns:1fr 1fr}
  .comp{grid-template-columns:1fr}
  .card{width:min(76vw,320px)}
  .bar{padding:16px var(--gut)}
  .nav{gap:16px}
}
@media(max-width:520px){
  .campaign{grid-template-columns:1fr}
  footer .c{margin-left:0;width:100%}
}
@media(prefers-reduced-motion:reduce){ *{transition:none!important;animation:none!important} }
