/* Blog pages: the homepage's monochrome system (zinc palette, #fbfbfb canvas,
   Inter / Geist Mono / Velocity Serif italic accents, depth buttons, dithered
   footer) applied to long-form reading. Self-contained so SPA rebuilds don't
   affect it. */

@font-face{font-family:"Inter Variable";font-style:normal;font-weight:100 900;font-display:swap;src:url(/assets/inter-latin-wght-normal-Dx4kXJAl.woff2) format("woff2")}
@font-face{font-family:"Geist Mono Variable";font-style:normal;font-weight:100 900;font-display:swap;src:url(/assets/geist-mono-latin-wght-normal-XN7g48iV.woff2) format("woff2")}
@font-face{font-family:"ATM Velocity Serif";font-style:italic;font-weight:400;font-display:swap;src:url(/assets/velocity-serif.ttf) format("truetype")}

:root{
  color-scheme:light;
  --canvas:#fbfbfb;
  --surface:#fff;
  --ink:#09090b;
  --ink-strong:#18181b;
  --ink-soft:#27272a;
  --body:#3f3f46;
  --muted:#52525b;
  --subtle:#71717a;
  --faint:#a1a1aa;
  --line:#e4e4e7;
  --line-strong:#d4d4d8;
  --wash:#f4f4f5;
  --highlight:#e9e9ec;
  --sans:"Inter Variable",-apple-system,BlinkMacSystemFont,"Segoe UI",Roboto,sans-serif;
  --mono:"Geist Mono Variable",ui-monospace,SFMono-Regular,Menlo,monospace;
  --serif:"ATM Velocity Serif",Georgia,serif;
  --wide:64rem;
  --gutter:1rem;
}
@media (min-width:640px){:root{--gutter:1.5rem}}

*,*::before,*::after{box-sizing:border-box}
html{-webkit-text-size-adjust:100%;scroll-behavior:smooth;background:var(--canvas)}
@media (prefers-reduced-motion:reduce){html{scroll-behavior:auto}}
body{margin:0;min-height:100vh;background:var(--canvas);color:var(--ink);font-family:var(--sans);font-size:1rem;line-height:1.5;-webkit-font-smoothing:antialiased;-moz-osx-font-smoothing:grayscale;overflow-x:clip}
img,svg{display:block}
a{color:inherit}
h1,h2,h3,p,ol,ul,figure{margin:0}
::selection{background:#e4e4e7;color:var(--ink)}
:focus-visible{outline:2px solid var(--muted);outline-offset:3px;border-radius:4px}

.skip-link{position:absolute;left:var(--gutter);top:-3rem;z-index:10;padding:.5rem .75rem;border-radius:6px;background:var(--ink-strong);color:#fafafa;font-size:.8125rem;text-decoration:none}
.skip-link:focus{top:.75rem}

/* Serif italic accents, as in the homepage's "beta" and "llms.txt". */
.serif-link{display:inline-flex;align-items:center;gap:.375rem;font-family:var(--serif);font-style:italic;font-weight:400;font-size:.8125rem;line-height:1;letter-spacing:-.01em;color:var(--muted);text-decoration:underline;text-underline-offset:.2em;text-decoration-thickness:1px}
.serif-link:hover{color:var(--ink-strong)}
.serif-link svg{width:.875rem;height:.875rem}

/* Header */
.site-header-inner{display:flex;align-items:center;justify-content:space-between;gap:1rem;width:100%;max-width:var(--wide);height:4rem;margin:0 auto;padding:0 var(--gutter)}
.page-index .site-header-inner{max-width:48rem}
.brand{display:flex;align-items:center;gap:.75rem}
.brand-home{display:inline-flex;align-items:center;justify-content:center;width:2.75rem;height:2.75rem;margin-inline:-.75rem;color:var(--ink-soft)}
.brand-home svg{width:1.25rem;height:1.25rem}
.brand-section{text-decoration:none}
.header-nav{display:flex;align-items:center;gap:1.25rem}
.header-nav .serif-link{min-height:2.75rem;font-size:.75rem}
@media (max-width:420px){.header-nav .serif-link{display:none}}

/* Depth button, matching the homepage's controls. */
.depth{--depth:4px;--lift:0px;--face:#fff;--face-border:#d4d4d8;--base:#e4e4e7;--base-border:#d4d4d8;--press:300ms;position:relative;isolation:isolate;display:inline-flex;align-items:center;justify-content:center;gap:.5rem;height:2.25rem;padding:0 .875rem;margin-bottom:4px;border-radius:6px;font-size:.8125rem;font-weight:500;line-height:1;letter-spacing:-.005em;color:var(--ink-soft);text-decoration:none;white-space:nowrap;cursor:pointer;transition:color 120ms ease}
.depth::before,.depth::after{content:"";position:absolute;inset:-1px;border:1px solid;border-radius:inherit;pointer-events:none}
.depth::before{z-index:-2;background:var(--base);border-color:var(--base-border);transform:translateY(var(--depth))}
.depth::after{z-index:-1;background:var(--face);border-color:var(--face-border);transform:translateY(var(--lift));box-shadow:inset 0 1px 0 rgba(255,255,255,.7),inset 0 -1px 0 rgba(24,24,27,.1);transition:transform var(--press) cubic-bezier(.34,1.4,.64,1),box-shadow 200ms ease,background-color 150ms ease}
.depth>span{translate:0 var(--lift);transition:translate var(--press) cubic-bezier(.34,1.4,.64,1)}
.depth-dark{--face:#18181b;--face-border:#27272a;--base:#09090b;--base-border:#09090b;color:#fafafa}
.depth-quiet{--depth:2px;--face:rgba(251,251,251,.75);--face-border:var(--line);--base:var(--line);--base-border:transparent;height:2rem;padding:0 .75rem;font-size:.75rem}
.depth-quiet::after{box-shadow:none}
@media (hover:hover) and (pointer:fine){.depth:hover{--lift:-2px}}
.depth:active{--lift:var(--depth);--press:55ms}
.depth:active::after{box-shadow:none}
.depth:focus-visible{outline:2px solid var(--muted);outline-offset:7px;border-radius:6px}
@media (prefers-reduced-motion:reduce){.depth::after,.depth>span{transition:none}}

/* Article layout: contents rail on the left, reading column on the right. */
.article-layout{display:grid;grid-template-columns:minmax(0,1fr);width:100%;max-width:var(--wide);margin:0 auto;padding:1rem var(--gutter) 0}
.article-aside{display:none}
@media (min-width:1024px){
  .article-layout{grid-template-columns:12.5rem minmax(0,1fr);column-gap:4rem;padding-top:3rem}
  .article-aside{display:block}
  .article-aside .hook{position:sticky;top:2rem;max-height:calc(100vh - 4rem);overflow-y:auto;overscroll-behavior:contain;padding:0 0 1rem}
  .toc-mobile{display:none}
}
.post{min-width:0;max-width:42rem}

/* Hook sidebar: adapted from Rare UI's Hook Sidebar (rareui.com/components/hooksidebar).
   A dashed rail runs down to the active entry and turns into it; a fainter
   rail previews the entry under the pointer. Positions are set by blog.js. */
.hook{display:flex;flex-direction:column}
.hook-label{padding:0 .5rem .875rem .125rem;font-size:.6875rem;font-weight:500;line-height:1;letter-spacing:.08em;text-transform:uppercase;color:var(--ink-soft)}
.hook-list{position:relative;display:flex;flex-direction:column;gap:2px}
.hook-rail{position:absolute;inset:0;pointer-events:none;opacity:0;transition:opacity .2s ease}
.hook-rail[data-visible=true]{opacity:1}
.hook-rail-active{color:var(--ink-strong)}
.hook-rail-ghost{color:rgba(24,24,27,.3)}
.hook-line{position:absolute;top:0;left:2px;width:1px;height:0;background-image:repeating-linear-gradient(to top,transparent 0 2px,currentColor 2px 4px);will-change:transform,height}
.hook-corner{position:absolute;top:0;left:2px;overflow:visible;will-change:transform}
.hook-item{display:block;padding:6px 8px 6px 20px;border-radius:8px;font-size:.8125rem;line-height:1.4;letter-spacing:-.005em;color:rgba(9,9,11,.5);text-decoration:none;text-wrap:pretty;transition:color .2s ease}
.hook-item:hover{color:rgba(9,9,11,.8)}
.hook-item[aria-current]{color:var(--ink)}
.hook-item:focus-visible{outline-offset:0}
@media (prefers-reduced-motion:reduce){.hook-rail,.hook-item{transition:none}}

/* Compact contents for narrow screens. */
.toc-mobile{margin:0 0 2rem;border-top:1px solid var(--line);border-bottom:1px solid var(--line)}
.toc-mobile summary{display:flex;align-items:center;justify-content:space-between;min-height:2.75rem;font-size:.8125rem;font-weight:500;color:var(--ink-soft);cursor:pointer;list-style:none}
.toc-mobile summary::-webkit-details-marker{display:none}
.toc-mobile summary::after{content:"+";font-size:1.25rem;font-weight:300;color:var(--subtle);transition:rotate .18s ease}
.toc-mobile[open] summary::after{rotate:45deg}
.toc-mobile ol{margin:0 0 1rem;padding:0;list-style:none;counter-reset:toc}
.toc-mobile li{counter-increment:toc}
.toc-mobile a{display:flex;gap:.75rem;padding:.375rem 0;font-size:.875rem;color:var(--muted);text-decoration:none}
.toc-mobile a::before{content:counter(toc,decimal-leading-zero);min-width:1.375rem;padding-top:.15em;font-family:var(--mono);font-size:.6875rem;color:var(--faint)}
.toc-mobile a:hover{color:var(--ink)}

/* Article header */
.post-header{margin-bottom:2.5rem}
.crumbs{display:flex;align-items:center;gap:.5rem;margin-bottom:1.25rem;font-family:var(--serif);font-style:italic;font-size:.8125rem;color:var(--subtle)}
.crumbs .serif-link{font-size:inherit}
.post-header h1{font-size:clamp(1.875rem,4.2vw,2.625rem);font-weight:500;line-height:1.12;letter-spacing:-.035em;color:var(--ink-strong);text-wrap:balance}
.post-dek{margin-top:1rem;font-size:1.125rem;line-height:1.55;letter-spacing:-.015em;color:var(--muted);text-wrap:pretty}
.post-meta{display:flex;flex-wrap:wrap;align-items:center;gap:.5rem;margin-top:1.25rem;font-family:var(--mono);font-size:.6875rem;font-variant-numeric:tabular-nums;color:var(--faint)}

/* Long-form text */
.prose{counter-reset:section;font-size:1.0625rem;line-height:1.75;color:var(--body);text-wrap:pretty}
.prose>*+*{margin-top:1.25rem}
.prose h2{counter-increment:section;margin-top:3.5rem;font-size:1.375rem;font-weight:500;line-height:1.3;letter-spacing:-.025em;color:var(--ink-strong);text-wrap:balance;scroll-margin-top:2rem}
.prose h2::before{content:counter(section,decimal-leading-zero);display:block;margin-bottom:.625rem;font-family:var(--mono);font-size:.6875rem;font-weight:400;letter-spacing:0;color:var(--faint)}
.prose h2+*{margin-top:1rem}
.prose h3{margin-top:2.25rem;font-size:1.0625rem;font-weight:550;line-height:1.4;letter-spacing:-.015em;color:var(--ink-soft);scroll-margin-top:2rem}
.prose h3+*{margin-top:.625rem}
.prose strong{font-weight:550;color:var(--ink-soft)}
.prose em{font-style:italic}
.prose a{color:var(--ink-strong);text-decoration:underline;text-decoration-color:var(--line-strong);text-decoration-thickness:1px;text-underline-offset:.2em;transition:text-decoration-color .15s ease}
.prose a:hover{text-decoration-color:var(--ink-strong)}
.prose ul,.prose ol{padding-left:1.375rem}
.prose li{padding-left:.25rem}
.prose li+li{margin-top:.5rem}
.prose ul>li::marker{color:var(--faint)}
.prose ol>li::marker{font-family:var(--mono);font-size:.8125rem;color:var(--faint)}
.prose code{padding:.1em .35em;border:1px solid var(--line);border-radius:4px;background:var(--wash);font-family:var(--mono);font-size:.84em;color:var(--ink-soft);overflow-wrap:anywhere}
.prose pre{position:relative;margin-top:1.5rem;margin-bottom:.25rem;padding:1rem 1.125rem;border:1px solid var(--line);border-radius:10px;background:var(--surface);box-shadow:0 3px 0 var(--line);font-size:.8125rem;line-height:1.7;tab-size:2}
.prose pre code{padding:0;border:0;background:none;font-size:inherit;color:var(--ink-soft);white-space:pre-wrap;overflow-wrap:anywhere}
.prose pre+*{margin-top:1.5rem}
.code-block{position:relative}
.copy-code{position:absolute;top:.625rem;right:.625rem;display:inline-flex;align-items:center;justify-content:center;width:2rem;height:2rem;padding:0;border:1px solid var(--line);border-radius:6px;background:rgba(255,255,255,.9);color:var(--subtle);cursor:pointer;opacity:0;transition:opacity .15s ease,color .15s ease}
.code-block:hover .copy-code,.copy-code:focus-visible,.copy-code[data-copied=true]{opacity:1}
@media (hover:none){.copy-code{opacity:1}}
.copy-code:hover{color:var(--ink)}
.copy-code svg{width:.875rem;height:.875rem}
.copy-code .icon-check,.copy-code[data-copied=true] .icon-copy{display:none}
.copy-code[data-copied=true] .icon-check{display:block}
/* Tables size to the reading column: no sideways scrolling at any width.
   Marks (filled, half, empty) always sit beside text, so meaning never
   depends on the mark alone. Below 720px each row becomes a card. */
.table-wrap{margin-top:1.5rem;border:1px solid var(--line);border-radius:10px;background:var(--surface);overflow:hidden}
.table-wrap+*{margin-top:1.5rem}
.prose table{width:100%;border-collapse:collapse;font-size:.8125rem;line-height:1.5}
.prose th,.prose td{padding:.625rem .75rem;border-bottom:1px solid var(--line);text-align:left;vertical-align:top;overflow-wrap:break-word}
.prose thead th{font-size:.75rem;font-weight:500;line-height:1.4;color:var(--muted);background:var(--canvas)}
.prose tbody th[scope=row]{font-weight:500;color:var(--ink-strong)}
.prose table.compare tbody th[scope=row]{width:24%}
.prose tbody tr:last-child>*{border-bottom:0}
.prose td code{font-size:.92em}
.prose td[data-v] .cell{display:flex;gap:.45rem;align-items:flex-start}
.prose td[data-v] .cell::before{content:"";flex:none;width:.5rem;height:.5rem;margin-top:.42em;border:1px solid var(--ink-strong);border-radius:50%}
.prose td[data-v=yes] .cell::before{background:var(--ink-strong)}
.prose td[data-v=partial] .cell::before{background:linear-gradient(90deg,var(--ink-strong) 50%,transparent 50%)}
.prose td[data-v=no] .cell::before{border-color:var(--faint)}
.prose td[data-v=no]{color:var(--subtle)}
.prose .ours{background:rgba(24,24,27,.03)}
.prose thead .ours,.prose tbody th.ours{color:var(--ink)}
@media (max-width:720px){
  .table-wrap{border:0;border-radius:0;background:none;overflow:visible}
  .prose table,.prose tbody,.prose tr,.prose tbody th,.prose tbody td{display:block;width:auto!important}
  .prose thead{position:absolute;width:1px;height:1px;overflow:hidden;clip:rect(0 0 0 0);white-space:nowrap}
  .prose tbody tr{padding:.875rem 1rem .375rem;border:1px solid var(--line);border-radius:10px;background:var(--surface)}
  .prose tbody tr+tr{margin-top:.625rem}
  .prose tbody tr:has(.ours){border-color:var(--ink-strong);box-shadow:0 3px 0 var(--line)}
  .prose .ours{background:none}
  .prose tbody th[scope=row]{padding:0 0 .625rem;border-bottom:1px solid var(--line);font-size:.875rem}
  .prose tbody td{display:grid;grid-template-columns:minmax(6.5rem,38%) minmax(0,1fr);gap:.75rem;padding:.5rem 0;border-bottom:1px solid var(--wash)}
  .prose tbody td:last-child{border-bottom:0}
  .prose tbody td::before{content:attr(data-label);font-size:.75rem;line-height:1.6;color:var(--subtle)}
  .prose tbody tr:last-child>*{border-bottom:1px solid var(--wash)}
  .prose tbody tr:last-child>th{border-bottom:1px solid var(--line)}
  .prose tbody tr:last-child>td:last-child{border-bottom:0}
}
.note{padding:1rem 1.125rem;border:1px dashed var(--line-strong);border-radius:10px;font-size:.9375rem;line-height:1.65;color:var(--muted)}
.checklist{padding-left:0!important;list-style:none}
.checklist li{position:relative;padding-left:1.75rem}
.checklist li::before{content:"";position:absolute;left:.125rem;top:.45em;width:.875rem;height:.875rem;border:1px solid var(--line-strong);border-radius:3px;background:var(--surface)}

.table-caption{margin-top:.625rem!important;font-size:.75rem;line-height:1.6;color:var(--faint)}
.verdict{padding:1.125rem 1.25rem;border:1px solid var(--line);border-radius:10px;background:var(--surface);box-shadow:0 3px 0 var(--line);font-size:.9375rem;line-height:1.7}
.verdict-label{display:block;margin-bottom:.375rem;font-family:var(--serif);font-style:italic;font-size:.8125rem;color:var(--subtle)}
.prose ul.sources{padding-left:0;list-style:none;font-size:.8125rem;line-height:1.6;color:var(--subtle)}
.prose ul.sources li{padding-left:0}
.prose ul.sources li+li{margin-top:.375rem}
.prose ul.sources a{color:var(--muted);overflow-wrap:anywhere}

/* End-of-article call to action and related reading */
.post-cta{margin-top:4rem;padding:1.75rem 1.5rem 1.5rem;border:1px solid var(--line);border-radius:14px;background:var(--surface);box-shadow:0 4px 0 var(--line)}
.post-cta-eyebrow{font-family:var(--serif);font-style:italic;font-size:.8125rem;color:var(--subtle)}
.post-cta-title{margin-top:.5rem;font-size:1.375rem;font-weight:500;line-height:1.3;letter-spacing:-.025em;color:var(--ink-strong)}
.post-cta p:not([class]){margin-top:.5rem;font-size:.9375rem;line-height:1.65;color:var(--muted)}
.post-cta-actions{display:flex;flex-wrap:wrap;gap:.75rem;margin-top:1.25rem}
.related{margin-top:3.5rem}
.related-title{margin-bottom:.75rem;font-size:1rem;font-weight:500;letter-spacing:-.02em;color:var(--ink-strong)}
.related ul{margin:0;padding:0;list-style:none;border-top:1px solid var(--line)}
.related li{border-bottom:1px solid var(--line)}
.related a{display:block;padding:1rem 0;text-decoration:none}
.related-name{display:block;font-size:.9375rem;font-weight:500;letter-spacing:-.015em;color:var(--ink-strong);transition:opacity .2s ease}
.related a:hover .related-name{opacity:.7}
.related-desc{display:block;margin-top:.25rem;font-size:.8125rem;line-height:1.6;color:var(--subtle)}

/* Blog index: indexed editorial rows, like the homepage FAQ. */
.blog-index{width:100%;max-width:48rem;margin:0 auto;padding:2rem var(--gutter) 0}
@media (min-width:640px){.blog-index{padding-top:3.5rem}}
.index-eyebrow{font-family:var(--serif);font-style:italic;font-weight:400;font-size:.875rem;line-height:1;letter-spacing:-.01em;color:var(--subtle)}
.index-hero-copy{margin-top:1rem;font-size:clamp(1.375rem,2.6vw,1.75rem);font-weight:450;line-height:1.45;letter-spacing:-.03em;color:var(--ink);text-wrap:pretty}
.index-hero-copy a{text-decoration:underline;text-underline-offset:.15em;text-decoration-thickness:1px;text-decoration-color:var(--line-strong)}
.hl{padding:.035em .13em;border-radius:5px;background:var(--highlight);color:var(--ink-strong);box-decoration-break:clone;-webkit-box-decoration-break:clone}
.post-list{margin:3rem 0 0;padding:0;list-style:none;border-top:1px solid var(--line)}
.post-list li{border-bottom:1px solid var(--line)}
.post-row{display:grid;grid-template-columns:1.5rem minmax(0,1fr) 1rem;gap:.75rem;align-items:start;padding:1.5rem 0;text-decoration:none}
@media (min-width:640px){.post-row{grid-template-columns:2.25rem minmax(0,1fr) 1.25rem;gap:1rem}}
.post-row-index{padding-top:.3rem;font-family:var(--mono);font-size:.6875rem;font-variant-numeric:tabular-nums;color:var(--faint);transition:color .3s ease}
.post-row-main{display:flex;flex-direction:column;min-width:0}
.post-row-section{font-family:var(--serif);font-style:italic;font-size:.8125rem;line-height:1;color:var(--subtle)}
.post-row-title{margin-top:.5rem;font-size:1.125rem;font-weight:500;line-height:1.35;letter-spacing:-.02em;color:var(--ink-strong);text-wrap:balance;transition:opacity .2s ease}
.post-row-desc{margin-top:.375rem;font-size:.875rem;line-height:1.65;color:var(--subtle);text-wrap:pretty}
.post-row .post-meta{margin-top:.75rem}
.post-row-arrow{padding-top:1.5rem;color:var(--faint);transition:transform .25s cubic-bezier(.22,1,.36,1),color .2s ease}
.post-row:hover .post-row-index{color:var(--ink-strong)}
.post-row:hover .post-row-title{opacity:.7}
.post-row:hover .post-row-arrow{color:var(--ink-strong);transform:translateX(3px)}
.not-found .index-hero-copy{max-width:36rem}
.index-layout .blog-index{max-width:44rem;margin:0;padding:0}
.index-layout .index-hero{margin-bottom:1rem}
.topic{margin-top:3.5rem;scroll-margin-top:2rem}
.topic-title{font-size:1rem;font-weight:500;letter-spacing:-.02em;color:var(--ink-strong);scroll-margin-top:2rem}
.topic-desc{margin-top:.375rem;font-size:.875rem;line-height:1.6;color:var(--subtle)}
.topic .post-list{margin-top:1.25rem}

/* Footer: the homepage's dithered footer. */
.site-footer{width:100%;max-width:var(--wide);margin:5rem auto 0;padding:0 var(--gutter) 1rem;color:var(--subtle);font-size:.75rem}
@media (min-width:640px){.site-footer{padding-bottom:1.5rem}}
.footer-top{display:flex;flex-direction:column;gap:1.5rem;padding:2rem 0 3rem;border-top:1px solid var(--line)}
@media (min-width:640px){.footer-top{flex-direction:row;align-items:flex-start;justify-content:space-between;gap:2rem}}
.footer-about p{max-width:18rem;font-size:.8125rem;line-height:1.6}
.site-footer a{display:inline-flex;align-items:center;gap:.375rem;min-height:1.75rem;text-decoration:none}
.site-footer a:hover{color:var(--ink-strong)}
.site-footer img{width:.875rem;height:.875rem;flex-shrink:0;opacity:.65}
.footer-contact{margin-top:1rem}
.footer-columns{display:grid;grid-template-columns:repeat(2,minmax(0,1fr));gap:1.5rem}
@media (min-width:640px){.footer-columns{gap:2.5rem}}
.footer-columns>div{display:flex;flex-direction:column;align-items:flex-start;gap:.375rem}
.footer-heading{margin-bottom:.5rem;font-size:.75rem;font-weight:500;color:var(--ink-soft)}
.footer-band{position:relative;isolation:isolate;width:100%;aspect-ratio:1200/320;overflow:hidden;--pointer-x:50%;--pointer-y:70%;-webkit-mask-image:url(/assets/footer-cutout.svg);mask-image:url(/assets/footer-cutout.svg);mask-mode:luminance;-webkit-mask-size:100% 100%;mask-size:100% 100%;-webkit-mask-repeat:no-repeat;mask-repeat:no-repeat}
@media (min-width:640px){.footer-band{aspect-ratio:1200/260}}
.footer-dots,.footer-glow{position:absolute;inset:0;background-image:radial-gradient(circle,#71717a .65px,transparent .8px);background-size:3px 3px}
@media (min-width:640px){.footer-dots,.footer-glow{background-image:radial-gradient(circle,#71717a 1px,transparent 1.15px);background-size:5px 5px}}
.footer-dots{opacity:.65;-webkit-mask-image:linear-gradient(to bottom,transparent 0%,#0002 18%,#0009 44%,#000 75%);mask-image:linear-gradient(to bottom,transparent 0%,#0002 18%,#0009 44%,#000 75%)}
.footer-glow{background-image:radial-gradient(circle,#18181b 1.2px,transparent 1.4px);-webkit-mask-image:radial-gradient(circle 160px at var(--pointer-x) var(--pointer-y),#000,transparent);mask-image:radial-gradient(circle 160px at var(--pointer-x) var(--pointer-y),#000,transparent);opacity:0;transition:opacity 300ms ease}
.footer-band[data-hover=true] .footer-glow{opacity:1}
@media (prefers-reduced-motion:reduce){.footer-glow{display:none}}
.footer-bottom{display:flex;flex-wrap:wrap;align-items:center;justify-content:space-between;gap:.625rem 1rem;margin-top:1rem;font-size:.6875rem}
