/* ATOMIC14 — project page template */
.pj-page main{background:var(--ink)}

/* hero: full-bleed key visual */
.pj-hero{padding-top:72px;background:var(--ink)}
.pj-hero figure{margin:0}
.pj-hero img{width:100%;height:auto;max-height:calc(100svh - 72px);object-fit:contain}
/* main image is always shown whole: letterboxed over a blurred copy of itself */
.pj-hero:not(.is-film) figure{position:relative;overflow:hidden;background:#0b0b0c}
.pj-hero .pj-bgfill{position:absolute;inset:-60px;background:center/cover no-repeat;filter:blur(48px) brightness(.45) saturate(1.1);transform:scale(1.08);pointer-events:none}
.pj-hero:not(.is-film) figure img{position:relative;display:block}

/* title + intro */
.pj-head{padding:clamp(16px,1.8vw,26px) 0 clamp(48px,6vw,96px)}
.pj-crumb{display:flex;justify-content:space-between;gap:16px;padding-bottom:12px;border-bottom:1px solid var(--line-d);margin-bottom:clamp(12px,1.4vw,18px);font-size:12px}
.pj-crumb a{opacity:.75;transition:opacity .3s}.pj-crumb a:hover{opacity:1;color:var(--red)}
.pj-crumb span{opacity:.55}
.pj-title .mono{font-size:clamp(11px,.9vw,13px)}
.pj-title h1{margin-top:14px}
.pj-intro{display:grid;grid-template-columns:minmax(0,1.6fr) minmax(0,1fr);gap:clamp(28px,6vw,120px);margin-top:clamp(32px,4.4vw,72px);align-items:start}
.pj-lede{font-size:clamp(20px,1.9vw,30px);line-height:1.38;letter-spacing:-.02em;color:rgba(245,244,240,.78);max-width:34em}
.pj-lede mark{background:var(--red);color:#fff;padding:.02em .2em .06em;box-decoration-break:clone;-webkit-box-decoration-break:clone}
.pj-meta{display:grid;grid-template-columns:1fr 1fr;gap:22px 28px;border-top:1px solid var(--line-d);padding-top:20px}
.pj-meta dt{font-family:var(--mono);font-size:11px;letter-spacing:.1em;text-transform:uppercase;color:var(--red);margin-bottom:6px}
.pj-meta dd{font-size:16px;line-height:1.45;color:rgba(245,244,240,.86)}

/* section label */
.pj-label{display:flex;align-items:baseline;gap:18px;padding-top:16px;border-top:1px solid var(--line-d);margin-bottom:clamp(22px,2.6vw,40px)}
.pj-label .mono{color:var(--red);font-weight:500;font-size:12px}
.pj-label h2{font-size:clamp(22px,2vw,32px);font-weight:500;letter-spacing:-.03em}

/* image grids */
.pj-block{padding-bottom:clamp(56px,7vw,120px)}
.pj-grid{display:grid;grid-template-columns:1fr 1fr;gap:clamp(8px,1vw,16px)}
.pj-grid .full{grid-column:1/-1}
.pj-grid.four{grid-template-columns:1fr 1fr}
.pj-zoom{margin:0;overflow:hidden;background:var(--ink-3);cursor:zoom-in;position:relative}
.pj-zoom img{width:100%;height:auto;transition:transform 1.2s var(--ease),opacity .6s}
.pj-zoom:hover img{transform:scale(1.025)}
.pj-hero .pj-zoom:hover img{transform:none}

/* motion */
.pj-motion{padding-bottom:clamp(56px,7vw,120px)}
.pj-film{position:relative;background:#000}
.pj-film video{width:100%;height:auto}
.pj-tag{position:absolute;left:var(--g);bottom:clamp(14px,1.6vw,24px);display:inline-flex;align-items:center;gap:8px;background:rgba(9,9,10,.6);backdrop-filter:blur(8px);-webkit-backdrop-filter:blur(8px);padding:7px 12px;border-radius:99px;font-size:10.5px}
.pj-tag i{width:7px;height:7px;border-radius:50%;background:var(--red);animation:pjpulse 1.6s ease-in-out infinite}
@keyframes pjpulse{50%{opacity:.25}}
.pj-copy{font-size:clamp(17px,1.35vw,21px);line-height:1.55;color:rgba(245,244,240,.72);max-width:52ch}
.pj-copy strong{color:#fff;font-weight:500}
.pj-motion .pj-copy{margin-top:clamp(22px,2.6vw,40px)}

/* behind the scenes */
.pj-bts{background:var(--ink-2);padding:clamp(56px,7vw,120px) 0}
.pj-bts-head{display:grid;grid-template-columns:minmax(0,1fr) minmax(0,1fr);gap:clamp(24px,5vw,90px);align-items:end;margin-bottom:clamp(36px,4.4vw,72px)}
.pj-bts-head .h-m em,.pj-sub .h-m em{color:#fff}
.pj-steps{list-style:none;display:grid;grid-template-columns:1fr 1fr;gap:clamp(36px,4vw,64px) clamp(12px,1.6vw,28px)}
.pj-steps li>div{margin-top:16px;display:grid;grid-template-columns:auto 1fr;gap:4px 18px;align-items:baseline}
.pj-steps .mono{grid-row:span 2;font-size:11px;padding-top:4px}
.pj-steps h4{font-size:clamp(18px,1.4vw,22px);font-weight:500;letter-spacing:-.02em}
.pj-steps p{font-size:15px;line-height:1.5;color:rgba(245,244,240,.62);max-width:46ch}
.pj-sub{display:grid;grid-template-columns:minmax(0,1fr) minmax(0,1fr);gap:clamp(24px,5vw,90px);align-items:end;margin:clamp(64px,8vw,130px) 0 clamp(24px,3vw,44px);padding-top:clamp(28px,3vw,44px);border-top:1px solid var(--line-d)}

/* end links */
.pj-end{padding:clamp(56px,7vw,110px) 0}
.pj-end-row{display:grid;grid-template-columns:1fr 1fr;gap:var(--g)}
.pj-back{display:flex;flex-direction:column;gap:10px;padding:clamp(22px,2.6vw,40px) 0;border-top:1px solid var(--line-d);border-bottom:1px solid var(--line-d);transition:color .3s}
.pj-back .mono{opacity:.55}
.pj-back b{font-size:clamp(32px,4.4vw,72px);font-weight:500;letter-spacing:-.045em;line-height:1}
.pj-back:hover{color:var(--red)}

/* image viewer */
.pj-lb{position:fixed;inset:0;z-index:120;background:rgba(5,5,6,.96);display:flex;align-items:center;justify-content:center;opacity:0;pointer-events:none;transition:opacity .35s}
.pj-lb.open{opacity:1;pointer-events:auto}
.pj-lb img{max-width:calc(100vw - 32px);max-height:calc(100svh - 110px);object-fit:contain}
.pj-lb .x{position:absolute;top:14px;right:18px;font-size:34px;line-height:1;width:48px;height:48px}
.pj-lb .nv{position:absolute;top:50%;transform:translateY(-50%);width:56px;height:56px;border-radius:50%;border:1px solid rgba(255,255,255,.3);font-size:20px;transition:background .3s,border-color .3s}
.pj-lb .nv:hover{background:var(--red);border-color:var(--red)}
.pj-lb .prev{left:18px}.pj-lb .next{right:18px}
.pj-lb .ct{position:absolute;bottom:18px;left:50%;transform:translateX(-50%);opacity:.6}

@media (max-width:900px){
  .pj-intro,.pj-bts-head,.pj-sub{grid-template-columns:1fr}
  .pj-steps{grid-template-columns:1fr}
}
@media (max-width:560px){
  .pj-hero{padding-top:64px}
  .pj-grid{grid-template-columns:1fr}
  .pj-grid.four{grid-template-columns:1fr 1fr}
  .pj-meta{grid-template-columns:1fr 1fr}
  .pj-end-row{grid-template-columns:1fr}
  .pj-lb .nv{display:none}
}
.pj-steps .pj-zoom{aspect-ratio:2/1}.pj-steps .pj-zoom img{height:100%;object-fit:cover}
.pj-lb{background:rgba(5,5,6,.985)}.pj-lb .nv{background:rgba(9,9,10,.55);backdrop-filter:blur(6px);-webkit-backdrop-filter:blur(6px);z-index:2}

/* ---------- project sheet (opens over the folio) ---------- */
html.sheet-open{overflow:hidden}
.psheet{position:fixed;inset:0;z-index:110;visibility:hidden}
.psheet.on{visibility:visible}
.ps-back{position:absolute;inset:0;background:rgba(5,5,6,.62);backdrop-filter:blur(6px);-webkit-backdrop-filter:blur(6px);opacity:0;transition:opacity .45s var(--ease);cursor:zoom-out}
.psheet.open .ps-back{opacity:1}
.ps-panel{position:absolute;left:clamp(0px,1.8vw,28px);right:clamp(0px,1.8vw,28px);top:clamp(10px,3.2vh,40px);bottom:0;background:var(--ink);color:var(--white);border-radius:18px 18px 0 0;overflow-y:auto;overscroll-behavior:contain;-webkit-overflow-scrolling:touch;transform:translateY(104%);transition:transform .6s var(--ease);box-shadow:0 -20px 60px rgba(0,0,0,.45)}
.psheet.open .ps-panel{transform:none}
.ps-bar{position:sticky;top:0;z-index:6;display:flex;align-items:center;justify-content:space-between;gap:16px;height:58px;padding:0 10px 0 clamp(16px,2vw,28px);background:rgba(9,9,10,.82);backdrop-filter:blur(10px);-webkit-backdrop-filter:blur(10px);border-bottom:1px solid var(--line-d);border-radius:18px 18px 0 0}
.ps-t{font-size:clamp(15px,1.2vw,18px);font-weight:500;letter-spacing:-.02em;white-space:nowrap;overflow:hidden;text-overflow:ellipsis}
.ps-act{display:flex;align-items:center;gap:clamp(10px,1.4vw,22px)}
.ps-full{font-size:11px;opacity:.7;transition:opacity .3s,color .3s}.ps-full:hover{opacity:1;color:var(--red)}
.ps-x{width:42px;height:42px;border-radius:50%;background:var(--red);color:#fff;font-size:26px;line-height:1;display:grid;place-items:center;transition:background .3s,transform .4s var(--ease)}
.ps-x:hover{background:#fff;color:var(--ink);transform:rotate(90deg)}
.ps-body .pj-hero{padding-top:0}
.ps-body .pj-hero:not(.is-film) img{max-height:min(64svh,calc(100svh - 300px));min-height:260px}
.ps-end{border-top:1px solid var(--line-d);padding:clamp(36px,4.5vw,70px) 0 clamp(48px,6vw,90px)}
.ps-end .wrap{display:flex;flex-wrap:wrap;align-items:center;justify-content:space-between;gap:20px}
.ps-end p{font-size:clamp(28px,3.4vw,56px);font-weight:500;letter-spacing:-.04em;line-height:1}
.ps-end .wrap>div{display:flex;flex-wrap:wrap;gap:12px}
.ps-end .btn-line{color:#fff}
@media (max-width:560px){.ps-full{display:none}.ps-panel{border-radius:14px 14px 0 0}.ps-bar{border-radius:14px 14px 0 0;height:54px}}
@media (prefers-reduced-motion:reduce){.ps-panel,.ps-back{transition:none}}

/* ---------- film hero: when a project has a 16:9 film, it leads (showreel player style) ---------- */
.pj-hero.is-film{background:#000;display:flex;justify-content:center}
.pj-hero.is-film .rp-main{width:min(100%,calc((100svh - 72px) * 16 / 9));aspect-ratio:16/9;border-radius:0}
.ps-body .pj-hero.is-film .rp-main{width:min(100%,calc(min(64svh,100svh - 300px) * 16 / 9));min-width:min(100%,460px)}
.pj-player .rp-cap .mono{font-size:11px}
.pj-player video{cursor:pointer}
/* looping video tiles (hero loops, sims) */
.pj-loop{margin:0;position:relative;background:#000;overflow:hidden}
.pj-loop video{width:100%;height:auto;display:block}
.pj-steps .pj-loop{aspect-ratio:2/1}.pj-steps .pj-loop video{height:100%;object-fit:cover}
/* film carousel (several key films) */
.pj-reel{width:min(100%,calc((100svh - 72px - 128px) * 16 / 9));min-width:min(100%,560px);margin:0 auto;padding-bottom:clamp(10px,1.2vw,16px)}
.pj-hero.is-film .pj-reel .rp-main{width:100%}
.ps-body .pj-reel{width:min(100%,calc((min(64svh,100svh - 300px)) * 16 / 9));min-width:min(100%,560px)}
.pr-nav{position:absolute;top:50%;transform:translateY(-50%);z-index:4;width:52px;height:52px;border-radius:50%;background:rgba(9,9,10,.55);backdrop-filter:blur(6px);-webkit-backdrop-filter:blur(6px);border:1px solid rgba(255,255,255,.28);color:#fff;font-size:20px;transition:background .3s,border-color .3s,opacity .3s}
.pr-nav:hover{background:var(--red);border-color:var(--red)}
.pr-nav.prev{left:clamp(10px,1.4vw,22px)}.pr-nav.next{right:clamp(10px,1.4vw,22px)}
.rp-main.playing .pr-nav{opacity:.35}.rp-main.playing:hover .pr-nav{opacity:1}
.pr-thumbs{display:grid;grid-auto-flow:column;grid-auto-columns:minmax(170px,1fr);gap:clamp(8px,1vw,12px);margin-top:clamp(8px,1vw,12px);overflow-x:auto;scroll-snap-type:x mandatory;scrollbar-width:none;padding:0 clamp(0px,.4vw,4px)}
.pr-thumbs::-webkit-scrollbar{display:none}
.pr-it{display:grid;grid-template-columns:44% 1fr;gap:10px;align-items:center;height:clamp(64px,5.4vw,96px);padding:0 10px 0 0;background:rgba(255,255,255,.04);border:1px solid var(--line-d);border-radius:2px;color:#fff;text-align:left;overflow:hidden;scroll-snap-align:start;transition:border-color .3s,background .3s}
.pr-it img{width:100%;height:100%;object-fit:cover;filter:grayscale(.6) brightness(.8);transition:filter .4s}
.pr-it span{display:flex;flex-direction:column;gap:3px;min-width:0}
.pr-it b{font-size:clamp(13px,1vw,16px);font-weight:500;letter-spacing:-.02em;white-space:nowrap;overflow:hidden;text-overflow:ellipsis}
.pr-it b em{font-family:var(--serif);font-weight:400;opacity:.8}
.pr-it i{font-style:normal;font-size:9.5px;opacity:.55}
.pr-it:hover img,.pr-it.on img{filter:none}
.pr-it.on{border-color:var(--red);background:rgba(228,50,43,.1)}
@media (max-width:700px){.pj-reel{min-width:100%}.pr-nav{width:40px;height:40px;font-size:16px}.pr-thumbs{grid-auto-columns:minmax(150px,46%)}}

/* justified galleries on generated project pages */
.pj-rows{display:flex;flex-direction:column;gap:clamp(8px,1vw,16px)}
.pj-row{display:flex;gap:clamp(8px,1vw,16px)}
.pj-row>figure{margin:0;flex:var(--r) 1 0;min-width:0;aspect-ratio:var(--r);position:relative;overflow:hidden;background:#111}
.pj-row>figure img,.pj-row>figure video{width:100%;height:100%;object-fit:cover;display:block}
.pj-row figcaption{position:absolute;left:10px;bottom:10px;font-size:11px;letter-spacing:.08em;text-transform:uppercase;background:rgba(10,10,10,.74);color:#f5f4f0;padding:5px 8px;pointer-events:none}
.pj-row .pj-loop .pj-tag{left:10px;bottom:10px}
@media (max-width:700px){.pj-row{flex-direction:column}.pj-row>figure{flex:none;width:100%}}
.pj-bts .pj-rows{margin-top:clamp(24px,3vw,40px)}
.pj-hero.tall img{object-fit:contain;background:#0b0b0c}
/* carousel thumbs: keep the image inside the button so the caption never clips */
.pr-it{grid-template-rows:minmax(0,1fr);height:clamp(72px,5.4vw,96px)}
.pr-it img{min-height:0;max-height:100%;display:block}
/* portrait heroes: show the whole image at full height over a soft blurred fill */
.pj-hero.tall figure{position:relative;overflow:hidden;background:#0b0b0c;display:flex;justify-content:center}
.pj-hero.tall img{position:relative;width:auto;max-width:100%;height:max(360px,min(calc(100svh - 300px),1000px));max-height:none;object-fit:contain;background:none;box-shadow:0 30px 80px rgba(0,0,0,.45)}
.ps-body .pj-hero.tall img,.ps-body .pj-hero.tall:not(.is-film) img{height:max(320px,calc(100svh - 360px));max-height:none;min-height:0;width:auto}
@media (max-width:700px){.pj-hero.tall img,.ps-body .pj-hero.tall img,.ps-body .pj-hero.tall:not(.is-film) img{height:auto;width:100%;max-height:78svh}}
/* split layout: portrait hero beside the title */
.pj-split{padding-top:calc(72px + clamp(20px,2.4vw,40px))}
.ps-body .pj-split{padding-top:clamp(18px,2vw,32px)}
.pj-split-grid{display:grid;grid-template-columns:auto minmax(0,1fr);gap:clamp(28px,4.4vw,80px);align-items:center;margin-top:clamp(18px,2vw,28px)}
.pj-split-img{margin:0;position:relative;overflow:hidden;background:#111}
.pj-split-img img{display:block;height:auto;max-height:min(calc(100svh - 250px),860px);width:auto;max-width:min(52vw,760px)}
.ps-body .pj-split-img img{max-height:min(calc(100svh - 280px),800px)}
.pj-split-text .pj-intro{grid-template-columns:1fr;gap:28px;margin-top:clamp(20px,2.4vw,36px)}
.pj-split-text .pj-lede{max-width:34em}
@media (max-width:860px){.pj-split-grid{grid-template-columns:1fr}.pj-split-img img,.ps-body .pj-split-img img{width:100%;height:auto;max-width:none;max-height:none}}
/* rows never taller than the screen: a row's width is capped by (sum of ratios x max height), centred */
.pj-row{max-width:calc(var(--rs,3) * min(80svh, 960px));margin-inline:auto;width:100%}
.ps-body .pj-row{max-width:calc(var(--rs,3) * min(72svh, 860px))}
@media (max-width:700px){.pj-row{max-width:none}.pj-row>figure{max-height:none}}

/* ---------- service pages ---------- */
.svc-hero{background:#000}
.svc-hero video,.svc-hero img{display:block;width:100%;height:min(62svh,760px);object-fit:cover}
.svc-offers{list-style:none;display:grid;grid-template-columns:repeat(3,minmax(0,1fr));gap:1px;background:var(--line-d);border:1px solid var(--line-d)}
.svc-offers li{background:var(--ink,#0b0b0c);padding:clamp(20px,2.2vw,34px)}
.svc-offers h3{font-size:clamp(19px,1.5vw,24px);font-weight:500;letter-spacing:-.02em;margin-bottom:10px}
.svc-offers p,.svc-steps p{font-size:15.5px;line-height:1.55;color:rgba(245,244,240,.66)}
.svc-steps{list-style:none;display:grid;grid-template-columns:repeat(3,minmax(0,1fr));gap:clamp(20px,3vw,48px)}
.svc-steps li{border-top:2px solid var(--red);padding-top:18px}
.svc-steps .mono{font-size:12px}
.svc-steps h3{font-size:clamp(22px,1.9vw,30px);font-weight:500;letter-spacing:-.03em;margin:10px 0 10px}
.svc-work{display:grid;grid-template-columns:repeat(4,minmax(0,1fr));gap:clamp(8px,1vw,14px)}
.svc-tile{position:relative;display:block;aspect-ratio:4/3;overflow:hidden;background:#111;color:#fff}
.svc-tile img{width:100%;height:100%;object-fit:cover;transition:transform .6s cubic-bezier(.2,.7,.2,1)}
.svc-tile:hover img{transform:scale(1.04)}
.svc-tile span{position:absolute;left:0;right:0;bottom:0;padding:26px 14px 12px;font-size:15px;font-weight:500;letter-spacing:-.01em;background:linear-gradient(transparent,rgba(0,0,0,.72))}
.svc-more{margin-top:clamp(22px,2.4vw,36px)}
.svc-more a:not(.btn){color:#fff;border-bottom:1px solid var(--red)}
.svc-pipe{display:grid;grid-template-columns:repeat(2,minmax(0,1fr));gap:clamp(8px,1vw,14px)}
.svc-pipe figure{margin:0;position:relative}
.svc-pipe img{width:100%;display:block}
.svc-pipe figcaption{position:absolute;left:10px;bottom:10px;font-size:11px;letter-spacing:.08em;text-transform:uppercase;background:rgba(10,10,10,.74);padding:5px 8px}
.svc-faq{max-width:900px}
.svc-faq details{border-top:1px solid var(--line-d);padding:18px 0}
.svc-faq details:last-child{border-bottom:1px solid var(--line-d)}
.svc-faq summary{cursor:pointer;list-style:none;font-size:clamp(18px,1.4vw,22px);font-weight:500;letter-spacing:-.02em;display:flex;justify-content:space-between;gap:20px}
.svc-faq summary::-webkit-details-marker{display:none}
.svc-faq summary::after{content:"+";color:var(--red);font-weight:400;transition:transform .3s}
.svc-faq details[open] summary::after{transform:rotate(45deg)}
.svc-faq p{margin-top:12px;font-size:16px;line-height:1.6;color:rgba(245,244,240,.7);max-width:70ch}
.svc-other .wrap{display:flex;flex-wrap:wrap;gap:12px 24px;align-items:center}
.svc-other .mono{font-size:11px;letter-spacing:.12em;text-transform:uppercase;color:var(--red)}
.svc-other nav{display:flex;flex-wrap:wrap;gap:10px}
.svc-other nav a{border:1px solid var(--line-d);border-radius:99px;padding:8px 14px;font-size:14px;color:#fff;transition:border-color .3s,background .3s}
.svc-other nav a:hover{border-color:var(--red);background:rgba(228,50,43,.12)}
@media (max-width:900px){.svc-offers,.svc-steps{grid-template-columns:1fr 1fr}.svc-work{grid-template-columns:repeat(2,minmax(0,1fr))}}
@media (max-width:560px){.svc-offers,.svc-steps,.svc-pipe{grid-template-columns:1fr}}
/* services links: footer + project meta */
.ftr-svc{border-top:1px solid var(--line-d);padding:22px 0 0}
.ftr-svc .wrap{display:flex;flex-wrap:wrap;gap:10px 22px;align-items:baseline;opacity:1}
.ftr-svc .mono{font-size:11px;letter-spacing:.12em;text-transform:uppercase;color:var(--red)}
.ftr-svc a{font-size:14px;color:rgba(245,244,240,.72)}
.ftr-svc a:hover{color:#fff}
.pj-meta dd a{color:inherit;border-bottom:1px solid rgba(228,50,43,.6)}
.pj-meta dd a:hover{color:#fff;border-color:var(--red)}
.hdr-tick .track a{color:inherit;text-decoration:none;pointer-events:auto}
.hdr-tick .track a:hover{text-decoration:underline;text-underline-offset:4px}
.ftr .ftr-svc{border-top:0;padding:0 0 16px}
.ftr .ftr-svc .wrap{justify-content:flex-start;opacity:1}
.svc-hero img{object-position:center 30%}

/* AI page: 4-step workflow + headphone example */
.svc-steps.s4{grid-template-columns:repeat(4,minmax(0,1fr))}
.svc-pipe.s3{grid-template-columns:repeat(3,minmax(0,1fr))}
.svc-pipe.s3 figure{aspect-ratio:4/3;overflow:hidden;background:#111}
.svc-pipe.s3 img{height:100%;object-fit:cover}
.svc-pipe-lede{margin:0 0 clamp(16px,2vw,24px);font-size:clamp(16px,1.3vw,19px);color:rgba(245,244,240,.7);max-width:60ch}
.svc-film{margin-top:clamp(8px,1vw,14px)}
@media (max-width:900px){.svc-steps.s4{grid-template-columns:1fr 1fr}}
@media (max-width:560px){.svc-steps.s4,.svc-pipe.s3{grid-template-columns:1fr}}
