/* ===================== Tokens & reset ===================== */
:root{
  --bg:#ffffff;
  --ink:#0d0d0f;
  --ink-soft:#6f7076;
  --muted:#9a9aa0;
  --card:#f3f3f4;
  --card-2:#eeeef0;
  --line:#e6e6e8;
  --accent:#e8471f;
  --teal-1:#1b8ea0;
  --teal-2:#43b6c4;
  --radius:18px;
  --radius-sm:12px;
  --maxw:1200px;
  --gap:24px;
  --sans:"Inter","Inter Placeholder",system-ui,-apple-system,Segoe UI,Roboto,Helvetica,Arial,sans-serif;
}
*,*::before,*::after{box-sizing:border-box}
html{scroll-behavior:smooth}
body{
  margin:0;background:var(--bg);color:var(--ink);
  font-family:var(--sans);font-size:17px;line-height:1.55;
  -webkit-font-smoothing:antialiased;overflow-x:hidden;
}
img{display:block;max-width:100%}
a{color:inherit;text-decoration:none}
h1,h2,h3,h4,h5{margin:0;font-weight:700;letter-spacing:-.02em;line-height:1.05}
p{margin:0}

.container{width:100%;max-width:var(--maxw);margin:0 auto;padding:0 24px}
.container-wide{width:100%;max-width:1320px;margin:0 auto;padding:0 24px}

/* ===================== Shared bits ===================== */
.pill{
  display:inline-block;background:var(--card);color:var(--ink);
  font-size:13px;font-weight:600;padding:7px 15px;border-radius:999px;
}
.pill-center{display:block;width:max-content;margin:0 auto}
.pill-dark{background:var(--ink);color:#fff}

.section-title{font-size:clamp(34px,4.6vw,56px);font-weight:800}
.section-sub{color:var(--ink-soft);font-size:17px;max-width:560px;margin-top:16px}
.section-head.center{text-align:center}
.section-head.center .section-sub{margin-left:auto;margin-right:auto}
.section-head.center .section-title{margin-top:20px}

.muted{color:var(--muted)}
.small{font-size:13px}

.stars{color:var(--accent);font-size:20px;letter-spacing:3px}
.stars.small{font-size:15px;letter-spacing:2px}

.btn{display:inline-flex;align-items:center;justify-content:center;gap:8px;
  font-size:15px;font-weight:600;padding:13px 24px;border-radius:999px;
  cursor:pointer;border:0;transition:transform .2s ease,opacity .2s ease,background .2s;white-space:nowrap}
.btn:hover{transform:translateY(-2px)}
.btn-dark{background:var(--ink);color:#fff}
.btn-dark:hover{opacity:.9}
.btn-lg{padding:16px 30px;font-size:16px}

/* corner framing brackets */
.corners{position:absolute;inset:14px;pointer-events:none;opacity:0;transition:opacity .3s}
.corners::before,.corners::after{content:"";position:absolute;width:18px;height:18px;border:2px solid #fff}
.corners::before{top:0;left:0;border-right:0;border-bottom:0}
.corners::after{bottom:0;right:0;border-left:0;border-top:0}
.framed-hover:hover .corners{opacity:1}

/* ===================== Header ===================== */
.site-header{position:fixed;top:0;left:0;right:0;z-index:50;padding:18px 0;transition:background .3s,box-shadow .3s}
.header-inner{display:flex;align-items:center;justify-content:space-between;position:relative}
.brand{display:flex;flex-direction:column;line-height:1.15;color:#fff;transition:color .3s}
.brand-name{font-weight:700;font-size:17px}
.brand-role{font-size:13px;opacity:.7}
.header-logo{position:absolute;left:50%;transform:translateX(-50%);color:#fff;transition:color .3s}
.btn-contact{background:#fff;color:var(--ink)}
.site-header.scrolled{background:rgba(255,255,255,.88);backdrop-filter:blur(10px);box-shadow:0 1px 0 var(--line)}
.site-header.scrolled .brand,.site-header.scrolled .header-logo{color:var(--ink)}

/* ===================== Hero ===================== */
.hero{position:relative;height:100vh;min-height:680px;max-height:1040px;overflow:hidden;
  background:linear-gradient(180deg,var(--teal-1),var(--teal-2) 45%,#cfeaf0 80%,#fff 100%)}
/* cloud sits in the sky, behind the title and the man */
.hero-cloud{position:absolute;left:50%;top:49%;transform:translateX(-50%);z-index:0;
  width:58%;max-width:860px;pointer-events:none}
.hero-cloud img{width:100%;height:auto;display:block}
/* big "AUGUST", framed by the corner brackets */
.hero-inner{position:absolute;inset:0;z-index:1;display:flex;align-items:flex-start;justify-content:center;padding-top:94px}
.hero-title{color:#fff;font-weight:800;letter-spacing:-.035em;line-height:.86;
  font-size:clamp(54px,20vw,300px);text-align:center;margin-top:6px}
/* portrait: smaller than the title, head dropped to ~30% so AUGUST stays readable */
.hero-media{position:absolute;inset:0;z-index:2;pointer-events:none}
.hero-media img{position:absolute;left:50%;top:30%;transform:translateX(-50%);
  width:44%;max-width:660px;height:auto}
.hero-fade{position:absolute;left:0;right:0;bottom:0;height:42%;z-index:3;
  background:linear-gradient(180deg,rgba(255,255,255,0),#fff 92%)}
.frame-brackets{position:absolute;top:116px;left:8%;right:8%;bottom:auto;height:276px;z-index:1;pointer-events:none}
.frame-brackets span{position:absolute;width:26px;height:26px;border:2px solid rgba(255,255,255,.8)}
.frame-brackets span:nth-child(1){top:0;left:0;border-right:0;border-bottom:0}
.frame-brackets span:nth-child(2){top:0;right:0;border-left:0;border-bottom:0}
.frame-brackets span:nth-child(3){bottom:0;left:0;border-right:0;border-top:0}
.frame-brackets span:nth-child(4){bottom:0;right:0;border-left:0;border-top:0}

/* ===================== Trust ===================== */
.trust{padding:70px 0 40px;text-align:center}
.trust-inner{position:relative;max-width:620px}
.laurel{position:absolute;top:50%;transform:translateY(-55%);width:95px;opacity:.5}
.laurel-left{left:-20px}
.laurel-right{right:-20px}
.trust-avatars{display:flex;justify-content:center;margin-bottom:14px}
.trust-avatars img{width:50px;height:50px;border-radius:50%;border:3px solid #fff;object-fit:cover;margin-left:-14px;box-shadow:0 2px 8px rgba(0,0,0,.08)}
.trust-avatars img:first-child{margin-left:0}
.trust-title{font-size:24px;font-weight:700;margin:14px 0 10px}
.trust-sub{color:var(--ink-soft);max-width:430px;margin:0 auto}

/* ===================== Philosophy (sticky text + overlay gallery) ===================== */
.philosophy{position:relative;height:3400px}
.phil-text{position:sticky;top:0;height:100vh;display:flex;align-items:center;justify-content:center;z-index:1}
.phil-text-inner{text-align:center;padding:0 24px;max-width:960px}
.philosophy-text{font-size:clamp(26px,3.7vw,48px);font-weight:500;letter-spacing:-.045em;
  line-height:1.3;margin:28px auto;max-width:960px}
.philosophy-text .w{display:inline-block;white-space:pre}
.philosophy-text.reveal-words .w{filter:blur(6px);opacity:.18;transform:translateY(4px);
  transition:filter .3s ease-out,opacity .3s ease-out,transform .3s ease-out}
.philosophy-text.reveal-words .w.on{filter:none;opacity:1;transform:none}
.copyright{color:var(--muted);font-size:14px;margin-top:16px}
.gallery{position:absolute;top:0;left:0;right:0;height:100%;z-index:3;pointer-events:none}
.g-item{position:absolute;left:var(--x);top:var(--y);width:var(--w);margin:0;will-change:transform;transform:translateZ(0)}
.g-item img{width:100%;height:auto;border-radius:16px;box-shadow:0 24px 60px rgba(0,0,0,.13)}
.g-item.wide img{border-radius:18px}

/* ===================== Services ===================== */
.services{padding:40px 0 110px}
.services-inner{display:grid;grid-template-columns:1fr 1fr;gap:64px;align-items:center}
.services-left .section-title{margin-top:18px}
.services-left .section-sub{margin-bottom:26px}
.includes-label{font-weight:600;font-size:14px;margin-bottom:12px}
.includes{list-style:none;padding:0;margin:0 0 30px}
.includes li{display:flex;align-items:center;gap:12px;padding:7px 0;font-weight:500}
.check{display:inline-grid;place-items:center;width:22px;height:22px;border-radius:50%;
  background:var(--card);color:var(--ink);font-size:12px}
.services-right{display:flex;flex-direction:column;gap:16px}
.svc-card{display:flex;gap:18px;align-items:center;background:var(--card);border-radius:var(--radius);padding:16px;transition:background .2s}
.svc-card:hover{background:var(--card-2)}
.svc-card img{width:74px;height:74px;border-radius:12px;object-fit:cover;flex:0 0 auto}
.svc-card h3{font-size:18px;margin-bottom:6px}
.svc-card p{color:var(--ink-soft);font-size:14.5px;line-height:1.45}

/* ===================== Benefits (bento) ===================== */
.benefits{padding:40px 0 110px}
.bento{display:grid;grid-template-columns:repeat(3,1fr);gap:16px;margin-top:54px;
  grid-template-areas:
    "over camera editing"
    "seamless tailored tailored"
    "seamless clients turn";}
.bento-card{background:var(--card);border-radius:var(--radius);padding:26px;position:relative;overflow:hidden;min-height:150px}
.bento-title{font-size:26px;font-weight:700;letter-spacing:-.02em;line-height:1.1}
.bento-title.top{position:relative;z-index:2}
.b-over{grid-area:over;min-height:360px;display:flex;flex-direction:column;justify-content:flex-end}
.b-camera{grid-area:camera;min-height:360px;display:flex;flex-direction:column}
.b-editing{grid-area:editing;min-height:360px;padding:0}
.b-seamless{grid-area:seamless;display:flex;flex-direction:column;justify-content:flex-end}
.b-tailored{grid-area:tailored;display:flex;align-items:center;min-height:170px}
.b-clients{grid-area:clients;display:flex;flex-direction:column;gap:8px;justify-content:center}
.b-turn{grid-area:turn;display:flex;flex-direction:column;gap:6px}

/* polaroids */
.polaroids{position:absolute;top:26px;left:0;right:0;height:230px}
.pol{position:absolute;left:50%;top:10px;width:150px;height:170px;object-fit:cover;background:#fff;
  padding:8px 8px 22px;border-radius:4px;box-shadow:0 10px 26px rgba(0,0,0,.14)}
.pol1{transform:translateX(-50%) rotate(-3deg)}
.pol2{transform:translateX(-62%) rotate(-11deg)}
.pol3{transform:translateX(-38%) rotate(8deg)}
/* camera lens */
.lens{width:auto;height:250px;max-width:92%;margin:auto;object-fit:contain}
/* before/after */
.ba-stage{position:absolute;inset:0;overflow:hidden;border-radius:var(--radius);user-select:none}
.ba-stage img{position:absolute;inset:0;width:100%;height:100%;object-fit:cover}
.ba-before-wrap{position:absolute;inset:0;width:50%;overflow:hidden}
.ba-before-wrap img{width:auto;height:100%;max-width:none;position:absolute;left:0;top:0}
.ba-handle{position:absolute;top:0;bottom:0;left:50%;width:2px;background:#fff;transform:translateX(-50%);
  display:flex;align-items:center;justify-content:center;cursor:ew-resize;z-index:3}
.ba-handle span{position:absolute;color:#fff;font-size:22px;line-height:1}
.ba-handle span:first-child{left:-18px}
.ba-handle span:last-child{right:-18px}
.bento-title.overlay{position:absolute;left:24px;bottom:22px;color:#fff;z-index:2;text-shadow:0 2px 12px rgba(0,0,0,.4);pointer-events:none}
.b-editing::after{content:"";position:absolute;inset:0;background:linear-gradient(180deg,transparent 55%,rgba(0,0,0,.45));z-index:1;pointer-events:none;border-radius:var(--radius)}
/* hands */
.hands{position:absolute;top:30px;left:0;right:0;height:130px}
.hand{position:absolute;top:0;width:150px;height:auto}
.hl{left:6%}
.hr{right:6%}
/* eyes */
.b-tailored .bento-title{position:relative;z-index:2;max-width:46%}
.eyes{position:absolute;right:0;top:0;height:100%;width:62%;object-fit:cover;border-radius:0 var(--radius) var(--radius) 0}
/* clients */
.clients-row{display:flex;align-items:center;gap:16px}
.big-num{font-size:52px;font-weight:800;letter-spacing:-.03em;line-height:1}
.client-avatars{display:flex}
.client-avatars img{width:38px;height:38px;border-radius:50%;border:2px solid var(--card);object-fit:cover;margin-left:-12px}
.client-avatars img:first-child{margin-left:0}
/* turnaround */
.turn-head{display:flex;align-items:center;gap:8px;font-weight:600;font-size:17px}
.gauge{margin-top:auto}
.gauge svg{width:170px;height:auto;margin:6px auto 0;display:block}

/* ===================== Portfolio ===================== */
.portfolio{padding:40px 0 110px}
.featured-label{color:var(--muted);font-size:13px;margin-top:34px}
.featured-logos{display:flex;gap:40px;justify-content:center;align-items:center;margin-top:14px;opacity:.55}
.fl{color:#111;filter:grayscale(1)}
.fl-serif{font-family:Georgia,serif;font-size:22px;font-weight:700;letter-spacing:.5px}
.fl-italic{font-family:Georgia,serif;font-style:italic;font-size:26px;font-weight:600}
.fl-script{font-family:"Segoe Script","Brush Script MT",cursive;font-size:22px}
.portfolio-grid{display:grid;grid-template-columns:1fr 1fr;gap:28px;margin-top:54px}
.project{background:var(--card);border-radius:var(--radius);padding:14px;transition:background .2s}
.project:hover{background:var(--card-2)}
.project-img{position:relative;border-radius:var(--radius-sm);overflow:hidden;aspect-ratio:16/11}
.project-img img{width:100%;height:100%;object-fit:cover;transition:transform .5s}
.project:hover .project-img img{transform:scale(1.08)}
.project-meta{display:flex;justify-content:space-between;align-items:center;padding:16px 8px 6px}
.project-meta h3{font-size:19px}
.project-meta time{color:var(--muted);font-size:13px}
.tag{background:#fff;border:1px solid var(--line);color:var(--ink);font-size:12.5px;font-weight:600;padding:7px 13px;border-radius:999px}

/* ===================== Testimonials ===================== */
.testimonials{padding:40px 0 110px}
.testimonials .section-head{margin-bottom:46px}
.marquee{position:relative;overflow:hidden;-webkit-mask-image:linear-gradient(90deg,transparent,#000 8%,#000 92%,transparent);
  mask-image:linear-gradient(90deg,transparent,#000 8%,#000 92%,transparent)}
.marquee-track{display:flex;gap:20px;width:max-content;animation:marquee 46s linear infinite}
.marquee:hover .marquee-track{animation-play-state:paused}
@keyframes marquee{from{transform:translateX(0)}to{transform:translateX(-50%)}}
.t-card{background:var(--card);border-radius:var(--radius);padding:26px;margin:0;width:380px;flex:0 0 auto;
  display:flex;flex-direction:column;gap:16px}
.t-card blockquote{margin:0;font-size:16px;line-height:1.5;color:#2b2b2e}
.t-card figcaption{display:flex;align-items:center;gap:12px;margin-top:auto}
.t-card figcaption img{width:46px;height:46px;border-radius:50%;object-fit:cover}
.t-card figcaption strong{display:block;font-size:15px}
.t-card figcaption span{color:var(--muted);font-size:13px}

/* ===================== Blog ===================== */
.blog{padding:40px 0 110px}
.blog-head{display:flex;justify-content:space-between;align-items:flex-end;gap:30px;margin-bottom:44px}
.blog-head .section-title{margin-top:18px}
.blog-featured{display:grid;grid-template-columns:1fr 1fr;gap:0;background:var(--card);border-radius:var(--radius);overflow:hidden;transition:background .2s}
.blog-featured:hover{background:var(--card-2)}
.bf-img{position:relative;overflow:hidden}
.bf-img img{width:100%;height:100%;min-height:360px;object-fit:cover;transition:transform .5s cubic-bezier(.22,1,.36,1)}
.blog-featured:hover .bf-img img{transform:scale(1.05)}
.bf-body{padding:40px;display:flex;flex-direction:column;gap:18px}
.bf-body h3{font-size:clamp(26px,3vw,38px);font-weight:800;letter-spacing:-.025em;line-height:1.08}
.bf-body p{color:var(--ink-soft);font-size:16px}
.bf-foot{display:flex;justify-content:space-between;align-items:center;margin-top:auto;padding-top:24px}
.blog-grid{display:grid;grid-template-columns:repeat(3,1fr);gap:28px;margin-top:28px}
.post-img{position:relative;border-radius:var(--radius-sm);overflow:hidden;aspect-ratio:3/2}
.post-img img{width:100%;height:100%;object-fit:cover;transition:transform .5s}
.post:hover .post-img img{transform:scale(1.09)}
.post-meta{display:flex;justify-content:space-between;align-items:flex-start;gap:14px;padding:16px 4px 0}
.post-meta h4{font-size:17px;font-weight:600;line-height:1.3}
.cat{font-size:12px;font-weight:700;color:#fff;padding:5px 11px;border-radius:999px;white-space:nowrap;flex:0 0 auto}
.cat-gear{background:#5c1f2e}.cat-light{background:#2c4a2b}.cat-edit{background:#c0442a}.cat-biz{background:#2b3fd6}

/* ===================== FAQ ===================== */
.faq{padding:40px 0 110px}
.faq-inner{display:grid;grid-template-columns:1fr 1fr;gap:64px;align-items:start}
.faq-left .section-title{margin-top:18px}
.faq-img{position:relative;margin-top:36px;border-radius:var(--radius);overflow:hidden;aspect-ratio:16/9}
.faq-img img{width:100%;height:100%;object-fit:cover}
.faq-credit{position:absolute;top:14px;left:16px;color:#fff;font-size:13px;text-shadow:0 1px 6px rgba(0,0,0,.4)}
.accordion{display:flex;flex-direction:column;gap:14px;margin-top:6px}
.acc-item{background:var(--card);border-radius:14px;overflow:hidden}
.acc-q{width:100%;display:flex;justify-content:space-between;align-items:center;gap:16px;
  background:none;border:0;cursor:pointer;text-align:left;font-family:inherit;
  font-size:16px;font-weight:600;color:var(--ink);padding:22px 22px}
.acc-icon{flex:0 0 auto;display:grid;place-items:center;width:30px;height:30px;border-radius:50%;
  background:#fff;font-size:18px;font-weight:400;transition:transform .3s}
.acc-item.open .acc-icon{transform:rotate(45deg)}
.acc-a{max-height:0;overflow:hidden;transition:max-height .35s ease}
.acc-a p{color:var(--ink-soft);font-size:15px;padding:0 22px 22px}

/* ===================== CTA ===================== */
.cta{padding:60px 0 100px}
.cta-inner{text-align:center;display:flex;flex-direction:column;align-items:center}
.cta-title{font-size:clamp(38px,6vw,76px);font-weight:800;letter-spacing:-.03em;line-height:1.02;max-width:900px}
.cta .section-sub{margin:22px auto 30px}
.cta-cards{position:relative;display:flex;justify-content:center;align-items:flex-end;gap:0;margin-top:64px;height:440px}
.cta-card{position:relative;border-radius:16px;overflow:hidden;box-shadow:0 24px 60px rgba(0,0,0,.18)}
.cta-card img{width:100%;height:100%;object-fit:cover}
.ccl{width:270px;height:390px;transform:rotate(-9deg) translateX(60px);z-index:1}
.ccc{width:290px;height:430px;z-index:3;margin:0 -20px}
.ccr{width:270px;height:390px;transform:rotate(9deg) translateX(-60px);z-index:1}
.socials{display:flex;gap:34px;margin-top:56px;font-weight:600;font-size:15px}
.socials a{display:inline-flex;align-items:center;gap:6px}
.socials .arrow{font-size:13px;opacity:.6}
.socials a:hover{opacity:.6}

/* ===================== Footer ===================== */
.site-footer{border-top:1px solid var(--line);padding:56px 0 48px}
.footer-inner{display:flex;justify-content:space-between;gap:50px;flex-wrap:wrap}
.footer-brand{max-width:380px}
.footer-logo{position:relative;display:inline-block;padding:4px 10px}
.footer-logo span:first-child{font-size:26px;font-weight:700;letter-spacing:-.02em}
.footer-logo .corners{position:absolute;inset:-4px;opacity:1}
.footer-logo .corners::before,.footer-logo .corners::after{border-color:var(--ink);width:12px;height:12px}
.footer-brand p{color:var(--ink-soft);font-size:15px;margin-top:18px}
.footer-brand .small{margin-top:20px}
.footer-cols{display:flex;gap:70px}
.footer-col{display:flex;flex-direction:column;gap:12px}
.footer-col h5{font-size:15px;margin-bottom:6px}
.footer-col a{color:var(--ink-soft);font-size:15px}
.footer-col a:hover{color:var(--ink)}

/* ===================== Motion / animations ===================== */
/* scroll-reveal */
.reveal{opacity:0;transform:translateY(32px);filter:blur(7px);
  transition:opacity .85s cubic-bezier(.22,1,.36,1),transform .85s cubic-bezier(.22,1,.36,1),filter .85s ease-out}
.reveal.in{opacity:1;transform:none;filter:none}

/* Sub-page entrance: a pure-CSS load animation. Because it is an animation
   (not a JS-toggled hidden state) it ALWAYS ends on the visible frame — if the
   browser skips the animation the element is simply shown. Content is never
   left hidden waiting on JS. */
@keyframes revealUp{from{opacity:0;transform:translateY(30px);filter:blur(7px)}to{opacity:1;transform:none;filter:none}}
[data-reveal]{animation:revealUp .8s both cubic-bezier(.22,1,.36,1)}
[data-reveal-stagger] > *{animation:revealUp .7s both cubic-bezier(.22,1,.36,1)}
[data-reveal-stagger] > *:nth-child(2){animation-delay:.07s}
[data-reveal-stagger] > *:nth-child(3){animation-delay:.14s}
[data-reveal-stagger] > *:nth-child(4){animation-delay:.21s}
[data-reveal-stagger] > *:nth-child(5){animation-delay:.28s}
[data-reveal-stagger] > *:nth-child(6){animation-delay:.35s}
[data-reveal-stagger] > *:nth-child(n+7){animation-delay:.42s}
.reveal-fade{opacity:0;transition:opacity 1.1s ease}
.reveal-fade.in{opacity:1}
.reveal-scale{opacity:0;transform:scale(.94);filter:blur(6px);
  transition:opacity .9s cubic-bezier(.22,1,.36,1),transform .9s cubic-bezier(.22,1,.36,1),filter .9s ease-out}
.reveal-scale.in{opacity:1;transform:none;filter:none}

/* ---- Lenis smooth scroll ---- */
html.lenis,html.lenis body{height:auto}
.lenis.lenis-smooth{scroll-behavior:auto!important}
.lenis.lenis-smooth [data-lenis-prevent]{overscroll-behavior:contain}
.lenis.lenis-stopped{overflow:hidden}

/* ---- Intro loader (polaroids fly in → slide up to reveal hero) ---- */
.intro{display:none}
html.js .intro{display:flex;position:fixed;inset:0;z-index:9999;background:#fff;
  align-items:center;justify-content:center;
  transition:transform .85s cubic-bezier(.76,0,.24,1),opacity .5s ease .35s}
.intro.out{transform:translateY(-100%);opacity:0}
.intro-inner{position:relative;width:min(1080px,94vw);height:min(560px,72vh)}
.intro-logo{position:absolute;left:50%;top:50%;transform:translate(-50%,-50%);color:#111;
  opacity:0;transition:opacity .6s ease .3s}
.intro.run .intro-logo{opacity:1}
.ipol{position:absolute;margin:0;width:clamp(118px,13vw,162px);
  opacity:0;transform:translateY(60px) scale(.85) rotate(var(--r,0deg));
  transition:opacity .7s ease,transform .95s cubic-bezier(.22,1,.36,1)}
.intro.run .ipol{opacity:1;transform:translateY(0) scale(1) rotate(var(--r,0deg))}
.ipol img{width:100%;height:auto;display:block;background:#fff;padding:9px 9px 24px;
  border-radius:5px;box-shadow:0 18px 44px rgba(0,0,0,.17)}
.ipol-1{left:3%; top:9%; --r:-5deg;transition-delay:.05s}
.ipol-2{left:41%;top:0;  --r:2deg; transition-delay:.16s}
.ipol-3{left:78%;top:10%;--r:5deg; transition-delay:.10s}
.ipol-4{left:19%;top:53%;--r:4deg; transition-delay:.24s}
.ipol-5{left:60%;top:56%;--r:-4deg;transition-delay:.19s}

/* ---- Hero entrance (plays after the intro) ---- */
@keyframes heroTitleIn{from{opacity:0;transform:translateY(100px)}to{opacity:1;transform:none}}
@keyframes heroManIn{from{opacity:0;transform:translateX(-50%) translateY(80px)}to{opacity:1;transform:translateX(-50%)}}
@keyframes softIn{from{opacity:0;transform:translateY(-14px)}to{opacity:1;transform:none}}
@keyframes fadeIn{from{opacity:0}to{opacity:1}}
@keyframes cornerTL{from{opacity:0;transform:translate(-34px,-34px)}to{opacity:1;transform:none}}
@keyframes cornerTR{from{opacity:0;transform:translate(34px,-34px)}to{opacity:1;transform:none}}
@keyframes cornerBL{from{opacity:0;transform:translate(-34px,34px)}to{opacity:1;transform:none}}
@keyframes cornerBR{from{opacity:0;transform:translate(34px,34px)}to{opacity:1;transform:none}}
.intro-done .hero-title{animation:heroTitleIn 1.1s .05s both cubic-bezier(.22,1,.36,1)}
.intro-done .hero-media img{animation:heroManIn 1.25s .12s both cubic-bezier(.22,1,.36,1)}
.intro-done .site-header{animation:softIn .85s both ease}
.intro-done .frame-brackets span:nth-child(1){animation:cornerTL .75s .4s both cubic-bezier(.22,1,.36,1)}
.intro-done .frame-brackets span:nth-child(2){animation:cornerTR .75s .48s both cubic-bezier(.22,1,.36,1)}
.intro-done .frame-brackets span:nth-child(3){animation:cornerBL .75s .56s both cubic-bezier(.22,1,.36,1)}
.intro-done .frame-brackets span:nth-child(4){animation:cornerBR .75s .64s both cubic-bezier(.22,1,.36,1)}

/* ---- Floating bottom nav (appears on scroll) ---- */
.floatnav{position:fixed;left:50%;bottom:26px;z-index:60;transform:translate(-50%,26px);
  display:flex;align-items:center;gap:4px;background:rgba(17,17,19,.9);backdrop-filter:blur(14px);
  border-radius:999px;padding:8px 12px;box-shadow:0 14px 40px rgba(0,0,0,.22);
  opacity:0;pointer-events:none;transition:opacity .4s ease,transform .55s cubic-bezier(.22,1,.36,1)}
.floatnav.show{opacity:1;transform:translate(-50%,0);pointer-events:auto}
.fn-logo{display:grid;place-items:center;width:36px;height:36px;color:#fff;flex:0 0 auto}
.floatnav a{color:rgba(255,255,255,.82);font-size:14px;font-weight:500;padding:9px 13px;
  border-radius:999px;transition:background .2s,color .2s;white-space:nowrap}
.floatnav a:hover{color:#fff;background:rgba(255,255,255,.12)}

/* card micro-interactions */
.svc-card,.project,.post,.bento-card,.t-card,.cta-card{transition:transform .35s cubic-bezier(.22,1,.36,1),background .25s,box-shadow .35s}
.project:hover,.post:hover{transform:translateY(-6px)}
.svc-card:hover{transform:translateX(4px)}
.cta-card{will-change:transform}

/* ===================== Responsive ===================== */
@media(max-width:980px){
  .services-inner,.faq-inner{grid-template-columns:1fr;gap:40px}
  .bento{grid-template-columns:1fr 1fr;grid-template-areas:
    "over camera"
    "editing editing"
    "seamless tailored"
    "clients turn";}
  .b-over,.b-camera,.b-editing{min-height:320px}
  .blog-grid{grid-template-columns:1fr 1fr}
  .blog-featured{grid-template-columns:1fr}
  .bf-img img{min-height:260px}
}
@media(max-width:720px){
  body{font-size:16px}
  .header-logo{display:none}
  .hero{min-height:580px}
  /* hero on phones: big "AUGUST" snug inside the brackets; portrait head just under it */
  .hero-inner{padding-top:86px}
  .hero-title{font-size:clamp(56px,22vw,96px);margin-top:4px}
  .hero-media img{width:80%;max-width:360px;top:26%}
  .hero-cloud{width:96%;top:55%}
  .frame-brackets{top:80px;left:7%;right:7%;height:128px}
  .trust{padding-top:50px}
  .laurel{width:60px}.laurel-left{left:-6px}.laurel-right{right:-6px}
  /* philosophy -> normal flow, gallery stacked under text */
  .philosophy{height:auto;padding:50px 0 10px}
  .phil-text{position:static;height:auto;display:block}
  .philosophy-text{font-size:26px}
  .philosophy-text.reveal-words .w{filter:none;opacity:1;transform:none}
  .gallery{position:static;height:auto;display:flex;flex-direction:column;gap:20px;align-items:center;margin-top:30px;padding:0 20px}
  .g-item{position:static;width:min(88%,420px)!important}
  .g-item.wide{width:100%!important}
  .floatnav{bottom:14px;gap:0;padding:7px 8px}
  .floatnav a{padding:8px 9px;font-size:13px}
  .fn-logo{width:30px;height:30px}
  .services{padding-bottom:70px}
  .bento{grid-template-columns:1fr;grid-template-areas:
    "over" "camera" "editing" "seamless" "tailored" "clients" "turn";}
  .b-over,.b-camera,.b-editing{min-height:300px}
  .eyes{width:50%}
  .portfolio-grid,.blog-grid{grid-template-columns:1fr}
  .blog-head{flex-direction:column;align-items:flex-start}
  .t-card{width:300px}
  /* CTA fanned cards: shrink so they never overflow the viewport width */
  .cta-cards{height:300px;transform:none;margin-top:48px}
  .ccl{width:132px;height:205px;transform:rotate(-8deg) translateX(26px)}
  .ccc{width:148px;height:230px;margin:0 -14px}
  .ccr{width:132px;height:205px;transform:rotate(8deg) translateX(-26px)}
  .footer-inner{flex-direction:column;gap:36px}
  .footer-cols{gap:50px}
  /* belt-and-braces: clip any residual horizontal overflow (no sticky on mobile) */
  html,body{overflow-x:clip}
}
@media(prefers-reduced-motion:reduce){
  .marquee-track{animation:none}
  .btn:hover{transform:none}
  html{scroll-behavior:auto}
  .reveal,.reveal-fade,.reveal-scale{opacity:1!important;transform:none!important;filter:none!important;transition:none}
  [data-reveal],[data-reveal-stagger] > *{animation:none!important;opacity:1!important;transform:none!important;filter:none!important}
  .hero-title,.hero-media img,.site-header,.frame-brackets span,.ipol,.intro-logo{animation:none!important;transition:none!important}
  html.js .intro{display:none!important}
  .philosophy-text.reveal-words .w{filter:none!important;opacity:1!important;transform:none!important}
}

/* =====================================================================
   SUBPAGES (blog list, blog detail, contact, about) — reuse shared bits
   ===================================================================== */
/* Header on pages without a hero: dark text + solid Contact button */
.site-header.dark .brand,
.site-header.dark .header-logo{color:var(--ink)}
.site-header.dark .btn-contact{background:var(--ink);color:#fff}

/* Clear the fixed header */
.subpage{padding-top:130px;padding-bottom:40px}
.page-head{text-align:center;max-width:780px;margin:0 auto}
.page-head .section-title{margin-top:18px}
.page-head .section-sub{margin:16px auto 0}

/* ---- Contact ---- */
.contact{max-width:760px;margin:0 auto;text-align:center}
.contact-form{max-width:620px;margin:44px auto 0;text-align:left}
.contact-form .row{display:grid;grid-template-columns:1fr 1fr;gap:14px;margin-bottom:14px}
.field{width:100%;background:var(--card);border:1.5px solid transparent;border-radius:12px;
  padding:15px 18px;font-family:inherit;font-size:16px;color:var(--ink);transition:border-color .2s,background .2s}
.field::placeholder{color:var(--muted)}
.field:focus{outline:none;border-color:var(--ink);background:#fff}
textarea.field{min-height:160px;resize:vertical;display:block;width:100%;margin-bottom:16px}
.contact-form .btn{width:100%}
.hp{position:absolute!important;left:-9999px;width:1px;height:1px;overflow:hidden}
.form-note{margin-top:16px;font-size:14.5px;text-align:center;color:var(--ink-soft);min-height:20px}
.form-note.ok{color:#1f9d55;font-weight:600}

/* ---- About ---- */
.about-hero{display:grid;grid-template-columns:420px 1fr;gap:60px;align-items:center}
.about-portrait{width:100%;aspect-ratio:1;border-radius:50%;overflow:hidden;background:var(--card)}
.about-portrait img{width:100%;height:100%;object-fit:cover}
.about-intro .section-title{margin-top:16px;font-size:clamp(34px,4.4vw,52px)}
.about-intro .section-sub{margin:18px 0 0}
.about-intro .btn{margin-top:26px}
.about-body{display:grid;grid-template-columns:1fr 1fr;gap:60px;margin-top:72px}
.about-bio p{color:var(--ink-soft);margin-bottom:18px;font-size:16.5px;line-height:1.65}
.about-bio p:first-of-type::first-letter{font-size:52px;font-weight:700;float:left;line-height:.82;padding:6px 10px 0 0;color:var(--ink)}
.about-quote blockquote{margin:0;font-size:16.5px;line-height:1.6;color:#2b2b2e}
.about-quote figcaption{display:flex;align-items:center;gap:12px;margin-top:24px}
.about-quote figcaption img{width:46px;height:46px;border-radius:50%;object-fit:cover}
.about-quote strong{display:block;font-size:15px}
.about-quote span{color:var(--muted);font-size:13px}
.gear{margin-top:84px}
.gear h2{font-size:clamp(28px,3.2vw,40px);font-weight:800;letter-spacing:-.02em}
.gear-list{margin-top:26px;border-top:1px solid var(--line)}
.gear-row{display:flex;justify-content:space-between;align-items:baseline;gap:40px;
  padding:22px 2px;border-bottom:1px solid var(--line)}
.gear-row .g-name{font-weight:600;font-size:17px;flex:0 0 auto}
.gear-row .g-desc{color:var(--ink-soft);font-size:15px;text-align:right}

/* ---- Blog detail (article) ---- */
.article{max-width:760px;margin:0 auto}
.article-top{display:flex;justify-content:space-between;align-items:center;gap:16px;margin-bottom:26px}
.back-btn{display:inline-flex;align-items:center;gap:8px;background:var(--ink);color:#fff;
  border-radius:999px;padding:10px 18px;font-size:14px;font-weight:600;transition:opacity .2s,transform .2s}
.back-btn:hover{opacity:.9;transform:translateY(-2px)}
.article h1{font-size:clamp(30px,4.2vw,46px);font-weight:800;letter-spacing:-.025em;line-height:1.08}
.article-sub{color:var(--ink-soft);font-size:17px;margin-top:16px;line-height:1.5}
.article-cover{margin:34px 0;border-radius:16px;overflow:hidden;aspect-ratio:16/10}
.article-cover img{width:100%;height:100%;object-fit:cover}
.article-body p{color:#2b2b2e;font-size:17px;line-height:1.75;margin-bottom:20px}
.article-body h2{font-size:26px;font-weight:700;letter-spacing:-.01em;margin:38px 0 14px}
.article-body h3{font-size:20px;font-weight:700;margin:30px 0 12px}

@media(max-width:860px){
  .subpage{padding-top:104px}
  .about-hero{grid-template-columns:1fr;gap:28px;text-align:center}
  .about-portrait{max-width:300px;margin:0 auto}
  .about-intro .section-sub{margin-left:auto;margin-right:auto}
  .about-body{grid-template-columns:1fr;gap:36px}
  .contact-form .row{grid-template-columns:1fr;gap:0}
  .contact-form .row .field{margin-bottom:14px}
  .gear-row{flex-direction:column;gap:4px}
  .gear-row .g-desc{text-align:left}
}

.contact .section-sub{margin-left:auto;margin-right:auto}
