:root{
  --pf-ink:#13242a;
  --pf-paper:#f7f4ed;
  --pf-blue:#3156e8;
  --pf-coral:#ff7567;
  --pf-lime:#c9ff4a;
  --pf-teal:#72e7d6;
  --pf-line:#b8c9c9;
}
.portfolio-v114{
  position:relative;
  isolation:isolate;
  overflow:hidden;
  padding:128px 4.2vw 120px;
  background:linear-gradient(180deg,#fff 0%,var(--pf-paper) 100%);
  border-bottom:1px solid var(--pf-line);
  scroll-margin-top:90px;
  color:var(--pf-ink);
  font-family:var(--font-manrope,Manrope,Arial,sans-serif);
}
.portfolio-v114:before{
  content:"";
  position:absolute;
  z-index:-1;
  width:520px;
  height:520px;
  right:-230px;
  top:80px;
  border:1px solid rgba(49,86,232,.13);
  border-radius:50%;
  box-shadow:0 0 0 92px rgba(114,231,214,.04),0 0 0 184px rgba(49,86,232,.025);
  animation:pfOrbit 18s linear infinite;
}
.portfolio-head{display:grid;grid-template-columns:minmax(0,1.2fr) minmax(320px,.7fr);gap:7vw;align-items:end;margin-bottom:58px}
.portfolio-head>div>span{display:inline-flex;align-items:center;gap:10px;font:700 11px/1.2 var(--font-mono,"IBM Plex Mono",monospace);letter-spacing:.14em;color:var(--pf-blue)}
.portfolio-head>div>span:before{content:"";width:9px;height:9px;border-radius:50%;background:var(--pf-coral);box-shadow:0 0 0 5px rgba(255,117,103,.12);animation:pfPulse 2.6s ease-in-out infinite}
.portfolio-head h2{font-family:var(--font-manrope,Manrope,Arial,sans-serif);font-size:clamp(50px,5vw,84px);line-height:.96;letter-spacing:-.06em;margin:20px 0 0;font-weight:540}
.portfolio-head h2 em{font-family:var(--font-display,"DM Serif Display",serif);font-weight:400;color:var(--pf-blue)}
.portfolio-head>p{font-size:17px;line-height:1.75;color:#64767a;margin:0 0 5px;max-width:590px}
.portfolio-grid{display:grid;grid-template-columns:repeat(2,minmax(0,1fr));gap:22px;align-items:stretch}
.portfolio-card{
  --pf-accent:var(--pf-blue);
  --pf-tint:#eef2ff;
  grid-column:auto!important;
  position:relative;
  min-width:0;
  min-height:610px;
  height:100%;
  overflow:hidden;
  display:flex;
  flex-direction:column;
  color:var(--pf-ink);
  text-decoration:none;
  background:linear-gradient(155deg,#fff 62%,var(--pf-tint) 145%);
  border:1px solid #b6c5c6;
  border-radius:28px;
  box-shadow:0 8px 25px rgba(25,45,51,.035);
  transition:transform .45s cubic-bezier(.2,.8,.2,1),box-shadow .45s,border-color .45s;
}
.portfolio-card:nth-child(4n+2){--pf-accent:var(--pf-coral);--pf-tint:#fff0ed}
.portfolio-card:nth-child(4n+3){--pf-accent:#23aa96;--pf-tint:#e9faf6}
.portfolio-card:nth-child(4n+4){--pf-accent:#718d13;--pf-tint:#f5ffdc}
.portfolio-card:before{content:"";position:absolute;z-index:3;left:0;right:0;top:0;height:5px;background:linear-gradient(90deg,var(--pf-accent),var(--pf-teal),var(--pf-lime));transform-origin:left;transform:scaleX(.22);transition:transform .5s cubic-bezier(.2,.8,.2,1)}
.portfolio-card:hover{transform:translateY(-9px);box-shadow:0 28px 60px rgba(25,45,51,.14);border-color:var(--pf-accent)}
.portfolio-card:hover:before{transform:scaleX(1)}
.portfolio-shot{position:relative;flex:0 0 auto;aspect-ratio:16/9;overflow:hidden;background:#e8eeee;border-bottom:1px solid #c7d2d3}
.portfolio-shot:before{content:"";position:absolute;z-index:2;top:-45%;bottom:-45%;left:-42%;width:22%;background:linear-gradient(90deg,transparent,rgba(255,255,255,.48),transparent);transform:rotate(18deg);transition:left .8s cubic-bezier(.2,.8,.2,1);pointer-events:none}
.portfolio-shot:after{content:"";position:absolute;inset:0;box-shadow:inset 0 0 0 1px rgba(255,255,255,.25);pointer-events:none}
.portfolio-card:hover .portfolio-shot:before{left:122%}
.portfolio-shot img{display:block;width:100%;height:100%;object-fit:cover;object-position:top center;transition:transform .8s cubic-bezier(.2,.8,.2,1),filter .45s}
.portfolio-card:hover .portfolio-shot img{transform:scale(1.04);filter:saturate(1.09) contrast(1.02)}
.portfolio-live{position:absolute;z-index:3;top:18px;right:18px;padding:9px 12px;border-radius:999px;background:rgba(255,255,255,.93);backdrop-filter:blur(10px);box-shadow:0 8px 24px rgba(12,25,29,.12);font:750 9px/1 var(--font-mono,"IBM Plex Mono",monospace);letter-spacing:.1em;color:#24383d;display:flex;align-items:center;gap:7px}
.portfolio-live i{width:7px;height:7px;border-radius:50%;background:var(--pf-accent);box-shadow:0 0 0 4px color-mix(in srgb,var(--pf-accent) 16%,transparent);animation:pfLive 2s ease-out infinite}
.portfolio-card-copy{padding:28px 30px 30px;display:flex;flex-direction:column;flex:1;min-height:272px}
.portfolio-card-copy>span{font:700 9px/1.3 var(--font-mono,"IBM Plex Mono",monospace);letter-spacing:.12em;color:var(--pf-accent)}
.portfolio-card-copy h3{min-height:1.05em;font-family:var(--font-manrope,Manrope,Arial,sans-serif);font-size:clamp(30px,3vw,48px);font-weight:540;line-height:1;letter-spacing:-.055em;margin:17px 0 12px;transition:color .3s}
.portfolio-card:hover .portfolio-card-copy h3{color:var(--pf-accent)}
.portfolio-card-copy p{min-height:72px;font-size:14px;line-height:1.7;color:#66777b;margin:0;max-width:700px}
.portfolio-card-copy>div{min-height:32px;display:flex;gap:7px;flex-wrap:wrap;margin:22px 0 26px;align-content:flex-start}
.portfolio-card-copy b{border:1px solid #ccd7d8;border-radius:999px;padding:8px 10px;font:650 9px/1 var(--font-mono,"IBM Plex Mono",monospace);color:#465b60;background:rgba(255,255,255,.78);transition:background .25s,border-color .25s,color .25s}
.portfolio-card:hover .portfolio-card-copy b{border-color:color-mix(in srgb,var(--pf-accent) 45%,#ccd7d8);color:var(--pf-accent);background:#fff}
.portfolio-card-copy>strong{margin-top:auto;display:flex;align-items:center;justify-content:space-between;border-top:1px solid #d3dddd;padding-top:18px;font-family:var(--font-manrope,Manrope,Arial,sans-serif);font-size:13px;letter-spacing:.01em}
.portfolio-card-copy>strong i{font-style:normal;font-size:20px;color:var(--pf-accent);transition:transform .3s}
.portfolio-card:hover .portfolio-card-copy>strong i{transform:translate(5px,-5px) rotate(4deg)}
.portfolio-note{margin-top:24px;border:1px solid #9fb2b4;border-radius:22px;background:#142a30;color:#fff;padding:24px 26px;display:grid;grid-template-columns:auto 1fr auto;gap:30px;align-items:center;box-shadow:inset 5px 0 0 var(--pf-lime)}
.portfolio-note span{font:700 9px/1.3 var(--font-mono,"IBM Plex Mono",monospace);letter-spacing:.12em;color:var(--pf-lime)}
.portfolio-note p{margin:0;color:#adc0c3;font-size:13px;line-height:1.55}
.portfolio-note a{color:#fff;text-decoration:none;border-bottom:1px solid #647b7f;padding:8px 0;font-weight:750;font-size:13px;white-space:nowrap;transition:color .25s,border-color .25s}
.portfolio-note a:hover{color:var(--pf-lime);border-color:var(--pf-lime)}
.portfolio-note a i{font-style:normal;color:var(--pf-lime)}
@keyframes pfOrbit{to{transform:rotate(360deg)}}
@keyframes pfPulse{50%{box-shadow:0 0 0 9px rgba(255,117,103,.04)}}
@keyframes pfLive{0%{box-shadow:0 0 0 0 color-mix(in srgb,var(--pf-accent) 38%,transparent)}70%{box-shadow:0 0 0 8px transparent}100%{box-shadow:0 0 0 0 transparent}}
@media(max-width:1100px){.portfolio-head{grid-template-columns:1fr;gap:20px}.portfolio-card{min-height:570px}.portfolio-card-copy p{min-height:96px}.portfolio-note{grid-template-columns:1fr auto}.portfolio-note span{grid-column:1/-1}}
@media(max-width:820px){.portfolio-grid{grid-template-columns:1fr}.portfolio-card{min-height:0}.portfolio-card-copy p{min-height:0}.portfolio-note{grid-template-columns:1fr;gap:14px}.portfolio-note span{grid-column:auto}.portfolio-note a{justify-self:start}}
@media(max-width:720px){.portfolio-v114{padding:88px 22px 80px}.portfolio-head{margin-bottom:34px}.portfolio-head h2{font-size:48px}.portfolio-head>p{font-size:15px}.portfolio-grid{gap:16px}.portfolio-card{border-radius:22px}.portfolio-card-copy{min-height:0;padding:23px 22px 24px}.portfolio-card-copy h3{font-size:32px}.portfolio-live{top:12px;right:12px}.portfolio-note{padding:22px}}
@media(prefers-reduced-motion:reduce){.portfolio-v114:before,.portfolio-head>div>span:before,.portfolio-live i{animation:none}.portfolio-card,.portfolio-card:before,.portfolio-shot:before,.portfolio-shot img,.portfolio-card-copy h3,.portfolio-card-copy b,.portfolio-card-copy>strong i{transition:none}}
