.pub-page{--bg:#f4f1ea;--surface:#fff;--ink:#1f231f;--ink-soft:#4b534a;--muted:#7a8079;--line:#e3ded2;--accent:#5c6a4a;--accent-ink:#f7f4ec;--stone:#d9d2c2;--card:#fbf8f1;background:var(--bg);color:var(--ink);font-family:var(--font-body,system-ui,sans-serif);-webkit-font-smoothing:antialiased;text-rendering:optimizeLegibility}.dark .pub-page{--bg:#14160f;--surface:#1a1c16;--ink:#ece7d7;--ink-soft:#b7b6a6;--muted:#848675;--line:#2a2c24;--accent:#9fb080;--accent-ink:#14160f;--stone:#3a3c33;--card:#1c1e17}.pub-page .serif{font-family:var(--font-display,"Fraunces",serif);letter-spacing:-.02em;font-weight:500}.pub-page .mono{font-family:var(--font-mono,"JetBrains Mono",ui-monospace,monospace)}.pub-page .glass{background:var(--bg);border:1px solid var(--line)}.pub-page .grain:before{content:"";pointer-events:none;opacity:.25;mix-blend-mode:multiply;background-image:radial-gradient(#0000001f 1px,#0000 1px);background-size:3px 3px;position:absolute;inset:0}.pub-page .hairline{border-color:var(--line)!important}.pub-page .btn-primary{background:var(--accent);color:var(--accent-ink)}.pub-page .btn-primary:hover{filter:brightness(1.05)}.pub-page .chip{border:1px solid var(--line);background:color-mix(in oklab,var(--surface)85%,transparent)}.pub-page .dot{background:var(--accent);border-radius:999px;width:6px;height:6px;display:inline-block}.pub-page .card,.pub-page .mp-card{background:var(--card);border:1px solid var(--line)}.pub-page .link-underline{background-image:linear-gradient(var(--ink),var(--ink));background-position:0 100%;background-repeat:no-repeat;background-size:0 1px;transition:background-size .35s}.pub-page .link-underline:hover{background-size:100% 1px}.pub-page .dotted{background-image:linear-gradient(to right,var(--stone)1px,transparent 1px);background-position:0;background-repeat:repeat-x;background-size:6px 1px;height:1px}.pub-page .num-water{font-family:var(--font-display,"Fraunces",serif);letter-spacing:-.04em;color:color-mix(in oklab,var(--accent)14%,transparent);font-weight:500;line-height:.8}.pub-page .spec-row{border-top:1px solid var(--line);grid-template-columns:24px 1fr;align-items:start;gap:14px;padding:14px 0;display:grid}.pub-page .spec-row:last-child{border-bottom:1px solid var(--line)}.pub-page .spec-num{font-family:var(--font-mono,monospace);color:var(--muted);letter-spacing:.08em;padding-top:3px;font-size:11px}.custom-scrollbar:has(.pub-page)::-webkit-scrollbar{width:10px;height:10px}.custom-scrollbar:has(.pub-page)::-webkit-scrollbar-button{width:0;height:0;display:none}.custom-scrollbar:has(.pub-page)::-webkit-scrollbar-track{background:0 0}.custom-scrollbar:has(.pub-page)::-webkit-scrollbar-thumb{background:#e3ded2;border-radius:10px}.custom-scrollbar:has(.pub-page)::-webkit-scrollbar-thumb:hover{background:#d9d2c2}.dark .custom-scrollbar:has(.pub-page)::-webkit-scrollbar-thumb{background:#2a2c24}.dark .custom-scrollbar:has(.pub-page)::-webkit-scrollbar-thumb:hover{background:#3a3c33}.custom-scrollbar:has(.pub-page){scrollbar-color:#e3ded2 transparent;scrollbar-width:thin}.dark .custom-scrollbar:has(.pub-page){scrollbar-color:#2a2c24 transparent}#pub-cursor-dot,#pub-cursor-ring{pointer-events:none;z-index:9999;opacity:0;border-radius:999px;transition:opacity .3s;position:fixed;top:0;left:0;transform:translate(-50%,-50%)}#pub-cursor-dot{background:var(--accent);width:7px;height:7px}#pub-cursor-ring{border:1.5px solid color-mix(in oklab,var(--accent)55%,transparent);width:36px;height:36px;transition:width .2s,height .2s,opacity .3s}:is(body:has(.pub-page a:hover),body:has(.pub-page button:hover),body:has(.pub-page [role=button]:hover)){--pub-cursor-ring-size:52px}:is(body:has(.pub-page a:hover) #pub-cursor-ring,body:has(.pub-page button:hover) #pub-cursor-ring,body:has(.pub-page [role=button]:hover) #pub-cursor-ring){width:52px;height:52px}@media (hover:none){#pub-cursor-dot,#pub-cursor-ring{display:none}}@media (hover:hover){.pub-page,.pub-page *{cursor:none!important}}.pub-page .bento-card{background:var(--card);border:1px solid var(--line);transition:transform .4s cubic-bezier(.22,1,.36,1),border-color .3s}.pub-page .bento-card:hover{transform:translateY(-2px)}.pub-page .bento-plus{opacity:.4;transition:transform .3s,opacity .3s}.pub-page .bento-card:hover .bento-plus{opacity:1;transform:rotate(45deg)}.pub-page .bento-glow{opacity:0;background:radial-gradient(420px circle at var(--mx,50%)var(--my,30%),color-mix(in oklab,var(--accent)12%,transparent),transparent 60%);transition:opacity .4s}.pub-page .bento-card:hover .bento-glow{opacity:1}@keyframes pub-navEnter{0%{opacity:0;transform:translateY(-14px)}to{opacity:1;transform:translateY(0)}}@keyframes pub-wordUp{0%{opacity:0;transform:translateY(.55em)}to{opacity:1;transform:translateY(0)}}@keyframes pub-fadeInUp{0%{opacity:0;transform:translateY(14px)}to{opacity:1;transform:translateY(0)}}@keyframes pub-barGrow{0%{height:0}to{height:var(--h)}}@keyframes pub-barFill{0%{width:0}to{width:var(--w)}}@keyframes pub-rowSlide{0%{opacity:0;transform:translate(-6px)}to{opacity:1;transform:translate(0)}}.pub-page .nav-enter{animation:.6s cubic-bezier(.22,1,.36,1) both pub-navEnter}.pub-page .hero-word{animation:.75s cubic-bezier(.22,1,.36,1) both pub-wordUp}.pub-page .fade-in-up{animation:.7s cubic-bezier(.22,1,.36,1) both pub-fadeInUp}.pub-page .bar-grow{height:0;animation:.7s cubic-bezier(.22,1,.36,1) both pub-barGrow}.pub-page .bar-fill{width:0;animation:.9s cubic-bezier(.22,1,.36,1) both pub-barFill}.pub-page .row-slide{opacity:0;animation:.5s cubic-bezier(.22,1,.36,1) both pub-rowSlide}.pub-page .reveal{opacity:0;transition:opacity .7s cubic-bezier(.22,1,.36,1),transform .7s cubic-bezier(.22,1,.36,1);transform:translateY(16px)}.pub-page .reveal[data-shown]{opacity:1;transform:none}@media (prefers-reduced-motion:reduce){.pub-page *{transition:none!important;animation:none!important}.pub-page .reveal{opacity:1;transform:none}}
