.folio{background:var(--bg);min-height:100svh;color:var(--fg);font-family:var(--ff-body);isolation:isolate;--ff-serif:var(--font-serif), "Instrument Serif", Georgia, serif;--paper:color-mix(in srgb, var(--bg) 58%, #fff);--hair:color-mix(in srgb, var(--fg) 22%, transparent);--ease-spring:cubic-bezier(.34, 1.56, .64, 1);--ease-out:cubic-bezier(.2, .72, .24, 1);--plate-shadow:3px 4px 0 #1c181217, 0 12px 24px -16px #1c181280;position:relative;overflow-x:clip}.folio:before{content:"";z-index:-1;pointer-events:none;--margin:clamp(20px, 6vw, 92px);background-image:radial-gradient(118% 58% at 50% -8%, #c8542a1a, transparent 62%), repeating-linear-gradient(0deg, transparent 0 31px, #1c18120b 31px 32px), linear-gradient(90deg, transparent 0 calc(var(--margin) - 1.5px), #c8542a8c calc(var(--margin) - 1.5px) var(--margin), transparent var(--margin)), radial-gradient(125% 130% at 50% 32%, transparent 58%, #1c18120d 100%);position:fixed;inset:0}.folio:after{content:"";z-index:-1;pointer-events:none;opacity:.045;mix-blend-mode:multiply;background-image:url("data:image/svg+xml,%3Csvg xmlns='http://www.w3.org/2000/svg' width='150' height='150'%3E%3Cfilter id='n'%3E%3CfeTurbulence type='fractalNoise' baseFrequency='0.82' numOctaves='2' stitchTiles='stitch'/%3E%3C/filter%3E%3Crect width='100%25' height='100%25' filter='url(%23n)'/%3E%3C/svg%3E");position:fixed;inset:0}.folio-inner{z-index:1;width:100%;max-width:1120px;margin:0 auto;padding:clamp(22px,4vh,44px) clamp(22px,5vw,56px) clamp(60px,8vh,120px) clamp(40px,9vw,128px);position:relative}@keyframes folio-rise{0%{transform:translateY(112%)}to{transform:translateY(0)}}@keyframes folio-word-up{to{opacity:1;transform:translateY(0)}}@keyframes folio-load-rise{to{opacity:1;transform:translateY(0)}}@keyframes folio-reveal-in{0%{opacity:0;transform:translateY(24px)}}@keyframes folio-fade-in{0%{opacity:0}}@keyframes folio-grow-x{0%{transform:scaleX(0)}to{transform:scaleX(1)}}@keyframes folio-grow-y{0%{transform:scaleY(0)}to{transform:scaleY(1)}}@keyframes folio-stamp{0%{opacity:0;filter:blur(2px);transform:scale(1.6)rotate(-7deg)}60%{opacity:1}to{opacity:1;filter:blur();transform:scale(1)rotate(0)}}@keyframes folio-twinkle{0%,to{opacity:1;transform:scale(1)rotate(0)}50%{opacity:.5;transform:scale(.82)rotate(24deg)}}@keyframes folio-dot-pulse{0%{box-shadow:0 0 #c8542a80}70%,to{box-shadow:0 0 0 5px #c8542a00}}@keyframes folio-sheen-loop{0%{transform:translate(-130%)skew(-12deg)}55%,to{transform:translate(130%)skew(-12deg)}}.reveal-mask{vertical-align:top;margin:-.12em -.05em -.2em;padding:.12em .05em .2em;display:inline-block;overflow:hidden}.reveal-word,.rise-word{display:inline-block}@media (prefers-reduced-motion:no-preference){.folio-title .reveal-word{animation:folio-rise .82s var(--ease-out) both;animation-delay:calc(var(--i) * 90ms + .16s);transform:translateY(112%)}.proj-title .rise-word{opacity:0;animation:folio-word-up .68s var(--ease-out) both;animation-delay:calc(var(--i) * 68ms + .12s);transform:translateY(.5em)}.load-rise{opacity:0;animation:folio-load-rise .68s var(--ease-out) both;animation-delay:calc(var(--i,0) * 80ms + .12s);transform:translateY(14px)}@supports (animation-timeline:view()){.folio-reveal{animation:linear backwards folio-reveal-in;animation-timeline:view();animation-range:entry cover 24%}.folio-reveal-item{animation:linear backwards folio-reveal-in;animation-timeline:view();animation-range:entry calc(3% + var(--i,0) * 4%) cover calc(26% + var(--i,0) * 4%)}}}.folio-head{font-family:var(--ff-mono);text-transform:uppercase;letter-spacing:.09em;color:var(--muted);border-bottom:1.5px solid var(--fg);flex-wrap:wrap;justify-content:space-between;align-items:baseline;gap:10px 18px;padding-bottom:10px;font-size:clamp(9px,1vw,11px);display:flex}.folio-head a{color:inherit;text-decoration:none;position:relative}.folio-head a:after{content:"";background:var(--accent);transform-origin:0;width:100%;height:1px;transition:transform .32s var(--ease-out);position:absolute;bottom:-2px;left:0;transform:scaleX(0)}.folio-head a:hover{color:var(--accent)}.folio-head a:hover:after{transform:scaleX(1)}.folio-head .home-link{align-items:center;gap:7px;display:inline-flex}.folio-head .home-link span[aria-hidden]{transition:transform .28s var(--ease-out)}.folio-head .home-link:hover span[aria-hidden]{transform:translate(-3px)}.folio-hero{margin-top:clamp(24px,5vh,56px);margin-bottom:clamp(28px,5vh,52px);position:relative}.folio-hero:before{content:"№8";font-family:var(--ff-display);letter-spacing:-.05em;color:color-mix(in srgb, var(--accent) 11%, transparent);z-index:-1;pointer-events:none;-webkit-user-select:none;user-select:none;font-size:clamp(4.5rem,17vw,12.5rem);line-height:.78;position:absolute;top:-.18em;right:-.02em}.folio-kicker{font-family:var(--ff-mono);text-transform:uppercase;letter-spacing:.12em;color:var(--muted);align-items:center;font-size:clamp(9px,1vw,11px);display:flex}.kicker-mark{background:var(--accent);transform-origin:0;width:18px;height:1.5px;margin-right:9px;display:inline-block}.folio-title{font-family:var(--ff-display);letter-spacing:-.028em;margin:clamp(10px,2vh,16px) 0 0;font-size:clamp(2.6rem,8vw,5.4rem);font-weight:400;line-height:.9}.folio-title .accent{color:var(--accent)}.folio-lede{max-width:52ch;color:color-mix(in srgb, var(--fg) 86%, transparent);text-wrap:pretty;font-size:clamp(14px,1.35vw,17px);line-height:1.55}.folio-count{font-family:var(--ff-mono);letter-spacing:.1em;text-transform:uppercase;color:var(--muted);margin-top:18px;font-size:11px}.folio-count-star{color:var(--accent);display:inline-block}@media (prefers-reduced-motion:no-preference){.folio-lede{opacity:0;animation:folio-load-rise .7s var(--ease-out) both;animation-delay:.42s;transform:translateY(14px)}.folio-count{opacity:0;animation:folio-load-rise .7s var(--ease-out) both;animation-delay:.52s;transform:translateY(14px)}.kicker-mark{animation:folio-grow-x .6s var(--ease-out) both;animation-delay:.1s;transform:scaleX(0)}.folio-count-star{animation:3.4s ease-in-out 1.2s infinite folio-twinkle}.folio-cta-wrap{animation:folio-fade-in .7s var(--ease-out) backwards;animation-delay:.6s}}.folio-lede{margin-top:clamp(14px,2.4vh,22px)}.folio-cta-wrap{transform:translate(var(--mx,0), var(--my,0));transition:transform .4s var(--ease-spring);will-change:transform;margin-top:clamp(16px,2.6vh,24px);display:inline-block}.folio-cta{background:var(--accent);color:#fff;font-family:var(--ff-mono);text-transform:uppercase;letter-spacing:.12em;transition:transform .3s var(--ease-spring), box-shadow .3s ease, filter .3s ease;border-radius:999px;align-items:center;gap:10px;padding:13px 22px;font-size:clamp(11px,1.15vw,13px);font-weight:500;text-decoration:none;display:inline-flex;position:relative;overflow:hidden;box-shadow:0 8px 18px -8px #c8542a8c}.folio-cta:before{content:"";width:65%;height:100%;transition:left .75s var(--ease-out);pointer-events:none;background:linear-gradient(100deg,#0000 25%,#ffffff8c 50%,#0000 75%);position:absolute;top:0;left:-130%;transform:skew(-20deg)}.folio-cta>span[aria-hidden]:first-child{transition:transform .4s var(--ease-spring)}.folio-cta:hover{filter:brightness(1.04);box-shadow:0 12px 28px -8px #c8542aa6,0 0 0 1px #c8542a4d}.folio-cta:hover:before{left:135%}.folio-cta:hover>span[aria-hidden]:first-child{transform:rotate(90deg)scale(1.1)}.folio-cta:active{transform:scale(.96)}.folio-cta:focus-visible{outline:2px solid var(--fg);outline-offset:3px}.folio-cta .folio-cta-arr{transition:transform .28s var(--ease-out)}.folio-cta:hover .folio-cta-arr{transform:translate(3px,-3px)}.folio-grid{grid-template-columns:repeat(auto-fill,minmax(288px,1fr));gap:clamp(16px,2vw,24px);display:grid}.folio-card{background:var(--paper);border:1.5px solid var(--fg);min-width:0;color:var(--fg);box-shadow:var(--plate-shadow);transition:transform .5s var(--ease-spring), box-shadow .5s var(--ease-spring), border-color .35s ease;isolation:isolate;border-radius:5px;flex-direction:column;text-decoration:none;display:flex;position:relative;overflow:hidden}@media (prefers-reduced-motion:no-preference){.folio-card{animation:folio-card-in .66s var(--ease-out) backwards;animation-delay:calc(var(--i,0) * 65ms + .22s)}@keyframes folio-card-in{0%{opacity:0;transform:translateY(26px)scale(.985)}}}.folio-card:hover,.folio-card:focus-visible{border-color:var(--accent);outline:none;transform:translateY(-6px);box-shadow:6px 10px #c8542a33,0 28px 44px -24px #1c181299}.folio-card:focus-visible{box-shadow:0 0 0 2px var(--bg), 0 0 0 4px var(--accent), 6px 10px 0 #c8542a33, 0 28px 44px -24px #1c181299}.folio-card.is-featured{border-color:var(--accent);grid-column:span 2}.card-marks{z-index:4;pointer-events:none;opacity:0;transition:opacity .35s;position:absolute;inset:7px}.card-marks i{border:1.5px solid var(--accent);width:10px;height:10px;position:absolute}.card-marks i:first-child{border-bottom:0;border-right:0;top:0;left:0}.card-marks i:nth-child(2){border-bottom:0;border-left:0;top:0;right:0}.card-marks i:nth-child(3){border-top:0;border-right:0;bottom:0;left:0}.card-marks i:nth-child(4){border-top:0;border-left:0;bottom:0;right:0}.folio-card:hover .card-marks,.folio-card:focus-visible .card-marks{opacity:.72}.card-frame{z-index:4;pointer-events:none;width:auto;height:auto;position:absolute;inset:5px;overflow:visible}.card-frame rect{fill:none;stroke:var(--accent);stroke-width:1.2px;stroke-dasharray:1;stroke-dashoffset:1px;vector-effect:non-scaling-stroke;transition:stroke-dashoffset 1.1s var(--ease-out)}.folio-card.is-featured:hover .card-frame rect,.folio-card.is-featured:focus-visible .card-frame rect{stroke-dashoffset:0}.card-shot{aspect-ratio:16/10;border-bottom:1.5px solid var(--fg);background:color-mix(in srgb, var(--fg) 6%, var(--bg));position:relative;overflow:hidden}.card-shot img{object-fit:cover;object-position:top center;width:100%;height:100%;transition:transform .6s var(--ease-out);display:block}.folio-card:hover .card-shot img,.folio-card:focus-visible .card-shot img{transform:scale(1.045)}.card-sheen{z-index:2;pointer-events:none;transition:transform .85s var(--ease-out);background:linear-gradient(105deg,#0000 35%,#fff6 50%,#0000 65%);position:absolute;inset:0;transform:translate(-125%)skew(-14deg)}.folio-card:hover .card-sheen,.folio-card:focus-visible .card-sheen{transform:translate(125%)skew(-14deg)}.card-shot-num{z-index:3;font-family:var(--ff-mono);font-variant-numeric:tabular-nums;letter-spacing:.06em;color:#fff;-webkit-backdrop-filter:blur(2px);backdrop-filter:blur(2px);background:#1c1812bd;border-radius:999px;padding:2px 8px;font-size:10px;position:absolute;top:9px;left:10px}.card-shot-num:before{content:"№ ";color:var(--accent)}.card-shot-flag{z-index:3;font-family:var(--ff-mono);letter-spacing:.05em;text-transform:uppercase;color:#fff;background:radial-gradient(circle at 34% 28%, #e26a43, var(--accent));border-radius:999px;align-items:center;gap:4px;padding:3px 10px;font-size:9.5px;display:inline-flex;position:absolute;top:9px;right:10px;box-shadow:inset 0 1px 2px #ffffff73,inset 0 -2px 4px #0000004d,0 3px 8px #78280f59}@media (prefers-reduced-motion:no-preference){.card-shot-flag{transform-origin:50%;animation:folio-stamp .5s var(--ease-spring) both;animation-delay:.65s}}.is-featured .card-shot{aspect-ratio:16/7.5}.shot-ph{text-align:center;background:repeating-radial-gradient(circle at 50% 46%, transparent 0 18px, #c8542a0d 18px 19px), repeating-linear-gradient(0deg, transparent 0 13px, #1c18120d 13px 14px), linear-gradient(135deg, color-mix(in srgb, var(--accent) 18%, var(--bg)), var(--bg));flex-direction:column;justify-content:center;align-items:center;gap:7px;width:100%;height:100%;padding:10px;display:flex}.shot-ph-kind{font-family:var(--ff-mono);letter-spacing:.16em;text-transform:uppercase;color:var(--muted);font-size:9px}.shot-ph-title{font-family:var(--ff-display);letter-spacing:-.02em;color:color-mix(in srgb, var(--fg) 78%, transparent);font-size:clamp(1.4rem,3vw,2rem);line-height:1}.card-body{flex-direction:column;flex:1;gap:8px;padding:15px 17px 16px;display:flex}.card-top{justify-content:space-between;align-items:baseline;gap:10px;display:flex}.card-title{font-family:var(--ff-display);letter-spacing:-.02em;min-width:0;margin:0;font-size:clamp(1.3rem,2vw,1.65rem);font-weight:400;line-height:1}.card-title-ink{background-image:linear-gradient(var(--accent), var(--accent));transition:background-size .45s var(--ease-out);background-position:0 100%;background-repeat:no-repeat;background-size:0% 1.5px;padding-bottom:1px}.folio-card:hover .card-title-ink,.folio-card:focus-visible .card-title-ink{background-size:100% 1.5px}.folio-card.is-featured .card-title{font-size:clamp(1.6rem,2.6vw,2.15rem)}.card-oneliner{color:color-mix(in srgb, var(--fg) 80%, transparent);font-size:13.5px;line-height:1.45}.card-foot{justify-content:space-between;align-items:center;gap:10px;margin-top:auto;padding-top:6px;display:flex}.card-tags{flex-wrap:wrap;gap:6px;display:flex}.card-arrow{font-family:var(--ff-mono);color:var(--muted);transition:transform .28s var(--ease-out), color .28s ease}.folio-card:hover .card-arrow,.folio-card:focus-visible .card-arrow{color:var(--accent);transform:translate(3px,-3px)}.chip{border:1px solid color-mix(in srgb, var(--fg) 40%, transparent);font-family:var(--ff-mono);letter-spacing:.05em;text-transform:uppercase;color:var(--muted);white-space:nowrap;border-radius:999px;padding:3px 9px;font-size:10px;transition:border-color .25s,color .25s,background .25s;display:inline-block}.chip.chip-accent{border-color:var(--accent);color:var(--accent)}.proj-tags .chip:hover{border-color:var(--accent);color:var(--accent);background:color-mix(in srgb, var(--accent) 8%, transparent)}.status{white-space:nowrap;align-items:center;gap:6px;display:inline-flex}.status-dot{background:var(--muted);border-radius:50%;width:7px;height:7px}.status[data-status=live] .status-dot,.status[data-status=shipped] .status-dot{background:var(--accent)}.status[data-status=wip] .status-dot{background:#b8862f}@media (prefers-reduced-motion:no-preference){.status[data-status=live] .status-dot{animation:2.6s ease-in-out infinite folio-dot-pulse}}.folio-foot{border-top:1.5px solid var(--fg);font-family:var(--ff-mono);letter-spacing:.09em;text-transform:uppercase;color:var(--muted);flex-wrap:wrap;justify-content:space-between;align-items:baseline;gap:10px;margin-top:clamp(40px,7vh,80px);padding-top:14px;font-size:10px;display:flex}.folio-foot a{color:inherit;text-decoration:none;position:relative}.folio-foot a:after{content:"";background:var(--accent);transform-origin:0;width:100%;height:1px;transition:transform .32s var(--ease-out);position:absolute;bottom:-2px;left:0;transform:scaleX(0)}.folio-foot a:hover{color:var(--accent)}.folio-foot a:hover:after{transform:scaleX(1)}.folio-back{font-family:var(--ff-mono);letter-spacing:.08em;text-transform:uppercase;color:var(--muted);align-items:center;gap:8px;margin-bottom:clamp(20px,4vh,34px);font-size:11px;text-decoration:none;display:inline-flex}.folio-back:hover{color:var(--accent)}.folio-back .b-arr{transition:transform .28s var(--ease-out)}.folio-back:hover .b-arr{transform:translate(-4px)}.proj-masthead{position:relative}.proj-kicker{font-family:var(--ff-mono);text-transform:uppercase;letter-spacing:.12em;color:var(--muted);font-size:clamp(9px,1vw,11px)}.proj-kicker .n{color:var(--accent)}.proj-title{font-family:var(--ff-display);letter-spacing:-.03em;margin:clamp(10px,2vh,16px) 0 0;font-size:clamp(2.6rem,8vw,5rem);font-weight:400;line-height:.9}.proj-tagline{border-left:2px solid var(--accent);max-width:60ch;font-family:var(--ff-serif);color:var(--accent);text-wrap:pretty;margin-top:clamp(16px,2.6vh,22px);padding-left:16px;font-size:clamp(18px,2.2vw,27px);font-style:italic;font-weight:400;line-height:1.28}.proj-spec{background:var(--hair);border:1px solid var(--hair);border-radius:3px;grid-template-columns:repeat(auto-fit,minmax(120px,1fr));gap:1px;margin-top:clamp(30px,4.6vh,42px);display:grid;position:relative;overflow:hidden}.proj-spec:before{content:"specimen · summary";z-index:1;background:var(--bg);font-family:var(--ff-mono);letter-spacing:.14em;text-transform:uppercase;color:var(--muted);padding:0 8px;font-size:9.5px;position:absolute;top:-8px;left:14px}.spec-item{background:var(--bg);padding:14px 14px 12px;transition:background .3s}.spec-item:hover{background:color-mix(in srgb, var(--accent) 7%, var(--bg))}.spec-item .k{font-family:var(--ff-mono);letter-spacing:.1em;text-transform:uppercase;color:var(--muted);margin-bottom:5px;font-size:9.5px;display:block}.spec-item .v{overflow-wrap:break-word;font-size:13.5px;line-height:1.35}.proj-links{flex-wrap:wrap;gap:12px;margin-top:clamp(20px,3.5vh,28px);display:flex}.proj-btn{font-family:var(--ff-mono);text-transform:uppercase;letter-spacing:.12em;transition:transform .3s var(--ease-spring), box-shadow .3s ease, background .3s ease, color .3s ease, border-color .3s ease, background-size .4s var(--ease-out);white-space:nowrap;border-radius:999px;align-items:center;gap:9px;padding:12px 20px;font-size:12px;font-weight:500;text-decoration:none;display:inline-flex;position:relative;overflow:hidden}.proj-btn span[aria-hidden]{transition:transform .28s var(--ease-out)}.proj-btn:hover span[aria-hidden]{transform:translate(3px,-3px)}.proj-btn.primary{background:var(--fg);color:var(--bg)}.proj-btn.accent{background:var(--accent);color:#fff}.proj-btn.primary:before,.proj-btn.accent:before{content:"";width:60%;height:100%;transition:left .72s var(--ease-out);pointer-events:none;background:linear-gradient(100deg,#0000 25%,#ffffff6b 50%,#0000 75%);position:absolute;top:0;left:-130%;transform:skew(-20deg)}.proj-btn.primary:hover{transform:translateY(-2px);box-shadow:0 10px 20px -6px #1c181266}.proj-btn.accent:hover{transform:translateY(-2px);box-shadow:0 10px 22px -6px #c8542a8c}.proj-btn.primary:hover:before,.proj-btn.accent:hover:before{left:140%}.proj-btn.primary:active,.proj-btn.accent:active,.proj-btn.ghost:active{transform:scale(.96)}.proj-btn.ghost{border:1.5px solid var(--fg);color:var(--fg);background-image:linear-gradient(var(--accent), var(--accent));background-position:0 100%;background-repeat:no-repeat;background-size:0% 2px}.proj-btn.ghost:hover{border-color:var(--accent);color:var(--accent);background-size:100% 2px}.proj-btn:focus-visible{outline:2px solid var(--accent);outline-offset:3px}.proj-preview{margin-top:clamp(24px,4.5vh,40px)}.proj-preview-note{font-family:var(--ff-mono);letter-spacing:.04em;text-transform:uppercase;color:var(--muted);margin:12px 4px 0;font-size:10.5px}.browser{border:1.5px solid var(--fg);background:#fff;border-radius:10px;overflow:hidden;box-shadow:5px 7px #1c18121c,0 34px 60px -34px #1c18129e}.browser-bar{background:color-mix(in srgb, var(--fg) 92%, #000);border-bottom:1.5px solid var(--fg);align-items:center;gap:12px;padding:9px 12px;display:flex}.browser-dots{flex-shrink:0;gap:6px;display:inline-flex}.browser-dots i{background:#ff5f57;border-radius:50%;width:10px;height:10px}.browser-dots i:nth-child(2){background:#febc2e}.browser-dots i:nth-child(3){background:#28c840}.browser-url{min-width:0;font-family:var(--ff-mono);color:#f3e8d3b8;white-space:nowrap;text-overflow:ellipsis;background:#00000047;border-radius:999px;flex:1;padding:4px 12px;font-size:11.5px;overflow:hidden}.browser-open{font-family:var(--ff-mono);letter-spacing:.08em;text-transform:uppercase;color:var(--bg);background:var(--accent);transition:filter .2s ease, transform .2s var(--ease-out);border-radius:999px;flex-shrink:0;padding:4px 11px;font-size:10px;text-decoration:none}.browser-open:hover{filter:brightness(1.08);transform:translateY(-1px)}.browser-body{aspect-ratio:16/10;background:color-mix(in srgb, var(--fg) 5%, #fff);position:relative}.browser.is-live .browser-body{aspect-ratio:3/2}.browser-body iframe{border:0;width:100%;height:100%;display:block}.browser-body video.browser-video{object-fit:contain;background:#0b0b0e;width:100%;height:100%;display:block}.browser-body>img,.browser-shot img{object-fit:cover;object-position:top center;width:100%;height:100%;display:block}.browser-shot{height:100%;display:block;position:relative}.browser-shot:after{content:"open live ↗";font-family:var(--ff-mono);letter-spacing:.1em;text-transform:uppercase;color:#fff;opacity:0;background:#1c181257;justify-content:center;align-items:center;font-size:12px;transition:opacity .2s;display:flex;position:absolute;inset:0}.browser-shot:hover:after{opacity:1}.live-launch{cursor:pointer;background:color-mix(in srgb, var(--fg) 5%, #fff);border:0;width:100%;height:100%;padding:0;display:block;position:relative;overflow:hidden}.live-launch img{object-fit:cover;object-position:top center;width:100%;height:100%;display:block}.live-scan{z-index:1;pointer-events:none;background:linear-gradient(115deg,#0000 40%,#ffffff29 50%,#0000 60%);position:absolute;inset:0;transform:translate(-130%)skew(-12deg)}@media (prefers-reduced-motion:no-preference){.live-scan{animation:4.6s ease-in-out 1.1s infinite folio-sheen-loop}}.live-launch-overlay{z-index:2;background:#1c181247;justify-content:center;align-items:center;transition:background .2s;display:flex;position:absolute;inset:0}.live-launch:hover .live-launch-overlay{background:#1c181266}.live-launch-btn{font-family:var(--ff-mono);letter-spacing:.12em;text-transform:uppercase;color:#fff;background:var(--accent);transition:transform .28s var(--ease-spring), box-shadow .3s ease;border-radius:999px;align-items:center;gap:9px;padding:12px 22px;font-size:12px;font-weight:500;display:inline-flex;box-shadow:0 8px 20px #0000004d,0 0 #c8542a80}.live-launch-play{font-size:10px;display:inline-block;transform:translateY(.5px)}.live-launch:hover .live-launch-btn{transform:scale(1.05);box-shadow:0 10px 26px #0000005c,0 0 22px #c8542a8c}.live-launch:active .live-launch-btn{transform:scale(.97)}.live-launch:focus-visible{outline:none}.live-launch:focus-visible .live-launch-btn{box-shadow:0 0 0 3px #fff, 0 0 0 6px var(--accent), 0 8px 20px #0000004d}.live-iframe{border:0;width:100%;height:100%;display:block}.app-window{border:1.5px solid var(--fg);background:#000;border-radius:10px;overflow:hidden;box-shadow:5px 7px #1c18121c,0 34px 60px -34px #1c18129e}.app-window img{width:100%;height:auto;display:block}.app-window .browser-shot:after{content:"open the repo ↗"}.proj-plate{text-align:center;aspect-ratio:16/7;border:1.5px solid var(--fg);background:repeating-linear-gradient(0deg, transparent 0 15px, #1c18120b 15px 16px), linear-gradient(135deg, color-mix(in srgb, var(--accent) 16%, var(--bg)), var(--bg));border-radius:10px;flex-direction:column;justify-content:center;align-items:center;gap:10px;padding:24px;display:flex;position:relative;overflow:hidden;box-shadow:5px 7px #1c18121c,0 34px 60px -34px #1c18128c}.proj-plate-rings{pointer-events:none;background:repeating-radial-gradient(circle,#0000 0 24px,#c8542a0f 24px 25px);position:absolute;inset:0}.proj-plate-title{font-family:var(--ff-display);letter-spacing:-.03em;color:color-mix(in srgb, var(--fg) 82%, transparent);font-size:clamp(2rem,5vw,3.4rem);line-height:1;position:relative}.proj-plate-sub{color:var(--muted);max-width:40ch;font-size:clamp(13px,1.4vw,15px);position:relative}.stack-details{margin-top:14px}.stack-details>summary{cursor:pointer;font-family:var(--ff-mono);letter-spacing:.06em;text-transform:uppercase;color:var(--muted);border:1px solid color-mix(in srgb, var(--fg) 30%, transparent);-webkit-user-select:none;user-select:none;border-radius:999px;align-items:center;gap:8px;padding:6px 13px;font-size:11px;list-style:none;transition:border-color .25s,color .25s;display:inline-flex}.stack-details>summary::-webkit-details-marker{display:none}.stack-details>summary:before{content:"+";color:var(--accent);font-weight:700}.stack-details[open]>summary:before{content:"–"}.stack-details>summary:hover{border-color:var(--accent);color:var(--accent)}.stack-count{color:var(--accent)}.proj-tags-stack{margin-top:12px}.h-count{font-family:var(--ff-mono);text-transform:none;letter-spacing:0;color:var(--muted);margin-left:8px;font-size:10px}.subproj-list{border:1.5px solid color-mix(in srgb, var(--fg) 22%, transparent);background:color-mix(in srgb, var(--fg) 18%, transparent);border-radius:4px;gap:1.5px;margin:0;padding:0;list-style:none;display:grid;overflow:hidden}.subproj{background:var(--bg);padding:13px 15px 13px 17px;transition:background .3s;position:relative}.subproj:before{content:"";background:var(--accent);transform-origin:50%;width:2px;transition:transform .3s var(--ease-out);position:absolute;top:0;bottom:0;left:0;transform:scaleY(0)}.subproj:hover{background:color-mix(in srgb, var(--accent) 6%, var(--bg))}.subproj:hover:before{transform:scaleY(1)}.subproj-head{flex-wrap:wrap;align-items:baseline;gap:10px;display:flex}.subproj-name{font-family:var(--ff-mono);color:var(--accent);background:0 0;padding:0;font-size:13.5px;font-weight:500}.subproj-kind{font-family:var(--ff-mono);letter-spacing:.06em;text-transform:uppercase;color:var(--muted);border:1px solid color-mix(in srgb, var(--fg) 28%, transparent);border-radius:999px;padding:1px 8px;font-size:9px}.subproj-one{color:color-mix(in srgb, var(--fg) 82%, transparent);margin:6px 0 0;font-size:13.5px;line-height:1.5}.proj-body{grid-template-columns:minmax(0,1fr);gap:clamp(26px,5vh,40px);min-width:0;max-width:780px;margin-top:clamp(30px,6vh,52px);display:grid}.proj-prose p,.proj-highlights li{overflow-wrap:break-word}.proj-section .h{font-family:var(--ff-mono);letter-spacing:.12em;text-transform:uppercase;color:var(--muted);border-bottom:1.5px solid var(--fg);margin-bottom:16px;padding-bottom:8px;font-size:11px;position:relative}.proj-section .h:after{content:"";background:var(--accent);transform-origin:0;width:100%;height:1.5px;position:absolute;bottom:-1.5px;left:0;transform:scaleX(0)}@media (prefers-reduced-motion:no-preference){@supports (animation-timeline:view()){.proj-section .h:after{animation:linear both folio-grow-x;animation-timeline:view();animation-range:entry 6% cover 20%}}}.proj-section .h .n{color:var(--accent);margin-right:8px}.proj-prose p{color:color-mix(in srgb, var(--fg) 90%, transparent);text-wrap:pretty;margin:0 0 14px;font-size:clamp(15px,1.5vw,17px);line-height:1.62}.proj-prose p:last-child{margin-bottom:0}.proj-prose--lead>p:first-of-type:first-letter{float:left;font-family:var(--ff-display);color:var(--accent);margin:.04em .11em -.06em 0;font-size:3.3em;line-height:.78}.proj-highlights{flex-direction:column;gap:12px;margin:0;padding:0;list-style:none;display:flex;position:relative}.proj-highlights:before{content:"";background:color-mix(in srgb, var(--accent) 34%, transparent);transform-origin:top;width:1.5px;position:absolute;top:5px;bottom:5px;left:6px;transform:scaleY(0)}@media (prefers-reduced-motion:no-preference){@supports (animation-timeline:view()){.proj-highlights:before{animation:linear both folio-grow-y;animation-timeline:view();animation-range:entry 4% cover 44%}}}.proj-highlights li{padding-left:30px;font-size:clamp(14px,1.45vw,16px);line-height:1.55;position:relative}.proj-highlights li:before{content:"✶";color:var(--accent);transition:transform .3s var(--ease-spring);font-size:13px;position:absolute;top:1px;left:0}.proj-highlights li:hover:before{transform:rotate(90deg)scale(1.18)}.proj-metrics{grid-template-columns:repeat(auto-fit,minmax(130px,1fr));gap:12px;display:grid}.metric{border:1px solid color-mix(in srgb, var(--fg) 26%, transparent);background:color-mix(in srgb, var(--bg) 55%, #fff);transition:transform .35s var(--ease-spring), box-shadow .35s ease, border-color .35s ease;border-radius:3px;padding:14px 16px;box-shadow:inset 0 1px #ffffff80,2px 3px #1c18120f}.metric:hover{border-color:var(--accent);transform:translateY(-4px);box-shadow:inset 0 1px #ffffff80,3px 6px #c8542a29,0 16px 26px -18px #1c181280}.metric .m-v{font-family:var(--ff-display);letter-spacing:-.02em;color:var(--accent);font-size:1.7rem;line-height:1}.metric .m-k{font-family:var(--ff-mono);letter-spacing:.06em;text-transform:uppercase;color:var(--muted);margin-top:6px;font-size:10px}.metric .m-k.m-k-lg{font-family:var(--ff-body);letter-spacing:0;text-transform:none;color:color-mix(in srgb, var(--fg) 88%, transparent);margin-top:0;font-size:13.5px;line-height:1.4}.proj-tags{flex-wrap:wrap;gap:8px;display:flex}@media (max-width:720px){.proj-spec{grid-template-columns:repeat(2,1fr)}}@media (max-width:640px){.folio-card.is-featured{grid-column:span 1}}@media (prefers-reduced-motion:reduce){.folio *,.folio :before,.folio :after{transition-duration:1ms!important;animation-duration:1ms!important;animation-iteration-count:1!important}}
