/* Portfolio, cases, about, blog, post, 404: only what nd.css does not have. */

/* page heading block (portfolio and blog hubs) */
.pg-head{margin-bottom:0}
.pg-h1{font-size:clamp(34px,5.4vw,68px)}
.filters a.tab{display:inline-block;text-decoration:none;color:inherit}
.filters a.tab[aria-selected=true]{color:var(--accent-ink)}

/* case page: cover is a plain image */
.cs-cover img{display:block;width:100%;height:auto;aspect-ratio:16/10;object-fit:cover}
.cs-nav a:last-child{text-align:right}
.cs-nav b{font-family:var(--fd);font-size:19px;letter-spacing:-.02em}
.cs-nav a{transition:transform .5s var(--ease),box-shadow .5s var(--ease)}
.cs-nav a:hover{transform:translateY(-4px);box-shadow:var(--sh-lift)}

/* about */
.ab-h1{font-size:clamp(34px,4.6vw,60px)}
.ab-hero .lead{margin-top:20px}
.ab-hero .me img{aspect-ratio:4/5}
.ab-card h2{margin:0;font-family:var(--fd);font-weight:var(--hw);font-size:24px;letter-spacing:-.03em}

/* blog hub */
.post:focus-visible,.cs-nav a:focus-visible{outline:3px solid var(--accent);outline-offset:3px}
.post .link-arrow svg{width:1em;height:1em}

/* article */
.art-h1{font-size:clamp(30px,4.4vw,54px)}
.art .muted{margin:14px 0 0}
.art-cat{color:inherit;text-decoration:underline;text-underline-offset:3px}
.art-sec .crumbs{min-width:0}
.art-sec .crumbs span:last-child{min-width:0;overflow:hidden;text-overflow:ellipsis;white-space:nowrap}
.art-cover img{aspect-ratio:auto}
.art-body h3{font-family:var(--fd);font-size:22px;letter-spacing:-.02em;margin:32px 0 10px;line-height:1.2}
.art-body ul,.art-body ol{margin:0 0 20px;padding-left:1.3em;display:grid;gap:8px}
.art-body li::marker{color:var(--accent)}
.art-body strong{color:var(--ink)}
.art-body blockquote{margin:24px 0;padding:18px 22px;background:var(--soft);border-radius:var(--r);font-weight:600}
.art-body blockquote p{margin:0}
.art-body code{background:var(--soft);padding:2px 7px;border-radius:6px;font-size:.9em}
.art-body th{background:var(--soft);font-family:var(--fd);font-weight:var(--hw)}
.art-body table{display:block;overflow-x:auto;max-width:100%}
.art-body a{text-underline-offset:3px}
.art-author{display:flex;align-items:center;gap:16px;margin-top:44px;padding:20px 22px;background:var(--surface);border-radius:var(--r);box-shadow:0 0 0 1.5px var(--line) inset}
.art-author img{width:56px;height:56px;border-radius:50%;object-fit:cover;flex:none}
.art-author b{display:block;font-family:var(--fd)}
.art-author span{color:var(--muted);font-size:14.5px}
.art-side{position:sticky;top:110px;display:grid;gap:18px}
.art-side .cs-side{position:static}
.art-toc{background:var(--surface);border-radius:var(--r);padding:22px 24px;box-shadow:0 0 0 1.5px var(--line) inset}
.art-toc-t{font-family:var(--fd);font-weight:var(--hw);font-size:18px;margin-bottom:12px}
.toc-sidebar-list{list-style:none;margin:0;padding:0;display:grid;gap:2px;max-height:38vh;overflow:auto}
.toc-sidebar-link{display:block;padding:7px 12px;border-radius:10px;font-size:14.5px;line-height:1.35;text-decoration:none;color:var(--muted);border-left:3px solid transparent;transition:background .25s,color .25s}
.toc-sidebar-link:hover{background:var(--soft);color:var(--ink)}
.toc-sidebar-link.active{background:var(--soft);color:var(--deep);font-weight:700;border-left-color:var(--accent)}
.cs-side .muted{margin:0}

/* 404 */
.nf{display:grid;gap:18px;justify-items:start;padding-block:clamp(24px,5vw,72px)}
.nf .h1{font-size:clamp(38px,6vw,80px)}
.nf .kchip{margin-bottom:0}

@media(max-width:900px){
  .art-side{position:static}
  .toc-sidebar-list{max-height:none}
}
.sec-first.nf-sec{padding-bottom:clamp(56px,8vw,112px)!important}
.art>*{min-width:0}
.art-body{overflow-wrap:break-word}
.art-body pre{overflow-x:auto;max-width:100%}
@media(max-width:640px){.ab-facts{grid-template-columns:repeat(2,1fr);gap:12px}.ab-facts .fact{padding:18px}}

/* ---------- портфолио: категории, пустая категория, вводный текст ---------- */
.filters a.tab{display:inline-flex;align-items:center;gap:6px;text-decoration:none;color:var(--ink)}
.filters a.tab:hover{box-shadow:0 0 0 1.5px var(--accent) inset}
.filters a.tab[aria-selected=true]{color:var(--accent-ink)}
.pf-empty{max-width:760px;padding:clamp(24px,4vw,40px);border-radius:var(--r);background:var(--soft);box-shadow:0 0 0 1px #CFE6D8 inset}
.pf-empty .h3{margin-bottom:10px}
.pf-empty p{margin:0;color:var(--muted);font-size:17px;max-width:62ch}
.pf-intro{padding-top:0}
.pf-intro-in{display:grid;grid-template-columns:.8fr 1.2fr;gap:clamp(24px,5vw,72px);align-items:start;padding-top:clamp(28px,4vw,48px);border-top:1px solid var(--line)}
.pf-intro-in .h2{font-size:clamp(26px,3vw,38px)}
.pf-intro-text p{margin:0 0 1em;color:var(--muted);font-size:17px;line-height:1.7;max-width:64ch}
.pf-intro-text p:last-child{margin-bottom:0}

/* ---------- проект: ссылка в плашке и таблице фактов ---------- */
a.kchip{text-decoration:none}a.kchip:hover{box-shadow:0 0 0 1.5px var(--accent) inset}
.cs-facts dd a{color:inherit;text-decoration:none;border-bottom:1.5px solid #9CCBB1}.cs-facts dd a:hover{border-color:var(--accent)}

/* ---------- проект: задача, блоки «что сделано», итоги ---------- */
.cs-brief{display:grid;grid-template-columns:.8fr 1.2fr;gap:clamp(24px,5vw,72px);align-items:start;margin:clamp(28px,4vw,52px) 0}
.cs-brief .h2{font-size:clamp(28px,3.2vw,42px)}
.cs-brief-text p{margin:0 0 1em;font-size:18px;line-height:1.7;max-width:62ch}
.cs-brief-text p:last-child{margin-bottom:0}
.cs-done{margin-bottom:clamp(22px,3vw,34px)}
.cs-done-head{display:flex;align-items:end;justify-content:space-between;gap:20px;margin-bottom:clamp(20px,3vw,32px)}
.cs-done-head .h2{font-size:clamp(28px,3.2vw,42px)}
.cs-groups{display:grid;grid-auto-flow:column;grid-auto-columns:calc((100% - 36px)/3);gap:18px;overflow-x:auto;scroll-snap-type:x mandatory;scrollbar-width:none;padding:6px 2px 26px;outline-offset:6px}
.cs-groups::-webkit-scrollbar{display:none}
.cs-group{scroll-snap-align:start}
.cs-group{display:flex;flex-direction:column;gap:14px;background:var(--surface);border-radius:calc(var(--r) + 4px);padding:clamp(22px,2.4vw,30px);box-shadow:0 0 0 1.5px var(--line) inset;transition:transform .5s var(--ease),box-shadow .4s}
.cs-group:hover{transform:translateY(-4px);box-shadow:0 0 0 1.5px #BFD9C9 inset,0 26px 44px -30px var(--drop)}
.cs-group .ico{width:48px;height:48px;border-radius:15px;background:var(--soft);color:#0B5A33;display:grid;place-items:center;box-shadow:inset 0 0 0 1px #CFE6D8}
.cs-group .ico svg{width:24px;height:24px}
.cs-group h3{margin:0;font-family:var(--fd);font-weight:var(--hw);font-size:21px;letter-spacing:-.025em;line-height:1.2}
.cs-group ul{list-style:none;margin:0;padding:0;display:grid;gap:11px}
.cs-group li{display:grid;grid-template-columns:20px 1fr;gap:10px;align-items:start;font-size:15.5px;line-height:1.5;color:var(--muted)}
.cs-group li .ck{width:20px;height:20px;margin-top:1px;border-radius:50%;background:var(--soft);color:#0B5A33;display:grid;place-items:center}
.cs-group li .ck svg{width:12px;height:12px;stroke-width:2.8}
.cs-two.cs-one{grid-template-columns:1fr}
.cs-two.cs-one .cs-res{grid-template-columns:repeat(2,minmax(0,1fr));gap:22px 48px}
.cs-two.cs-one .cs-res li{align-items:center;min-height:52px}
.cs-page .cs-head{align-items:start}
.cs-page .cs-head .h1{font-size:clamp(28px,3.3vw,44px);line-height:1.1}
@media(max-width:1100px){.cs-groups{grid-auto-columns:calc((100% - 18px)/2)}}
@media(max-width:900px){.pf-intro-in,.cs-brief{grid-template-columns:1fr}.cs-two.cs-one .cs-res{grid-template-columns:1fr}}
@media(max-width:640px){.cs-groups{grid-auto-columns:88%}}

/* Case page: proof screenshots slider and viewer */
.cs-proof{margin:clamp(30px,4vw,52px) 0 clamp(22px,3vw,34px)}
.cs-proof-head{display:flex;align-items:end;justify-content:space-between;gap:20px;margin-bottom:clamp(16px,2.4vw,26px)}
.cs-proof-head .h2{font-size:clamp(28px,3.2vw,42px)}
.cs-proof-sub{margin:8px 0 0;color:var(--muted);font-size:15.5px;line-height:1.5}
.cs-shots{display:grid;grid-auto-flow:column;grid-auto-columns:calc((100% - 18px)/2);gap:18px;overflow-x:auto;scroll-snap-type:x mandatory;scrollbar-width:none;padding:6px 2px 10px;outline-offset:6px}
.cs-shots::-webkit-scrollbar{display:none}
.cs-shot{scroll-snap-align:start;margin:0;display:flex;flex-direction:column;gap:14px;background:var(--surface);border-radius:calc(var(--r) + 4px);padding:14px 14px 20px;box-shadow:0 0 0 1.5px var(--line) inset}
.cs-shot-open{position:relative;display:block;width:100%;aspect-ratio:16/10;padding:0;border:0;border-radius:var(--r);overflow:hidden;background:#F3F6FA;cursor:zoom-in;box-shadow:0 0 0 1px var(--line) inset}
.cs-shot-open img{width:100%;height:100%;object-fit:contain;display:block;transition:transform .5s var(--ease)}
.cs-shot-open:hover img{transform:scale(1.025)}
.cs-shot .mag{position:absolute;right:12px;bottom:12px;width:42px;height:42px;border-radius:50%;background:var(--ink);color:#fff;display:grid;place-items:center;box-shadow:0 10px 22px -10px var(--drop);transition:transform .3s var(--ease)}
.cs-shot-open:hover .mag,.cs-shot-open:focus-visible .mag{transform:scale(1.1)}
.cs-shot .mag svg{width:20px;height:20px}
.cs-shot figcaption{display:grid;gap:5px;padding:0 6px;font-size:14.5px;line-height:1.5;color:var(--muted)}
.cs-shot figcaption b{color:var(--ink);font-size:12.5px;letter-spacing:.06em;text-transform:uppercase}
@media(max-width:700px){.cs-shots{grid-auto-columns:88%}}

.lb{position:fixed;inset:0;z-index:2147483647;display:flex;flex-direction:column;background:rgba(8,16,32,.88);-webkit-backdrop-filter:blur(6px);backdrop-filter:blur(6px)}
.lb[hidden]{display:none}
html.lb-lock{overflow:hidden}
.lb-bar{display:flex;align-items:center;gap:10px;padding:14px 18px;color:#fff}
.lb-count{margin-right:auto;font-size:14px;letter-spacing:.04em;opacity:.8}
.lb-btn{width:46px;height:46px;border-radius:50%;border:0;background:rgba(255,255,255,.16);color:#fff;display:grid;place-items:center;cursor:pointer;transition:background .25s,transform .25s}
.lb-btn:hover{background:rgba(255,255,255,.3)}
.lb-btn:focus-visible{outline:2px solid #fff;outline-offset:2px}
.lb-btn svg{width:22px;height:22px}
.lb [data-lb-zoom] .z-out{display:none}.lb.zoomed [data-lb-zoom] .z-in{display:none}.lb.zoomed [data-lb-zoom] .z-out{display:block}
.lb-arrow{position:absolute;top:50%;transform:translateY(-50%);z-index:2;width:54px;height:54px}
.lb-prev{left:14px}.lb-prev svg{transform:rotate(180deg)}
.lb-next{right:14px}
.lb-stage{flex:1;min-height:0;display:flex;overflow:auto;padding:0 80px}
.lb-img{display:block;margin:auto;max-width:100%;max-height:calc(100vh - 190px);height:auto;border-radius:10px;background:#fff;box-shadow:0 30px 80px -20px rgba(0,0,0,.6);cursor:zoom-in}
.lb.zoomed .lb-img{max-width:none;max-height:none;cursor:zoom-out}
.lb-cap{margin:0;padding:12px 24px 22px;color:#fff;text-align:center;font-size:15px;line-height:1.5}
@media(max-width:700px){.lb-stage{padding:0 12px}.lb-arrow{top:auto;bottom:18px;transform:none;width:48px;height:48px}.lb-prev{left:14px}.lb-next{right:14px}.lb-cap{padding:12px 74px 22px}}
