.portfolio-page{position:relative;isolation:isolate;--ease-out-expo:cubic-bezier(0.16,1,0.3,1);--glass-bg:linear-gradient(145deg,hsla(0,0%,100%,.1),hsla(0,0%,100%,.03) 48%,rgba(120,150,200,.04));--glass-border:hsla(0,0%,100%,.14);--glass-blur:blur(20px) saturate(1.3);--radius:14px;--accent-soft:rgba(100,150,255,.14)}body:has(.portfolio-page) .canvas-container{display:none}.portfolio-video-bg{position:fixed;inset:0;z-index:0;overflow:hidden;pointer-events:none}.portfolio-video-bg__media{position:absolute;inset:0;width:100%;height:100%;object-fit:cover;object-position:center center;transform:rotate(180deg);transform-origin:center center}.portfolio-video-bg__veil{position:absolute;inset:0;background:linear-gradient(180deg,rgba(11,12,16,.55),rgba(11,12,16,.72) 45%,rgba(11,12,16,.88)),radial-gradient(ellipse 70% 50% at 50% 20%,rgba(11,12,16,.15),transparent 70%)}.portfolio-page>:not(.portfolio-video-bg){position:relative;z-index:1}@media (prefers-reduced-motion:reduce){.portfolio-video-bg__media{transform:rotate(180deg)}}body:has(.portfolio-page) .main-footer{position:relative;z-index:4;background-color:var(--bg-surface-dark,#0a0b10)}.portfolio-page .page-hero{padding:8rem 0 3rem;position:relative;overflow:hidden}.portfolio-page .page-hero:before{content:"";position:absolute;inset:0;background:radial-gradient(ellipse 60% 50% at 70% 20%,rgba(90,140,255,.1),transparent 65%),radial-gradient(ellipse 40% 40% at 10% 80%,hsla(0,0%,100%,.03),transparent 60%);pointer-events:none}.portfolio-page .page-hero-content{position:relative;z-index:1;max-width:40rem}.portfolio-page .page-hero-title{font-size:clamp(2.5rem,5vw,3.75rem);font-weight:700;letter-spacing:-.035em;line-height:1.05;margin-bottom:1rem}.portfolio-page .page-hero-subtitle{font-size:1.0625rem;color:var(--text-secondary);line-height:1.65;max-width:38ch;margin:0}.portfolio-page .page-hero .section-subtitle{display:none}.portfolio-page .portfolio-section{padding:2rem 0 4rem;overflow:hidden}.portfolio-page .project-stack{display:flex;flex-direction:column;gap:clamp(4rem,8vw,7rem)}.portfolio-page .project-block{display:grid;grid-template-columns:minmax(0,1fr) minmax(0,1fr);grid-gap:clamp(1.75rem,4vw,3rem);gap:clamp(1.75rem,4vw,3rem);align-items:start;overflow:hidden}.portfolio-page .project-block.is-flip{grid-template-columns:minmax(0,1fr) minmax(0,1fr)}.portfolio-page .project-block.is-flip .project-info{order:2}.portfolio-page .project-block.is-flip .project-carousel-wrap{order:1}.portfolio-page .project-mobile-head{display:none}.portfolio-page .project-info{position:relative;z-index:4;isolation:isolate;align-self:start;padding-top:.35rem;background:linear-gradient(90deg,var(--bg-main,#0b0c10) 0,var(--bg-main,#0b0c10) 88%,transparent 100%);padding-right:.5rem}.portfolio-page .project-block.is-flip .project-info{background:linear-gradient(270deg,var(--bg-main,#0b0c10) 0,var(--bg-main,#0b0c10) 88%,transparent 100%);padding-right:0;padding-left:.5rem}.portfolio-page .page-hero--compact{padding-top:clamp(5.5rem,10vw,7rem);padding-bottom:clamp(1.25rem,3vw,2rem)}.portfolio-page .page-hero--compact .page-hero-subtitle{max-width:36ch}.portfolio-page .project-name{margin:0 0 .45rem;font-family:var(--font-header,var(--font-display));font-size:clamp(1.65rem,3vw,2.15rem);font-weight:700;letter-spacing:-.03em;line-height:1.15;color:var(--text-primary,#f8f9fc)}.portfolio-page .project-meta{display:inline-flex;align-items:center;gap:.5rem;font-family:var(--font-header,var(--font-display));font-size:.8rem;font-weight:600;color:rgba(200,215,255,.85);margin:0 0 .75rem}.portfolio-page .project-meta:before{content:"";width:7px;height:7px;border-radius:50%;background:#5b9cff;box-shadow:0 0 12px rgba(91,156,255,.65)}.portfolio-page .project-title{margin:0 0 .75rem;font-size:clamp(1.05rem,1.8vw,1.2rem);font-weight:500;letter-spacing:-.015em;line-height:1.4;color:var(--text-secondary,#c5c9db);max-width:36ch;overflow-wrap:anywhere}.portfolio-page .project-desc{font-size:1rem;color:var(--text-secondary);line-height:1.65;margin-bottom:1.5rem;max-width:38ch;overflow-wrap:anywhere;display:-webkit-box;-webkit-line-clamp:6;-webkit-box-orient:vertical;overflow:hidden}.portfolio-page .project-tags{display:flex;flex-wrap:wrap;gap:.45rem;margin-bottom:1.5rem}.portfolio-page .project-tag{font-size:.72rem;font-weight:600;letter-spacing:.04em;text-transform:uppercase;padding:.35rem .7rem;border-radius:999px;border:1px solid hsla(0,0%,100%,.1);background:hsla(0,0%,100%,.04);color:rgba(210,220,240,.85)}.portfolio-page .project-ctas{display:flex;flex-wrap:wrap;gap:.85rem;align-items:center}.portfolio-page .btn-primary{border-radius:999px;transition:transform .25s var(--ease-out-expo),box-shadow .35s var(--ease-out-expo);box-shadow:0 8px 28px rgba(0,0,0,.35)}.portfolio-page .btn-primary:hover{transform:translateY(-2px);box-shadow:0 14px 36px rgba(0,0,0,.45)}.pc-root{width:100%;-moz-user-select:none;user-select:none;-webkit-user-select:none}.pc-stage{height:clamp(300px,38vw,420px);outline:none;touch-action:pan-y;cursor:-webkit-grab;cursor:grab}.pc-stage,.portfolio-page .project-carousel-wrap{position:relative;border-radius:var(--radius);overflow:hidden}.portfolio-page .project-carousel-wrap{z-index:1;align-self:start;min-width:0;width:100%}.pc-stage:active{cursor:-webkit-grabbing;cursor:grabbing}.pc-stage:focus-visible{box-shadow:0 0 0 2px #fff,0 0 0 5px rgba(91,156,255,.45)}.pc-perspective{position:absolute;inset:0;perspective:1200px;perspective-origin:50% 50%;overflow:hidden}.pc-track{position:absolute;inset:0;transform-style:preserve-3d;transform:translateZ(0);display:flex;align-items:center;justify-content:center}.pc-card:first-child{opacity:1;z-index:5;transform:translate3d(-50%,-50%,0)}.pc-card{position:absolute;left:50%;top:50%;width:min(62%,340px);aspect-ratio:16/10.5;margin:0;padding:0;border:1px solid var(--glass-border);border-radius:12px;background:rgba(14,16,24,.92);box-shadow:0 20px 50px rgba(0,0,0,.45),inset 0 1px 0 hsla(0,0%,100%,.1);overflow:hidden;transform-style:preserve-3d;opacity:0;cursor:pointer;color:inherit;font:inherit;text-align:left;will-change:transform,opacity;filter:none;-webkit-backface-visibility:hidden;backface-visibility:hidden;transition:border-color .3s var(--ease-out-expo)}.pc-card.is-active{border-color:rgba(160,190,255,.4);background:#0c0e14;filter:none!important;-webkit-filter:none!important;box-shadow:0 28px 64px rgba(0,0,0,.5),0 0 0 1px rgba(140,170,255,.14),inset 0 1px 0 hsla(0,0%,100%,.14)}.pc-card-chrome{display:flex;align-items:center;gap:5px;height:28px;padding:0 .65rem;background:rgba(12,14,20,.75);border-bottom:1px solid hsla(0,0%,100%,.06)}.pc-card-chrome .pc-dot{width:7px;height:7px;border-radius:50%;background:hsla(0,0%,100%,.18)}.pc-card-chrome .pc-dot:first-child{background:#ff5f56}.pc-card-chrome .pc-dot:nth-child(2){background:#ffbd2e}.pc-card-chrome .pc-dot:nth-child(3){background:#27c93f}.pc-url{margin-left:.65rem;font-family:ui-monospace,Menlo,Consolas,monospace;font-size:.62rem;color:rgba(180,190,210,.7);background:rgba(0,0,0,.35);padding:.1rem .55rem;border-radius:999px;border:1px solid hsla(0,0%,100%,.06);white-space:nowrap;overflow:hidden;text-overflow:ellipsis;max-width:min(70%,12rem);min-width:0}.pc-card-viewport{position:relative;display:block;width:100%;height:calc(100% - 28px);background:#0a0b10;overflow:hidden;isolation:isolate}.pc-card-viewport img{width:100%;height:100%;object-fit:cover;object-position:center center;display:block;pointer-events:none;filter:none;-webkit-filter:none;image-rendering:auto;-webkit-backface-visibility:hidden;backface-visibility:hidden;transform:translateZ(0)}.pc-card.is-active .pc-card-viewport img{filter:none!important;opacity:1}.pc-card-label{left:.65rem;font-size:.65rem;letter-spacing:.04em;text-transform:uppercase;padding:.28rem .55rem;border-radius:999px;background:rgba(8,10,16,.72);border:1px solid hsla(0,0%,100%,.12);-webkit-backdrop-filter:blur(10px);backdrop-filter:blur(10px);color:rgba(230,235,245,.92)}.pc-card-label,.pc-card-visit{position:absolute;bottom:.55rem;z-index:2;font-weight:600}.pc-card-visit{right:.65rem;display:inline-flex;align-items:center;gap:.3rem;font-size:.7rem;padding:.3rem .6rem;border-radius:999px;background:hsla(0,0%,100%,.92);color:#0b0c10;box-shadow:0 6px 18px rgba(0,0,0,.35)}.pc-glow{pointer-events:none;position:absolute;left:50%;bottom:8%;width:55%;height:40%;transform:translateX(-50%);background:radial-gradient(ellipse at center,rgba(100,150,255,.14),transparent 70%);filter:blur(8px);z-index:0}.pc-controls{display:flex;flex-wrap:wrap;gap:.65rem .85rem;margin-top:1.1rem}.pc-controls,.pc-nav{align-items:center;justify-content:center}.pc-nav{width:44px;height:44px;min-width:44px;min-height:44px;border-radius:999px;border:1px solid hsla(0,0%,100%,.12);background:hsla(0,0%,100%,.04);color:var(--text-primary);display:inline-flex;cursor:pointer;transition:transform .25s var(--ease-out-expo),border-color .25s ease,background .25s ease,opacity .2s ease}.pc-nav:hover:not(:disabled){transform:translateY(-2px);border-color:hsla(0,0%,100%,.22);background:hsla(0,0%,100%,.08)}.pc-nav:disabled{opacity:.35;cursor:not-allowed}.pc-nav:focus-visible{outline:2px solid #fff;outline-offset:3px}.pc-nav.pc-pause.is-paused{border-color:rgba(160,190,255,.35);background:rgba(91,156,255,.12)}.pc-dots{display:flex;gap:0;align-items:center}.pc-dot-btn{position:relative;width:44px;height:44px;margin:0;border:none;padding:0;background:transparent;cursor:pointer;display:inline-flex;align-items:center;justify-content:center;flex-shrink:0}.pc-dot-btn:after{content:"";width:7px;height:7px;border-radius:999px;background:hsla(0,0%,100%,.28);transition:width .35s var(--ease-out-expo),background .25s ease}.pc-dot-btn.is-active:after{width:22px;background:rgba(200,215,255,.92)}.pc-dot-btn:focus-visible{outline:2px solid #fff;outline-offset:2px;border-radius:8px}.pc-status{text-align:center;margin:.55rem 0 0;font-size:.78rem;color:var(--text-muted);overflow-wrap:anywhere}.pc-status-main{display:inline-block;max-width:100%}.pc-root--loading{min-height:clamp(300px,38vw,420px);border-radius:var(--radius);border:1px solid hsla(0,0%,100%,.08);background:linear-gradient(110deg,hsla(0,0%,100%,.03) 25%,hsla(0,0%,100%,.07) 37%,hsla(0,0%,100%,.03) 63%);background-size:200% 100%;animation:pc-shimmer 1.4s ease-in-out infinite}@media (prefers-reduced-motion:reduce){.pc-root--loading{animation:none;background:hsla(0,0%,100%,.04)}}@keyframes pc-shimmer{0%{background-position:200% 0}to{background-position:-200% 0}}.pc-empty,.pc-root--empty{min-height:220px;display:flex;flex-direction:column;align-items:center;justify-content:center;gap:.85rem;text-align:center;padding:2rem 1.25rem;border-radius:var(--radius);border:1px dashed hsla(0,0%,100%,.14);background:hsla(0,0%,100%,.03);color:var(--text-secondary)}.pc-empty p{margin:0;max-width:28ch}.pc-img-fallback{width:100%;height:100%;display:flex;flex-direction:column;align-items:center;justify-content:center;gap:.5rem;background:#12141c;color:rgba(200,210,230,.75);font-size:.8rem;padding:1rem;text-align:center}.pc-card.is-broken{border-color:hsla(0,0%,100%,.1)}.portfolio-page .cta-banner{border-radius:var(--radius);background:var(--glass-bg);border:1px solid var(--glass-border);backdrop-filter:blur(16px);-webkit-backdrop-filter:blur(16px);box-shadow:0 20px 60px rgba(0,0,0,.35);padding:clamp(1.5rem,3vw,2.25rem) clamp(1.5rem,4vw,2.75rem)}.portfolio-page .cta-banner:before{opacity:.45;background:radial-gradient(ellipse at 20% 50%,rgba(100,150,255,.14),transparent 60%)}.portfolio-page .cta-banner-actions{display:flex;flex-wrap:wrap;gap:.75rem 1rem;align-items:center;flex-shrink:0}@media (prefers-reduced-motion:reduce){.pc-nav:hover,.portfolio-page .btn-primary:hover{transform:none}}@media (max-width:960px){.portfolio-page .project-block,.portfolio-page .project-block.is-flip{grid-template-columns:1fr;gap:1.25rem;overflow:visible}.portfolio-page .project-block .project-carousel-wrap,.portfolio-page .project-block.is-flip .project-carousel-wrap{order:1}.portfolio-page .project-block .project-info,.portfolio-page .project-block.is-flip .project-info{order:2;background:none;padding:0}.portfolio-page .project-mobile-head{display:flex;flex-direction:column;gap:.35rem;order:0}.portfolio-page .project-title{max-width:none}.portfolio-page .project-info .project-meta,.portfolio-page .project-info .project-name{display:none}.portfolio-page .project-mobile-head .project-name{font-size:clamp(1.35rem,5vw,1.75rem)}.portfolio-page .project-desc{max-width:none;margin-bottom:1.1rem}.pc-stage{height:min(340px,78vw);overflow:hidden}.pc-card{width:min(82%,340px)}}@media (max-width:640px){.portfolio-page .page-hero{padding:calc(5rem + env(safe-area-inset-top, 0px)) 0 1.5rem}.pc-stage{height:min(260px,70vw)}.pc-card{width:min(86%,340px)}.pc-url{max-width:55%}.portfolio-page .project-ctas .btn{width:100%;justify-content:center}.portfolio-page .project-stack{gap:3rem}}