/* ============================================================
   Сайт Павла Лахтачева — «Тихая галерея»
   Единый стиль сайта. Токены — из ui-system/tokens (блок 10-11).
   Статический сайт, без сборки. Автор-стиль, минимализм.
   ============================================================ */

:root{
  --paper:#fff; --ink:#111; --ink-70:#4a4a4a; --muted:#6f6f6f; --line:#e7e7e7;
  --font-mono:"Source Code Pro",monospace;
  --font-serif:"Alegreya",Georgia,serif;
  --gap:16px; --rhythm:16px; --section:96px;
  --max:1360px; --max-text:620px; --max-bio:1160px;
  --ease:cubic-bezier(.2,0,0,1); --fast:150ms; --base:250ms;
}

*{margin:0;padding:0;box-sizing:border-box;}
html{-webkit-text-size-adjust:100%;}
body{background:var(--paper);color:var(--ink);font-family:var(--font-serif);-webkit-font-smoothing:antialiased;}
img{max-width:100%;display:block;}
a{color:inherit;}
a:focus-visible,button:focus-visible{outline:2px solid var(--ink);outline-offset:3px;}
@media(prefers-reduced-motion:reduce){*{transition:none!important;animation:none!important;}}

.wrap{max-width:var(--max);margin:0 auto;padding:0 40px;}
@media(max-width:760px){.wrap{padding:0 20px;}}

/* ---------- Header ---------- */
.site-header{padding:44px 40px 56px;text-align:center;}
.logo{font-family:var(--font-mono);font-weight:500;font-size:34px;letter-spacing:1px;color:var(--ink);text-decoration:none;}
.nav{margin-top:40px;display:flex;flex-wrap:wrap;justify-content:center;gap:14px 36px;
     font-family:var(--font-mono);font-weight:300;font-size:18px;letter-spacing:2.5px;color:var(--ink-70);}
.nav a{text-decoration:none;}
.nav a:hover{text-decoration:underline;text-underline-offset:5px;color:#000;}
.nav a[aria-current="page"]{color:#000;text-decoration:underline;text-underline-offset:5px;}
@media(max-width:760px){.site-header{padding:32px 20px 40px;}.nav{gap:12px 20px;margin-top:28px;}}

/* ---------- Footer ---------- */
.site-footer{margin-top:var(--section);border-top:1px solid var(--line);padding:40px 40px 56px;text-align:center;}
.social{display:flex;justify-content:center;gap:24px;margin-bottom:22px;}
.social a{color:var(--ink);display:inline-flex;transition:opacity var(--fast) var(--ease);}
.social a:hover{opacity:.55;}
.social svg{width:22px;height:22px;}
.contact{font-family:var(--font-mono);font-size:20px;line-height:1.9;color:var(--ink);}

/* ---------- Плитка / мозаика / сетка ---------- */
.mosaic,.grid{column-count:3;column-gap:var(--gap);}
@media(max-width:1100px){.mosaic,.grid{column-count:2;}}
@media(max-width:640px){.mosaic,.grid{column-count:2;column-gap:14px;}}
.tile{break-inside:avoid;margin-bottom:var(--gap);display:block;position:relative;text-decoration:none;}
@media(max-width:640px){.tile{margin-bottom:14px;}}
.tile .ph{width:100%;background:#efefef;display:flex;align-items:flex-end;overflow:hidden;transition:opacity var(--fast) var(--ease);}
.tile:hover .ph{opacity:.94;}
.tile .ph span{font-family:var(--font-mono);font-size:10px;letter-spacing:1.5px;text-transform:uppercase;color:#a6a6a6;padding:10px;}
.tile .ph img{display:block;width:100%;height:auto;}
[data-slideshow] .ph{overflow:hidden;background:var(--paper);}
[data-slideshow] .ph img{width:100%;height:100%;object-fit:contain;transition:opacity .3s var(--ease);}
.cap{font-family:var(--font-mono);font-size:11px;letter-spacing:2px;text-transform:uppercase;color:var(--muted);
     margin-top:10px;opacity:0;transition:opacity var(--base) var(--ease);}
.tile:hover .cap{opacity:1;}
@media(hover:none){.cap{opacity:1;}}
.badge{position:absolute;top:12px;right:12px;font-family:var(--font-mono);font-size:9px;letter-spacing:1.5px;
       text-transform:uppercase;color:#fff;background:rgba(0,0,0,.55);padding:3px 7px;}

/* ---------- Смена ритма на главной ---------- */
.big{margin:var(--rhythm) 0;}
.big .ph{aspect-ratio:16/9;}
.pair{display:grid;grid-template-columns:1fr 1fr;gap:var(--gap);margin:var(--rhythm) 0;}
.trio{display:grid;grid-template-columns:repeat(3,1fr);gap:var(--gap);margin:var(--rhythm) 0;align-items:start;}
.center-shot{max-width:720px;margin:var(--rhythm) auto;}
@media(max-width:640px){.pair{grid-template-columns:1fr;gap:14px;}.trio{grid-template-columns:1fr 1fr;gap:14px;}}

/* ---------- Страница проекта / заметки ---------- */
.back{font-family:var(--font-mono);font-size:12px;letter-spacing:2px;text-transform:uppercase;color:var(--muted);text-decoration:none;}
.back:hover{color:#000;text-decoration:underline;text-underline-offset:3px;}
.article{max-width:1000px;margin:0 auto;padding:0 40px;}
@media(max-width:760px){.article{padding:0 20px;}}
.article h1{font-family:var(--font-serif);font-weight:400;font-size:30px;line-height:1.15;margin:52px 0 0;}
@media(max-width:640px){.article h1{font-size:24px;}}
.article .descr{font-family:var(--font-mono);font-size:14px;line-height:1.7;letter-spacing:.3px;color:var(--ink-70);margin-top:16px;max-width:560px;}
.text{max-width:var(--max-text);margin:32px 0 0;}
.text p{font-family:var(--font-serif);font-size:18px;line-height:1.7;color:#1c1c1c;margin-bottom:20px;}
.text h2{font-family:var(--font-serif);font-weight:500;font-size:24px;margin:32px 0 14px;}
.shot{margin:var(--rhythm) 0;}
.shot .ph{width:100%;aspect-ratio:3/2;background:#efefef;display:flex;align-items:flex-end;}
.shot.tall .ph{aspect-ratio:3/4;max-width:720px;margin:0 auto;}
.shot .ph span{font-family:var(--font-mono);font-size:10px;letter-spacing:1.5px;text-transform:uppercase;color:#a6a6a6;padding:10px;}
.shot>img{display:block;width:auto;max-width:100%;height:auto;max-height:72vh;margin:0 auto;}
.shotcap{font-family:var(--font-mono);font-size:11px;letter-spacing:2px;text-transform:uppercase;color:var(--muted);margin-top:10px;text-align:center;}
.article .meta{font-family:var(--font-mono);font-size:13px;line-height:1.9;color:var(--ink-70);border-top:1px solid var(--line);margin-top:56px;padding-top:24px;}
.article .meta a{color:inherit;text-decoration:underline;text-underline-offset:3px;}

/* ---------- Bio ---------- */
.bio-wrap{max-width:720px;margin:0 auto;padding:0 40px;}
@media(max-width:760px){.bio-wrap{padding:0 20px;}}
.bio{margin-top:24px;}
.portrait{max-width:280px;margin:0 auto 44px;}
@media(max-width:640px){.portrait{max-width:220px;}}
.portrait .ph{width:100%;background:#efefef;display:flex;align-items:flex-end;overflow:hidden;}
.portrait .ph img{display:block;width:100%;height:auto;}
.portrait .ph span{font-family:var(--font-mono);font-size:10px;letter-spacing:1.5px;text-transform:uppercase;color:#a6a6a6;padding:10px;}
.portrait .pcap{font-family:var(--font-mono);font-size:11px;letter-spacing:2px;text-transform:uppercase;color:var(--muted);margin-top:10px;}
.bio .txt p{font-family:var(--font-serif);font-size:19px;line-height:1.7;color:#1a1a1a;margin-bottom:22px;}
.credits{border-top:1px solid var(--line);margin-top:36px;padding-top:24px;}
.credits p{font-family:var(--font-mono);font-size:13px;line-height:1.85;color:var(--ink);margin-bottom:18px;}
.credits .lbl{display:inline-block;color:var(--ink);font-weight:500;letter-spacing:1.5px;text-transform:uppercase;font-size:12px;margin-bottom:6px;}

/* ---------- Карусель (листалка кадров) ---------- */
.carousel{position:relative;margin:var(--rhythm) 0;}
.carousel-track{display:flex;overflow-x:auto;scroll-snap-type:x mandatory;scroll-behavior:smooth;
  scrollbar-width:none;-ms-overflow-style:none;}
.carousel-track::-webkit-scrollbar{display:none;}
.carousel .frame{flex:0 0 100%;scroll-snap-align:center;margin:0;}
.carousel .frame .ph{width:100%;aspect-ratio:3/2;background:#efefef;display:flex;align-items:flex-end;}
.carousel .frame img{display:block;width:100%;height:auto;max-height:78vh;margin:0 auto;object-fit:contain;}
.carousel .frame .ph span{font-family:var(--font-mono);font-size:10px;letter-spacing:1.5px;
  text-transform:uppercase;color:#a6a6a6;padding:10px;}
.carousel-nav{position:absolute;top:50%;transform:translateY(-50%);z-index:2;width:46px;height:46px;
  border:0;background:rgba(255,255,255,.72);color:var(--ink);font-family:var(--font-serif);
  font-size:26px;line-height:1;cursor:pointer;display:flex;align-items:center;justify-content:center;
  transition:opacity var(--fast) var(--ease),background var(--fast) var(--ease);}
.carousel-nav:hover{background:#fff;}
.carousel-nav.prev{left:0;} .carousel-nav.next{right:0;}
.carousel-nav[disabled]{opacity:0;pointer-events:none;}
.carousel-count{font-family:var(--font-mono);font-size:11px;letter-spacing:2px;color:var(--muted);
  text-align:center;margin-top:12px;}
@media(hover:none){.carousel-nav{display:none;}}

/* ---------- Свободная мозаика проекта ---------- */
.gallery{display:grid;grid-template-columns:1fr 1fr;gap:16px;margin:var(--rhythm) 0;align-items:start;}
@media(max-width:640px){.gallery{gap:12px;}}
.gallery .g-item{margin:0;}
.gallery .g-item>img{width:100%;height:auto;display:block;}
.project-video{width:100%;height:auto;display:block;margin:var(--rhythm) 0;background:#000;}
.project-cover{display:block;width:100%;max-width:600px;height:auto;margin:var(--rhythm) auto 0;}
.media-pair{display:grid;grid-template-columns:1fr 1fr;gap:16px;margin:var(--rhythm) 0;align-items:start;}
@media(max-width:640px){.media-pair{gap:12px;}}
.media-pair img{width:100%;height:auto;display:block;}
.media-pair video{width:100%;aspect-ratio:1501/2000;object-fit:cover;display:block;background:#000;}
.gallery .ph{width:100%;background:#efefef;display:flex;align-items:flex-end;overflow:hidden;}
.gallery .ph span{font-family:var(--font-mono);font-size:10px;letter-spacing:1.5px;text-transform:uppercase;color:#a6a6a6;padding:10px;}
.gallery .ph img{width:100%;height:auto;display:block;}

/* ---------- Лайтбокс (фото во весь экран) ---------- */
.gallery .g-item>img{cursor:zoom-in;}
.lightbox{position:fixed;inset:0;z-index:1000;background:rgba(17,17,17,.97);
  display:flex;align-items:center;justify-content:center;
  opacity:0;visibility:hidden;transition:opacity .2s var(--ease);}
.lightbox.open{opacity:1;visibility:visible;}
.lightbox img{max-width:92vw;max-height:88vh;object-fit:contain;user-select:none;-webkit-user-select:none;}
.lb-close,.lb-prev,.lb-next{position:absolute;background:none;border:0;color:#fff;cursor:pointer;
  font-family:var(--font-serif);line-height:1;transition:opacity var(--fast) var(--ease);}
.lb-close:hover,.lb-prev:hover,.lb-next:hover{opacity:.6;}
.lb-close{top:16px;right:22px;font-size:30px;}
.lb-prev,.lb-next{top:50%;transform:translateY(-50%);font-size:46px;padding:16px 22px;}
.lb-prev{left:6px;} .lb-next{right:6px;}
.lb-count{position:absolute;bottom:20px;left:0;right:0;text-align:center;color:#b8b8b8;
  font-family:var(--font-mono);font-size:12px;letter-spacing:2px;}
@media(hover:none){.lb-prev,.lb-next{display:none;}}
body.lb-lock{overflow:hidden;}

/* ---------- Заметки: список ---------- */
.notes-list{max-width:760px;margin:24px auto 0;padding:0 40px;list-style:none;}
@media(max-width:760px){.notes-list{padding:0 20px;}}
.notes-list li{border-bottom:1px solid var(--line);}
.notes-list a{display:flex;align-items:center;gap:22px;padding:16px 0;text-decoration:none;color:var(--ink);}
.n-thumb{flex:0 0 184px;overflow:hidden;}
.n-thumb:empty{height:132px;background:#efefef;}
.n-thumb img{width:100%;height:auto;display:block;}
.n-title{font-family:var(--font-serif);font-size:22px;line-height:1.25;}
.notes-list a:hover .n-title{color:#000;text-decoration:underline;text-underline-offset:4px;}
@media(max-width:640px){.notes-list a{gap:16px;}.n-thumb{flex-basis:140px;}.n-thumb:empty{height:104px;}.n-title{font-size:19px;}}
