/* EntryPing foundation: fonts, tokens, base elements, the sidebar shell and reveal/word-rise motion.
   Loaded by every page, the landing page (index.html) included, before its own styles or /assets/ui.css. */
@font-face{font-family:Geist; src:url(/fonts/geist-latin.woff2) format("woff2"); font-weight:100 900; font-display:swap}
@font-face{font-family:"Geist Mono"; src:url(/fonts/geist-mono-latin.woff2) format("woff2"); font-weight:100 900; font-display:swap}
:root{
  --bg:#fff; --ink:#0f0f10; --gray:#67676c; --muted:#8a8a8f; --panel:#f0f0f0; --line:#e5e5e5; --field:#d4d4d8; --paper:#dfe1dc;
  --accent:#0f0f10; --on-accent:#fff; --ok:#15803d; --bad:#b42318; --amber:#f5a524;
  --sans:Geist,system-ui,-apple-system,"Segoe UI",Roboto,Arial,sans-serif;
  --mono:"Geist Mono",ui-monospace,Menlo,Consolas,monospace;
  --ease:cubic-bezier(.23,1,.32,1); --expo:cubic-bezier(.16,1,.3,1);
  --s-1:4px; --s-2:8px; --s-3:12px; --s-4:16px; --s-5:24px; --s-6:32px; --s-7:48px;
  --measure:720px;
  color-scheme:light;
}
*{box-sizing:border-box}
html{-webkit-text-size-adjust:100%; scroll-behavior:smooth}
body{margin:0; background:var(--bg); color:var(--ink); font:15px/1.5 var(--sans); -webkit-font-smoothing:antialiased}
h1,h2,h3,h4,p{margin:0}
:focus-visible{outline:2px solid var(--ink); outline-offset:3px}
[hidden]{display:none !important}
.sr{position:absolute; width:1px; height:1px; overflow:hidden; clip-path:inset(50%); white-space:nowrap}
.hp{position:absolute; left:-9999px; width:1px; height:1px; overflow:hidden}
.t{font-family:var(--mono)} /* literal times and codes only */
.i{width:18px; height:18px; flex:none; fill:none; stroke:currentColor; stroke-width:2; stroke-linecap:round; stroke-linejoin:round}
.skip{position:fixed; top:12px; left:12px; z-index:10000; padding:12px 18px; border-radius:8px; background:var(--ink,#0f0f10); color:#fff; transform:translateY(-180%); transition:transform .2s}
.skip:focus{transform:none}
.shell{display:flex; min-height:100vh}
main{flex:1; min-width:0; padding-right:40px}
.col{max-width:1100px; margin-inline:auto}
html.js .reveal{opacity:0; transform:translateY(16px); transition:opacity .8s var(--ease),transform .8s var(--ease); transition-delay:calc(var(--d,0) * 1ms)}
html.js .reveal.in{opacity:1; transform:none}
.w{display:inline-block; overflow:hidden; vertical-align:top; padding-bottom:.14em; margin-bottom:-.14em}
html.js .words .w>span{display:inline-block; transform:translateY(112%); transition:transform 1.15s var(--expo); transition-delay:calc(var(--i) * 42ms + var(--d,0) * 1ms)}
html.js .words.in .w>span{transform:none}
html.js .reveal.words{opacity:1; transform:none}
