/* 7Code — blog module: /blog index cards + /blog/{slug} article (TOC, prose, share, related). Loaded via page_open css => ['mod-blog']. */

/* ---------- post cards ---------- */
.blog-list{padding-top:clamp(40px,6vw,80px)}
.blog-empty{color:var(--ink70);font-size:18px;padding:30px 0}
.bgrid{display:grid;grid-template-columns:repeat(3,minmax(0,1fr));gap:18px}
.bc{position:relative;display:flex;flex-direction:column;border:1.5px solid var(--ink);background:var(--paper);transition:border-color .25s}
.bc:hover{border-color:var(--red)}
.bc:focus-within{outline:2px solid var(--red);outline-offset:3px}
.bc-im{aspect-ratio:16/9;overflow:hidden;background:var(--panel);border-bottom:1.5px solid var(--ink)}
.bc-im img{width:100%;height:100%;object-fit:cover;transition:transform .7s cubic-bezier(.2,.7,0,1)}
.bc:hover .bc-im img{transform:scale(1.04)}
.bc-body{display:flex;flex-direction:column;gap:12px;padding:18px 18px 20px;flex:1}
.bc-meta{display:flex;flex-wrap:wrap;align-items:center;gap:6px 10px;font-family:var(--mono);font-size:12px;text-transform:uppercase;letter-spacing:.04em;color:var(--ink45)}
.bc-new{background:var(--red);color:#fff;padding:3px 8px;font-weight:700}
.bc-t{font-weight:900;font-size:clamp(20px,1.7vw,24px);line-height:1.05;letter-spacing:-.02em;text-transform:uppercase;overflow-wrap:anywhere}
.bc-t a::after{content:"";position:absolute;inset:0;z-index:1}
.bc-t a:focus-visible{outline:none}
.bc-x{color:var(--ink70);font-size:15px;line-height:1.55}
.bc-foot{display:flex;justify-content:space-between;align-items:center;gap:12px;margin-top:auto;padding-top:6px}
.bc-tag{font-family:var(--mono);font-size:11.5px;text-transform:uppercase;letter-spacing:.04em;border:1.5px solid var(--line);padding:5px 9px;color:var(--ink70)}
.bc-go{font-family:var(--mono);font-size:12px;text-transform:uppercase;letter-spacing:.06em;color:var(--ink45);margin-inline-start:auto;white-space:nowrap;transition:color .2s}
.bc:hover .bc-go{color:var(--red)}

/* index: 6-column track so a last row of two cards can share the width evenly */
.bgrid--list{grid-template-columns:repeat(6,minmax(0,1fr))}
.bgrid--list>.bc{grid-column:span 2}
.bgrid--list>.bc:not(.bc--big):nth-child(3n+2):nth-last-child(2),
.bgrid--list>.bc:not(.bc--big):nth-child(3n+2):nth-last-child(2)+.bc{grid-column:span 3}

/* featured (newest) post: the image keeps 16:9 and fills the row; the cover's title side (left) is never cropped */
.bgrid>.bc--big{grid-column:1/-1;display:grid;grid-template-columns:minmax(0,1.55fr) minmax(0,1fr)}
.bc--big .bc-im{position:relative;width:100%;height:auto;align-self:stretch;border-bottom:0;border-inline-end:1.5px solid var(--ink)}
.bc--big .bc-im img{position:absolute;inset:0;object-position:left center}
.bc--big .bc-body{padding:clamp(22px,2.8vw,40px);justify-content:center;gap:16px}
.bc--big .bc-t{font-size:clamp(26px,2.7vw,42px);line-height:.98;letter-spacing:-.03em}
.bc--big .bc-x{font-size:16.5px;max-width:46ch}
.bc--big .bc-foot{margin-top:8px}

/* ---------- article ---------- */
.post .crumbs .cur{display:inline-block;max-width:min(44ch,52vw);overflow:hidden;text-overflow:ellipsis;white-space:nowrap;vertical-align:bottom}
.post-flag{display:inline-block;font-family:var(--mono);font-size:12px;text-transform:uppercase;letter-spacing:.04em;border:1.5px solid var(--red);color:var(--red);padding:6px 10px;margin-bottom:18px}
.post-t{font-size:clamp(32px,5vw,76px);line-height:.95;max-width:19ch;overflow-wrap:anywhere}
.post-cover{margin:40px 0 0;border:1.5px solid var(--ink);background:var(--panel)}
.post-cover img{width:100%;height:auto}

.post-grid{display:grid;grid-template-columns:minmax(210px,270px) minmax(0,1fr);gap:clamp(32px,5.5vw,96px);padding-top:clamp(44px,6vw,88px);align-items:start}
.post-grid.no-toc{grid-template-columns:minmax(0,1fr)}
.post-aside{position:sticky;top:90px;max-height:calc(100vh - 110px);overflow-y:auto;scrollbar-width:thin;scrollbar-color:var(--line) transparent}

/* table of contents: always open + sticky on desktop, collapsible on phones */
.toc{border-top:1.5px solid var(--ink)}
.toc summary{list-style:none;display:flex;justify-content:space-between;align-items:center;gap:12px;min-height:48px;font-family:var(--mono);font-size:12px;text-transform:uppercase;letter-spacing:.08em;color:var(--ink45);cursor:pointer}
.toc summary::-webkit-details-marker{display:none}
.toc summary::after{content:"+";font-family:var(--mono);color:var(--red);font-size:22px;line-height:1;transition:transform .25s}
.toc[open] summary::after{transform:rotate(45deg)}
.toc .toc-n{margin-inline-start:auto;color:var(--ink45)}
.toc ol{list-style:none;border-top:1.5px solid var(--line)}
.toc li a{display:flex;gap:12px;padding:11px 0;border-bottom:1.5px solid var(--line);font-size:14.5px;line-height:1.4;color:var(--ink70);transition:color .2s}
.toc li a .n{font-family:var(--mono);font-size:12px;color:var(--ink45);padding-top:2px;flex:0 0 auto;transition:color .2s}
.toc li a:hover,.toc li a[aria-current]{color:var(--ink)}
.toc li a:hover .n,.toc li a[aria-current] .n{color:var(--red)}
@media(min-width:1001px){.toc summary{pointer-events:none}.toc summary::after{display:none}}

/* long-form text */
.prose{max-width:70ch;font-size:18px;line-height:1.75;color:rgba(242,241,236,.88);overflow-wrap:break-word}
.prose>*+*{margin-top:1.15em}
.prose h2{font-weight:900;font-size:clamp(24px,2.4vw,34px);line-height:1.05;letter-spacing:-.02em;text-transform:uppercase;color:var(--ink);margin-top:2.1em;padding-top:.8em;border-top:1.5px solid var(--ink);scroll-margin-top:90px}
.prose h2:first-child{margin-top:0}
.prose h3{font-weight:800;font-size:clamp(19px,1.7vw,22px);line-height:1.25;color:var(--ink);margin-top:1.8em;scroll-margin-top:90px}
.prose h2+*,.prose h3+*{margin-top:.8em}
.prose strong{color:var(--ink);font-weight:700}
.prose a{color:var(--ink);text-decoration:underline;text-decoration-color:var(--red);text-decoration-thickness:2px;text-underline-offset:4px;transition:color .2s}
.prose a:hover{color:var(--red)}
.prose ul,.prose ol{list-style:none}
.prose li{position:relative;padding-inline-start:32px}
.prose li+li{margin-top:.6em}
.prose ul>li::before{content:"";position:absolute;inset-inline-start:2px;top:.86em;width:13px;height:2px;background:var(--red)}
.prose ol{counter-reset:li}
.prose ol>li{counter-increment:li}
.prose ol>li::before{content:counter(li,decimal-leading-zero);position:absolute;inset-inline-start:0;top:.3em;font-family:"JetBrains Mono",ui-monospace,monospace;font-weight:700;font-size:13px;color:var(--red)}
.prose blockquote{margin-block:1.7em;padding-block:.3em;padding-inline-start:22px;border-inline-start:4px solid var(--red);font-weight:800;font-size:clamp(20px,2vw,26px);line-height:1.3;letter-spacing:-.01em;color:var(--ink)}

/* share */
.post-share{display:flex;flex-wrap:wrap;align-items:center;gap:8px;font-size:18px;max-width:70ch;margin-top:clamp(36px,5vw,56px);padding-top:22px;border-top:1.5px solid var(--ink)}
.post-share .k{font-family:var(--mono);font-size:12px;text-transform:uppercase;letter-spacing:.08em;color:var(--ink45);margin-inline-end:8px}
.post-share a,.post-share button{display:inline-flex;align-items:center;justify-content:center;min-height:44px;padding:0 14px;border:1.5px solid var(--line);background:none;color:var(--ink);font-family:var(--mono);font-size:12px;font-weight:500;text-transform:uppercase;letter-spacing:.04em;cursor:pointer;transition:background .2s,color .2s,border-color .2s}
.post-share a:hover,.post-share button:hover{border-color:var(--ink);background:var(--ink);color:var(--paper)}
.post-share button.is-done,.post-share button.is-done:hover{border-color:#3ad07a;background:none;color:#3ad07a}

/* related service */
.post-svc-wrap{padding-top:clamp(56px,7vw,100px)}
.post-svc{display:grid;grid-template-columns:minmax(0,1fr) minmax(0,1fr);gap:14px 44px;align-items:end;border:1.5px solid var(--ink);padding:clamp(22px,3.4vw,44px);transition:background .25s,border-color .25s,color .25s}
.post-svc .k{grid-column:1/-1;font-family:var(--mono);font-size:12px;text-transform:uppercase;letter-spacing:.08em;color:var(--ink45)}
.post-svc .t{font-weight:900;font-size:clamp(28px,4.2vw,60px);line-height:.92;letter-spacing:-.03em;text-transform:uppercase}
.post-svc .d{color:var(--ink70);font-size:17px;max-width:44ch}
.post-svc .go{grid-column:1/-1;font-family:var(--mono);font-size:13px;font-weight:700;text-transform:uppercase;letter-spacing:.06em;color:var(--red);padding-top:6px}
.post-svc:hover{background:var(--red);border-color:var(--red);color:#fff}
.post-svc:hover .k,.post-svc:hover .d,.post-svc:hover .go{color:#fff}

.post-more .shead{padding-top:clamp(56px,7vw,100px);margin-bottom:22px}

/* ---------- Arabic ---------- */
html[dir=rtl] .bc-t{line-height:1.45}
html[dir=rtl] .bc--big .bc-t{line-height:1.35}
html[dir=rtl] .bc-x{line-height:1.8}
html[dir=rtl] .bc-meta,html[dir=rtl] .bc-tag,html[dir=rtl] .bc-go,html[dir=rtl] .toc summary,html[dir=rtl] .post-share .k,
html[dir=rtl] .post-share a,html[dir=rtl] .post-share button,html[dir=rtl] .post-svc .k,html[dir=rtl] .post-svc .go,html[dir=rtl] .post-flag{font-size:14px}
html[dir=rtl] .post-t{font-size:clamp(30px,4.4vw,62px);line-height:1.35;max-width:24ch}
html[dir=rtl] .toc li a{font-size:15px;line-height:1.6}
html[dir=rtl] .prose{font-size:18.5px;line-height:1.9}
html[dir=rtl] .prose h2{line-height:1.45;font-size:clamp(23px,2.3vw,31px);padding-top:.7em;text-transform:none}
html[dir=rtl] .post-share{font-size:18.5px}
html[dir=rtl] .prose h3{line-height:1.55}
html[dir=rtl] .prose blockquote{line-height:1.6}
html[dir=rtl] .prose ul>li::before{top:.95em}
html[dir=rtl] .prose ol>li::before{top:.45em}
html[dir=rtl] .post-svc .t{line-height:1.3}
html[dir=rtl] .post-svc .d{line-height:1.8}

/* ---------- tablet / phone ---------- */
@media(max-width:1000px){
  .bgrid,.bgrid--list{grid-template-columns:repeat(2,minmax(0,1fr))}
  .bgrid--list>.bc,.bgrid--list>.bc:not(.bc--big):nth-child(3n+2):nth-last-child(2),
  .bgrid--list>.bc:not(.bc--big):nth-child(3n+2):nth-last-child(2)+.bc{grid-column:auto}
  .bgrid--list>.bc:not(.bc--big):nth-child(even):last-child{grid-column:1/-1}
  .bgrid>.bc--big{grid-column:1/-1;grid-template-columns:minmax(0,1fr)}
  .bc--big .bc-im{aspect-ratio:16/9;border-inline-end:0;border-bottom:1.5px solid var(--ink)}
  .bc--big .bc-im img{position:static}
  .post-grid{grid-template-columns:minmax(0,1fr);gap:28px}
  .post-aside{position:static;max-height:none;overflow:visible}
  .toc{border:1.5px solid var(--ink);padding-inline:16px}
  .toc summary{font-size:13px;color:var(--ink)}
  .toc[open] ol{margin-bottom:6px}
  .toc li:last-child a{border-bottom:0}
}
@media(max-width:640px){
  .bgrid,.bgrid--list{grid-template-columns:minmax(0,1fr)}
  .bgrid--list>.bc:not(.bc--big):nth-child(even):last-child{grid-column:auto}
  .post-cover{margin-top:28px}
  .prose{font-size:17px}
  html[dir=rtl] .prose{font-size:17.5px}
  .prose li{padding-inline-start:28px}
  .post-share .k{flex-basis:100%;margin-bottom:2px}
  .post-share a,.post-share button{flex:1 1 auto}
  .post-svc{grid-template-columns:minmax(0,1fr)}
  .post .crumbs .cur{max-width:100%}
}
