/* =========================================================
   REDTAKE — design tokens
   ========================================================= */
:root{
  --paper:   #FFF8F6;
  --blush:   #FFEAEF;
  --hotpink: #FF2E63;
  --crimson: #C81D42;
  --ink:     #1A0E12;
  --peach:   #FFB4A2;

  --font-display: 'Clash Display', 'Arial Narrow', sans-serif;
  --font-body: 'Satoshi', 'Helvetica Neue', Arial, sans-serif;

  --edge: clamp(1.5rem, 5vw, 4.5rem);
  --radius: 20px;
  --ease: cubic-bezier(.16,.84,.32,1);
}

*,*::before,*::after{ box-sizing:border-box; }
html{ scroll-behavior:smooth; }

body{
  margin:0;
  background:var(--paper);
  color:var(--ink);
  font-family:var(--font-body);
  -webkit-font-smoothing:antialiased;
  overflow-x:hidden;
}

::selection{ background:var(--hotpink); color:var(--paper); }
:focus-visible{ outline:2px solid var(--hotpink); outline-offset:3px; }

a{ color:inherit; text-decoration:none; }
ul{ margin:0; padding:0; list-style:none; }
h1,h2,h3{ margin:0; font-family:var(--font-display); font-weight:600; letter-spacing:-0.01em; }
p{ margin:0; }

/* motion-off: user pressed "Stop animations" — freeze everything */
html.motion-off *,
html.motion-off *::before,
html.motion-off *::after{
  animation-play-state:paused !important;
  transition-duration:.001ms !important;
}
html.motion-off .reveal-up{ opacity:1 !important; transform:none !important; }

@media (prefers-reduced-motion: reduce){
  html{ scroll-behavior:auto; }
  .cloud{ animation:none !important; }
}

/* =========================================================
   Loader — quiet percentage counter, nothing else
   ========================================================= */
#loader{
  position:fixed; inset:0; z-index:999;
  background:var(--paper);
  display:flex; align-items:center; justify-content:center;
  transition:opacity .6s var(--ease), visibility .6s var(--ease);
}
#loader.hidden{ opacity:0; visibility:hidden; pointer-events:none; }
.loader-pct{
  font-family:var(--font-display); font-size:1.1rem; letter-spacing:.08em;
  color:var(--ink); font-variant-numeric:tabular-nums;
}

/* =========================================================
   Nav
   ========================================================= */
#siteNav{
  position:fixed; top:0; left:0; right:0; z-index:60;
  display:flex; align-items:center; justify-content:space-between; gap:1.5rem;
  padding:1.3rem var(--edge);
}
.nav-mark{ font-family:var(--font-display); font-size:1.1rem; letter-spacing:.02em; color:var(--ink); }
.nav-mark span{ font-size:.6em; vertical-align:super; }
#navLinks{ display:flex; align-items:center; gap:1.9rem; margin-right:auto; margin-left:2.4rem; }
#navLinks a{ font-size:.85rem; color:var(--ink); opacity:.68; transition:opacity .25s var(--ease); }
#navLinks a:hover{ opacity:1; }
#navLinks a[data-nav].active{ opacity:1; font-weight:700; }
.nav-cta{
  opacity:1 !important; padding:.5rem 1.1rem; border:1.5px solid var(--ink); border-radius:100px;
}
#motionToggle{
  font-family:var(--font-body); font-size:.72rem; letter-spacing:.04em;
  background:none; border:1px solid rgba(26,14,18,.25); border-radius:100px;
  padding:.4rem .9rem; color:var(--ink); cursor:pointer; white-space:nowrap;
}
#motionToggle:hover{ border-color:var(--ink); }
#motionToggle[aria-pressed="true"]{ background:var(--ink); color:var(--paper); border-color:var(--ink); }

#navToggle{ display:none; background:none; border:none; cursor:pointer; width:32px; height:22px; position:relative; padding:0; flex:0 0 auto; }
#navToggle span{ position:absolute; left:0; right:0; height:2px; background:var(--ink); transition:transform .3s var(--ease); }
#navToggle span:nth-child(1){ top:3px; }
#navToggle span:nth-child(2){ bottom:3px; }
#navToggle[aria-expanded="true"] span:nth-child(1){ transform:translateY(7px) rotate(45deg); }
#navToggle[aria-expanded="true"] span:nth-child(2){ transform:translateY(-7px) rotate(-45deg); }

/* =========================================================
   Reveal-on-scroll (used everywhere, subtle)
   ========================================================= */
.reveal-up{
  opacity:0; transform:translateY(20px);
  transition:opacity .7s var(--ease), transform .7s var(--ease);
  transition-delay:calc(var(--d,0) * .08s);
}
.reveal-up.in{ opacity:1; transform:translateY(0); }

.eyebrow{
  font-size:.76rem; letter-spacing:.2em; text-transform:uppercase;
  color:var(--crimson); font-weight:700; margin-bottom:.9rem;
}
.accent-text{ color:var(--hotpink); }

.btn{
  display:inline-flex; align-items:center; gap:.5rem;
  padding:.9rem 1.8rem; border-radius:100px;
  font-family:var(--font-body); font-weight:700; font-size:.9rem;
  transition:transform .3s var(--ease), background .3s var(--ease), color .3s var(--ease);
}
.btn-primary{ background:var(--ink); color:var(--paper); }
.btn-primary:hover{ transform:translateY(-2px); }
.btn-ghost{ border:1.5px solid var(--ink); color:var(--ink); }
.btn-ghost:hover{ background:var(--ink); color:var(--paper); }

/* =========================================================
   HERO — the single 3D moment, contained to this section only
   ========================================================= */
.hero{
  position:relative;
  min-height:100vh;
  display:flex; flex-direction:column; align-items:center; justify-content:center;
  text-align:center;
  padding:8rem var(--edge) 4rem;
  overflow:hidden;
  background:linear-gradient(180deg, var(--blush) 0%, var(--paper) 62%);
}

#webgl{
  position:absolute;
  top:50%; left:50%; transform:translate(-50%,-50%);
  width:min(70vw, 620px); height:min(70vw, 620px);
  max-width:620px; max-height:620px;
  z-index:1;
  pointer-events:none;
}

.cloud{
  position:absolute; border-radius:50%;
  filter:blur(38px); opacity:.55; z-index:0;
  animation:drift 22s ease-in-out infinite;
}
.cloud-a{ width:280px; height:200px; background:var(--peach); top:12%; left:8%; animation-duration:24s; }
.cloud-b{ width:220px; height:180px; background:var(--blush); top:60%; right:10%; animation-duration:19s; animation-delay:-4s; }
.cloud-c{ width:180px; height:150px; background:#FFC9D6; bottom:8%; left:14%; animation-duration:27s; animation-delay:-9s; }
@keyframes drift{
  0%,100%{ transform:translate(0,0); }
  50%{ transform:translate(24px,-18px); }
}

.hero-copy{ position:relative; z-index:2; max-width:44rem; margin-top:auto; }
.hero-title{ font-size:clamp(2.2rem,5.6vw,4rem); line-height:1.08; }
.hero-sub{ margin-top:1.4rem; font-size:clamp(1rem,1.3vw,1.15rem); line-height:1.55; color:rgba(26,14,18,.7); max-width:32rem; margin-left:auto; margin-right:auto; }
.hero-actions{ margin-top:2.2rem; display:flex; gap:1rem; justify-content:center; flex-wrap:wrap; }

.scroll-cue{
  position:relative; z-index:2; margin-top:3.5rem;
  display:flex; flex-direction:column; align-items:center; gap:.6rem;
  font-size:.68rem; letter-spacing:.28em; opacity:.5;
}
.scroll-cue span{ width:1px; height:30px; background:var(--ink); }

/* =========================================================
   Plain content bands (intro / process / contact)
   ========================================================= */
.band{
  padding:6.5rem var(--edge);
  max-width:52rem; margin:0 auto;
  text-align:center;
}
.band-title{ font-size:clamp(2rem,4.6vw,3.2rem); line-height:1.12; }
.band-copy{ margin-top:1.3rem; font-size:1.05rem; line-height:1.6; color:rgba(26,14,18,.7); max-width:34rem; margin-left:auto; margin-right:auto; }

.process-grid{
  margin-top:3rem;
  display:grid; grid-template-columns:repeat(3,minmax(0,1fr)); gap:2rem;
  text-align:left;
}
.process-step{ padding:1.6rem; border-radius:var(--radius); background:var(--blush); }
.process-num{ font-family:var(--font-display); color:var(--hotpink); font-size:1rem; }
.process-step h3{ margin-top:.6rem; font-size:1.2rem; }
.process-step p{ margin-top:.5rem; font-size:.9rem; line-height:1.55; color:rgba(26,14,18,.7); }

/* =========================================================
   Service sections — plain, calm, one per screen-ish
   ========================================================= */
.service{
  padding:6rem var(--edge);
  max-width:40rem; margin:0 auto;
  text-align:center;
}
.service[data-tone="blush"]{ background:var(--blush); max-width:none; }
.service[data-tone="blush"] > *{ max-width:40rem; margin-left:auto; margin-right:auto; }

.service-icon{
  width:64px; height:64px; margin:0 auto 1.6rem;
}
.service-icon svg{ width:100%; height:100%; }

.service-title{ font-size:clamp(1.9rem,4vw,2.6rem); line-height:1.12; }
.service-desc{ margin-top:1.1rem; font-size:1rem; line-height:1.6; color:rgba(26,14,18,.7); }
.service-list{
  margin-top:1.5rem; display:flex; flex-wrap:wrap; justify-content:center; gap:.6rem .9rem;
}
.service-list li{
  font-size:.85rem; font-weight:600; padding:.5rem 1rem;
  border-radius:100px; background:rgba(255,255,255,.7);
  border:1px solid rgba(26,14,18,.08);
}
.service[data-tone="paper"] .service-list li{ background:var(--blush); border-color:transparent; }

/* =========================================================
   Contact + footer
   ========================================================= */
.contact .btn{ margin-top:2rem; }
.site-footer{
  margin-top:5rem; padding-top:2.4rem; width:100%;
  border-top:1px solid rgba(26,14,18,.12);
  display:grid; grid-template-columns:1.4fr 1fr 1fr 1fr; gap:2rem;
  text-align:left;
}
.footer-col{ display:flex; flex-direction:column; gap:.55rem; }
.footer-col p{ font-size:.85rem; color:rgba(26,14,18,.6); margin-top:.2rem; }
.footer-label{ font-size:.7rem; letter-spacing:.16em; text-transform:uppercase; color:rgba(26,14,18,.5); margin-bottom:.2rem; }
.footer-col a{ font-size:.9rem; color:rgba(26,14,18,.75); }
.footer-fine{ font-size:.76rem; color:rgba(26,14,18,.45); justify-content:flex-end; grid-column:4/5; align-self:end; }

/* =========================================================
   Responsive
   ========================================================= */
@media (max-width: 900px){
  #navLinks{
    position:fixed; inset:0 0 0 auto; width:min(76vw,300px); height:100vh;
    background:var(--ink); flex-direction:column; align-items:flex-start;
    justify-content:center; gap:1.5rem; padding:2rem var(--edge); margin:0;
    transform:translateX(100%); transition:transform .4s var(--ease);
  }
  #navLinks.open{ transform:translateX(0); }
  #navLinks a{ font-size:1.05rem; color:var(--paper); opacity:.8; }
  #navToggle{ display:block; }
  #motionToggle{ display:none; }

  .process-grid{ grid-template-columns:1fr; }
  .site-footer{ grid-template-columns:1fr 1fr; }
  .footer-fine{ grid-column:1/3; justify-content:flex-start; margin-top:1rem; }
}

@media (max-width:560px){
  .service{ padding:4.5rem 1.5rem; }
  .band{ padding:5rem 1.5rem; }
}
