.portfolio-root{contain:layout style;background:#050505}.portfolio-root .portfolio-hero{min-height:100svh;padding-bottom:max(1px,env(safe-area-inset-bottom));contain:layout style paint}.portfolio-root .hero-line{display:block;overflow:hidden;padding-bottom:.06em}.portfolio-root:not(.portfolio-hero-armed) .hero-line-inner,.portfolio-root:not(.portfolio-hero-armed) .portfolio-hero .hero-fade{opacity:0}.portfolio-root .hero-line-inner{display:inline-block;will-change:transform,opacity}@media(scripting:none){.portfolio-root .hero-line-inner,.portfolio-root .portfolio-hero .hero-fade,.portfolio-root .portfolio-scroll{opacity:1}}#portfolioHeroEmbers{transform:translateZ(0);backface-visibility:hidden}.portfolio-root .portfolio-scroll-dock{position:absolute;left:50%;bottom:max(1.35rem,env(safe-area-inset-bottom,0px));z-index:20;transform:translate(-50%)}.portfolio-root:not(.portfolio-hero-armed) .portfolio-scroll{opacity:0}.portfolio-root .portfolio-scroll{display:inline-flex;align-items:center;justify-content:center;min-width:var(--touch, 44px);min-height:var(--touch, 44px);padding:.35rem .5rem;text-decoration:none;color:inherit;will-change:opacity,transform}.portfolio-root .portfolio-scroll__word{display:flex;flex-direction:column;align-items:center;gap:.08em;line-height:1}.portfolio-root .portfolio-scroll__char{font-family:var(--font-mono, ui-monospace, monospace);font-size:.625rem;font-weight:500;letter-spacing:.28em;text-transform:uppercase;color:#f973168c;animation:portfolio-scroll-ember 2.8s cubic-bezier(.45,.05,.25,1) infinite;animation-delay:calc(var(--i, 0) * .14s)}.portfolio-root .portfolio-scroll:hover .portfolio-scroll__char,.portfolio-root .portfolio-scroll:focus-visible .portfolio-scroll__char{color:#f97316f2}@keyframes portfolio-scroll-ember{0%,to{opacity:.28;transform:translateY(0)}35%{opacity:1;transform:translateY(2px)}70%{opacity:.4;transform:translateY(4px)}}.pf-eyebrow{display:block;margin-bottom:.75rem;font-family:var(--font-mono, ui-monospace, monospace);font-size:.7rem;letter-spacing:.28em;text-transform:uppercase;color:#f97316}.pf-section-title{font-family:var(--font-display, Oswald, sans-serif);font-size:clamp(2.25rem,5vw,3.75rem);font-weight:700;line-height:.95;letter-spacing:-.03em;text-transform:uppercase;color:#fff}.pf-badge{display:inline-block;margin-bottom:1rem;padding:.35rem .75rem;border:1px solid rgba(249,115,22,.35);border-radius:999px;font-family:var(--font-mono, ui-monospace, monospace);font-size:.625rem;letter-spacing:.22em;text-transform:uppercase;color:#f97316}.pf-link{display:inline-flex;align-items:center;gap:.65rem;margin-top:1.75rem;font-size:.75rem;font-weight:700;letter-spacing:.18em;text-transform:uppercase;color:#fff;transition:color .25s ease}.pf-link:hover{color:#f97316}.pf-link i{font-size:.7rem;color:#f97316;transition:transform .25s ease}.pf-link:hover i{transform:translate(2px,-2px)}.pf-tags{display:flex;flex-wrap:wrap;gap:.85rem 1.25rem;margin:0;padding:0;list-style:none;font-size:.75rem;color:#9ca3af}.pf-tags i{margin-right:.4rem;color:#f97316}.pf-browser{margin:0;overflow:hidden;border:1px solid rgba(255,255,255,.1);border-radius:12px;background:#0c0c0c;box-shadow:0 24px 60px #00000073}.pf-browser__chrome{display:flex;align-items:center;gap:.4rem;height:2.1rem;padding:0 .85rem;border-bottom:1px solid rgba(255,255,255,.06);background:linear-gradient(180deg,#1a1a1a,#121212)}.pf-browser__dot{width:.55rem;height:.55rem;border-radius:50%;background:#3f3f46}.pf-browser__dot:nth-child(1){background:#ef4444}.pf-browser__dot:nth-child(2){background:#eab308}.pf-browser__dot:nth-child(3){background:#22c55e}.pf-browser__bar{flex:1;height:.55rem;margin-left:.65rem;border-radius:999px;background:#ffffff0f}.pf-browser__viewport{aspect-ratio:16 / 10;overflow:hidden;background:#050505}.pf-browser__img{display:block;width:100%;height:100%;object-fit:cover;object-position:top center;transition:transform .7s cubic-bezier(.22,1,.36,1)}a:hover .pf-browser__img,.pf-tile:hover .pf-browser__img{transform:scale(1.03)}.pf-featured{padding:clamp(4rem,10vw,7rem) clamp(1.25rem,4vw,3rem) 2rem;max-width:1400px;margin:0 auto}.pf-featured__intro{max-width:40rem;margin-bottom:clamp(3rem,8vw,5rem)}.pf-strip{display:grid;gap:clamp(1.5rem,4vw,3rem);align-items:center;margin-bottom:clamp(4rem,10vw,7rem)}@media(min-width:960px){.pf-strip{grid-template-columns:1.25fr .9fr}.pf-strip--reverse .pf-strip__media{order:2}.pf-strip--reverse .pf-strip__copy{order:1}}.pf-strip__copy{position:relative;padding-inline:.25rem}.pf-strip__num{position:absolute;top:-1.5rem;right:0;font-family:var(--font-display, Oswald, sans-serif);font-size:clamp(4rem,10vw,7rem);font-weight:700;line-height:1;color:#ffffff0a;pointer-events:none;user-select:none}.pf-strip__title{margin:0 0 .75rem;font-family:var(--font-display, Oswald, sans-serif);font-size:clamp(2rem,4.5vw,3.5rem);font-weight:700;line-height:.95;letter-spacing:-.03em;text-transform:uppercase;color:#fff}.pf-strip__tagline{margin:0 0 1rem;font-size:clamp(1.05rem,2vw,1.35rem);font-weight:300;line-height:1.35;color:#ffffffd1}.pf-strip__body{margin:0 0 1.25rem;max-width:36rem;font-size:.95rem;line-height:1.65;color:#9ca3af}.pf-index{padding:2rem clamp(1.25rem,4vw,3rem) clamp(4rem,10vw,7rem);max-width:1400px;margin:0 auto;border-top:1px solid rgba(255,255,255,.06)}.pf-index__intro{max-width:36rem;margin-bottom:clamp(2.5rem,6vw,4rem);padding-top:clamp(2.5rem,6vw,4rem)}.pf-index__grid{display:grid;gap:1.5rem;grid-template-columns:1fr}@media(min-width:768px){.pf-index__grid{grid-template-columns:repeat(2,1fr);gap:1.75rem}.pf-tile--wide{grid-column:span 2}}.pf-tile{display:block;padding:1rem;border:1px solid rgba(255,255,255,.08);border-radius:16px;background:#0a0a0a;text-decoration:none;color:inherit;transition:border-color .3s ease,transform .35s cubic-bezier(.22,1,.36,1),background .3s ease}.pf-tile:hover{border-color:#f9731673;background:#101010;transform:translateY(-4px)}.pf-tile:focus-visible{outline:2px solid #f97316;outline-offset:3px}.pf-tile__meta{display:flex;align-items:center;justify-content:space-between;margin-bottom:.75rem}.pf-tile__meta .pf-badge{margin-bottom:0}.pf-tile__num{font-family:var(--font-mono, ui-monospace, monospace);font-size:.7rem;letter-spacing:.18em;color:#52525b}.pf-tile__copy{margin-top:1rem;padding:.15rem .25rem .35rem}.pf-tile__title{margin:0 0 .35rem;font-family:var(--font-display, Oswald, sans-serif);font-size:clamp(1.35rem,2.5vw,1.85rem);font-weight:700;letter-spacing:-.02em;text-transform:uppercase;color:#fff;transition:color .25s ease}.pf-tile:hover .pf-tile__title{color:#f97316}.pf-tile__tagline{margin:0;font-size:.875rem;line-height:1.45;color:#9ca3af}.pf-tile--wide .pf-browser__viewport{aspect-ratio:21 / 9}.pf-reveal,#portfolio-cta .pf-reveal,#portfolio-cta .chapter-reveal{opacity:0;transform:translate3d(0,28px,0)}@media(prefers-reduced-motion:reduce){.portfolio-root .hero-line-inner,.portfolio-root .portfolio-hero .hero-fade,.pf-reveal,#portfolio-cta .chapter-reveal{opacity:1!important;transform:none!important}.portfolio-root .portfolio-scroll__char{animation:none!important;opacity:.7;transform:none}.pf-browser__img,.pf-tile{transition:none!important}}@media(max-width:767px){.pf-tile--wide{grid-column:auto}.pf-tile--wide .pf-browser__viewport{aspect-ratio:16 / 10}}.pfx{--pfx-fire: #f97316;--pfx-ember: #ea580c;--pfx-line: rgba(255,255,255,.08);background:#050505;color:#fff;padding:clamp(4rem,9vw,8rem) 0;font-family:Manrope,system-ui,sans-serif;position:relative}.pfx:before{content:"";position:absolute;inset:0;background:radial-gradient(60% 40% at 80% 10%,rgba(234,88,12,.14),transparent 70%);pointer-events:none}.pfx-wrap{position:relative;max-width:1320px;margin:0 auto;padding:0 clamp(1.25rem,4vw,3rem)}.pfx-label,.pfx-tag,.pfx-num,.pfx-built li,.pfx-browser__bar span,.pfx-visit,.pfx-review cite{font-family:var(--font-mono),"Space Mono",ui-monospace,monospace}.pfx-label{color:var(--pfx-fire);font-size:.72rem;letter-spacing:.3em;text-transform:uppercase}.pfx-title{font-family:var(--font-display),Oswald,sans-serif;font-weight:700;text-transform:uppercase;line-height:.9;letter-spacing:-.01em;font-size:clamp(2.4rem,6vw,5rem);margin:.75rem 0 1rem}.pfx-title--sm{font-size:clamp(2rem,4.5vw,3.5rem);margin-bottom:0}.pfx-lede{color:#9ca3af;max-width:40rem;line-height:1.7}.pfx-head{margin-bottom:clamp(2rem,5vw,3.5rem)}.pfx-head--grid{margin-top:clamp(5rem,10vw,8rem);border-top:1px solid var(--pfx-line);padding-top:2.5rem}.pfx-browser{background:#111;border:1px solid rgba(255,255,255,.12);border-radius:12px;overflow:hidden;box-shadow:0 30px 80px -30px #000000e6,0 0 0 1px #0009}.pfx-browser__bar{display:flex;align-items:center;gap:6px;height:30px;padding:0 12px;background:linear-gradient(#1c1c1c,#141414);border-bottom:1px solid rgba(255,255,255,.06)}.pfx-browser__bar i{width:9px;height:9px;border-radius:50%;background:#3a3a3a}.pfx-browser__bar i:first-child{background:#ef4444}.pfx-browser__bar i:nth-child(2){background:#f59e0b}.pfx-browser__bar i:nth-child(3){background:#22c55e}.pfx-browser__bar span{margin-left:10px;flex:1;max-width:260px;font-size:10px;color:#8b8b8b;background:#0a0a0a;border-radius:6px;padding:3px 10px;white-space:nowrap;overflow:hidden;text-overflow:ellipsis}.pfx-browser img,.pfx-phone img{display:block;width:100%;height:auto}.pfx-browser__screen{aspect-ratio:16 / 10;overflow:hidden}.pfx-browser__screen img{transition:transform .8s cubic-bezier(.2,.7,.2,1);transform-origin:top center}.pfx-phone{position:absolute;width:22%;min-width:92px;aspect-ratio:9 / 19.5;border-radius:22px;padding:6px;background:#0b0b0b;border:1px solid rgba(255,255,255,.18);box-shadow:0 25px 60px -15px #000000e6,0 0 0 2px #000;overflow:hidden;right:-3%;bottom:-8%;transition:transform .6s cubic-bezier(.2,.7,.2,1)}.pfx-phone:before{content:"";position:absolute;top:9px;left:50%;width:32%;height:9px;transform:translate(-50%);background:#000;border-radius:999px;z-index:2}.pfx-phone img{border-radius:16px;height:100%;object-fit:cover;object-position:top}.pfx-hero{display:grid;grid-template-columns:1.35fr 1fr;gap:clamp(2rem,5vw,4.5rem);align-items:center}.pfx-hero__devices{position:relative;margin-bottom:8%}.pfx-browser--lg{box-shadow:0 50px 120px -40px #ea580c73,0 30px 80px -30px #000}.pfx-phone--hero{width:24%}.pfx-hero__name{font-family:var(--font-display),Oswald,sans-serif;font-size:clamp(2.6rem,5vw,4.25rem);font-weight:700;text-transform:uppercase;line-height:.9;margin:1rem 0}.pfx-body{color:#b3b3b3;line-height:1.75;font-size:.98rem}.pfx-tags{display:flex;flex-wrap:wrap;gap:.5rem}.pfx-tag{font-size:.66rem;letter-spacing:.14em;text-transform:uppercase;padding:.35rem .7rem;border:1px solid rgba(255,255,255,.14);border-radius:999px;color:#d4d4d4}.pfx-tag--fire{border-color:#f9731680;color:#fdba74;background:#ea580c1f}.pfx-built{list-style:none;padding:0;margin:1.25rem 0;display:flex;flex-wrap:wrap;gap:.4rem 1.2rem}.pfx-built li{font-size:.7rem;text-transform:uppercase;letter-spacing:.1em;color:#9ca3af}.pfx-built li:before{content:"+ ";color:var(--pfx-fire)}.pfx-review{margin:1.5rem 0;padding:1.1rem 1.25rem;border-left:3px solid var(--pfx-fire);background:#ffffff08;border-radius:0 10px 10px 0}.pfx-review p{color:#e5e5e5;font-size:.93rem;line-height:1.7;font-style:italic;margin:0 0 .6rem}.pfx-review cite{font-style:normal;font-size:.66rem;letter-spacing:.14em;text-transform:uppercase;color:#fdba74}.pfx-review cite:before{content:"★★★★★ ";color:var(--pfx-fire);letter-spacing:.05em}.pfx-visit{display:inline-flex;align-items:center;gap:.6rem;font-size:.72rem;font-weight:700;letter-spacing:.18em;text-transform:uppercase;color:#fff;text-decoration:none;padding-bottom:4px;border-bottom:1px solid var(--pfx-fire);transition:color .25s,gap .25s}.pfx-visit:hover{color:#fdba74;gap:.9rem}.pfx-visit--solid{background:var(--pfx-ember);border:1px solid var(--pfx-fire);padding:1rem 1.6rem;border-radius:2px;margin-top:.5rem}.pfx-visit--solid:hover{background:var(--pfx-fire);color:#fff;box-shadow:0 0 30px #ea580c80}.pfx-grid{display:grid;grid-template-columns:repeat(2,minmax(0,1fr));gap:clamp(3.5rem,6vw,5.5rem) clamp(1.5rem,3vw,2.75rem)}.pfx-card{position:relative;display:flex;flex-direction:column;gap:2.4rem}.pfx-card__media{position:relative;display:block;margin-right:4%;transition:transform .5s cubic-bezier(.2,.7,.2,1)}.pfx-card__media .pfx-browser{transition:box-shadow .5s,border-color .5s}.pfx-card:hover .pfx-card__media{transform:translateY(-6px)}.pfx-card:hover .pfx-browser{border-color:#f973168c;box-shadow:0 40px 90px -30px #ea580c80,0 0 0 1px #f9731640}.pfx-card:hover .pfx-browser__screen img{transform:scale(1.04)}.pfx-card:hover .pfx-phone{transform:translateY(-10px) rotate(-2deg)}.pfx-card__name{font-family:var(--font-display),Oswald,sans-serif;font-size:clamp(1.7rem,2.6vw,2.3rem);font-weight:700;text-transform:uppercase;line-height:1;margin:.9rem 0 .7rem;display:flex;align-items:baseline;gap:.7rem}.pfx-num{font-size:.75rem;color:var(--pfx-fire);font-weight:400}.pfx-card--wide{grid-column:1 / -1;display:grid;grid-template-columns:1.2fr 1fr;gap:3rem;align-items:center}.pfx-card--wide .pfx-card__media{margin-bottom:6%}@media(max-width:900px){.pfx-hero,.pfx-card--wide,.pfx-grid{grid-template-columns:1fr}.pfx-phone{width:26%;right:-2%}}@media(prefers-reduced-motion:reduce){.pfx-card__media,.pfx-phone,.pfx-browser__screen img{transition:none}}
