/* BitForge v9 — 3D scene + blog */
#gl{position:fixed;inset:0;width:100%;height:100%;z-index:0;pointer-events:none}
#net{display:none}
main,.site-footer{position:relative;z-index:2}
.ticker,.journal,.lab-panel,.manifesto{backdrop-filter:blur(8px)}
.ticker{background:color-mix(in srgb,var(--surface) 70%,transparent)}
.journal{background:color-mix(in srgb,var(--surface) 78%,transparent)}
.lab-panel{background:color-mix(in srgb,var(--surface) 82%,transparent)}
.project-card,.tile,.principle{transform-style:preserve-3d}
.project-visual,.tile{box-shadow:0 24px 60px -30px rgba(0,0,0,.6)}
/* blog */
.btools{display:flex;gap:18px;justify-content:space-between;align-items:center;flex-wrap:wrap;margin-bottom:30px}
.bsearch{display:flex;align-items:center;gap:9px;border:1px solid var(--line-strong);border-radius:99px;padding:8px 15px;background:color-mix(in srgb,var(--bg) 60%,transparent);min-width:240px}
.bsearch svg,.bcard .ico{width:16px;fill:none;stroke:currentColor;stroke-width:1.6;stroke-linecap:round}
.bsearch input{background:none;border:0;outline:0;color:var(--text);font-size:12px;width:100%}
.bgrid{display:grid;grid-template-columns:repeat(3,1fr);gap:22px;perspective:1200px}
.bcard{border:1px solid var(--line);background:color-mix(in srgb,var(--bg) 70%,transparent);cursor:pointer;display:flex;flex-direction:column;
 transform:rotateX(var(--rx,0)) rotateY(var(--ry,0));transition:transform .25s ease-out,border-color .3s,box-shadow .3s;will-change:transform}
.bcard:hover{border-color:var(--green-bright);box-shadow:0 30px 70px -28px rgba(31,226,126,.35)}
.bfeat{grid-column:span 3;flex-direction:row}
.bfeat .bart{width:55%;height:auto;min-height:330px}.bfeat h3{font-size:28px}
.bbody{padding:20px;display:flex;flex-direction:column;flex:1}
.bbody h3{font-size:18px;font-weight:500;line-height:1.8;margin:11px 0 5px}.bbody p{font-size:12px;color:var(--muted);line-height:2;margin:0 0 auto}
.bcard .journal-read{margin-top:17px}
.bart{height:200px;position:relative;overflow:hidden;background:conic-gradient(from 210deg at 70% 30%,hsl(var(--h) 80% 14%),#050a07,hsl(var(--h) 70% 22%),#050a07)}
.bart>.mono{position:absolute;top:14px;inset-inline-end:14px;font-size:8px;color:#8db69a}
.bart i{position:absolute;border:1px solid hsl(var(--h) 90% 60%);width:120px;height:120px;left:22%;top:28%;transform:rotate(35deg);box-shadow:0 0 0 14px hsl(var(--h) 90% 60%/.06);animation:bsp 9s linear infinite}
.bart i+i{width:70px;height:70px;left:34%;top:42%;animation-direction:reverse;border-color:#c8f5d8}
.bart b{position:absolute;bottom:8px;left:14px;font:500 38px var(--mono);letter-spacing:-3px;color:hsl(var(--h) 85% 70%);opacity:.8}
@keyframes bsp{to{transform:rotate(395deg)}}
.bempty{color:var(--muted);grid-column:1/-1;text-align:center;padding:40px}
.rd{position:fixed;inset:0;z-index:95;background:var(--bg);overflow:auto;transform:translateY(100%);visibility:hidden;transition:transform .55s cubic-bezier(.2,.8,.2,1),visibility 0s .55s}
.rd.on{transform:none;visibility:visible;transition-delay:0s}
.rd-bar{position:sticky;top:0;height:3px;z-index:3}.rd-bar i{display:block;height:100%;width:0;background:linear-gradient(90deg,#14c76b,#9dffcb);box-shadow:0 0 14px var(--green)}
.rd-top{position:sticky;top:3px;z-index:2;display:flex;justify-content:space-between;align-items:center;padding:14px max(20px,calc((100% - 760px)/2));background:color-mix(in srgb,var(--bg) 80%,transparent);backdrop-filter:blur(14px);font-size:10px;color:var(--muted)}
.rd-x,.rd-share{border:1px solid var(--line-strong);background:none;border-radius:99px;padding:7px 14px;cursor:pointer;font-size:11px}
.rd-x{width:38px;height:38px;padding:0;display:grid;place-items:center}.rd-x svg{width:16px;fill:none;stroke:currentColor;stroke-width:1.6}
.rd-in{width:min(760px,calc(100% - 40px));margin:30px auto 90px}.rd-in .bart{height:260px;border:1px solid var(--line)}
.rd-in h1{font-size:clamp(28px,4.5vw,46px);line-height:1.5;font-weight:600;letter-spacing:-1px;margin:14px 0}
.rd-lead{font-size:15px;color:var(--soft);line-height:2.1}
.rd-body{font-size:15px;line-height:2.4;color:var(--soft)}.rd-body h4{font-size:20px;color:var(--text);margin:36px 0 6px}
.rd-body b{color:var(--green-bright)}
.rd-body pre{position:relative;direction:ltr;text-align:left;background:#0b100d;color:#d4e2d6;border:1px solid #2d5137;padding:20px;overflow:auto;font:12px/2 var(--mono);margin:24px 0}
.cp{position:absolute;top:8px;right:8px;border:1px solid #2d5137;background:none;color:#80dca2;font:9px var(--mono);padding:3px 8px;cursor:pointer}
.rd-note{font-size:10px;color:var(--muted)}
.rd-next{margin:50px 0 30px;padding:22px 0;border-block:1px solid var(--line);display:flex;justify-content:space-between;gap:20px;align-items:center}
.rd-next a{color:var(--green-bright);font-size:17px}
.rd-rel{grid-template-columns:1fr 1fr}
@media(max-width:900px){.bgrid{grid-template-columns:1fr 1fr}.bfeat{grid-column:span 2;flex-direction:column}.bfeat .bart{width:100%;min-height:230px}}
@media(max-width:600px){.bgrid,.rd-rel{grid-template-columns:1fr}.bfeat{grid-column:auto}.bsearch{width:100%}}
@media(prefers-reduced-motion:reduce){.bcard{transform:none!important}.bart i{animation:none}}
#mg{position:fixed;inset:0;z-index:0;pointer-events:none}
.fx-off #mg,.fx-off #gl{opacity:0}#fxBtn[aria-pressed=false]{opacity:.5}@media(max-width:520px){#fxBtn{display:none}}
