/* ════════════════════════════════════════════
   DREAMS — Журнал · дизайн-система (Classique для веба)
   ════════════════════════════════════════════ */

@font-face { font-family:'Apoc'; src:url('assets/Apoc-Italic.ttf') format('truetype'); font-style:italic; font-weight:400; font-display:swap; }
@font-face { font-family:'Circe'; src:url('assets/circe-light.ttf') format('truetype'); font-weight:300; font-display:swap; }
@font-face { font-family:'Circe'; src:url('assets/circe.ttf') format('truetype'); font-weight:400; font-display:swap; }
@font-face { font-family:'Circe'; src:url('assets/circe-bold.ttf') format('truetype'); font-weight:700; font-display:swap; }

:root{
  --bg:#EDE8DD;
  --paper:#F6F2EA;
  --green:#216D5E;
  --green-deep:#1B3A33;
  --ink:#2A2925;
  --body:#4A463E;
  --muted:#8C867A;
  --hair:#E4DDCF;
  --sage:#E4EAE3;
  --maxw:1200px;
  --col:760px;
}

*{ box-sizing:border-box; }
html{ scroll-behavior:smooth; }
body{
  margin:0;
  background:var(--bg);
  color:var(--body);
  font-family:'Circe','Helvetica Neue',Arial,sans-serif;
  font-size:18px;
  line-height:1.6;
  -webkit-font-smoothing:antialiased;
  text-rendering:optimizeLegibility;
}
img{ display:block; max-width:100%; }
a{ color:inherit; text-decoration:none; }

.display{ font-family:'Apoc',Georgia,'Times New Roman',serif; font-style:italic; font-weight:400; }
.eyebrow{ font-size:12px; letter-spacing:4px; text-transform:uppercase; color:var(--green); }

/* ── header ── */
.site-header{ background:var(--paper); border-bottom:1px solid var(--hair); }
.site-header .inner{ max-width:var(--maxw); margin:0 auto; padding:26px 40px; text-align:center; }
.site-header .logo{ width:172px; height:auto; margin:0 auto 22px; }
.nav{ display:flex; justify-content:center; align-items:center; gap:0; border-top:1px solid var(--hair); border-bottom:1px solid var(--hair); }
.nav a{ padding:15px 20px; font-size:12px; letter-spacing:2.5px; text-transform:uppercase; color:var(--ink); transition:color .2s; }
.nav a:hover{ color:var(--green); }
.nav a.active{ color:var(--green); }
.nav .dot{ color:#C5BBA6; }

/* ── layout ── */
.container{ max-width:var(--maxw); margin:0 auto; padding:0 40px; }
.column{ max-width:var(--col); margin:0 auto; padding:0 40px; }
.section{ padding:0 0; }

/* ── index: журнал заголовок ── */
.journal-head{ text-align:center; padding:84px 24px 64px; }
.journal-head .eyebrow{ display:block; margin-bottom:22px; }
.journal-head h1{ margin:0; font-size:clamp(52px,7vw,84px); line-height:1.0; color:var(--ink); }
.journal-head p{ max-width:560px; margin:26px auto 0; font-size:18px; line-height:1.7; color:var(--muted); }

/* ── статья-карточка (index) ── */
.post-list{ max-width:var(--maxw); margin:0 auto; padding:0 40px 40px; display:flex; flex-direction:column; gap:6px; }
.post-card{
  display:grid; grid-template-columns:1fr 1fr; align-items:stretch;
  background:var(--paper); border:1px solid var(--hair); overflow:hidden;
}
.post-card:nth-child(even){ direction:rtl; }
.post-card:nth-child(even) .post-body{ direction:ltr; }
.post-card .post-photo{ position:relative; min-height:460px; background:var(--sage); overflow:hidden; }
.post-card .post-photo img{ position:absolute; inset:0; width:100%; height:100%; object-fit:cover; object-position:top; transition:transform .9s cubic-bezier(.2,.7,.2,1); }
.post-card:hover .post-photo img{ transform:scale(1.04); }
.post-body{ direction:ltr; padding:60px 64px; display:flex; flex-direction:column; justify-content:center; }
.post-body .kicker{ font-size:11px; letter-spacing:3px; text-transform:uppercase; color:var(--muted); margin-bottom:18px; }
.post-body h2{ margin:0; font-size:clamp(34px,4vw,52px); line-height:1.04; color:var(--green); }
.post-body .excerpt{ margin:22px 0 0; font-size:17px; line-height:1.7; color:var(--body); }
.post-body .more{ margin-top:30px; font-size:12px; letter-spacing:2.5px; text-transform:uppercase; color:var(--ink); border-bottom:1px solid var(--green); padding-bottom:6px; align-self:flex-start; transition:gap .2s; }
.post-body .more:hover{ color:var(--green); }

/* ── article page ── */
.article-hero{ text-align:center; padding:80px 24px 0; }
.article-hero .eyebrow{ display:block; margin-bottom:24px; }
.article-hero h1{ margin:0 auto; max-width:14ch; font-size:clamp(54px,8vw,96px); line-height:0.98; color:var(--ink); }
.article-hero .meta{ margin-top:28px; font-size:12px; letter-spacing:2px; text-transform:uppercase; color:var(--muted); }

.article-body{ padding:64px 0 40px; }
.article-body p{ margin:0 0 28px; font-size:19px; line-height:1.8; color:var(--body); }
.article-body p.lead{ font-size:23px; line-height:1.65; color:var(--ink); }
.article-body .display-q{ font-size:30px; line-height:1.2; color:var(--green); margin:0 0 6px; }

.figure{ margin:0; }
.figure img{ width:100%; height:auto; background:var(--sage); }
.article-hero + .figure.full img{ aspect-ratio:4/5; object-fit:cover; }
.full-bleed img{ }
.grid-2 .figure img{ aspect-ratio:4/5; object-fit:cover; }
.figure figcaption{ margin-top:12px; font-size:12px; letter-spacing:1.5px; text-transform:uppercase; color:var(--muted); text-align:center; }

.full{ max-width:var(--maxw); margin:48px auto; padding:0 40px; }
.full-bleed{ width:100%; margin:56px 0; }
.grid-2{ max-width:var(--maxw); margin:48px auto; padding:0 40px; display:grid; grid-template-columns:1fr 1fr; gap:16px; }
.grid-3{ max-width:var(--maxw); margin:48px auto; padding:0 40px; display:grid; grid-template-columns:repeat(3,1fr); gap:16px; }

.divider{ width:48px; height:1px; background:var(--green); margin:52px auto; }

/* ── глава ── */
.chapter{ text-align:center; padding:88px 24px 12px; }
.chapter .eyebrow{ display:block; margin-bottom:18px; }
.chapter .num{ display:block; font-family:'Apoc',Georgia,serif; font-style:italic; font-size:20px; color:var(--green); opacity:.45; margin-bottom:10px; letter-spacing:2px; }
.chapter h2{ margin:0 auto; max-width:16ch; font-size:clamp(36px,5vw,60px); line-height:1.02; color:var(--ink); }

/* ── пулл-цитата ── */
.pullquote{ max-width:900px; margin:64px auto; padding:0 40px; text-align:center; }
.pullquote .mark{ font-family:'Apoc',Georgia,serif; font-style:italic; font-size:72px; line-height:.4; color:var(--green); opacity:.32; display:block; }
.pullquote p{ font-family:'Apoc',Georgia,serif; font-style:italic; font-weight:400; margin:18px 0 0; font-size:clamp(28px,3.6vw,44px); line-height:1.24; color:var(--green); }
.pullquote .by{ margin-top:24px; font-size:11px; letter-spacing:3px; text-transform:uppercase; color:var(--muted); }

/* пулл-цитата на тёмно-зелёном банере */
.band{ background:var(--green-deep); margin:72px 0; padding:80px 24px; }
.band .pullquote{ margin:0 auto; }
.band .pullquote .mark{ color:#9FC2B7; opacity:.5; }
.band .pullquote p{ color:#F2EEE3; }
.band .pullquote .by{ color:#9FC2B7; }

/* ── фичер: изображение + текст ── */
.feature{ max-width:var(--maxw); margin:64px auto; padding:0 40px; display:grid; grid-template-columns:1fr 1fr; gap:56px; align-items:center; }
.feature .feature-text{ }
.feature.flip .feature-photo{ order:2; }
.feature .feature-photo img{ width:100%; height:auto; background:var(--sage); }

/* интервью Q&A */
.qa{ border-top:1px solid var(--hair); padding:40px 0; }
.qa:last-child{ border-bottom:1px solid var(--hair); }
.qa .q{ font-family:'Apoc',Georgia,serif; font-style:italic; font-weight:400; font-size:clamp(24px,3vw,32px); line-height:1.18; color:var(--green); margin:0 0 20px; }
.qa .a p{ margin:0 0 18px; font-size:18px; line-height:1.8; color:var(--body); }
.qa .a p:last-child{ margin-bottom:0; }

.signature{ text-align:center; padding:64px 24px; }

/* ── блок «Вещи из съёмки» ── */
.shop{ max-width:var(--maxw); margin:48px auto 0; padding:0 40px; }
.shop .shop-head{ text-align:center; margin-bottom:44px; }
.shop .shop-head .eyebrow{ display:block; margin-bottom:14px; }
.shop .shop-head h2{ margin:0; font-family:'Apoc',Georgia,serif; font-style:italic; font-size:clamp(32px,4vw,52px); line-height:1.04; color:var(--ink); }
.shop .shop-head p{ max-width:440px; margin:16px auto 0; font-size:15px; line-height:1.6; color:var(--muted); }
.shop-grid{ display:grid; grid-template-columns:repeat(4,1fr); gap:18px; }
.product{ display:block; }
.product .ph{ aspect-ratio:920/1380; background:var(--sage); overflow:hidden; position:relative; }
.product .ph img{ width:100%; height:100%; object-fit:cover; transition:transform .8s cubic-bezier(.2,.7,.2,1); }
.product:hover .ph img{ transform:scale(1.04); }
.product .ph.empty{ display:flex; align-items:center; justify-content:center; text-align:center; padding:16px; }
.product .ph.empty span{ font-family:'Courier New',monospace; font-size:10px; letter-spacing:1.5px; text-transform:uppercase; color:#9CA89F; line-height:1.6; }
.product .pname{ margin-top:14px; font-size:15px; line-height:1.4; color:var(--ink); }
.product .pprice{ margin-top:6px; font-size:14px; letter-spacing:.5px; color:var(--green); }
.product .pprice.muted{ color:var(--muted); }
.signature .display{ font-size:34px; color:var(--green); }
.signature .sub{ margin-top:10px; font-size:11px; letter-spacing:4px; text-transform:uppercase; color:var(--muted); }

/* ── footer ── */
.site-footer{ background:var(--green); color:#CFE0D9; margin-top:8px; }
.site-footer .inner{ max-width:var(--maxw); margin:0 auto; padding:56px 40px; text-align:center; }
.site-footer .logo{ width:150px; height:auto; margin:0 auto 22px; }
.site-footer .social{ display:flex; justify-content:center; gap:26px; margin-bottom:26px; }
.site-footer .social a{ font-size:11px; letter-spacing:2px; text-transform:uppercase; color:#CFE0D9; }
.site-footer .social a:hover{ color:#F6F2EA; }
.site-footer .rule{ border-top:1px solid rgba(246,242,234,.18); max-width:480px; margin:0 auto 22px; }
.site-footer .fine{ font-size:12px; line-height:1.9; color:#A9C6BC; }
.site-footer .fine a{ color:#F6F2EA; text-decoration:underline; }

/* ── back link ── */
.backbar{ max-width:var(--maxw); margin:0 auto; padding:24px 40px 0; }
.backbar a{ font-size:12px; letter-spacing:2px; text-transform:uppercase; color:var(--muted); }
.backbar a:hover{ color:var(--green); }

/* ── responsive ── */
@media (max-width:860px){
  .post-card{ grid-template-columns:1fr; direction:ltr; }
  .post-card:nth-child(even){ direction:ltr; }
  .post-card .post-photo{ min-height:340px; }
  .post-body{ padding:40px 32px; }
  .grid-3{ grid-template-columns:1fr; }
  .grid-2{ grid-template-columns:1fr; }
  .column{ padding:0 24px; }
  .nav{ flex-wrap:wrap; }
  .feature{ grid-template-columns:1fr; gap:32px; }
  .feature.flip .feature-photo{ order:0; }
  .shop-grid{ grid-template-columns:1fr 1fr; gap:14px; }
}

@media (max-width:600px){
  /* на узком экране меню переносится — точки-разделители убираем,
     иначе на конце строки повисает одинокий «·» */
  .nav{ gap:0 6px; }
  .nav .dot{ display:none; }
  .nav a{ padding:12px 10px; }
}

/* ══════════════════════════════════════════════
   Просмотрщик фотографий (viewer.js)
   ══════════════════════════════════════════════ */
.zoomable{ cursor:zoom-in; }

.viewer{
  position:fixed; inset:0; z-index:200;
  background:rgba(24,26,24,.97);
  display:flex; align-items:center; justify-content:center;
  opacity:0; visibility:hidden; pointer-events:none;
  transition:opacity .22s ease, visibility .22s;
}
.viewer.open{ opacity:1; visibility:visible; pointer-events:auto; }

.viewer-stage{
  position:absolute; inset:0; overflow:hidden;
  display:flex; align-items:center; justify-content:center;
  touch-action:none; user-select:none;
}
.viewer-stage img{
  max-width:92vw; max-height:80vh;
  width:auto; height:auto; display:block;
  transform-origin:center center;
  cursor:zoom-in; will-change:transform;
  -webkit-user-drag:none; user-select:none;
}
.viewer.zoomed .viewer-stage img{ cursor:grab; }
.viewer.zoomed.grabbing .viewer-stage img{ cursor:grabbing; }
.viewer.animate .viewer-stage img{ transition:transform .22s cubic-bezier(.2,.7,.2,1); }

.viewer-btn{
  position:absolute; z-index:2;
  background:none; border:0; padding:0;
  color:#EDE8DD; opacity:.72; cursor:pointer;
  font-family:'Circe','Helvetica Neue',Arial,sans-serif;
  line-height:1; transition:opacity .2s;
  display:flex; align-items:center; justify-content:center;
}
.viewer-btn:hover{ opacity:1; }
.viewer-close{ top:22px; right:26px; width:44px; height:44px; font-size:30px; font-weight:300; }

/* стрелки с мини-превью соседнего кадра */
.viewer-prev, .viewer-next{ top:50%; transform:translateY(-50%); gap:10px; padding:6px; }
.viewer-prev{ left:14px; }
.viewer-next{ right:14px; }
.viewer-prev .chev, .viewer-next .chev{ font-size:40px; font-weight:300; }
.viewer-thumb{
  width:58px; height:87px; object-fit:cover; display:block;
  opacity:.5; transition:opacity .2s, transform .2s;
  background:rgba(237,232,221,.08);
}
.viewer-btn:hover .viewer-thumb{ opacity:.95; transform:scale(1.04); }

/* ссылка на товар — если кадр ведёт в каталог */
.viewer-shop{
  position:absolute; z-index:3; left:50%; transform:translateX(-50%); bottom:70px;
  display:none; padding-bottom:6px;
  font-size:12px; letter-spacing:2.5px; text-transform:uppercase;
  color:#EDE8DD; border-bottom:1px solid rgba(237,232,221,.5);
  transition:border-color .2s;
}
.viewer-shop:hover{ border-bottom-color:#EDE8DD; }
.viewer.has-shop .viewer-shop{ display:inline-block; }
.viewer.zoomed .viewer-shop{ display:none; }

.viewer-count{
  position:absolute; z-index:2; left:0; right:0; bottom:24px;
  text-align:center; color:#EDE8DD; opacity:.6;
  font-size:11px; letter-spacing:3px; text-transform:uppercase;
  pointer-events:none;
}
.viewer-count b{ font-weight:400; opacity:.9; }
.viewer-hint{ display:block; margin-top:8px; font-size:10px; letter-spacing:2px; opacity:.55; }
.viewer.zoomed .viewer-prev,
.viewer.zoomed .viewer-next{ opacity:0; pointer-events:none; }

@media (max-width:860px){
  .viewer-stage img{ max-width:100vw; max-height:72vh; }
  /* на телефоне превью не помещаются — остаются только стрелки */
  .viewer-thumb{ display:none; }
  .viewer-prev .chev, .viewer-next .chev{ font-size:34px; }
  .viewer-prev{ left:2px; }
  .viewer-next{ right:2px; }
  .viewer-hint{ display:none; }
  .viewer-shop{ bottom:56px; font-size:11px; }
}

/* серия из одного кадра — стрелки и счётчик не нужны */
.viewer.single .viewer-prev,
.viewer.single .viewer-next,
.viewer.single .viewer-count span:first-child{ display:none; }

/* ── поделиться ── */
.share{ text-align:center; padding:0 24px 72px; }
.share .lab{ display:block; font-size:11px; letter-spacing:3px; text-transform:uppercase; color:var(--muted); margin-bottom:20px; }
.share .links{ display:flex; justify-content:center; gap:12px; flex-wrap:wrap; }
.share a{
  display:inline-flex; align-items:center; gap:9px;
  padding:11px 20px; border:1px solid var(--hair); background:var(--paper);
  font-size:12px; letter-spacing:2px; text-transform:uppercase; color:var(--ink);
  transition:border-color .2s, color .2s;
}
.share a:hover{ border-color:var(--green); color:var(--green); }
.share svg{ width:16px; height:16px; fill:currentColor; flex:none; }
