.portfolio{background:var(--dark2);--pf-space-xs:.5em;--pf-space-sm:.9em;--pf-space-md:1.1em;--pf-space-lg:2.1em;--pf-space-xl:3.1em}.portfolio-header{justify-content:space-between;align-items:flex-end;gap:var(--pf-space-md);flex-wrap:wrap;margin-bottom:3.2em;display:flex}.portfolio-header h2{font-family:var(--font-display);text-align:left;color:var(--primary);margin:0;font-size:clamp(1.7em,4vw,2.5em);font-weight:700;line-height:1.15}.portfolio-desc{font-family:var(--font-body);text-align:left;max-width:840px;color:var(--text-faint);margin:0;padding-top:.6em;font-size:clamp(14px,2.2vw,16px);line-height:1.65}.explore-more a.btnExplore{color:#fff}.btnExplore{letter-spacing:.1em;text-transform:uppercase;font-size:.7em;font-family:var(--font-body);background:var(--primary);cursor:pointer;touch-action:manipulation;border:none;border-radius:45px;padding:14px 36px;transition:background .3s,transform .2s}.btnExplore:hover{background:var(--secondary);text-decoration:none;transform:translateY(-2px)}.btnExplore:active{background:var(--primary-dark);transform:translateY(0)}.pf-progress{align-items:baseline;gap:var(--pf-space-xs);font-family:var(--font-display);flex-shrink:0;display:flex}.pf-progress-current{color:var(--theme-light);min-width:1.2em;font-size:clamp(1.6em,3vw,2.4em);font-weight:700;line-height:1}.pf-progress-divider{background:var(--border);width:22px;height:1px}.pf-progress-total{color:var(--text-faint);font-size:1em}.portfolio-stack{gap:var(--pf-space-lg);flex-direction:column;display:flex;position:relative}.stack-wrap{position:relative}.stack-card{background:var(--dark2);border:1px solid var(--border);border-radius:15px;grid-template-columns:2fr 1.1fr;gap:1em;width:min(1600px,92vw);min-height:480px;margin:0 auto;display:grid;overflow:hidden;box-shadow:0 20px 40px -20px #00000073}.stack-media-wrap{gap:var(--pf-space-sm);padding:var(--pf-space-md) var(--pf-space-md) 0 var(--pf-space-md);flex-direction:column;display:flex;position:relative}.stack-media{background:#ffffff05;border-radius:20px;height:81%;display:block;position:relative;overflow:hidden}.stack-img{background-color:var(--cream);object-fit:cover;border-radius:20px;width:100%;height:100%;transition:transform .6s cubic-bezier(.25,.46,.45,.94),opacity .25s;display:block}@media (hover:hover){.stack-media:hover .stack-img{transform:scale(1.05)}}.stack-index{font-family:var(--font-body);color:#fff;-webkit-backdrop-filter:blur(6px);backdrop-filter:blur(6px);letter-spacing:.05em;background:#0806108c;border-radius:30px;padding:.3em .8em;font-size:1.1em;font-style:italic;font-weight:700;position:absolute;top:1.2em;left:1.2em}.stack-body{justify-content:center;gap:var(--pf-space-sm);padding:var(--pf-space-md);flex-direction:column;min-width:0;display:flex}.stack-eyebrow{letter-spacing:.15em;text-transform:uppercase;font-size:.75em;font-family:var(--font-body);color:var(--theme-light);font-weight:600}.stack-title{font-family:var(--font-display);overflow-wrap:break-word;margin:0;font-size:clamp(1.35em,2.6vw,2em);font-weight:700;line-height:1.2}.stack-desc{font-family:var(--font-body);color:var(--text-faint);margin:0;padding-right:25px;font-size:14px;line-height:1.65}.stack-growth{align-items:baseline;gap:var(--pf-space-xs);padding:var(--pf-space-sm) 0;border-top:1px solid var(--border);border-bottom:1px solid var(--border);flex-wrap:wrap;margin:.2em 0;display:flex}.stack-growth-value{font-family:var(--font-display);color:var(--theme-light);white-space:nowrap;font-size:1.6em;font-weight:700;line-height:1}.stack-growth-label{font-family:var(--font-body);color:var(--text-faint);max-width:22ch;font-size:.85em;line-height:1.5}.stack-tech{flex-wrap:wrap;gap:.6em;margin:.2em 0 0;padding:0;list-style:none;display:flex}.stack-tech li{letter-spacing:.04em;color:var(--text-faint);font-size:.75em;font-family:var(--font-body);border:1px solid var(--border);border-radius:20px;padding:.45em 1em;transition:border-color .2s,color .2s}@media (hover:hover){.stack-tech li:hover{border-color:var(--card-primary,var(--theme-light));color:var(--card-primary,var(--theme-light))}}.stack-link{letter-spacing:.08em;text-transform:uppercase;font-size:.8em;font-weight:600;font-family:var(--font-body);align-items:center;gap:.5em;width:-moz-fit-content;width:fit-content;min-height:44px;margin-top:.6em;text-decoration:none;display:inline-flex}.stack-link span{transition:transform .25s}@media (hover:hover){.stack-link:hover span{transform:translate(4px)}}.stack-link:focus-visible{outline:2px solid var(--theme-light);outline-offset:3px}.stack-media:focus-visible{outline:2px solid var(--theme-light);outline-offset:3px}.explore-more{margin-top:var(--pf-space-xl);border:none;justify-content:center;display:flex}.explore-more Link{color:#fff}.stack-thumbs{background-color:var(--cream);scrollbar-width:thin;-webkit-overflow-scrolling:touch;border-radius:15px;gap:.6em;margin:0;padding:5px;list-style:none;display:flex;overflow-x:auto}.stack-thumbs::-webkit-scrollbar{height:4px}.stack-thumbs::-webkit-scrollbar-thumb{background:var(--card-primary,#fff3);border-radius:999px}.stack-thumbs li{flex:none}.stack-thumb{cursor:pointer;opacity:.55;touch-action:manipulation;background:0 0;border:2px solid #0000;border-radius:8px;width:94px;height:55px;padding:0;transition:opacity .2s,border-color .2s,transform .2s;display:block;overflow:hidden}@media (hover:hover){.stack-thumb:hover{opacity:.9;transform:translateY(-2px)}}.stack-thumb:focus-visible{outline:2px solid var(--card-primary,#6366f1);outline-offset:2px}.stack-thumb img{object-fit:cover;width:100%;height:100%}.stack-thumb--active{opacity:1;border-color:var(--card-primary,#6366f1);box-shadow:0 0 0 3px var(--card-glow,#6366f126)}.stack-colors{flex-wrap:wrap;gap:.7em;margin:.2em 0 0;padding:0;list-style:none;display:flex}.stack-colors li{color:var(--text-faint);font-size:.75em;font-family:var(--font-body);border:1px solid var(--border);border-radius:20px;align-items:center;gap:.5em;padding:.3em .9em .3em .5em;display:flex}.stack-colors code{font-family:var(--font-body);letter-spacing:.02em}.stack-swatch{border:1px solid #ffffff40;border-radius:10px 5px 5px 10px;flex-shrink:0;width:26px;height:26px;display:inline-block}@media (max-width:1100px){.stack-card{width:min(1600px,94vw)}.stack-title{font-size:clamp(1.25em,2.4vw,1.75em)}}@media (max-width:900px){.stack-card,.stack-card--reverse{grid-template-columns:1fr;gap:0;width:94vw;min-height:auto}.stack-card--reverse .stack-media-wrap,.stack-card--reverse .stack-media,.stack-card--reverse .stack-body{order:initial}.stack-media-wrap{padding:var(--pf-space-sm) var(--pf-space-sm) 0}.stack-media{height:260px}.stack-body{padding:var(--pf-space-lg) var(--pf-space-md) var(--pf-space-lg)}.stack-desc{padding-right:0}}@media (max-width:640px){.portfolio-header{gap:var(--pf-space-sm)}.stack-card{background:var(--dark2);border:1px solid var(--border);border-radius:12px;width:85vw;overflow:hidden;box-shadow:0 20px 40px -20px #00000073}.stack-media{border-radius:14px;height:220px}.stack-img{border-radius:14px}.stack-growth{row-gap:.3em}.stack-growth-label{max-width:none}.stack-tech li,.stack-colors li{padding:.4em .85em;font-size:.72em}}@media (max-width:480px){.portfolio-header{flex-direction:column;align-items:flex-start}.btnExplore{text-align:center;width:100%;padding:14px 20px}.stack-title{font-size:1.4em}.stack-desc{width:290px;font-size:13.5px}.stack-media{height:200px}.stack-thumb{width:40px;height:40px}.stack-index{padding:.25em .65em;font-size:.9em;top:.8em;left:.8em}.stack-growth-value{font-size:1.35em}}@media (max-width:360px){.stack-card{width:98vw}.stack-media{height:170px}.stack-title{font-size:1.25em}}@media (max-height:480px) and (orientation:landscape){.stack-media{height:200px}}@media (prefers-reduced-motion:reduce){.stack-card,.stack-img,.stack-link span,.btnExplore{filter:none!important;transition:none!important;transform:none!important}}@media (-webkit-min-device-pixel-ratio:2),(min-resolution:2dppx){.stack-index{-webkit-backdrop-filter:blur(8px);backdrop-filter:blur(8px)}}.pfMask{opacity:0;clip-path:inset(0 0 100%);transition:opacity .5s,clip-path .7s cubic-bezier(.22,.9,.3,1),transform .7s cubic-bezier(.22,.9,.3,1);transform:translateY(14px)}.pfMask.in-view{opacity:1;clip-path:inset(0 0 0%);transform:translateY(0)}.pfWipe{--wipe-x:-6%}.pfWipe--rev{--wipe-x:6%}.pfWipe-media{overflow:hidden}.pfWipe-panel{background:var(--card-primary,var(--primary));transform-origin:0;z-index:2;transition:transform .7s cubic-bezier(.76,0,.24,1);position:absolute;top:0;bottom:0;left:0;right:0;transform:scaleX(1)}.pfWipe--rev .pfWipe-panel{transform-origin:100%}.pfWipe.in-view .pfWipe-panel{transform:scaleX(0)}.stack-img{opacity:0;transition:opacity .4s .35s,transform .9s cubic-bezier(.22,.9,.3,1) .2s;transform:scale(1.12)}.pfWipe.in-view .stack-img{opacity:1;transform:scale(1)}.pfWipe-index{opacity:0;transition:opacity .35s .55s,transform .45s cubic-bezier(.34,1.56,.64,1) .55s;transform:scale(.3)rotate(-14deg)}.pfWipe.in-view .pfWipe-index{opacity:1;transform:scale(1)rotate(0)}.pfWipe-thumbs{opacity:0;transition:opacity .4s .65s,transform .4s .65s;transform:translateY(10px)}.pfWipe.in-view .pfWipe-thumbs{opacity:1;transform:translateY(0)}.pfWipe-body{opacity:0;transform:translateX(calc(var(--wipe-x) * 8)) skewX(calc(var(--wipe-x) * -.6));transition:opacity .6s .15s,transform .7s cubic-bezier(.22,.9,.3,1) .15s}.pfWipe.in-view .pfWipe-body{opacity:1;transform:translate(0)skew(0)}@media (prefers-reduced-motion:reduce){.pfMask,.pfWipe-panel,.stack-img,.pfWipe-index,.pfWipe-thumbs,.pfWipe-body{opacity:1;clip-path:none;transition:none;transform:none}}
