.pv{--pv-inset:clamp(22px,4vw,62px);--pv-tile:clamp(200px,21vw,268px);--pv-gap:var(--space-6);background:var(--color-ink-deep);min-height:clamp(560px,76svh,900px);color:var(--color-text);font-family:var(--font-brand);font-synthesis:none;font-variant-numeric:tabular-nums;border-radius:30px;flex-direction:column;margin:10px;padding-bottom:clamp(30px,4vw,62px);display:flex;position:relative;overflow:clip}.pv-head{padding:clamp(26px,3.4vw,52px)var(--pv-inset)clamp(20px,2.6vw,36px);flex:none}.pv-head p{margin-bottom:var(--space-7);color:var(--color-text-quiet);font-size:var(--type-meta);line-height:var(--leading-copy)}.pv-head h2{max-width:20ch;font-size:clamp(29px,2.4vw,var(--type-section));line-height:var(--leading-section);letter-spacing:var(--tracking-section);font-weight:var(--weight-light)}.pv-grid{padding:0 var(--pv-inset);grid-template-columns:repeat(auto-fill,minmax(var(--pv-tile),1fr));gap:var(--pv-gap);flex:1;grid-auto-rows:auto;list-style:none;display:grid}.pv-cell{--pv-ease:cubic-bezier(.16,.84,.28,1);aspect-ratio:4/3;min-width:0}.pv-tile{--pv-ease:cubic-bezier(.16,.84,.28,1);--pv-pad:var(--space-10);isolation:isolate;height:100%;min-height:132px;padding:var(--pv-pad);border:1px solid var(--color-rule-strong);border-radius:var(--radius-feature);background:var(--color-surface-subtle);transition:border-color .4s var(--pv-ease),transform .4s var(--pv-ease);flex-direction:column;text-decoration:none;display:flex;position:relative;overflow:hidden}.pv-fill{z-index:0;background:var(--pv-brand,var(--color-hover));transform-origin:50% 100%;transition:transform .38s var(--pv-ease);position:absolute;inset:0;transform:scaleY(0)}.pv-status{z-index:1;top:var(--pv-pad);left:var(--pv-pad);color:var(--color-text-quiet);letter-spacing:.12em;text-transform:uppercase;transition:color .38s var(--pv-ease),opacity .38s var(--pv-ease);font-size:10px;line-height:1;position:absolute}.pv-well{z-index:1;min-height:0;padding-bottom:var(--space-6);transition:transform .38s var(--pv-ease);flex:1;place-items:center;display:grid;position:relative}.pv-mark{width:var(--pv-logo-w,60%);aspect-ratio:var(--pv-ratio,3);background-color:var(--color-text);opacity:.58;-webkit-mask-image:var(--pv-src);-webkit-mask-image:var(--pv-src);mask-image:var(--pv-src);-webkit-mask-repeat:no-repeat;mask-repeat:no-repeat;-webkit-mask-size:var(--pv-mask-size,contain);-webkit-mask-size:var(--pv-mask-size,contain);mask-size:var(--pv-mask-size,contain);-webkit-mask-position:var(--pv-mask-pos,50% 50%);-webkit-mask-position:var(--pv-mask-pos,50% 50%);mask-position:var(--pv-mask-pos,50% 50%);transition:opacity .38s var(--pv-ease),background-color .38s var(--pv-ease);display:block}.pv-wordmark{color:var(--color-text-tertiary);letter-spacing:-.03em;text-align:center;transition:color .38s var(--pv-ease);font-size:clamp(17px,1.5vw,21px);line-height:1}.pv-reveal{z-index:1;right:var(--pv-pad);bottom:var(--pv-pad);left:var(--pv-pad);position:absolute}.pv-line{margin-bottom:-.16em;display:block;overflow:hidden}.pv-line>*{transition:transform .38s var(--pv-ease);padding-bottom:.16em;display:block;transform:translateY(118%)}.pv-name{color:var(--color-text);letter-spacing:.11em;text-transform:uppercase;opacity:.72;transition:color .38s var(--pv-ease);font-size:9.5px;line-height:1.2}.pv-tagline{color:var(--color-text);letter-spacing:-.012em;transition:color .38s var(--pv-ease);padding-top:5px;font-size:clamp(11px,.93vw,13.5px);line-height:1.32}.pv-visually-hidden{clip-path:inset(50%);white-space:nowrap;width:1px;height:1px;margin:-1px;padding:0;position:absolute;overflow:hidden}a.pv-tile:hover,a.pv-tile:focus-visible{border-color:#0000;outline:none;transform:translateY(-3px)}a.pv-tile:hover .pv-fill,a.pv-tile:focus-visible .pv-fill{transition-duration:.62s;transform:scaleY(1)}a.pv-tile:hover .pv-well,a.pv-tile:focus-visible .pv-well{transition-duration:.62s;transform:translateY(-14px)}a.pv-tile:hover .pv-mark,a.pv-tile:focus-visible .pv-mark{opacity:1}a.pv-tile:hover .pv-wordmark,a.pv-tile:focus-visible .pv-wordmark{color:var(--color-text)}a.pv-tile:hover .pv-status,a.pv-tile:focus-visible .pv-status{color:var(--color-text);opacity:.72}a.pv-tile:hover .pv-line>*,a.pv-tile:focus-visible .pv-line>*{transition-duration:.62s;transform:translateY(0)}a.pv-tile:hover .pv-line:nth-child(2)>*,a.pv-tile:focus-visible .pv-line:nth-child(2)>*{transition-delay:70ms}a.pv-tile:focus-visible{outline:2px solid var(--color-text);outline-offset:2px}.pv--inverse-hover{--pv-inverse-ink:var(--color-surface)}.pv--inverse-hover .pv-fill{background:#f1f0eb}.pv--inverse-hover a.pv-tile:hover .pv-mark,.pv--inverse-hover a.pv-tile:focus-visible .pv-mark{background-color:var(--pv-inverse-ink)}.pv--inverse-hover a.pv-tile:hover .pv-wordmark,.pv--inverse-hover a.pv-tile:focus-visible .pv-wordmark,.pv--inverse-hover a.pv-tile:hover .pv-status,.pv--inverse-hover a.pv-tile:focus-visible .pv-status,.pv--inverse-hover a.pv-tile:hover .pv-name,.pv--inverse-hover a.pv-tile:focus-visible .pv-name,.pv--inverse-hover a.pv-tile:hover .pv-tagline,.pv--inverse-hover a.pv-tile:focus-visible .pv-tagline{color:var(--pv-inverse-ink)}.pv--inverse-hover a.pv-tile:focus-visible{outline-color:var(--pv-inverse-ink)}.sticky-portfolio-logos .portfolio-logo-frame{background:var(--color-surface-subtle);place-items:center;display:grid}.sticky-portfolio-logos .portfolio-logo-frame .portfolio-logo-mark{width:var(--portfolio-logo-w,52%);object-fit:contain;filter:invert();opacity:.62;max-width:240px;height:auto;max-height:38%;transition:opacity var(--duration-ui)linear;position:static;transform:none}.sticky-portfolio-logos .portfolio-logo-project:hover .portfolio-logo-frame .portfolio-logo-mark{filter:invert();opacity:1;transform:none}.pv-index{background:var(--color-canvas);min-height:100svh;color:var(--color-text);font-family:var(--font-brand);padding:0 0 10px}.pv-index-head{padding:clamp(38px,6vw,84px) clamp(20px,4vw,72px) clamp(22px,3vw,44px)}.pv-index-head p{margin-bottom:var(--space-7);color:var(--color-text-quiet);font-size:var(--type-meta)}.pv-index-head h1{max-width:18ch;font-size:clamp(34px,4.4vw,var(--type-hero));line-height:var(--leading-hero);letter-spacing:var(--tracking-hero);font-weight:var(--weight-light)}.pv-index-head nav{gap:var(--space-7);margin-top:var(--space-12);flex-wrap:wrap;display:flex}.pv-index-head nav a{padding:var(--space-5)var(--space-11);border:var(--border-dark-strong);border-radius:var(--radius-control);color:var(--color-text-tertiary);font-size:var(--type-action);font-weight:var(--weight-medium);transition:color var(--duration-ui)linear,border-color var(--duration-ui)linear,background var(--duration-ui)linear;text-decoration:none}.pv-index-head nav a:hover{background:var(--color-hover);border-color:var(--color-text);color:var(--color-text)}.pv-label{align-items:baseline;gap:var(--space-11);padding:clamp(30px,4vw,56px)clamp(20px,4vw,72px)var(--space-11);display:flex}.pv-label b{color:var(--color-text);font-size:var(--type-meta);font-weight:var(--weight-medium)}.pv-label span{color:var(--color-text-quiet);font-size:var(--type-meta)}.pv-solo{background:var(--color-canvas);flex-direction:column;justify-content:center;min-height:100svh;padding:10px 0;display:flex}.pv-solo-scroll{justify-content:flex-start}.pv-back{padding:var(--space-5)0;color:var(--color-text-quiet);font-family:var(--font-brand);font-size:var(--type-meta);margin:0 0 0 clamp(20px,4vw,72px);text-decoration:none;display:inline-block}.pv-back:hover{color:var(--color-text)}@supports (animation-timeline:view()){@media (prefers-reduced-motion:no-preference){@keyframes pv-arrive{0%{opacity:0;transform:translateY(22px)}to{opacity:1;transform:none}}.pv-cell{animation:pv-arrive both var(--pv-ease);animation-timeline:view();animation-range:entry entry 88%}.pv-cell:nth-child(4n+2){animation-range:entry 4% entry 92%}.pv-cell:nth-child(4n+3){animation-range:entry 8% entry 96%}.pv-cell:nth-child(4n+4){animation-range:entry 12%}}}@media (max-width:620px){.pv{border-radius:18px;margin:6px}.pv-tile{min-height:150px}}@media (prefers-reduced-motion:reduce){.pv-tile,.pv-fill,.pv-well,.pv-mark,.pv-wordmark,.pv-status,.pv-line>*,.portfolio-logo-mark{transition-duration:1ms!important;transition-delay:0s!important}a.pv-tile:hover,a.pv-tile:focus-visible,a.pv-tile:hover .pv-well,a.pv-tile:focus-visible .pv-well{transform:none}}
