/* =========================================================
   PORTFOLIO — portfolio.html only (2026-10-26).
   Loaded after site.css by app/(portfolio)/layout.jsx; uses the site's tokens.
   Every class here starts with pf- so nothing on other pages can be touched.
========================================================= */

/* Hero: the project index under the lead */
.pf-index{margin-top:38px;display:flex;flex-wrap:wrap;gap:10px}
.pf-index a{display:inline-flex;align-items:center;gap:10px;padding:9px 18px 9px 14px;border-radius:100px;
  background:rgba(255,252,246,.66);border:1px solid var(--line);backdrop-filter:blur(8px);
  font-family:var(--display);font-weight:600;font-size:14px;letter-spacing:-.01em;color:var(--ink-soft);
  box-shadow:0 1px 2px rgba(44,33,24,.05),0 8px 22px -14px rgba(147,113,44,.35);
  transition:transform .45s var(--spring),background-color .3s,color .3s,border-color .3s}
.pf-index a:hover{transform:translateY(-2px);background:var(--ivory);color:var(--ink);border-color:rgba(184,148,74,.45)}
.pf-index a::before{content:"";width:6px;height:6px;border-radius:50%;background:var(--gold);transition:transform .45s var(--spring)}
.pf-index a:hover::before{transform:scale(1.5)}
.pf-index a:active{transform:translateY(0) scale(.97)}
.pf-index a:focus-visible{outline:3px solid var(--gold);outline-offset:3px}

/* The stage: a dark screening room that rises over the hero */
.pf-stage{position:relative;z-index:3;margin-top:-28px;padding:120px 0 150px;background:var(--espresso);color:var(--ivory);
  border-radius:44px 44px 0 0;overflow:hidden;
  box-shadow:0 -30px 60px -40px rgba(44,33,24,.55)}
.pf-glow{position:absolute;inset:0;pointer-events:none;z-index:0}
.pf-glow span{position:absolute;border-radius:50%;filter:blur(90px);opacity:.34}
.pf-glow span:nth-child(1){width:720px;height:720px;left:-260px;top:-220px;background:radial-gradient(circle,var(--gold),transparent 66%)}
.pf-glow span:nth-child(2){width:640px;height:640px;right:-240px;top:38%;background:radial-gradient(circle,var(--terra),transparent 66%);opacity:.26}
.pf-glow span:nth-child(3){width:620px;height:620px;left:18%;bottom:-300px;background:radial-gradient(circle,var(--clay-hi),transparent 66%);opacity:.18}
.pf-stage::after{content:"";position:absolute;left:0;right:0;bottom:0;height:1px;
  background:linear-gradient(90deg,transparent,rgba(220,190,124,.35),transparent)}
.pf-stage-inner{position:relative;z-index:1}
.pf-stage .sec-head{margin-bottom:96px}
.pf-stage .sec-head h2{color:var(--ivory)}
.pf-stage .sec-head h2 em{color:var(--gold-hi)}
.pf-stage .sec-head p{color:rgba(247,243,236,.62)}
.pf-stage .eyebrow{color:var(--gold-hi)}
.pf-stage .eyebrow::before{background:var(--gold-hi)}

/* One project per row: the film on one side, the words on the other */
.pf-list{list-style:none;margin:0;padding:0;display:flex;flex-direction:column;gap:136px}
.pf-row{display:grid;grid-template-columns:minmax(0,1.42fr) minmax(0,1fr);gap:72px;align-items:center;scroll-margin-top:calc(var(--header-h) + 40px)}
.pf-row.flip{grid-template-columns:minmax(0,1fr) minmax(0,1.42fr)}
.pf-row.flip .pf-media{order:2}

/* The film frame: a browser window lifted off the page */
.pf-media{position:relative}
.pf-media::before{content:"";position:absolute;inset:8% 6% -6%;border-radius:40px;z-index:0;
  background:radial-gradient(60% 60% at 50% 60%,rgba(184,148,74,.38),transparent 72%);filter:blur(30px);opacity:.8}
.pf-frame{position:relative;z-index:1;display:block;width:100%;padding:0;border:0;cursor:pointer;text-align:left;
  background:#211912;border-radius:20px;overflow:hidden;
  box-shadow:0 0 0 1px rgba(247,243,236,.09),0 2px 4px rgba(0,0,0,.2),0 30px 60px -24px rgba(0,0,0,.6),0 60px 120px -50px rgba(147,113,44,.45);
  transition:transform .7s var(--spring)}
.pf-frame:hover{transform:translateY(-8px) rotate(-.4deg)}
.pf-row.flip .pf-frame:hover{transform:translateY(-8px) rotate(.4deg)}
.pf-frame:active{transform:translateY(-3px) scale(.99)}
.pf-frame:focus-visible{outline:3px solid var(--gold-hi);outline-offset:6px}
/* The button, not the picture or the video inside it, takes the click and the focus */
.pf-frame *{pointer-events:none}
.pf-chrome{display:flex;align-items:center;gap:14px;height:38px;padding:0 16px;background:linear-gradient(#2E241B,#271E16);
  border-bottom:1px solid rgba(247,243,236,.06)}
.pf-dots{display:flex;gap:7px}
.pf-dots i{width:10px;height:10px;border-radius:50%;background:rgba(247,243,236,.16)}
.pf-dots i:first-child{background:var(--terra-hi);opacity:.75}
.pf-dots i:nth-child(2){background:var(--gold-hi);opacity:.75}
.pf-chrome-label{flex:1;max-width:340px;margin:0 auto;padding:4px 14px;border-radius:8px;background:rgba(247,243,236,.06);
  font-family:var(--mono);font-size:11px;letter-spacing:.03em;color:rgba(247,243,236,.5);text-align:center;
  white-space:nowrap;overflow:hidden;text-overflow:ellipsis;transform:translateX(-30px)}
.pf-screen{position:relative;display:block;aspect-ratio:16/9;overflow:hidden;background:#15100B}
.pf-poster,.pf-preview{position:absolute;inset:0;width:100%;height:100%;object-fit:cover;
  transition:transform 1.2s var(--ease),opacity .7s var(--ease)}
.pf-preview{opacity:0}
.pf-preview.on{opacity:1}
.pf-frame:hover .pf-poster,.pf-frame:hover .pf-preview{transform:scale(1.035)}
/* Colour treatment: a warm multiply wash and a dark fade at the bottom */
.pf-tint{position:absolute;inset:0;pointer-events:none;
  background:linear-gradient(to top,rgba(28,24,19,.6),rgba(28,24,19,0) 46%),linear-gradient(rgba(220,190,124,.10),rgba(220,190,124,.10));
  mix-blend-mode:multiply;transition:opacity .6s var(--ease)}
.pf-frame:hover .pf-tint{opacity:.55}

/* The play button and the duration */
.pf-play{position:absolute;inset:0;display:grid;place-items:center;pointer-events:none}
.pf-play-disc{position:relative;display:grid;place-items:center;width:84px;height:84px;border-radius:50%;
  color:var(--espresso);background:rgba(247,243,236,.92);padding-left:4px;
  box-shadow:0 12px 30px -8px rgba(0,0,0,.5),0 0 0 10px rgba(247,243,236,.16);
  transition:transform .6s var(--spring),background-color .35s,color .35s}
.pf-play-disc::after{content:"";position:absolute;inset:-10px;border-radius:50%;border:1.5px solid rgba(247,243,236,.5);
  animation:pf-ring 2.6s var(--ease) infinite}
@keyframes pf-ring{0%{transform:scale(.92);opacity:.9}100%{transform:scale(1.45);opacity:0}}
.pf-frame:hover .pf-play-disc{transform:scale(1.1);background:var(--gold);color:#fff}
.pf-badge{position:absolute;left:18px;bottom:16px;display:inline-flex;align-items:center;gap:7px;padding:6px 12px;border-radius:100px;
  background:rgba(28,24,19,.62);backdrop-filter:blur(10px);border:1px solid rgba(247,243,236,.14);
  font-family:var(--mono);font-size:12px;color:var(--ivory)}

/* The words */
.pf-copy{position:relative}
.pf-meta{position:relative;display:flex;flex-wrap:wrap;align-items:center;gap:12px 16px;margin-bottom:20px}
.pf-kind{font-family:var(--mono);font-size:11.5px;letter-spacing:.03em;color:rgba(247,243,236,.72);
  padding:5px 12px;border-radius:100px;border:1px solid rgba(247,243,236,.16);background:rgba(247,243,236,.04)}
.pf-copy h3{position:relative;font-size:clamp(2rem,3.4vw,2.9rem);font-weight:800;letter-spacing:-.04em;line-height:1.04;color:var(--ivory)}
.pf-client{margin-top:12px;font-family:var(--serif);font-style:italic;font-size:1.3rem;color:var(--gold-hi)}
.pf-summary{margin-top:18px;font-size:1.08rem;line-height:1.7;color:rgba(247,243,236,.74);max-width:520px}
.pf-points{list-style:none;margin:26px 0 0;padding:0;display:flex;flex-direction:column;gap:12px;max-width:520px}
.pf-points li{position:relative;padding-left:30px;font-size:15px;line-height:1.6;color:rgba(247,243,236,.66)}
.pf-points li::before{content:"";position:absolute;left:0;top:.42em;width:16px;height:16px;border-radius:50%;
  background:radial-gradient(circle,var(--gold-hi) 0 3px,transparent 3.5px),rgba(220,190,124,.14);
  box-shadow:inset 0 0 0 1px rgba(220,190,124,.4)}
.pf-actions{margin-top:34px;display:flex;flex-wrap:wrap;align-items:center;gap:16px 28px}
.pf-actions .btn{padding:14px 26px}
.pf-actions .tlink{color:var(--ivory)}
.pf-actions .tlink::after{background:var(--gold-hi)}
.pf-actions .tlink:focus-visible{outline:2px solid var(--gold-hi);outline-offset:4px;border-radius:2px}
.pf-actions .tlink:active{opacity:.7}

/* The player */
.pf-player{position:fixed;inset:0;z-index:2000;display:grid;place-items:center;padding:24px;
  opacity:0;pointer-events:none;transition:opacity .45s var(--ease)}
.pf-player.open{opacity:1;pointer-events:auto}
.pf-player-backdrop{position:absolute;inset:0;background:rgba(20,15,10,.86);backdrop-filter:blur(14px) saturate(1.2)}
.pf-player-panel{position:relative;width:min(1180px,100%);max-height:100%;display:flex;flex-direction:column;gap:18px;
  transform:translateY(26px) scale(.97);transition:transform .7s var(--spring)}
.pf-player.open .pf-player-panel{transform:none}
.pf-player-top{display:flex;align-items:flex-end;justify-content:space-between;gap:20px;color:var(--ivory)}
.pf-player-count{display:block;font-family:var(--mono);font-size:12px;letter-spacing:.04em;color:var(--gold-hi);margin-bottom:8px}
.pf-player-top h2{font-size:clamp(1.5rem,2.6vw,2.2rem);font-weight:800;letter-spacing:-.035em}
.pf-player-video{border-radius:18px;overflow:hidden;background:#000;
  box-shadow:0 0 0 1px rgba(247,243,236,.1),0 40px 90px -30px rgba(0,0,0,.8),0 0 120px -40px rgba(184,148,74,.5)}
.pf-player-video video{width:100%;max-height:calc(100vh - 220px);max-height:calc(100svh - 220px);aspect-ratio:16/9;background:#000}
.pf-icon-btn{flex:0 0 auto;display:grid;place-items:center;width:48px;height:48px;border-radius:50%;cursor:pointer;
  border:1px solid rgba(247,243,236,.22);background:rgba(247,243,236,.06);color:var(--ivory);
  transition:transform .45s var(--spring),background-color .3s,color .3s}
.pf-icon-btn:hover{transform:rotate(90deg);background:var(--ivory);color:var(--ink)}
.pf-icon-btn:active{transform:rotate(90deg) scale(.92)}
.pf-icon-btn:focus-visible{outline:3px solid var(--gold-hi);outline-offset:3px}
.pf-player-nav{display:flex;justify-content:space-between;gap:16px}
.pf-nav-btn{display:inline-flex;align-items:center;gap:14px;padding:10px 18px;border-radius:14px;cursor:pointer;text-align:left;
  border:1px solid rgba(247,243,236,.14);background:rgba(247,243,236,.04);color:var(--ivory);
  font-family:var(--display);font-weight:600;font-size:15px;letter-spacing:-.01em;
  transition:transform .45s var(--spring),background-color .3s,border-color .3s}
.pf-nav-btn small{display:block;font-family:var(--mono);font-weight:400;font-size:11px;letter-spacing:.04em;color:rgba(247,243,236,.5)}
.pf-nav-btn.next{text-align:right}
.pf-nav-btn .arrow{font-size:18px;color:var(--gold-hi);transition:transform .45s var(--spring)}
.pf-nav-btn:hover{background:rgba(247,243,236,.1);border-color:rgba(220,190,124,.4)}
.pf-nav-btn:hover .arrow{transform:translateX(-4px)}
.pf-nav-btn.next:hover .arrow{transform:translateX(4px)}
.pf-nav-btn:active{transform:scale(.97)}
.pf-nav-btn:focus-visible{outline:3px solid var(--gold-hi);outline-offset:3px}
body.pf-player-lock{overflow:hidden}

/* The final call to action follows the dark stage: no mountain edge between them */
.pf-page .fcta{padding-top:120px}
.pf-page .fcta .mountains{display:none}

/* Tablet and phone */
@media(max-width:980px){
  .pf-row,.pf-row.flip{grid-template-columns:1fr;gap:40px}
  .pf-row.flip .pf-media{order:0}
  .pf-list{gap:104px}
  }
@media(max-width:560px){
  .pf-stage{padding:84px 0 110px;border-radius:30px 30px 0 0}
  .pf-stage .sec-head{margin-bottom:64px}
  .pf-list{gap:84px}
  .pf-chrome{height:30px;padding:0 12px}
  .pf-dots i{width:8px;height:8px}
  .pf-chrome-label{transform:none;font-size:10px}
  .pf-play-disc{width:64px;height:64px}
  .pf-frame{border-radius:16px}
  .pf-index a{font-size:13px}
    .pf-player{padding:16px}
  .pf-player-nav{gap:10px}
  .pf-nav-btn{flex:1 1 0;min-width:0;gap:10px;padding:10px 14px;font-size:13.5px;line-height:1.3}
  .pf-nav-btn.next{justify-content:flex-end}
  .pf-nav-btn > span:not(.arrow){min-width:0;overflow:hidden;text-overflow:ellipsis;white-space:nowrap}
}
@media(prefers-reduced-motion:reduce){
  .pf-frame,.pf-frame:hover,.pf-poster,.pf-preview,.pf-player-panel,.pf-play-disc{transition:none;transform:none!important}
  .pf-play-disc::after{display:none}
}
