.portfolio-page{padding-block:clamp(40px,6vw,80px) clamp(64px,8vw,112px)}
.portfolio-intro{display:grid;grid-template-columns:1fr 1fr;align-items:start;gap:clamp(32px,6vw,80px);padding-bottom:clamp(40px,6vw,72px)}
.portfolio-intro h1{margin:0;font-size:var(--type-display);line-height:1.05}
.portfolio-intro__copy p{margin:0;font-size:1rem;line-height:1.8;color:#62676d;font-weight:400}
.portfolio-gallery{display:grid;grid-template-columns:repeat(3,minmax(0,1fr));gap:24px}
.portfolio-photo{position:relative;display:block;aspect-ratio:4/3;overflow:hidden;background:#f9f9f9;isolation:isolate}
.portfolio-photo img{width:100%;height:100%;object-fit:cover}
.portfolio-photo::after{content:"";position:absolute;inset:0;background:rgba(10,30,52,.13);opacity:0;transition:opacity .2s}
.portfolio-photo__expand{position:absolute;right:14px;bottom:14px;z-index:1;display:grid;place-items:center;width:36px;height:36px;background:rgba(255,255,255,.94);color:#194683;opacity:0;transition:opacity .2s}
.portfolio-photo__expand svg{width:20px;height:20px}
.portfolio-photo:hover::after,.portfolio-photo:focus-visible::after,.portfolio-photo:hover .portfolio-photo__expand,.portfolio-photo:focus-visible .portfolio-photo__expand{opacity:1}
.portfolio-photo:focus-visible{outline:2px solid #194683;outline-offset:4px}
.portfolio-viewer{position:fixed;inset:0;width:100%;max-width:none;height:100%;height:100dvh;max-height:none;margin:0;padding:0;border:0;border-radius:0!important;background:rgba(9,16,25,.97);color:#fff;overflow:hidden}
.portfolio-viewer,.portfolio-viewer *{-webkit-user-select:none;user-select:none}
.portfolio-viewer__image{-webkit-user-drag:none}
.portfolio-viewer::backdrop{background:#091019}
.portfolio-viewer[open]{display:grid;grid-template-rows:64px minmax(0,1fr) 64px;animation:portfolio-reveal .18s ease-out}
.portfolio-viewer__bar{display:flex;align-items:center;justify-content:space-between;padding-inline:24px;font-size:.875rem}
.portfolio-viewer button{display:grid;place-items:center;width:44px;height:44px;min-height:44px;padding:0;cursor:pointer}
.portfolio-viewer button:focus-visible{outline:2px solid #fff;outline-offset:3px}
.portfolio-viewer svg{width:24px;height:24px}
.portfolio-viewer__stage{min-height:0;overflow:hidden;cursor:grab;touch-action:pan-y pinch-zoom}
.portfolio-viewer__stage.is-dragging{cursor:grabbing}
.portfolio-viewer__track{display:grid;grid-template-columns:repeat(3,100%);grid-template-rows:minmax(0,1fr);min-height:0;width:100%;height:100%;transform:translate3d(-100%,0,0);transition:transform .28s cubic-bezier(.22,1,.36,1)}
.portfolio-viewer__track.is-resetting,.portfolio-viewer__stage.is-dragging .portfolio-viewer__track{transition:none}
.portfolio-viewer__slide{display:flex;align-items:center;justify-content:center;min-width:0;min-height:0;height:100%;overflow:hidden;padding:8px clamp(14px,5vw,64px)}
.portfolio-viewer__image{display:block;min-width:0;min-height:0;max-width:100%;max-height:100%;width:100%;height:100%;object-fit:contain;border-radius:0!important}
.portfolio-viewer__navigation{display:flex;align-items:center;justify-content:center;gap:12px}
html.portfolio-viewer-open{overflow:hidden}
@keyframes portfolio-reveal{from{opacity:0}to{opacity:1}}
@media(max-width:980px){.portfolio-gallery{grid-template-columns:repeat(2,minmax(0,1fr))}}
@media(max-width:600px){.portfolio-intro{grid-template-columns:1fr;gap:24px}.portfolio-gallery{grid-template-columns:1fr;gap:18px}.portfolio-viewer__bar{padding-inline:14px}.portfolio-photo__expand{opacity:1}}
