/* Imuzar blog — loaded last, after base.css, following the site's cascade
   convention (exp -> scenes -> motion -> app-ui -> rituals -> base -> blog).
   Reuses design tokens from exp.css (--glass, --violet, --cyan, --teal,
   --amber, --serif/--sans/--mono) and the existing .qp-content / .fq-item
   systems rather than inventing a parallel visual language. */

/* .blog-pill lives in base.css (loaded on every page, not just /blog/) so
   the header nav item looks correct site-wide — see the rule next to
   .store-pill there. */

/* ── tone tokens for procedural cover art / chips ────────────────────── */
.blog-art{--t1:var(--violet);--t2:var(--cyan)}
.blog-art-violet{--t1:#8B5CF6;--t2:#A78BFA}
.blog-art-cyan{--t1:#22D3EE;--t2:#5EEAD4}
.blog-art-teal{--t1:#5EEAD4;--t2:#22D3EE}
.blog-art-amber{--t1:#FBBF24;--t2:#F59E0B}
.blog-art-indigo{--t1:#6366F1;--t2:#312E81}

/* ── shared page layout ───────────────────────────────────────────────── */
.blog-page{position:relative;z-index:2;max-width:1180px;margin:0 auto;padding:170px 24px 140px}
.blog-h1{font-family:var(--serif);font-weight:300;font-size:clamp(38px,5.4vw,64px);line-height:1.04;letter-spacing:-.02em;color:#fff;margin:0 0 18px;text-wrap:balance}
.blog-section-title{font-family:var(--serif);font-weight:400;font-size:clamp(24px,3vw,32px);color:#fff;margin:0 0 26px}
.bc-dot{color:var(--text-4);margin:0 2px}

/* ── hero band / search / topics ─────────────────────────────────────── */
.blog-hero-band{max-width:760px;margin:0 0 60px}
.blog-search{margin:30px 0 26px}
.blog-search input{width:100%;max-width:480px;padding:14px 20px;border-radius:999px;border:1px solid var(--glass-border-strong);background:rgba(8,11,24,.55);color:var(--text);font:400 15px/1.4 var(--sans);transition:border-color .3s var(--ease),box-shadow .3s var(--ease);appearance:none;-webkit-appearance:none}
.blog-search input::-webkit-search-cancel-button,.blog-search input::-webkit-search-decoration{-webkit-appearance:none}
.blog-search input::placeholder{color:var(--text-faint)}
.blog-search input:focus{outline:none;border-color:rgba(167,139,250,.6);box-shadow:0 0 0 4px rgba(139,92,246,.14)}
.blog-topics{display:flex;flex-wrap:wrap;gap:10px}
.blog-chip{padding:9px 18px;border-radius:999px;background:var(--glass-quiet);border:1px solid var(--glass-border);color:var(--text-3);font:500 12.5px/1 var(--sans);letter-spacing:.01em;cursor:pointer;transition:border-color .25s var(--ease),background .25s var(--ease),color .25s var(--ease)}
.blog-chip:hover{color:var(--text);border-color:var(--glass-border-strong)}
.blog-chip[aria-pressed="true"]{color:#fff;background:linear-gradient(160deg,rgba(139,92,246,.3),rgba(34,211,238,.08));border-color:rgba(167,139,250,.55)}

/* ── article / post cards ────────────────────────────────────────────── */
.blog-card{position:relative;display:flex;flex-direction:column;border-radius:26px;overflow:hidden;background:var(--glass);border:1px solid var(--glass-border);box-shadow:inset 0 1px 0 var(--inner-hi),0 26px 70px rgba(0,0,0,.4);transition:transform .35s var(--ease-out),border-color .35s var(--ease),box-shadow .35s var(--ease-out)}
.blog-card:hover{transform:translateY(-4px);border-color:var(--glass-border-strong);box-shadow:inset 0 1px 0 var(--inner-hi),0 34px 90px rgba(0,0,0,.48)}
.bc-media{display:block;position:relative}
.blog-art{position:relative;display:block;aspect-ratio:16/10;overflow:hidden;background:radial-gradient(120% 100% at 30% 0%,rgba(255,255,255,.05),transparent 60%),#0B1020}
.blog-art i{position:absolute;border-radius:50%;filter:blur(38px);mix-blend-mode:screen;opacity:.6}
.blog-art .ba-1{width:65%;height:80%;left:-14%;top:-18%;background:radial-gradient(circle,var(--t1),transparent 68%)}
.blog-art .ba-2{width:55%;height:70%;right:-12%;top:8%;background:radial-gradient(circle,var(--t2),transparent 68%);opacity:.5}
.blog-art .ba-3{width:70%;height:60%;left:16%;bottom:-24%;background:radial-gradient(circle,var(--t1),transparent 70%);opacity:.4}
.bc-thumb{position:absolute;inset:0;width:100%;height:100%;object-fit:cover;object-position:center;display:block}
.bc-body{padding:22px 24px 26px;display:flex;flex-direction:column;gap:10px}
.bc-cat{align-self:flex-start;font:600 10.5px/1 var(--mono);letter-spacing:.12em;text-transform:uppercase;color:var(--violet-soft);text-decoration:none}
.bc-cat:hover{color:#fff}
.bc-title{margin:0;font-family:var(--serif);font-weight:400;font-size:22px;line-height:1.22}
.bc-title a{color:#fff;text-decoration:none}
.bc-title a:hover{color:#C4B5FD}
.bc-excerpt{margin:0;color:var(--text-3);font-size:14.5px;line-height:1.6;text-wrap:pretty}
.bc-meta{margin:4px 0 0;font-size:12px;color:var(--text-4)}

/* featured hero card */
.blog-featured{margin-bottom:56px}
.blog-card-featured{flex-direction:row;align-items:stretch}
.blog-card-featured .bc-media{flex:1 1 46%}
.blog-card-featured .blog-art{aspect-ratio:auto;height:100%;min-height:320px}
.blog-card-featured .bc-body{flex:1 1 54%;padding:38px 42px;justify-content:center;gap:14px}
.blog-card-featured .bc-title{font-size:clamp(26px,3.2vw,38px);line-height:1.12}
.blog-card-featured .bc-excerpt{font-size:16px;max-width:52ch}
@media (max-width:820px){.blog-card-featured{flex-direction:column}.blog-card-featured .bc-media{flex:none}.blog-card-featured .blog-art{min-height:220px}.blog-card-featured .bc-body{padding:28px 26px}}

/* ── grid / load more ─────────────────────────────────────────────────── */
.blog-grid-section{margin-bottom:60px}
.blog-grid{display:grid;grid-template-columns:repeat(auto-fit,minmax(300px,1fr));gap:26px}
.blog-empty{color:var(--text-3);font-size:15px;padding:40px 0;text-align:center}
.blog-load-more-wrap{display:flex;justify-content:center;margin-top:44px}
.blog-load-more{padding:13px 30px;border-radius:999px;background:var(--glass-quiet);border:1px solid var(--glass-border-strong);color:var(--text);font:600 13.5px/1 var(--sans);cursor:pointer;transition:border-color .25s var(--ease),background .25s var(--ease),transform .25s var(--ease)}
.blog-load-more:hover{border-color:rgba(255,255,255,.26);background:rgba(255,255,255,.06);transform:translateY(-1px)}
.blog-load-more[hidden]{display:none}
.blog-load-sentinel{height:1px}

/* ── newsletter ───────────────────────────────────────────────────────── */
.blog-newsletter{padding:44px 40px;border-radius:28px;text-align:center;max-width:640px;margin:0 auto}
.blog-newsletter h2{font-family:var(--serif);font-weight:400;font-size:clamp(24px,3vw,30px);color:#fff;margin:0 0 10px}
.blog-newsletter p{color:var(--text-3);font-size:14.5px;margin:0 0 26px}
.blog-newsletter-form{display:flex;gap:12px;flex-wrap:wrap;justify-content:center}
.blog-newsletter-form input{flex:1 1 240px;padding:13px 18px;border-radius:999px;border:1px solid var(--glass-border-strong);background:rgba(8,11,24,.55);color:var(--text);font:400 14.5px/1.4 var(--sans)}
.blog-newsletter-form input:focus{outline:none;border-color:rgba(167,139,250,.6);box-shadow:0 0 0 4px rgba(139,92,246,.14)}
.blog-newsletter-form button{padding:13px 26px;border-radius:999px;border:0;background:var(--grad-primary);color:#fff;font:600 13.5px/1 var(--sans);cursor:pointer;box-shadow:0 12px 30px rgba(139,92,246,.4);transition:transform .25s var(--ease)}
.blog-newsletter-form button:hover{transform:translateY(-1px)}
.blog-newsletter-status{min-height:1.4em;margin:16px 0 0;font-size:13px;color:var(--teal)}
.blog-newsletter-status.error{color:#FCA5A5}

/* ── breadcrumb ───────────────────────────────────────────────────────── */
.blog-breadcrumb{margin:0 0 30px}
.blog-breadcrumb ol{display:flex;flex-wrap:wrap;gap:8px;list-style:none;margin:0;padding:0;font:500 11.5px/1.6 var(--mono);letter-spacing:.06em;text-transform:uppercase;color:var(--text-4)}
.blog-breadcrumb li:not(:last-child)::after{content:'/';margin-left:8px;color:var(--text-faint)}
.blog-breadcrumb a{color:var(--text-4);text-decoration:none}
.blog-breadcrumb a:hover{color:var(--text)}
.blog-breadcrumb li[aria-current]{color:var(--text-2)}

/* ── article hero ─────────────────────────────────────────────────────── */
.blog-article-hero{max-width:820px;margin:0 auto 50px}
.blog-article-cat{display:inline-block;margin-bottom:16px;font:600 11px/1 var(--mono);letter-spacing:.14em;text-transform:uppercase;color:var(--violet-soft);text-decoration:none}
.blog-article-cat:hover{color:#fff}
.blog-article-meta{color:var(--text-3);font-size:13.5px;margin:0 0 30px}
.blog-hero-band-art{display:block;aspect-ratio:21/9;border-radius:26px;border:1px solid var(--glass-border)}

/* ── article hero image ───────────────────────────────────────────────── */
.blog-hero-figure{max-width:1020px;margin:0 auto 56px}
.blog-hero-frame{border-radius:28px;overflow:hidden;border:1px solid var(--glass-border);box-shadow:0 30px 80px rgba(0,0,0,.45)}
.blog-hero-frame img{width:100%;height:auto;aspect-ratio:1774/887;object-fit:cover;display:block;background:#0B1020}
@media (max-width:600px){.blog-hero-frame{border-radius:20px}}

/* ── article layout: TOC + body ──────────────────────────────────────── */
html{scroll-behavior:smooth}
body.imz-reduce-motion{scroll-behavior:auto}
.blog-article-layout{display:grid;grid-template-columns:220px minmax(0,1fr);gap:56px;max-width:1020px;margin:0 auto}
.blog-toc{position:relative}
.blog-toc-mobile{position:sticky;top:100px;padding:18px 20px;border-radius:18px;background:var(--glass);border:1px solid var(--glass-border)}
.blog-toc-mobile summary{cursor:pointer;font:600 11px/1 var(--mono);letter-spacing:.1em;text-transform:uppercase;color:var(--text-3);list-style:none}
.blog-toc-mobile summary::-webkit-details-marker{display:none}
.blog-toc-mobile ul{list-style:none;margin:14px 0 0;padding:0;display:flex;flex-direction:column;gap:9px}
.blog-toc-mobile a{color:var(--text-3);text-decoration:none;font-size:13.5px;line-height:1.4;transition:color .25s var(--ease)}
.blog-toc-mobile .toc-l3 a{padding-left:14px;font-size:12.5px}
.blog-toc-mobile a:hover,.blog-toc-mobile a.active{color:#fff}
.blog-article-body{max-width:680px}
/* headings need clearance so the fixed .chrome header never covers them
   when a TOC link (or same-page anchor) jumps to them */
.blog-article-body h2,.blog-article-body h3,.blog-article-body h4{scroll-margin-top:110px}
@media (max-width:900px){.blog-article-layout{grid-template-columns:1fr}.blog-toc-mobile{position:static;margin-bottom:8px}}

/* ── callouts ─────────────────────────────────────────────────────────── */
.blog-callout{margin:30px 0;padding:22px 26px;border-radius:18px;background:var(--glass);border:1px solid var(--glass-border);border-left:3px solid var(--violet-soft)}
.blog-callout .bc-title{font:600 12px/1 var(--mono);letter-spacing:.08em;text-transform:uppercase;color:var(--violet-soft);margin:0 0 8px}
.blog-callout p{margin:0 0 0}
.blog-callout-tip{border-left-color:var(--teal)}
.blog-callout-tip .bc-title{color:var(--teal)}
.blog-callout-warning{border-left-color:var(--amber)}
.blog-callout-warning .bc-title{color:var(--amber)}

/* ── breathing-cycle diagram ─────────────────────────────────────────── */
.blog-breath-cycle{display:grid;grid-template-columns:repeat(4,1fr);gap:12px;margin:32px 0}
.blog-breath-phase{padding:20px 14px;border-radius:16px;background:var(--glass);border:1px solid var(--glass-border);text-align:center}
.blog-breath-phase .bp-count{display:block;font:400 26px/1 var(--serif);color:#fff;margin:0 0 6px}
.blog-breath-phase .bp-label{display:block;font:600 10.5px/1 var(--mono);letter-spacing:.12em;text-transform:uppercase;color:var(--violet-soft)}
.blog-breath-phase:nth-child(2) .bp-label{color:var(--teal)}
.blog-breath-phase:nth-child(4) .bp-label{color:var(--teal)}
@media (max-width:560px){.blog-breath-cycle{grid-template-columns:repeat(2,1fr)}}

/* ── gallery / table ──────────────────────────────────────────────────── */
.blog-gallery{display:grid;grid-template-columns:repeat(auto-fit,minmax(180px,1fr));gap:14px;margin:30px 0}
.blog-gallery figure{margin:0}
.blog-gallery img{width:100%;border-radius:14px;display:block}
.blog-gallery figcaption{margin-top:8px;font-size:12px;color:var(--text-4)}
.blog-table-wrap{overflow-x:auto;margin:0 0 20px}

/* ── references ───────────────────────────────────────────────────────── */
.blog-divider{border:0;height:1px;margin:56px 0 40px;background:linear-gradient(90deg,transparent,rgba(255,255,255,.16),transparent)}
.blog-references-note{margin:-6px 0 26px;font-size:13px;line-height:1.6;color:var(--text-4);font-style:italic;max-width:56ch}
.blog-references{list-style:none;margin:0;padding:0;display:flex;flex-direction:column;gap:20px;counter-reset:none}
.blog-references li{display:flex;align-items:baseline;gap:12px;margin:0;font-size:14px;line-height:1.7;color:var(--text-3)}
.blog-references .ref-num{flex:none;min-width:1.4em;font:600 13px/1.7 var(--mono);color:var(--violet-soft)}
.blog-references .ref-body{flex:1;min-width:0}
.blog-references .ref-journal{color:var(--text-2)}
.blog-references em{color:var(--text-2);font-style:italic}
.blog-references a{color:var(--violet-soft);text-decoration:underline;text-underline-offset:2px;word-break:break-word;overflow-wrap:anywhere}
.blog-references a:hover,.blog-references a:focus-visible{color:#fff}
.qp-content sup a{color:var(--violet-soft);text-decoration:none;font-size:11px;margin-left:1px}
.qp-content sup a:hover{color:#fff}
@media (max-width:480px){.blog-references li{align-items:flex-start;gap:8px}}

/* ── app download CTA ─────────────────────────────────────────────────── */
.blog-cta{max-width:820px;margin:52px auto 0;padding:34px 40px;border-radius:26px;display:flex;align-items:center;justify-content:space-between;gap:26px;flex-wrap:wrap;background:linear-gradient(160deg,rgba(139,92,246,.16),rgba(8,11,24,.4))}
.blog-cta-text h2{margin:0 0 8px;font-family:var(--serif);font-weight:400;font-size:clamp(20px,2.4vw,26px);color:#fff}
.blog-cta-text p{margin:0;color:var(--text-3);font-size:14px;line-height:1.6;max-width:48ch}
@media (max-width:600px){.blog-cta{padding:26px 24px}}

/* ── share ────────────────────────────────────────────────────────────── */
.blog-share{display:flex;align-items:center;gap:12px;max-width:680px;margin:52px auto 0;padding-top:26px;border-top:1px solid rgba(255,255,255,.08)}
.bs-label{font:600 11px/1 var(--mono);letter-spacing:.1em;text-transform:uppercase;color:var(--text-4);margin-right:4px}
.bs-btn{display:inline-flex;align-items:center;justify-content:center;width:38px;height:38px;border-radius:50%;background:var(--glass-quiet);border:1px solid var(--glass-border-strong);color:var(--text-2);transition:border-color .25s var(--ease),background .25s var(--ease),color .25s var(--ease),transform .25s var(--ease)}
.bs-btn:hover{color:#fff;border-color:rgba(255,255,255,.28);background:rgba(255,255,255,.06);transform:translateY(-1px)}

/* ── related ──────────────────────────────────────────────────────────── */
.blog-related{max-width:1020px;margin:72px auto 0}
.blog-related + .blog-newsletter{margin-top:72px}
/* Visible by default (no FOUC / dependency on JS); .pre-reveal is only added
   by blog-article.js right before it observes the grid, so the entrance fade
   never leaves the section blank if the observer is slow or never fires. */
.blog-grid-related{opacity:1;transition:opacity .6s var(--ease-out)}
.blog-grid-related.pre-reveal{opacity:0}
.blog-grid-related.in{opacity:1}

/* ── entrance animation hook (blog.js applies via GSAP; CSS fallback if JS
   never runs, e.g. reduced-motion) ─────────────────────────────────────── */
.blog-card{opacity:1}
.blog-card.pre-anim{opacity:0;transform:translateY(18px)}

@media (max-width:600px){.blog-page{padding:168px 18px 110px;padding-top:calc(168px + env(safe-area-inset-top))}.blog-newsletter{padding:32px 24px}.blog-share{flex-wrap:wrap}.blog-grid{grid-template-columns:1fr}.blog-chip{padding:11px 18px;min-height:40px}}
