:root{
  --bg:#ffffff;--panel:#EEEEEE;--ink:#000;--accent:hotpink;
  --radius:12px; --shadow:0 6px 22px rgba(0,0,0,.06);
  --maxw:1080px; --pad: clamp(16px, 4vw, 24px);
}
*{box-sizing:border-box}
html,body{margin:0;background:var(--bg);color:#222;font-family:system-ui,-apple-system,Segoe UI,Roboto,Ubuntu,"Helvetica Neue",Arial}
html,body{max-width:100%;overflow-x:clip} /* kill unwanted sideways scroll */
img,svg,video,canvas{max-width:100%;height:auto}
a{color:inherit;text-decoration:none}
a:focus-visible,button:focus-visible{outline:2px solid var(--accent);outline-offset:2px}
.container{max-width:var(--maxw);margin:0 auto;padding-inline:var(--pad)}
.main{min-height:60vh}
.section{padding:48px var(--pad)}
h1{font-size:clamp(2rem,4.2vw,3rem);line-height:1.1;margin:.1rem 0 .6rem}
h2{font-size:clamp(1.4rem,2.8vw,2rem);margin:0 0 .5rem}
.kicker,.sub{color:#555;max-width:70ch}
.badge{display:inline-block;padding:.18rem .5rem;background:#fff;border:1px solid var(--ink);border-radius:999px;font-size:.85rem}
.btn,.pill{display:inline-flex;align-items:center;gap:.4rem;border:1px solid var(--ink);background:#fff;color:#111;padding:.38rem .7rem;border-radius:9999px;font-weight:600;font-size:.95rem;box-shadow:0 1px 0 rgba(0,0,0,.04)}
.btn:hover,.pill:hover{filter:brightness(.98)}
.btn.primary,.pill.primary{background:var(--accent);border-color:var(--accent);color:#fff}
.nav{display:flex;align-items:center;justify-content:space-between;gap:16px;padding:14px 0}
.header.glass{position:sticky;top:0;z-index:1000;background:rgba(238,238,238,.72);-webkit-backdrop-filter:blur(10px);backdrop-filter:blur(10px);box-shadow:0 6px 20px rgba(0,0,0,.08)}
.card{border:1px solid var(--panel);border-radius:var(--radius);padding:16px;box-shadow:var(--shadow);background:#fff}
.grid{display:grid;gap:16px;grid-template-columns:repeat(12,1fr)}
.grid.cols-3>*{grid-column:span 4}
.grid.cols-2>*{grid-column:span 6}
@media (max-width:900px){
  .grid.cols-3>*{grid-column:span 6}
}
@media (max-width:600px){
  .grid.cols-3>*,
  .grid.cols-2>*{grid-column:1 / -1}
}

/* Horizontal scroll rows (mobile), with pan-x preference & snap */
.xrow{display:flex;gap:12px;overflow-x:auto;padding-bottom:6px;
  -webkit-overflow-scrolling:touch;scroll-snap-type:x proximity;touch-action:pan-x;overscroll-behavior-inline:contain}
.xrow>.card{min-width:260px;scroll-snap-align:start}

/* Subtle reveals (A11y-safe) */
.reveal{opacity:0;transform:translateY(10px);transition:opacity .5s ease,transform .5s ease;will-change:transform}
.reveal.a-show{opacity:1;transform:none}
@media (prefers-reduced-motion:reduce){.reveal{opacity:1 !important;transform:none !important;transition:none !important}}

footer{color:#666;font-size:14px;padding:24px var(--pad)}
.footnote{opacity:.75;font-size:.85rem}

/* Blog & prose defaults */
.prose{max-width:78ch}
.prose p{line-height:1.6}
.prose h2{margin-top:1.6rem}
.prose ul{padding-left:1.1rem}
pre{background:#fafafa;border:1px solid #eee;border-radius:8px;padding:12px;overflow:auto}

/* Make sure nothing bleeds outside viewport */
:where(.hero-wrap, .section, .container){overflow-x:clip}
/* Brand pill with icon + text (used in the header) */
.brand{display:inline-flex;align-items:center;gap:.5rem}
.brand.brand:where(.badge){padding:.35rem .65rem} /* keep pill tight even with icon */
.brand-logo{
  width:20px;height:20px;display:block;border-radius:6px;
  /* avoid layout shift — width/height already set in HTML */
}
.brand-text{font-weight:800;letter-spacing:.1px}
